@pennyfarthing/core 10.0.3 → 10.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -7
- package/package.json +7 -1
- package/packages/core/dist/cli/commands/cyclist.d.ts +5 -1
- package/packages/core/dist/cli/commands/cyclist.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/cyclist.js +4 -4
- package/packages/core/dist/cli/commands/cyclist.js.map +1 -1
- package/packages/core/dist/cli/commands/cyclist.test.js +2 -2
- package/packages/core/dist/cli/commands/cyclist.test.js.map +1 -1
- package/packages/core/dist/cli/commands/doctor-legacy.test.js +17 -16
- package/packages/core/dist/cli/commands/doctor-legacy.test.js.map +1 -1
- package/packages/core/dist/cli/commands/doctor.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/doctor.js +251 -4
- package/packages/core/dist/cli/commands/doctor.js.map +1 -1
- package/packages/core/dist/cli/commands/init.d.ts +7 -0
- package/packages/core/dist/cli/commands/init.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/init.js +43 -7
- package/packages/core/dist/cli/commands/init.js.map +1 -1
- package/packages/core/dist/cli/commands/update.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/update.js +26 -0
- package/packages/core/dist/cli/commands/update.js.map +1 -1
- package/packages/core/dist/cli/index.js +1 -1
- package/packages/core/dist/cli/index.js.map +1 -1
- package/packages/core/dist/cli/ocean-profiles.test.js +1 -1
- package/packages/core/dist/cli/ocean-profiles.test.js.map +1 -1
- package/packages/core/dist/cli/utils/files.d.ts +10 -0
- package/packages/core/dist/cli/utils/files.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/files.js +35 -0
- package/packages/core/dist/cli/utils/files.js.map +1 -1
- package/packages/core/dist/cli/utils/python.d.ts +22 -0
- package/packages/core/dist/cli/utils/python.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/python.js +102 -0
- package/packages/core/dist/cli/utils/python.js.map +1 -0
- package/packages/core/dist/cli/utils/settings.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/settings.js +10 -0
- package/packages/core/dist/cli/utils/settings.js.map +1 -1
- package/packages/core/dist/scripts/generate-report.d.ts.map +1 -1
- package/packages/core/dist/scripts/generate-report.js +11 -7
- package/packages/core/dist/scripts/generate-report.js.map +1 -1
- package/packages/core/dist/scripts/generate-spider-report.d.ts.map +1 -1
- package/packages/core/dist/scripts/generate-spider-report.js +12 -8
- package/packages/core/dist/scripts/generate-spider-report.js.map +1 -1
- package/packages/core/dist/scripts/generate-spider.d.ts.map +1 -1
- package/packages/core/dist/scripts/generate-spider.js +6 -4
- package/packages/core/dist/scripts/generate-spider.js.map +1 -1
- package/packages/core/dist/scripts/generate-spider.test.js +2 -2
- package/packages/core/dist/scripts/generate-spider.test.js.map +1 -1
- package/pennyfarthing-dist/agents/README.md +1 -3
- package/pennyfarthing-dist/agents/architect.md +0 -6
- package/pennyfarthing-dist/agents/devops.md +0 -6
- package/pennyfarthing-dist/agents/orchestrator.md +0 -6
- package/pennyfarthing-dist/agents/pm.md +1 -7
- package/pennyfarthing-dist/agents/sm-finish.md +1 -1
- package/pennyfarthing-dist/agents/sm-setup.md +2 -2
- package/pennyfarthing-dist/agents/sm.md +4 -11
- package/pennyfarthing-dist/commands/architect.md +11 -3
- package/pennyfarthing-dist/commands/close-epic.md +24 -131
- package/pennyfarthing-dist/commands/create-theme.md +14 -24
- package/pennyfarthing-dist/commands/dev.md +11 -3
- package/pennyfarthing-dist/commands/devops.md +11 -3
- package/pennyfarthing-dist/commands/health-check.md +1 -3
- package/pennyfarthing-dist/commands/help.md +8 -12
- package/pennyfarthing-dist/commands/list-themes.md +14 -16
- package/pennyfarthing-dist/commands/orchestrator.md +11 -3
- package/pennyfarthing-dist/commands/parallel-work.md +1 -3
- package/pennyfarthing-dist/commands/pm.md +11 -3
- package/pennyfarthing-dist/commands/prime.md +6 -6
- package/pennyfarthing-dist/commands/repo-status.md +2 -2
- package/pennyfarthing-dist/commands/reviewer.md +11 -3
- package/pennyfarthing-dist/commands/run-ci.md +1 -1
- package/pennyfarthing-dist/commands/set-theme.md +14 -51
- package/pennyfarthing-dist/commands/setup.md +1 -1
- package/pennyfarthing-dist/commands/show-theme.md +14 -16
- package/pennyfarthing-dist/commands/sm.md +11 -3
- package/pennyfarthing-dist/commands/sprint.md +8 -8
- package/pennyfarthing-dist/commands/tea.md +11 -3
- package/pennyfarthing-dist/commands/tech-writer.md +11 -3
- package/pennyfarthing-dist/commands/theme-maker.md +14 -671
- package/pennyfarthing-dist/commands/theme.md +95 -0
- package/pennyfarthing-dist/commands/ux-designer.md +11 -3
- package/pennyfarthing-dist/commands/work.md +3 -5
- package/pennyfarthing-dist/guides/agent-coordination.md +11 -13
- package/pennyfarthing-dist/guides/agent-template-tactical.md +2 -3
- package/pennyfarthing-dist/guides/command-tag-taxonomy.md +212 -0
- package/pennyfarthing-dist/guides/hooks.md +5 -5
- package/pennyfarthing-dist/guides/patterns/fan-out-fan-in-pattern.md +3 -3
- package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +9 -59
- package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +4 -5
- package/pennyfarthing-dist/guides/prime.md +2 -2
- package/pennyfarthing-dist/guides/skill-schema.md +25 -26
- package/pennyfarthing-dist/guides/xml-tags.md +2 -2
- package/pennyfarthing-dist/scripts/README.md +2 -2
- package/pennyfarthing-dist/scripts/core/agent-session.sh +6 -2
- package/pennyfarthing-dist/scripts/core/prime.sh +8 -10
- package/pennyfarthing-dist/scripts/git/git-status-all.sh +1 -1
- package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +8 -6
- package/pennyfarthing-dist/scripts/git/worktree-manager.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/post-merge.sh +14 -12
- package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +4 -3
- package/pennyfarthing-dist/scripts/hooks/pre-push.sh +11 -5
- package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +1 -1
- package/pennyfarthing-dist/scripts/misc/README.md +1 -1
- package/pennyfarthing-dist/scripts/misc/repo-utils.sh +3 -3
- package/pennyfarthing-dist/scripts/misc/validate-subagent-frontmatter.sh +1 -2
- package/pennyfarthing-dist/scripts/sprint/README.md +32 -17
- package/pennyfarthing-dist/scripts/story/README.md +1 -1
- package/pennyfarthing-dist/scripts/test/test-setup.sh +1 -1
- package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +5 -5
- package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +3 -79
- package/pennyfarthing-dist/scripts/theme/README.md +1 -1
- package/pennyfarthing-dist/scripts/validation/validate-agent-schema.sh +0 -1
- package/pennyfarthing-dist/scripts/workflow/finish-story.sh +62 -17
- package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +2 -2
- package/pennyfarthing-dist/skills/skill-registry.yaml +41 -28
- package/pennyfarthing-dist/skills/sprint/skill.md +386 -68
- package/pennyfarthing-dist/skills/story/skill.md +14 -206
- package/pennyfarthing-dist/skills/theme/skill.md +290 -75
- package/pennyfarthing-dist/skills/theme-creation/SKILL.md +23 -166
- package/pennyfarthing-dist/skills/workflow/skill.md +4 -4
- package/pennyfarthing-dist/templates/agent-scopes.yaml.template +0 -11
- package/pennyfarthing-dist/templates/auto-load-sm.sh.template +14 -0
- package/pennyfarthing-dist/templates/settings.local.json.template +9 -0
- package/pennyfarthing-dist/workflows/2party-tdd.yaml +399 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +42 -25
- package/pennyfarthing-dist/workflows/git-cleanup.yaml +1 -1
- package/pennyfarthing-dist/workflows/project-setup/steps/step-10-complete.md +1 -1
- package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/hooks.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/schema_validation_hook.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/cli.py +15 -0
- package/pennyfarthing_scripts/codemarkers/__init__.py +19 -0
- package/pennyfarthing_scripts/codemarkers/__main__.py +6 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/analyze.py +326 -0
- package/pennyfarthing_scripts/codemarkers/cli.py +129 -0
- package/pennyfarthing_scripts/codemarkers/formatters.py +89 -0
- package/pennyfarthing_scripts/codemarkers/models.py +45 -0
- package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/themes.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/config.py +2 -1
- package/pennyfarthing_scripts/complexity/__init__.py +15 -0
- package/pennyfarthing_scripts/complexity/__main__.py +6 -0
- package/pennyfarthing_scripts/complexity/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/analyze.py +207 -0
- package/pennyfarthing_scripts/complexity/cli.py +78 -0
- package/pennyfarthing_scripts/complexity/formatters.py +64 -0
- package/pennyfarthing_scripts/complexity/models.py +32 -0
- package/pennyfarthing_scripts/deadcode/__init__.py +6 -0
- package/pennyfarthing_scripts/deadcode/__main__.py +6 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/analyze.py +323 -0
- package/pennyfarthing_scripts/deadcode/cli.py +163 -0
- package/pennyfarthing_scripts/deadcode/formatters.py +106 -0
- package/pennyfarthing_scripts/deadcode/models.py +54 -0
- package/pennyfarthing_scripts/dependencies/__init__.py +20 -0
- package/pennyfarthing_scripts/dependencies/__main__.py +5 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/analyze.py +155 -0
- package/pennyfarthing_scripts/dependencies/cli.py +72 -0
- package/pennyfarthing_scripts/dependencies/formatters.py +63 -0
- package/pennyfarthing_scripts/dependencies/models.py +39 -0
- package/pennyfarthing_scripts/healthscore/__init__.py +21 -0
- package/pennyfarthing_scripts/healthscore/__main__.py +6 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/analyze.py +161 -0
- package/pennyfarthing_scripts/healthscore/cli.py +76 -0
- package/pennyfarthing_scripts/healthscore/formatters.py +46 -0
- package/pennyfarthing_scripts/healthscore/models.py +44 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/analyze.py +28 -1
- package/pennyfarthing_scripts/hotspots/cli.py +11 -9
- package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/client.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/create.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/operations.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/reconcile.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/bidirectional.py +42 -15
- package/pennyfarthing_scripts/jira/cli.py +78 -1
- package/pennyfarthing_scripts/jira/client.py +28 -0
- package/pennyfarthing_scripts/prime/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/persona.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/tiers.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/workflow.py +5 -3
- package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/epic_add.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_add.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_update.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/validate_cmd.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/yaml_io.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/archive.py +63 -6
- package/pennyfarthing_scripts/sprint/archive_epic.py +198 -85
- package/pennyfarthing_scripts/sprint/cli.py +1565 -65
- package/pennyfarthing_scripts/sprint/epic_add.py +173 -0
- package/pennyfarthing_scripts/sprint/loader.py +46 -2
- package/pennyfarthing_scripts/sprint/story_add.py +202 -27
- package/pennyfarthing_scripts/sprint/story_finish.py +211 -0
- package/pennyfarthing_scripts/sprint/validate_cmd.py +44 -5
- package/pennyfarthing_scripts/sprint/validator.py +13 -3
- package/pennyfarthing_scripts/sprint/work.py +43 -3
- package/pennyfarthing_scripts/sprint/yaml_io.py +124 -15
- package/pennyfarthing_scripts/tests/__pycache__/test_codemarkers.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_healthscore.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_story_add.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_story_update.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_validate_cmd.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_yaml_io.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/test_codemarkers.py +682 -0
- package/pennyfarthing_scripts/tests/test_healthscore.py +524 -0
- package/pennyfarthing_scripts/tests/test_sprint_package.py +166 -0
- package/pennyfarthing_scripts/tests/test_yaml_io.py +117 -0
- package/pennyfarthing_scripts/theme/__init__.py +5 -0
- package/pennyfarthing_scripts/theme/__main__.py +6 -0
- package/pennyfarthing_scripts/theme/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/theme/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/theme/cli.py +286 -0
- package/scripts/README.md +53 -0
- package/scripts/postinstall.cjs +34 -0
- package/pennyfarthing-dist/agents/workflow-status-check.md +0 -96
- package/pennyfarthing-dist/scripts/sprint/archive-story.sh +0 -133
- package/pennyfarthing-dist/scripts/sprint/available-stories.sh +0 -91
- package/pennyfarthing-dist/scripts/sprint/check-story.sh +0 -158
- package/pennyfarthing-dist/scripts/sprint/get-epic-field.sh +0 -52
- package/pennyfarthing-dist/scripts/sprint/get-story-field.sh +0 -63
- package/pennyfarthing-dist/scripts/sprint/list-future.sh +0 -145
- package/pennyfarthing-dist/scripts/sprint/new-sprint.sh +0 -110
- package/pennyfarthing-dist/scripts/sprint/promote-epic.sh +0 -148
- package/pennyfarthing-dist/scripts/sprint/sprint-common.sh +0 -415
- package/pennyfarthing-dist/scripts/sprint/sprint-info.sh +0 -33
- package/pennyfarthing-dist/scripts/sprint/sprint-metrics.sh +0 -230
- package/pennyfarthing-dist/scripts/sprint/sprint-status.sh +0 -134
- package/pennyfarthing-dist/scripts/sprint/validate-sprint-yaml.sh +0 -139
- package/pennyfarthing-dist/skills/sprint/scripts/archive-story.sh +0 -101
- package/pennyfarthing-dist/skills/sprint/scripts/available-stories.sh +0 -97
- package/pennyfarthing-dist/skills/sprint/scripts/check-story.sh +0 -164
- package/pennyfarthing-dist/skills/sprint/scripts/create-jira-epic.sh +0 -23
- package/pennyfarthing-dist/skills/sprint/scripts/new-sprint.sh +0 -116
- package/pennyfarthing-dist/skills/sprint/scripts/promote-epic.sh +0 -164
- package/pennyfarthing-dist/skills/sprint/scripts/sprint-info.sh +0 -39
- package/pennyfarthing-dist/skills/sprint/scripts/sprint-status.sh +0 -147
- package/pennyfarthing-dist/skills/sprint/scripts/sync-epic-jira.sh +0 -23
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
# test-drift-detection.sh - Tests for story 8-2: Startup Drift Detection
|
|
3
|
-
# Verifies that
|
|
3
|
+
# Verifies that prime/sprint scripts detect and report drift between
|
|
4
4
|
# merged branches and sprint YAML status
|
|
5
5
|
#
|
|
6
6
|
# RED STATE: These tests will FAIL until Dev implements the feature
|
|
@@ -38,7 +38,7 @@ echo "=== Story 8-2: Startup Drift Detection ==="
|
|
|
38
38
|
echo ""
|
|
39
39
|
|
|
40
40
|
# ==============================================================================
|
|
41
|
-
# AC1:
|
|
41
|
+
# AC1: prime detects merged-but-not-closed stories
|
|
42
42
|
# ==============================================================================
|
|
43
43
|
|
|
44
44
|
echo "--- AC1: Detects merged-but-not-closed stories ---"
|
|
@@ -293,28 +293,9 @@ test_drift_output_format() {
|
|
|
293
293
|
fi
|
|
294
294
|
}
|
|
295
295
|
|
|
296
|
-
# Test: workflow-status-check.md references drift detection
|
|
297
|
-
test_workflow_status_check_integration() {
|
|
298
|
-
local workflow_file="$PROJECT_ROOT/pennyfarthing-dist/agents/workflow-status-check.md"
|
|
299
|
-
|
|
300
|
-
if [[ ! -f "$workflow_file" ]]; then
|
|
301
|
-
fail "workflow-status-check includes drift detection" "file exists" "workflow-status-check.md not found"
|
|
302
|
-
return
|
|
303
|
-
fi
|
|
304
|
-
|
|
305
|
-
if grep -qi "drift\|detect_drift" "$workflow_file" 2>/dev/null; then
|
|
306
|
-
pass "workflow-status-check.md references drift detection"
|
|
307
|
-
else
|
|
308
|
-
fail "workflow-status-check includes drift detection" \
|
|
309
|
-
"drift or detect_drift reference in workflow-status-check.md" \
|
|
310
|
-
"no drift reference found"
|
|
311
|
-
fi
|
|
312
|
-
}
|
|
313
|
-
|
|
314
296
|
# Test: Drift report is user-friendly (mentions "merged" and "status")
|
|
315
297
|
test_drift_report_clarity() {
|
|
316
298
|
local sprint_common="$PROJECT_ROOT/pennyfarthing-dist/scripts/sprint/sprint-common.sh"
|
|
317
|
-
local workflow_file="$PROJECT_ROOT/pennyfarthing-dist/agents/workflow-status-check.md"
|
|
318
299
|
|
|
319
300
|
local found=false
|
|
320
301
|
|
|
@@ -323,11 +304,6 @@ test_drift_report_clarity() {
|
|
|
323
304
|
found=true
|
|
324
305
|
fi
|
|
325
306
|
|
|
326
|
-
# Or check workflow-status-check.md for report format
|
|
327
|
-
if [[ -f "$workflow_file" ]] && grep -qi "merged.*status\|drift.*report\|drifted stories" "$workflow_file" 2>/dev/null; then
|
|
328
|
-
found=true
|
|
329
|
-
fi
|
|
330
|
-
|
|
331
307
|
if [[ "$found" == "true" ]]; then
|
|
332
308
|
pass "drift report uses clear terminology (merged, drift, status)"
|
|
333
309
|
else
|
|
@@ -338,7 +314,6 @@ test_drift_report_clarity() {
|
|
|
338
314
|
}
|
|
339
315
|
|
|
340
316
|
test_drift_output_format
|
|
341
|
-
test_workflow_status_check_integration
|
|
342
317
|
test_drift_report_clarity
|
|
343
318
|
|
|
344
319
|
echo ""
|
|
@@ -353,7 +328,6 @@ echo ""
|
|
|
353
328
|
# Test: reconcile_drift function or auto-reconcile logic exists
|
|
354
329
|
test_reconcile_function_exists() {
|
|
355
330
|
local sprint_common="$PROJECT_ROOT/pennyfarthing-dist/scripts/sprint/sprint-common.sh"
|
|
356
|
-
local workflow_file="$PROJECT_ROOT/pennyfarthing-dist/agents/workflow-status-check.md"
|
|
357
331
|
|
|
358
332
|
local found=false
|
|
359
333
|
|
|
@@ -362,11 +336,6 @@ test_reconcile_function_exists() {
|
|
|
362
336
|
found=true
|
|
363
337
|
fi
|
|
364
338
|
|
|
365
|
-
# Or check workflow-status-check.md for reconcile instructions
|
|
366
|
-
if [[ -f "$workflow_file" ]] && grep -qi "reconcile\|auto.reconcile\|update.*done" "$workflow_file" 2>/dev/null; then
|
|
367
|
-
found=true
|
|
368
|
-
fi
|
|
369
|
-
|
|
370
339
|
if [[ "$found" == "true" ]]; then
|
|
371
340
|
pass "auto-reconcile functionality exists"
|
|
372
341
|
else
|
|
@@ -402,7 +371,6 @@ test_reconcile_uses_update() {
|
|
|
402
371
|
# Test: Auto-reconcile logs to reconciliation.log
|
|
403
372
|
test_reconcile_logs_event() {
|
|
404
373
|
local sprint_common="$PROJECT_ROOT/pennyfarthing-dist/scripts/sprint/sprint-common.sh"
|
|
405
|
-
local workflow_file="$PROJECT_ROOT/pennyfarthing-dist/agents/workflow-status-check.md"
|
|
406
374
|
|
|
407
375
|
local found=false
|
|
408
376
|
|
|
@@ -411,11 +379,6 @@ test_reconcile_logs_event() {
|
|
|
411
379
|
found=true
|
|
412
380
|
fi
|
|
413
381
|
|
|
414
|
-
# Or check workflow-status-check.md for logging instructions
|
|
415
|
-
if [[ -f "$workflow_file" ]] && grep -qi "log.*reconcil\|reconciliation.log" "$workflow_file" 2>/dev/null; then
|
|
416
|
-
found=true
|
|
417
|
-
fi
|
|
418
|
-
|
|
419
382
|
if [[ "$found" == "true" ]]; then
|
|
420
383
|
pass "auto-reconcile logs to reconciliation.log"
|
|
421
384
|
else
|
|
@@ -425,25 +388,6 @@ test_reconcile_logs_event() {
|
|
|
425
388
|
fi
|
|
426
389
|
}
|
|
427
390
|
|
|
428
|
-
# Test: workflow-status-check offers reconcile option to user
|
|
429
|
-
test_offers_reconcile_option() {
|
|
430
|
-
local workflow_file="$PROJECT_ROOT/pennyfarthing-dist/agents/workflow-status-check.md"
|
|
431
|
-
|
|
432
|
-
if [[ ! -f "$workflow_file" ]]; then
|
|
433
|
-
fail "offers reconcile option" "file exists" "workflow-status-check.md not found"
|
|
434
|
-
return
|
|
435
|
-
fi
|
|
436
|
-
|
|
437
|
-
# Check for user prompt or option offering
|
|
438
|
-
if grep -qiE "auto.reconcile|offer.*reconcile|reconcile.*option|y/n|yes/no" "$workflow_file" 2>/dev/null; then
|
|
439
|
-
pass "workflow-status-check offers reconcile option to user"
|
|
440
|
-
else
|
|
441
|
-
fail "offers reconcile option" \
|
|
442
|
-
"user prompt for auto-reconcile in workflow-status-check.md" \
|
|
443
|
-
"reconcile prompt not found"
|
|
444
|
-
fi
|
|
445
|
-
}
|
|
446
|
-
|
|
447
391
|
# Test: reconcile_drift transitions Jira to Done
|
|
448
392
|
test_reconcile_transitions_jira() {
|
|
449
393
|
local sprint_common="$PROJECT_ROOT/pennyfarthing-dist/scripts/sprint/sprint-common.sh"
|
|
@@ -463,30 +407,10 @@ test_reconcile_transitions_jira() {
|
|
|
463
407
|
fi
|
|
464
408
|
}
|
|
465
409
|
|
|
466
|
-
# Test: workflow-status-check mentions Jira in drift reconciliation
|
|
467
|
-
test_workflow_mentions_jira_reconcile() {
|
|
468
|
-
local workflow_file="$PROJECT_ROOT/pennyfarthing-dist/agents/workflow-status-check.md"
|
|
469
|
-
|
|
470
|
-
if [[ ! -f "$workflow_file" ]]; then
|
|
471
|
-
fail "workflow mentions Jira reconcile" "file exists" "workflow-status-check.md not found"
|
|
472
|
-
return
|
|
473
|
-
fi
|
|
474
|
-
|
|
475
|
-
if grep -qiE 'jira.*done|transition.*jira|jira.*status' "$workflow_file" 2>/dev/null; then
|
|
476
|
-
pass "workflow-status-check mentions Jira in reconciliation"
|
|
477
|
-
else
|
|
478
|
-
fail "workflow mentions Jira reconcile" \
|
|
479
|
-
"Jira transition reference in workflow-status-check.md" \
|
|
480
|
-
"Jira reconcile not found"
|
|
481
|
-
fi
|
|
482
|
-
}
|
|
483
|
-
|
|
484
410
|
test_reconcile_function_exists
|
|
485
411
|
test_reconcile_uses_update
|
|
486
412
|
test_reconcile_transitions_jira
|
|
487
413
|
test_reconcile_logs_event
|
|
488
|
-
test_offers_reconcile_option
|
|
489
|
-
test_workflow_mentions_jira_reconcile
|
|
490
414
|
|
|
491
415
|
echo ""
|
|
492
416
|
|
|
@@ -580,7 +504,7 @@ if [[ $TESTS_FAILED -gt 0 ]]; then
|
|
|
580
504
|
echo " 2. Output format: story_id:yaml_status:jira_status (AC2)"
|
|
581
505
|
echo " - Clear, user-friendly terminology"
|
|
582
506
|
echo " - Include both YAML and Jira status"
|
|
583
|
-
echo " 3. Add
|
|
507
|
+
echo " 3. Add drift detection to prime/workflow.py (AC1, AC2)"
|
|
584
508
|
echo " - Call detect_drift after git scan"
|
|
585
509
|
echo " - Report drifted stories before state determination"
|
|
586
510
|
echo " 4. Add auto-reconcile option (AC3)"
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
# 2. Squash merge PR and delete remote branch
|
|
16
16
|
# 3. Transition Jira to Done
|
|
17
17
|
# 4. Update sprint YAML (status: done, completed date)
|
|
18
|
-
# 5.
|
|
18
|
+
# 5. Archive completed epics (if last story in epic was just finished)
|
|
19
|
+
# 6. Clean up local branch and session file
|
|
19
20
|
|
|
20
21
|
set -euo pipefail
|
|
21
22
|
|
|
@@ -43,31 +44,64 @@ fi
|
|
|
43
44
|
# Find project root
|
|
44
45
|
source "$(dirname "${BASH_SOURCE[0]}")/../lib/find-root.sh"
|
|
45
46
|
|
|
46
|
-
SESSION_FILE="$PROJECT_ROOT/.session/${STORY_ID}-session.md"
|
|
47
47
|
SPRINT_FILE="$PROJECT_ROOT/sprint/current-sprint.yaml"
|
|
48
48
|
ARCHIVE_DIR="$PROJECT_ROOT/sprint/archive"
|
|
49
49
|
|
|
50
50
|
# Ensure archive directory exists
|
|
51
51
|
mkdir -p "$ARCHIVE_DIR"
|
|
52
52
|
|
|
53
|
+
# Resolve session file: prefer Jira key, fall back to numeric story ID
|
|
54
|
+
SESSION_FILE="$PROJECT_ROOT/.session/${STORY_ID}-session.md"
|
|
55
|
+
if [[ ! -f "$SESSION_FILE" ]]; then
|
|
56
|
+
# Look up Jira key from sprint YAML and try that
|
|
57
|
+
_JIRA_LOOKUP=$(pf sprint story field "$STORY_ID" jira 2>/dev/null || echo "")
|
|
58
|
+
if [[ -n "$_JIRA_LOOKUP" && "$_JIRA_LOOKUP" != "null" ]]; then
|
|
59
|
+
ALT_SESSION="$PROJECT_ROOT/.session/${_JIRA_LOOKUP}-session.md"
|
|
60
|
+
if [[ -f "$ALT_SESSION" ]]; then
|
|
61
|
+
SESSION_FILE="$ALT_SESSION"
|
|
62
|
+
fi
|
|
63
|
+
fi
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
# Also try the reverse: if called with Jira key, try numeric ID
|
|
67
|
+
if [[ ! -f "$SESSION_FILE" ]]; then
|
|
68
|
+
# List session files and look for one containing the story ID
|
|
69
|
+
for f in "$PROJECT_ROOT/.session/"*-session.md; do
|
|
70
|
+
[[ -f "$f" ]] || continue
|
|
71
|
+
if grep -q "$STORY_ID" "$f" 2>/dev/null; then
|
|
72
|
+
SESSION_FILE="$f"
|
|
73
|
+
break
|
|
74
|
+
fi
|
|
75
|
+
done
|
|
76
|
+
fi
|
|
77
|
+
|
|
53
78
|
# Validate session file exists
|
|
54
79
|
if [[ ! -f "$SESSION_FILE" ]]; then
|
|
55
|
-
echo "Error: Session file not found
|
|
80
|
+
echo "Error: Session file not found for story $STORY_ID"
|
|
81
|
+
echo "Looked for: $PROJECT_ROOT/.session/${STORY_ID}-session.md"
|
|
82
|
+
[[ -n "${_JIRA_LOOKUP:-}" ]] && echo "Also tried: $PROJECT_ROOT/.session/${_JIRA_LOOKUP}-session.md"
|
|
56
83
|
exit 1
|
|
57
84
|
fi
|
|
58
85
|
|
|
59
|
-
# Extract metadata from session file
|
|
60
|
-
#
|
|
86
|
+
# Extract metadata from session file
|
|
87
|
+
# Try **Jira:** field first (handle both "**Jira:**" and "- **Jira:**", markdown link format)
|
|
61
88
|
JIRA_KEY=$(grep -E '\*\*Jira:\*\*' "$SESSION_FILE" | sed 's/.*\*\*Jira:\*\* //' | sed 's/\[//' | sed 's/\].*//' | tr -d ' ' || echo "")
|
|
62
|
-
# Extract branch - strip any trailing annotations like "(pushed)"
|
|
63
|
-
BRANCH=$(grep -E '\*\*Branch:\*\*' "$SESSION_FILE" | sed 's/.*\*\*Branch:\*\* //' | sed 's/ *(.*//' | tr -d ' ' || echo "")
|
|
64
89
|
|
|
65
|
-
#
|
|
66
|
-
|
|
90
|
+
# Fallback: extract MSSCI key from **ID:** field (format: "MSSCI-14459 (81-2)" or just "MSSCI-14459")
|
|
91
|
+
if [[ -z "$JIRA_KEY" || "$JIRA_KEY" == "null" ]]; then
|
|
92
|
+
JIRA_KEY=$(grep -E '\*\*ID:\*\*' "$SESSION_FILE" | grep -oE 'MSSCI-[0-9]+' | head -1 || echo "")
|
|
93
|
+
fi
|
|
67
94
|
|
|
68
|
-
# Fallback:
|
|
95
|
+
# Fallback: if STORY_ID itself is a Jira key, use it directly
|
|
69
96
|
if [[ -z "$JIRA_KEY" || "$JIRA_KEY" == "null" ]]; then
|
|
70
|
-
|
|
97
|
+
if [[ "$STORY_ID" =~ ^MSSCI-[0-9]+$ ]]; then
|
|
98
|
+
JIRA_KEY="$STORY_ID"
|
|
99
|
+
fi
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
# Fallback: look up Jira key from sprint YAML via pf CLI
|
|
103
|
+
if [[ -z "$JIRA_KEY" || "$JIRA_KEY" == "null" ]]; then
|
|
104
|
+
JIRA_KEY=$(pf sprint story field "$STORY_ID" jira 2>/dev/null || echo "")
|
|
71
105
|
fi
|
|
72
106
|
|
|
73
107
|
if [[ -z "$JIRA_KEY" || "$JIRA_KEY" == "null" ]]; then
|
|
@@ -76,6 +110,12 @@ if [[ -z "$JIRA_KEY" || "$JIRA_KEY" == "null" ]]; then
|
|
|
76
110
|
exit 1
|
|
77
111
|
fi
|
|
78
112
|
|
|
113
|
+
# Extract branch - strip any trailing annotations like "(pushed)"
|
|
114
|
+
BRANCH=$(grep -E '\*\*Branch:\*\*' "$SESSION_FILE" | sed 's/.*\*\*Branch:\*\* //' | sed 's/ *(.*//' | tr -d ' ' || echo "")
|
|
115
|
+
|
|
116
|
+
# Try to get PR number from session file first (format: **PR:** #422 - title)
|
|
117
|
+
PR_NUMBER=$(grep -E '\*\*PR:\*\*' "$SESSION_FILE" | sed 's/.*#\([0-9]*\).*/\1/' || echo "")
|
|
118
|
+
|
|
79
119
|
# Fallback: get PR number from GitHub if not in session file
|
|
80
120
|
if [[ -z "$PR_NUMBER" ]] && [[ -n "$BRANCH" ]]; then
|
|
81
121
|
PR_NUMBER=$(gh pr list --head "$BRANCH" --json number --jq '.[0].number' 2>/dev/null || echo "")
|
|
@@ -99,8 +139,9 @@ if $DRY_RUN; then
|
|
|
99
139
|
fi
|
|
100
140
|
echo " 3. Transition $JIRA_KEY to Done"
|
|
101
141
|
echo " 4. Update sprint YAML (status: done, completed: $TODAY)"
|
|
102
|
-
echo " 5.
|
|
103
|
-
echo " 6.
|
|
142
|
+
echo " 5. Archive any completed epics"
|
|
143
|
+
echo " 6. Delete local branch: $BRANCH"
|
|
144
|
+
echo " 7. Remove session file"
|
|
104
145
|
exit 0
|
|
105
146
|
fi
|
|
106
147
|
|
|
@@ -135,8 +176,12 @@ yq eval -i "(.epics[].stories[] | select(.id == \"$STORY_ID\")).completed = \"$T
|
|
|
135
176
|
yq eval -i "del((.epics[].stories[] | select(.id == \"$STORY_ID\")).assigned_to)" "$SPRINT_FILE"
|
|
136
177
|
echo " → status: done, completed: $TODAY"
|
|
137
178
|
|
|
138
|
-
# Step 5:
|
|
139
|
-
echo "5.
|
|
179
|
+
# Step 5: Archive completed epics
|
|
180
|
+
echo "5. Archiving completed epics..."
|
|
181
|
+
pf sprint epic archive 2>/dev/null && echo " → Checked for completed epics" || echo " → No epics to archive"
|
|
182
|
+
|
|
183
|
+
# Step 6: Clean up git
|
|
184
|
+
echo "6. Cleaning up git..."
|
|
140
185
|
git checkout develop 2>/dev/null || git checkout main 2>/dev/null || true
|
|
141
186
|
git pull origin "$(git branch --show-current)" 2>/dev/null || true
|
|
142
187
|
|
|
@@ -144,8 +189,8 @@ if [[ -n "$BRANCH" ]]; then
|
|
|
144
189
|
git branch -d "$BRANCH" 2>/dev/null || echo " Local branch already deleted"
|
|
145
190
|
fi
|
|
146
191
|
|
|
147
|
-
# Step
|
|
148
|
-
echo "
|
|
192
|
+
# Step 7: Remove session file
|
|
193
|
+
echo "7. Removing session file..."
|
|
149
194
|
rm "$SESSION_FILE"
|
|
150
195
|
|
|
151
196
|
echo ""
|
|
@@ -278,11 +278,11 @@ Design subagents to do multiple related steps in one spawn:
|
|
|
278
278
|
|
|
279
279
|
```yaml
|
|
280
280
|
# INEFFICIENT - 2 subagent spawns
|
|
281
|
-
Spawn 1:
|
|
281
|
+
Spawn 1: sm-setup MODE=research
|
|
282
282
|
Spawn 2: sm-file-summary
|
|
283
283
|
|
|
284
284
|
# EFFICIENT - 1 compound subagent
|
|
285
|
-
Spawn 1: (combined
|
|
285
|
+
Spawn 1: (combined research + file-summary subagent)
|
|
286
286
|
```
|
|
287
287
|
|
|
288
288
|
**Good candidates for combining:**
|
|
@@ -141,7 +141,7 @@ skills:
|
|
|
141
141
|
invocation: /jira assign ISSUE-123
|
|
142
142
|
anti_patterns:
|
|
143
143
|
- Don't bypass Jira for sprint tracking
|
|
144
|
-
related_skills: [sprint
|
|
144
|
+
related_skills: [sprint]
|
|
145
145
|
keywords: [atlassian, issues, tickets, backlog]
|
|
146
146
|
|
|
147
147
|
judge:
|
|
@@ -251,20 +251,26 @@ skills:
|
|
|
251
251
|
|
|
252
252
|
sprint:
|
|
253
253
|
name: sprint
|
|
254
|
-
description: Sprint status, backlog, and
|
|
254
|
+
description: Sprint status, backlog, story, and epic management for Pennyfarthing
|
|
255
255
|
category: project-management
|
|
256
|
-
tags: [sprint, status, backlog]
|
|
257
|
-
version: "
|
|
256
|
+
tags: [sprint, status, backlog, stories, epics]
|
|
257
|
+
version: "2.0.0"
|
|
258
258
|
prerequisites: []
|
|
259
259
|
examples:
|
|
260
260
|
- context: Checking sprint status
|
|
261
261
|
invocation: /sprint
|
|
262
262
|
- context: Finding available stories
|
|
263
263
|
invocation: /sprint backlog
|
|
264
|
+
- context: Adding a story
|
|
265
|
+
invocation: /sprint story add epic-76 "My story" 3
|
|
266
|
+
- context: Sizing guidelines
|
|
267
|
+
invocation: /sprint story size
|
|
268
|
+
- context: Adding an epic
|
|
269
|
+
invocation: /sprint epic add epic-85 "New epic"
|
|
264
270
|
anti_patterns:
|
|
265
271
|
- Don't manually edit sprint YAML - use scripts
|
|
266
|
-
related_skills: [
|
|
267
|
-
keywords: [sprint, backlog, velocity, kanban]
|
|
272
|
+
related_skills: [jira]
|
|
273
|
+
keywords: [sprint, backlog, velocity, kanban, stories, epics, sizing, templates]
|
|
268
274
|
allowed_tools: [Read, Glob, Grep, Bash, Task]
|
|
269
275
|
|
|
270
276
|
systematic-debugging:
|
|
@@ -287,18 +293,21 @@ skills:
|
|
|
287
293
|
|
|
288
294
|
story:
|
|
289
295
|
name: story
|
|
290
|
-
description:
|
|
296
|
+
description: "DEPRECATED: Use /sprint story instead. Story commands consolidated under /sprint."
|
|
291
297
|
category: project-management
|
|
292
|
-
tags: [stories, sizing, workflow]
|
|
293
|
-
version: "
|
|
298
|
+
tags: [stories, sizing, workflow, deprecated]
|
|
299
|
+
version: "2.0.0"
|
|
300
|
+
deprecated: true
|
|
301
|
+
redirect: sprint
|
|
294
302
|
prerequisites: []
|
|
295
303
|
examples:
|
|
296
304
|
- context: Creating new stories
|
|
297
|
-
invocation: /story
|
|
305
|
+
invocation: /sprint story add
|
|
298
306
|
- context: Sizing stories
|
|
299
|
-
invocation: /story size
|
|
307
|
+
invocation: /sprint story size
|
|
300
308
|
anti_patterns:
|
|
301
309
|
- Don't create stories without acceptance criteria
|
|
310
|
+
- Don't use /story directly - use /sprint story instead
|
|
302
311
|
related_skills: [sprint, jira]
|
|
303
312
|
keywords: [user-stories, estimation, points, acceptance-criteria]
|
|
304
313
|
|
|
@@ -322,37 +331,41 @@ skills:
|
|
|
322
331
|
|
|
323
332
|
theme:
|
|
324
333
|
name: theme
|
|
325
|
-
description: Manage persona themes - list, show, and
|
|
334
|
+
description: Manage persona themes - list, show, set, create, and interactive maker wizard
|
|
326
335
|
category: theming
|
|
327
|
-
tags: [personas, themes, customization]
|
|
328
|
-
version: "
|
|
336
|
+
tags: [personas, themes, customization, creation]
|
|
337
|
+
version: "2.0.0"
|
|
329
338
|
prerequisites: []
|
|
330
339
|
examples:
|
|
331
340
|
- context: Listing available themes
|
|
332
|
-
invocation: /list
|
|
341
|
+
invocation: /theme list
|
|
333
342
|
- context: Showing current theme
|
|
334
|
-
invocation: /show
|
|
343
|
+
invocation: /theme show
|
|
335
344
|
- context: Setting active theme
|
|
336
|
-
invocation: /
|
|
345
|
+
invocation: /theme set discworld
|
|
346
|
+
- context: Creating a new theme
|
|
347
|
+
invocation: /theme create my-theme --base discworld
|
|
348
|
+
- context: Interactive AI-driven theme wizard
|
|
349
|
+
invocation: /theme maker
|
|
337
350
|
anti_patterns:
|
|
338
351
|
- Don't edit config.local.yaml directly - use skill
|
|
339
|
-
|
|
340
|
-
|
|
352
|
+
- Don't use deprecated /set-theme, /show-theme, /list-themes, /create-theme, /theme-maker
|
|
353
|
+
related_skills: []
|
|
354
|
+
keywords: [personas, characters, discworld, literary-classics, custom, generation, wizard]
|
|
341
355
|
|
|
342
356
|
theme-creation:
|
|
343
357
|
name: theme-creation
|
|
344
|
-
description:
|
|
358
|
+
description: "DEPRECATED: Use /theme maker instead"
|
|
345
359
|
category: theming
|
|
346
360
|
tags: [personas, themes, creation]
|
|
347
|
-
version: "
|
|
348
|
-
|
|
361
|
+
version: "2.0.0"
|
|
362
|
+
deprecated: true
|
|
363
|
+
redirect: theme
|
|
364
|
+
prerequisites: []
|
|
349
365
|
examples:
|
|
350
|
-
- context: Creating new theme
|
|
351
|
-
invocation: /theme-maker
|
|
352
366
|
- context: Interactive theme wizard
|
|
353
|
-
invocation: /
|
|
354
|
-
anti_patterns:
|
|
355
|
-
- Don't create incomplete themes missing required agents
|
|
367
|
+
invocation: /theme maker
|
|
368
|
+
anti_patterns: []
|
|
356
369
|
related_skills: [theme]
|
|
357
370
|
keywords: [personas, custom, generation, wizard]
|
|
358
371
|
|
|
@@ -372,7 +385,7 @@ skills:
|
|
|
372
385
|
invocation: /workflow start architecture
|
|
373
386
|
anti_patterns:
|
|
374
387
|
- Don't switch workflows mid-story unless requirements fundamentally changed
|
|
375
|
-
related_skills: [sprint
|
|
388
|
+
related_skills: [sprint]
|
|
376
389
|
keywords: [tdd, trivial, agent-docs, bdd, architecture, bikelane, stepped, phased]
|
|
377
390
|
|
|
378
391
|
yq:
|