@leeovery/claude-technical-workflows 2.1.39 → 2.1.41

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.
Files changed (111) hide show
  1. package/README.md +1 -1
  2. package/agents/implementation-analysis-architecture.md +2 -2
  3. package/agents/implementation-analysis-duplication.md +2 -2
  4. package/agents/implementation-analysis-standards.md +2 -2
  5. package/agents/implementation-analysis-synthesizer.md +3 -3
  6. package/agents/implementation-analysis-task-writer.md +1 -1
  7. package/agents/implementation-task-executor.md +3 -0
  8. package/agents/planning-phase-designer.md +8 -6
  9. package/agents/planning-task-designer.md +8 -6
  10. package/agents/review-findings-synthesizer.md +2 -2
  11. package/agents/review-task-verifier.md +1 -1
  12. package/hooks/workflows/compact-recovery.sh +1 -1
  13. package/hooks/workflows/session-cleanup.sh +1 -1
  14. package/hooks/workflows/session-env.sh +10 -2
  15. package/hooks/workflows/write-session-state.sh +2 -2
  16. package/package.json +1 -1
  17. package/skills/begin-implementation/SKILL.md +5 -5
  18. package/skills/begin-planning/SKILL.md +2 -1
  19. package/skills/begin-review/SKILL.md +1 -1
  20. package/skills/continue-feature/references/detect-phase.md +5 -5
  21. package/skills/continue-feature/references/invoke-implementation.md +2 -2
  22. package/skills/continue-feature/references/invoke-planning.md +2 -2
  23. package/skills/continue-feature/references/invoke-review.md +2 -2
  24. package/skills/continue-feature/references/invoke-specification.md +3 -3
  25. package/skills/continue-feature/scripts/discovery.sh +5 -5
  26. package/skills/link-dependencies/SKILL.md +5 -5
  27. package/skills/migrate/SKILL.md +1 -1
  28. package/skills/migrate/scripts/migrate.sh +56 -25
  29. package/skills/migrate/scripts/migrations/011-rename-workflow-directory.sh +73 -0
  30. package/skills/migrate/scripts/migrations/012-environment-setup-to-state.sh +23 -0
  31. package/skills/start-discussion/SKILL.md +2 -2
  32. package/skills/start-discussion/references/gather-context-research.md +1 -1
  33. package/skills/start-discussion/references/handle-selection.md +1 -1
  34. package/skills/start-discussion/references/invoke-skill.md +3 -3
  35. package/skills/start-discussion/references/research-analysis.md +3 -3
  36. package/skills/start-discussion/scripts/discovery.sh +3 -3
  37. package/skills/start-feature/SKILL.md +5 -5
  38. package/skills/start-feature/references/phase-bridge.md +1 -1
  39. package/skills/start-implementation/SKILL.md +6 -6
  40. package/skills/start-implementation/scripts/discovery.sh +4 -4
  41. package/skills/start-planning/SKILL.md +5 -3
  42. package/skills/start-planning/references/display-state.md +31 -1
  43. package/skills/start-planning/references/invoke-skill.md +3 -3
  44. package/skills/start-planning/scripts/discovery.sh +32 -3
  45. package/skills/start-research/SKILL.md +1 -1
  46. package/skills/start-research/references/invoke-skill.md +1 -1
  47. package/skills/start-review/SKILL.md +1 -1
  48. package/skills/start-review/references/invoke-skill.md +4 -4
  49. package/skills/start-review/scripts/discovery.sh +5 -5
  50. package/skills/start-specification/SKILL.md +1 -1
  51. package/skills/start-specification/references/analysis-flow.md +2 -2
  52. package/skills/start-specification/references/confirm-continue.md +3 -3
  53. package/skills/start-specification/references/confirm-create.md +2 -2
  54. package/skills/start-specification/references/confirm-refine.md +1 -1
  55. package/skills/start-specification/references/confirm-unify.md +2 -2
  56. package/skills/start-specification/references/display-analyze.md +1 -1
  57. package/skills/start-specification/references/display-groupings.md +3 -3
  58. package/skills/start-specification/references/display-specs-menu.md +1 -1
  59. package/skills/start-specification/references/handoffs/continue-concluded.md +4 -4
  60. package/skills/start-specification/references/handoffs/continue.md +4 -4
  61. package/skills/start-specification/references/handoffs/create-with-incorporation.md +5 -5
  62. package/skills/start-specification/references/handoffs/create.md +4 -4
  63. package/skills/start-specification/references/handoffs/unify-with-incorporation.md +6 -6
  64. package/skills/start-specification/references/handoffs/unify.md +4 -4
  65. package/skills/start-specification/scripts/discovery.sh +3 -3
  66. package/skills/status/SKILL.md +1 -1
  67. package/skills/status/scripts/discovery.sh +5 -5
  68. package/skills/technical-discussion/SKILL.md +3 -3
  69. package/skills/technical-discussion/references/template.md +2 -2
  70. package/skills/technical-implementation/SKILL.md +11 -10
  71. package/skills/technical-implementation/references/analysis-loop.md +45 -9
  72. package/skills/technical-implementation/references/environment-setup.md +3 -3
  73. package/skills/technical-implementation/references/invoke-task-writer.md +1 -1
  74. package/skills/technical-implementation/references/task-loop.md +1 -1
  75. package/skills/technical-planning/SKILL.md +8 -7
  76. package/skills/technical-planning/references/analyze-task-graph.md +1 -1
  77. package/skills/technical-planning/references/author-tasks.md +5 -5
  78. package/skills/technical-planning/references/define-phases.md +5 -2
  79. package/skills/technical-planning/references/define-tasks.md +6 -3
  80. package/skills/technical-planning/references/invoke-review-integrity.md +1 -1
  81. package/skills/technical-planning/references/invoke-review-traceability.md +1 -1
  82. package/skills/technical-planning/references/output-formats/local-markdown/about.md +2 -2
  83. package/skills/technical-planning/references/output-formats/local-markdown/authoring.md +2 -2
  84. package/skills/technical-planning/references/output-formats/local-markdown/reading.md +3 -3
  85. package/skills/technical-planning/references/output-formats/local-markdown/updating.md +1 -1
  86. package/skills/technical-planning/references/phase-design/bugfix.md +75 -0
  87. package/skills/technical-planning/references/phase-design/feature.md +77 -0
  88. package/skills/technical-planning/references/phase-design/greenfield.md +75 -0
  89. package/skills/technical-planning/references/phase-design.md +7 -57
  90. package/skills/technical-planning/references/plan-index-schema.md +3 -1
  91. package/skills/technical-planning/references/review-integrity.md +1 -1
  92. package/skills/technical-planning/references/review-traceability.md +1 -1
  93. package/skills/technical-planning/references/task-design/bugfix.md +65 -0
  94. package/skills/technical-planning/references/task-design/feature.md +61 -0
  95. package/skills/technical-planning/references/task-design/greenfield.md +47 -0
  96. package/skills/technical-planning/references/task-design.md +6 -39
  97. package/skills/technical-planning/references/verify-source-material.md +2 -2
  98. package/skills/technical-research/SKILL.md +2 -2
  99. package/skills/technical-research/references/interview.md +2 -2
  100. package/skills/technical-review/SKILL.md +1 -1
  101. package/skills/technical-review/references/invoke-review-synthesizer.md +3 -3
  102. package/skills/technical-review/references/invoke-review-task-writer.md +2 -2
  103. package/skills/technical-review/references/invoke-task-verifiers.md +3 -3
  104. package/skills/technical-review/references/produce-review.md +1 -1
  105. package/skills/technical-review/references/review-actions-loop.md +7 -5
  106. package/skills/technical-specification/SKILL.md +5 -5
  107. package/skills/technical-specification/references/dependencies.md +2 -2
  108. package/skills/technical-specification/references/review-tracking-format.md +1 -1
  109. package/skills/technical-specification/references/specification-format.md +1 -1
  110. package/skills/technical-specification/references/verify-source-material.md +2 -2
  111. package/skills/view-plan/SKILL.md +2 -2
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # 011-rename-workflow-directory.sh
4
+ #
5
+ # Moves docs/workflow/ → .workflows/ at project root.
6
+ # Workflow artefacts aren't documentation — the dot-prefixed directory
7
+ # better communicates their role as planning artefacts.
8
+ #
9
+ # Steps:
10
+ # 1. Skip if docs/workflow/ doesn't exist (fresh install or already migrated)
11
+ # 2. Create .workflows/ if needed
12
+ # 3. Move all contents preserving structure (including .state/, .cache/)
13
+ # 4. Update .gitignore: docs/workflow/.cache/ → .workflows/.cache/
14
+ # 5. Remove docs/workflow/ and docs/ if empty
15
+ #
16
+ # Idempotent: safe to run multiple times.
17
+ #
18
+ # This script is sourced by migrate.sh and has access to:
19
+ # - report_update "filepath" "description"
20
+ # - report_skip "filepath"
21
+
22
+ OLD_DIR="docs/workflow"
23
+ NEW_DIR=".workflows"
24
+ GITIGNORE=".gitignore"
25
+ OLD_GITIGNORE_ENTRY="docs/workflow/.cache/"
26
+ NEW_GITIGNORE_ENTRY=".workflows/.cache/"
27
+
28
+ # --- Step 1: Skip if nothing to migrate ---
29
+
30
+ if [ ! -d "$OLD_DIR" ]; then
31
+ report_skip "$OLD_DIR (not found)"
32
+ else
33
+ # --- Step 2: Create destination ---
34
+ mkdir -p "$NEW_DIR"
35
+
36
+ # --- Step 3: Move contents ---
37
+ # Use find to get all top-level items (including hidden dirs like .state/, .cache/)
38
+ for item in "$OLD_DIR"/* "$OLD_DIR"/.*; do
39
+ basename_item=$(basename "$item")
40
+ # Skip . and ..
41
+ [ "$basename_item" = "." ] || [ "$basename_item" = ".." ] && continue
42
+ # Skip if glob didn't match anything
43
+ [ ! -e "$item" ] && continue
44
+
45
+ if [ -e "$NEW_DIR/$basename_item" ]; then
46
+ report_skip "$basename_item (already exists at destination)"
47
+ else
48
+ mv "$item" "$NEW_DIR/$basename_item"
49
+ report_update "$NEW_DIR/$basename_item" "moved from $OLD_DIR/"
50
+ fi
51
+ done
52
+
53
+ # --- Step 4: Remove old directory ---
54
+ rmdir "$OLD_DIR" 2>/dev/null && report_update "$OLD_DIR" "removed empty directory" || true
55
+
56
+ # Remove docs/ if empty
57
+ if [ -d "docs" ]; then
58
+ rmdir "docs" 2>/dev/null && report_update "docs" "removed empty directory" || true
59
+ fi
60
+ fi
61
+
62
+ # --- Step 5: Update .gitignore ---
63
+
64
+ if [ -f "$GITIGNORE" ] && grep -qF "$OLD_GITIGNORE_ENTRY" "$GITIGNORE"; then
65
+ # Replace old entry with new
66
+ awk -v old="$OLD_GITIGNORE_ENTRY" -v new="$NEW_GITIGNORE_ENTRY" '{
67
+ if ($0 == old) print new; else print
68
+ }' "$GITIGNORE" > "${GITIGNORE}.tmp"
69
+ mv "${GITIGNORE}.tmp" "$GITIGNORE"
70
+ report_update "$GITIGNORE" "updated .cache/ path"
71
+ elif [ -f "$GITIGNORE" ] && grep -qxF "$NEW_GITIGNORE_ENTRY" "$GITIGNORE"; then
72
+ report_skip "$GITIGNORE (already has new entry)"
73
+ fi
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # 012-environment-setup-to-state.sh
4
+ #
5
+ # Moves environment-setup.md into .state/ directory.
6
+ # This file is project state, not a workflow artifact.
7
+ #
8
+ # Idempotent: safe to run multiple times.
9
+ #
10
+ # This script is sourced by migrate.sh and has access to:
11
+ # - report_update "filepath" "description"
12
+ # - report_skip "filepath"
13
+
14
+ OLD_FILE=".workflows/environment-setup.md"
15
+ NEW_FILE=".workflows/.state/environment-setup.md"
16
+
17
+ if [ -f "$OLD_FILE" ]; then
18
+ mkdir -p "$(dirname "$NEW_FILE")"
19
+ mv "$OLD_FILE" "$NEW_FILE"
20
+ report_update "$NEW_FILE" "moved from workflows root"
21
+ elif [ -f "$NEW_FILE" ]; then
22
+ report_skip "$NEW_FILE (already in .state/)"
23
+ fi
@@ -2,7 +2,7 @@
2
2
  name: start-discussion
3
3
  description: "Start a technical discussion. Discovers research and existing discussions, offers multiple entry paths, and invokes the technical-discussion skill."
4
4
  disable-model-invocation: true
5
- allowed-tools: Bash(.claude/skills/start-discussion/scripts/discovery.sh), Bash(mkdir -p docs/workflow/.state), Bash(rm docs/workflow/.state/research-analysis.md), Bash(.claude/hooks/workflows/write-session-state.sh)
5
+ allowed-tools: Bash(.claude/skills/start-discussion/scripts/discovery.sh), Bash(mkdir -p .workflows/.state), Bash(rm .workflows/.state/research-analysis.md), Bash(.claude/hooks/workflows/write-session-state.sh)
6
6
  hooks:
7
7
  PreToolUse:
8
8
  - hooks:
@@ -180,7 +180,7 @@ Saving session state so Claude can pick up where it left off if the conversation
180
180
  .claude/hooks/workflows/write-session-state.sh \
181
181
  "{topic}" \
182
182
  "skills/technical-discussion/SKILL.md" \
183
- "docs/workflow/discussion/{topic}.md"
183
+ ".workflows/discussion/{topic}.md"
184
184
  ```
185
185
 
186
186
  Load **[invoke-skill.md](references/invoke-skill.md)** and follow its instructions as written.
@@ -11,7 +11,7 @@ Summarise the selected research topic in 2-5 lines, drawing from the source, sum
11
11
  ```
12
12
  New discussion: {topic}
13
13
 
14
- Based on research: docs/workflow/research/{filename}.md (lines {start}-{end})
14
+ Based on research: .workflows/research/{filename}.md (lines {start}-{end})
15
15
 
16
16
  {2-5 line summary of the topic and what needs discussing}
17
17
 
@@ -56,7 +56,7 @@ Refreshing analysis...
56
56
 
57
57
  Delete the cache file:
58
58
  ```bash
59
- rm docs/workflow/.state/research-analysis.md
59
+ rm .workflows/.state/research-analysis.md
60
60
  ```
61
61
 
62
62
  → Return to **Step 3** to re-analyze.
@@ -11,10 +11,10 @@ Invoke the [technical-discussion](../../technical-discussion/SKILL.md) skill for
11
11
  **Example handoff (from research):**
12
12
  ```
13
13
  Discussion session for: {topic}
14
- Output: docs/workflow/discussion/{topic}.md
14
+ Output: .workflows/discussion/{topic}.md
15
15
 
16
16
  Research reference:
17
- Source: docs/workflow/research/{filename}.md (lines {start}-{end})
17
+ Source: .workflows/research/{filename}.md (lines {start}-{end})
18
18
  Summary: {the 1-2 sentence summary from the research analysis}
19
19
 
20
20
  Invoke the technical-discussion skill.
@@ -24,7 +24,7 @@ Invoke the technical-discussion skill.
24
24
  ```
25
25
  Discussion session for: {topic}
26
26
  Source: {existing discussion | fresh}
27
- Output: docs/workflow/discussion/{topic}.md
27
+ Output: .workflows/discussion/{topic}.md
28
28
 
29
29
  Invoke the technical-discussion skill.
30
30
  ```
@@ -14,7 +14,7 @@ Use `cache.status` from discovery to determine the approach:
14
14
  Using cached research analysis (unchanged since {cache.generated})
15
15
  ```
16
16
 
17
- Load the topics from `docs/workflow/.state/research-analysis.md` and proceed.
17
+ Load the topics from `.workflows/.state/research-analysis.md` and proceed.
18
18
 
19
19
  #### If cache.status is "stale" or "none"
20
20
 
@@ -40,10 +40,10 @@ Read each research file and extract key themes and potential discussion topics.
40
40
 
41
41
  Ensure the cache directory exists:
42
42
  ```bash
43
- mkdir -p docs/workflow/.state
43
+ mkdir -p .workflows/.state
44
44
  ```
45
45
 
46
- Create/update `docs/workflow/.state/research-analysis.md`:
46
+ Create/update `.workflows/.state/research-analysis.md`:
47
47
 
48
48
  ```markdown
49
49
  ---
@@ -8,9 +8,9 @@
8
8
 
9
9
  set -eo pipefail
10
10
 
11
- RESEARCH_DIR="docs/workflow/research"
12
- DISCUSSION_DIR="docs/workflow/discussion"
13
- CACHE_FILE="docs/workflow/.state/research-analysis.md"
11
+ RESEARCH_DIR=".workflows/research"
12
+ DISCUSSION_DIR=".workflows/discussion"
13
+ CACHE_FILE=".workflows/.state/research-analysis.md"
14
14
 
15
15
  # Helper: Extract a frontmatter field value from a file
16
16
  # Usage: extract_field <file> <field_name>
@@ -2,7 +2,7 @@
2
2
  name: start-feature
3
3
  description: "Start a new feature through the full pipeline. Gathers context via structured interview, creates a discussion, then bridges to continue-feature for specification, planning, and implementation."
4
4
  disable-model-invocation: true
5
- allowed-tools: Bash(ls docs/workflow/discussion/), Bash(.claude/hooks/workflows/write-session-state.sh)
5
+ allowed-tools: Bash(ls .workflows/discussion/), Bash(.claude/hooks/workflows/write-session-state.sh)
6
6
  hooks:
7
7
  PreToolUse:
8
8
  - hooks:
@@ -45,7 +45,7 @@ Invoke the `/migrate` skill and assess its output.
45
45
  Context refresh (compaction) summarizes the conversation, losing procedural detail. When you detect a context refresh has occurred — the conversation feels abruptly shorter, you lack memory of recent steps, or a summary precedes this message — follow this recovery protocol:
46
46
 
47
47
  1. **Re-read this skill file completely.** Do not rely on your summary of it. The full process, steps, and rules must be reloaded.
48
- 2. **Identify the topic.** Check conversation history for the topic name. If unknown, check `docs/workflow/discussion/` for recently modified files via `git log --oneline -5`.
48
+ 2. **Identify the topic.** Check conversation history for the topic name. If unknown, check `.workflows/discussion/` for recently modified files via `git log --oneline -5`.
49
49
  3. **Determine current step from artifacts:**
50
50
  - No discussion file exists → resume at **Step 1**
51
51
  - Discussion exists with `status: in-progress` → resume at **Step 3** (re-invoke technical-discussion)
@@ -73,7 +73,7 @@ Based on the feature description, suggest a topic name:
73
73
  ```
74
74
  Suggested topic name: {suggested-topic:(kebabcase)}
75
75
 
76
- This will create: docs/workflow/discussion/{suggested-topic}.md
76
+ This will create: .workflows/discussion/{suggested-topic}.md
77
77
  ```
78
78
 
79
79
  > *Output the next fenced block as markdown (not a code block):*
@@ -92,7 +92,7 @@ Is this name okay?
92
92
  Once the topic name is confirmed, check for naming conflicts:
93
93
 
94
94
  ```bash
95
- ls docs/workflow/discussion/
95
+ ls .workflows/discussion/
96
96
  ```
97
97
 
98
98
  If a discussion with the same name exists, inform the user:
@@ -130,7 +130,7 @@ Saving session state so Claude can pick up where it left off and continue the fe
130
130
  .claude/hooks/workflows/write-session-state.sh \
131
131
  "{topic}" \
132
132
  "skills/technical-discussion/SKILL.md" \
133
- "docs/workflow/discussion/{topic}.md" \
133
+ ".workflows/discussion/{topic}.md" \
134
134
  --pipeline "This session is part of the feature pipeline. After the discussion concludes, load and follow the phase bridge at skills/start-feature/references/phase-bridge.md for topic '{topic}'."
135
135
  ```
136
136
 
@@ -26,7 +26,7 @@ continue the feature pipeline from specification onwards.
26
26
  - Topic: {topic}
27
27
  - Completed phase: discussion
28
28
  - Expected next phase: specification
29
- - Discussion: docs/workflow/discussion/{topic}.md
29
+ - Discussion: .workflows/discussion/{topic}.md
30
30
 
31
31
  ## How to proceed
32
32
 
@@ -119,7 +119,7 @@ No plans exist yet.
119
119
  ```
120
120
  Implementation Overview
121
121
 
122
- No plans found in docs/workflow/planning/
122
+ No plans found in .workflows/planning/
123
123
 
124
124
  The implementation phase requires a plan.
125
125
  Run /start-planning first to create a plan from a specification.
@@ -369,7 +369,7 @@ Environment: No special setup required.
369
369
  > *Output the next fenced block as a code block:*
370
370
 
371
371
  ```
372
- Environment setup file found: docs/workflow/environment-setup.md
372
+ Environment setup file found: .workflows/environment-setup.md
373
373
  ```
374
374
  → Proceed to **Step 6**.
375
375
 
@@ -384,8 +384,8 @@ Are there any environment setup instructions I should follow before implementati
384
384
 
385
385
  **STOP.** Wait for user response.
386
386
 
387
- - If the user provides instructions, save them to `docs/workflow/environment-setup.md`, commit and push
388
- - If the user says no/none, create `docs/workflow/environment-setup.md` with "No special setup required." and commit
387
+ - If the user provides instructions, save them to `.workflows/environment-setup.md`, commit and push
388
+ - If the user says no/none, create `.workflows/environment-setup.md` with "No special setup required." and commit
389
389
 
390
390
  → Proceed to **Step 6**.
391
391
 
@@ -405,7 +405,7 @@ Saving session state so Claude can pick up where it left off if the conversation
405
405
  .claude/hooks/workflows/write-session-state.sh \
406
406
  "{topic}" \
407
407
  "skills/technical-implementation/SKILL.md" \
408
- "docs/workflow/implementation/{topic}/tracking.md"
408
+ ".workflows/implementation/{topic}/tracking.md"
409
409
  ```
410
410
 
411
411
  After completing the steps above, this skill's purpose is fulfilled.
@@ -415,7 +415,7 @@ Invoke the [technical-implementation](../technical-implementation/SKILL.md) skil
415
415
  **Example handoff:**
416
416
  ```
417
417
  Implementation session for: {topic}
418
- Plan: docs/workflow/planning/{topic}/plan.md
418
+ Plan: .workflows/planning/{topic}/plan.md
419
419
  Format: {format}
420
420
  Plan ID: {plan_id} (if applicable)
421
421
  Specification: {specification} (exists: {true|false})
@@ -7,10 +7,10 @@
7
7
 
8
8
  set -eo pipefail
9
9
 
10
- PLAN_DIR="docs/workflow/planning"
11
- SPEC_DIR="docs/workflow/specification"
12
- IMPL_DIR="docs/workflow/implementation"
13
- ENVIRONMENT_FILE="docs/workflow/environment-setup.md"
10
+ PLAN_DIR=".workflows/planning"
11
+ SPEC_DIR=".workflows/specification"
12
+ IMPL_DIR=".workflows/implementation"
13
+ ENVIRONMENT_FILE=".workflows/environment-setup.md"
14
14
 
15
15
  # Helper: Extract a frontmatter field value from a file
16
16
  # Usage: extract_field <file> <field_name>
@@ -74,11 +74,13 @@ Parse the discovery output to understand:
74
74
 
75
75
  **From `specifications` section:**
76
76
  - `exists` - whether any specifications exist
77
- - `feature` - list of feature specs (name, status, has_plan, plan_status)
77
+ - `feature` - list of feature specs (name, status, has_plan, plan_status, has_impl, impl_status)
78
78
  - `crosscutting` - list of cross-cutting specs (name, status)
79
79
  - `counts.feature` - total feature specifications
80
80
  - `counts.feature_ready` - feature specs ready for planning (concluded + no plan)
81
81
  - `counts.feature_with_plan` - feature specs that already have plans
82
+ - `counts.feature_actionable_with_plan` - specs with plans that are NOT fully implemented
83
+ - `counts.feature_implemented` - specs with `impl_status: completed`
82
84
  - `counts.crosscutting` - total cross-cutting specifications
83
85
 
84
86
  **From `plans` section:**
@@ -108,7 +110,7 @@ No specifications exist yet.
108
110
  ```
109
111
  Planning Overview
110
112
 
111
- No specifications found in docs/workflow/specification/
113
+ No specifications found in .workflows/specification/
112
114
 
113
115
  The planning phase requires a concluded specification.
114
116
  Run /start-specification first.
@@ -195,7 +197,7 @@ Saving session state so Claude can pick up where it left off if the conversation
195
197
  .claude/hooks/workflows/write-session-state.sh \
196
198
  "{topic}" \
197
199
  "skills/technical-planning/SKILL.md" \
198
- "docs/workflow/planning/{topic}/plan.md"
200
+ ".workflows/planning/{topic}/plan.md"
199
201
  ```
200
202
 
201
203
  Load **[invoke-skill.md](references/invoke-skill.md)** and follow its instructions as written.
@@ -6,6 +6,15 @@
6
6
 
7
7
  Present everything discovered to help the user make an informed choice.
8
8
 
9
+ **Actionable vs. non-actionable:**
10
+
11
+ A specification is **actionable** for planning if:
12
+ - It is a feature spec (not cross-cutting)
13
+ - Its status is `concluded`
14
+ - It does NOT have `impl_status: completed` (already fully implemented)
15
+
16
+ Specs with `impl_status: completed` have finished the full workflow and should not be offered for planning work.
17
+
9
18
  **Present the full state:**
10
19
 
11
20
  > *Output the next fenced block as a code block:*
@@ -18,16 +27,31 @@ Planning Overview
18
27
  1. {topic:(titlecase)}
19
28
  └─ Plan: @if(has_plan) {plan_status:[in-progress|concluded]} @else (no plan) @endif
20
29
  └─ Spec: concluded
30
+ @if(has_impl && impl_status != completed) └─ Impl: {impl_status} @endif
21
31
 
22
32
  2. ...
23
33
  ```
24
34
 
25
35
  **Tree rules:**
26
36
 
27
- Each numbered item shows a feature specification that is actionable:
37
+ Each numbered item shows a feature specification that is **actionable** (not fully implemented):
28
38
  - Concluded spec with no plan → `Plan: (no plan)`
29
39
  - Has a plan with `plan_status: planning` → `Plan: in-progress`
30
40
  - Has a plan with `plan_status: concluded` → `Plan: concluded`
41
+ - Has implementation tracking (but not completed) → show `Impl: {impl_status}`
42
+
43
+ Do NOT include specs with `impl_status: completed` in the numbered list — they go in the "Completed specifications" section.
44
+
45
+ **If completed specifications exist** (impl_status: completed), show them in a separate code block:
46
+
47
+ > *Output the next fenced block as a code block:*
48
+
49
+ ```
50
+ Completed specifications:
51
+ These specifications have been fully implemented.
52
+
53
+ • {topic} (implementation completed)
54
+ ```
31
55
 
32
56
  **If non-plannable specifications exist**, show them in a separate code block:
33
57
 
@@ -52,6 +76,10 @@ Key:
52
76
  in-progress — planning work is ongoing
53
77
  concluded — plan is complete
54
78
 
79
+ Impl status:
80
+ in-progress — implementation work is ongoing
81
+ completed — implementation is finished
82
+
55
83
  Spec type:
56
84
  cross-cutting — architectural policy, not directly plannable
57
85
  feature — plannable feature specification
@@ -68,6 +96,8 @@ The verb in the menu depends on the plan state:
68
96
  - Plan is `in-progress` → **Continue**
69
97
  - Plan is `concluded` → **Review**
70
98
 
99
+ Do NOT include specs with `impl_status: completed` in the menu.
100
+
71
101
  > *Output the next fenced block as markdown (not a code block):*
72
102
 
73
103
  ```
@@ -11,7 +11,7 @@ Invoke the [technical-planning](../../technical-planning/SKILL.md) skill for you
11
11
  **Example handoff (fresh plan):**
12
12
  ```
13
13
  Planning session for: {topic}
14
- Specification: docs/workflow/specification/{topic}/specification.md
14
+ Specification: .workflows/specification/{topic}/specification.md
15
15
  Additional context: {summary of user's answers from Step 5}
16
16
  Cross-cutting references: {list of applicable cross-cutting specs with brief summaries, or "none"}
17
17
  Recommended output format: {common_format from discovery if non-empty, otherwise "none"}
@@ -22,8 +22,8 @@ Invoke the technical-planning skill.
22
22
  **Example handoff (continue/review existing plan):**
23
23
  ```
24
24
  Planning session for: {topic}
25
- Specification: docs/workflow/specification/{topic}/specification.md
26
- Existing plan: docs/workflow/planning/{topic}/plan.md
25
+ Specification: .workflows/specification/{topic}/specification.md
26
+ Existing plan: .workflows/planning/{topic}/plan.md
27
27
 
28
28
  Invoke the technical-planning skill.
29
29
  ```
@@ -8,8 +8,9 @@
8
8
 
9
9
  set -eo pipefail
10
10
 
11
- SPEC_DIR="docs/workflow/specification"
12
- PLAN_DIR="docs/workflow/planning"
11
+ SPEC_DIR=".workflows/specification"
12
+ PLAN_DIR=".workflows/planning"
13
+ IMPL_DIR=".workflows/implementation"
13
14
 
14
15
  # Helper: Extract a frontmatter field value from a file
15
16
  # Usage: extract_field <file> <field_name>
@@ -41,6 +42,8 @@ echo "specifications:"
41
42
  feature_count=0
42
43
  feature_ready_count=0
43
44
  feature_with_plan_count=0
45
+ feature_actionable_with_plan_count=0
46
+ feature_implemented_count=0
44
47
  crosscutting_count=0
45
48
 
46
49
  if [ -d "$SPEC_DIR" ] && [ -n "$(ls -A "$SPEC_DIR" 2>/dev/null)" ]; then
@@ -69,12 +72,25 @@ if [ -d "$SPEC_DIR" ] && [ -n "$(ls -A "$SPEC_DIR" 2>/dev/null)" ]; then
69
72
  plan_status=${plan_status:-"unknown"}
70
73
  fi
71
74
 
75
+ # Check if implementation tracking exists and its status
76
+ has_impl="false"
77
+ impl_status=""
78
+ if [ -f "$IMPL_DIR/${name}/tracking.md" ]; then
79
+ has_impl="true"
80
+ impl_status=$(extract_field "$IMPL_DIR/${name}/tracking.md" "status")
81
+ impl_status=${impl_status:-"unknown"}
82
+ fi
83
+
72
84
  echo " - name: \"$name\""
73
85
  echo " status: \"$status\""
74
86
  echo " has_plan: $has_plan"
75
87
  if [ "$has_plan" = "true" ]; then
76
88
  echo " plan_status: \"$plan_status\""
77
89
  fi
90
+ echo " has_impl: $has_impl"
91
+ if [ "$has_impl" = "true" ]; then
92
+ echo " impl_status: \"$impl_status\""
93
+ fi
78
94
 
79
95
  feature_count=$((feature_count + 1))
80
96
  # "concluded" specs without plans are ready for planning
@@ -83,6 +99,14 @@ if [ -d "$SPEC_DIR" ] && [ -n "$(ls -A "$SPEC_DIR" 2>/dev/null)" ]; then
83
99
  fi
84
100
  if [ "$has_plan" = "true" ]; then
85
101
  feature_with_plan_count=$((feature_with_plan_count + 1))
102
+ # Track specs with plans that are still actionable (not fully implemented)
103
+ if [ "$impl_status" != "completed" ]; then
104
+ feature_actionable_with_plan_count=$((feature_actionable_with_plan_count + 1))
105
+ fi
106
+ fi
107
+ # Track fully implemented specs
108
+ if [ "$impl_status" = "completed" ]; then
109
+ feature_implemented_count=$((feature_implemented_count + 1))
86
110
  fi
87
111
  done
88
112
 
@@ -120,6 +144,8 @@ if [ -d "$SPEC_DIR" ] && [ -n "$(ls -A "$SPEC_DIR" 2>/dev/null)" ]; then
120
144
  echo " feature: $feature_count"
121
145
  echo " feature_ready: $feature_ready_count"
122
146
  echo " feature_with_plan: $feature_with_plan_count"
147
+ echo " feature_actionable_with_plan: $feature_actionable_with_plan_count"
148
+ echo " feature_implemented: $feature_implemented_count"
123
149
  echo " crosscutting: $crosscutting_count"
124
150
  else
125
151
  echo " exists: false"
@@ -129,6 +155,8 @@ else
129
155
  echo " feature: 0"
130
156
  echo " feature_ready: 0"
131
157
  echo " feature_with_plan: 0"
158
+ echo " feature_actionable_with_plan: 0"
159
+ echo " feature_implemented: 0"
132
160
  echo " crosscutting: 0"
133
161
  fi
134
162
 
@@ -206,9 +234,10 @@ echo " has_specifications: $specs_exist"
206
234
  echo " has_plans: $plans_exist"
207
235
 
208
236
  # Determine workflow state for routing
237
+ # Actionable = ready for new plan OR has plan that's not fully implemented
209
238
  if [ "$specs_exist" = "false" ]; then
210
239
  echo " scenario: \"no_specs\""
211
- elif [ "$feature_ready_count" -eq 0 ] && [ "$feature_with_plan_count" -eq 0 ]; then
240
+ elif [ "$feature_ready_count" -eq 0 ] && [ "$feature_actionable_with_plan_count" -eq 0 ]; then
212
241
  echo " scenario: \"nothing_actionable\""
213
242
  else
214
243
  echo " scenario: \"has_options\""
@@ -78,7 +78,7 @@ Saving session state so Claude can pick up where it left off if the conversation
78
78
  .claude/hooks/workflows/write-session-state.sh \
79
79
  "{topic}" \
80
80
  "skills/technical-research/SKILL.md" \
81
- "docs/workflow/research/{topic}.md"
81
+ ".workflows/research/{topic}.md"
82
82
  ```
83
83
 
84
84
  Load **[invoke-skill.md](references/invoke-skill.md)** and follow its instructions as written.
@@ -11,7 +11,7 @@ Invoke the [technical-research](../../technical-research/SKILL.md) skill for you
11
11
  **Example handoff:**
12
12
  ```
13
13
  Research session for: {topic}
14
- Output: docs/workflow/research/exploration.md
14
+ Output: .workflows/research/exploration.md
15
15
 
16
16
  Context:
17
17
  - Prompted by: {problem, opportunity, or curiosity}
@@ -107,7 +107,7 @@ No plans exist yet.
107
107
  ```
108
108
  Review Overview
109
109
 
110
- No plans found in docs/workflow/planning/
110
+ No plans found in .workflows/planning/
111
111
 
112
112
  The review phase requires a completed implementation based on a plan.
113
113
  Run /start-planning first to create a plan, then /start-implementation
@@ -18,7 +18,7 @@ Saving session state so Claude can pick up where it left off if the conversation
18
18
  .claude/hooks/workflows/write-session-state.sh \
19
19
  "{topic}" \
20
20
  "skills/technical-review/SKILL.md" \
21
- "docs/workflow/review/{scope}/r{N}/review.md"
21
+ ".workflows/review/{scope}/r{N}/review.md"
22
22
  ```
23
23
 
24
24
  ---
@@ -34,13 +34,13 @@ Each plan is reviewed independently. When multiple plans are selected, pass all
34
34
  Review session
35
35
  Plans to review:
36
36
  - topic: {topic-1}
37
- plan: docs/workflow/planning/{topic-1}/plan.md
37
+ plan: .workflows/planning/{topic-1}/plan.md
38
38
  format: {format}
39
39
  plan_id: {plan_id} (if applicable)
40
40
  specification: {specification} (exists: {true|false})
41
41
  review_version: r{N}
42
42
  - topic: {topic-2}
43
- plan: docs/workflow/planning/{topic-2}/plan.md
43
+ plan: .workflows/planning/{topic-2}/plan.md
44
44
  format: {format}
45
45
  specification: {specification} (exists: {true|false})
46
46
  review_version: r{N}
@@ -52,7 +52,7 @@ Invoke the technical-review skill.
52
52
  ```
53
53
  Analysis session for: {topic}
54
54
  Review mode: analysis-only
55
- Review path: docs/workflow/review/{topic}/r{N}/
55
+ Review path: .workflows/review/{topic}/r{N}/
56
56
  Format: {format}
57
57
  Specification: {spec path}
58
58
 
@@ -7,10 +7,10 @@
7
7
 
8
8
  set -eo pipefail
9
9
 
10
- PLAN_DIR="docs/workflow/planning"
11
- SPEC_DIR="docs/workflow/specification"
12
- REVIEW_DIR="docs/workflow/review"
13
- IMPL_DIR="docs/workflow/implementation"
10
+ PLAN_DIR=".workflows/planning"
11
+ SPEC_DIR=".workflows/specification"
12
+ REVIEW_DIR=".workflows/review"
13
+ IMPL_DIR=".workflows/implementation"
14
14
 
15
15
  # Helper: Extract a frontmatter field value from a file
16
16
  # Usage: extract_field <file> <field_name>
@@ -78,7 +78,7 @@ if [ -d "$PLAN_DIR" ] && [ -n "$(ls -A "$PLAN_DIR" 2>/dev/null)" ]; then
78
78
  fi
79
79
 
80
80
  # Check implementation status
81
- impl_tracking="docs/workflow/implementation/${name}/tracking.md"
81
+ impl_tracking=".workflows/implementation/${name}/tracking.md"
82
82
  impl_status="none"
83
83
  if [ -f "$impl_tracking" ]; then
84
84
  impl_status_val=$(extract_field "$impl_tracking" "status")
@@ -2,7 +2,7 @@
2
2
  name: start-specification
3
3
  description: "Start a specification session from concluded discussions. Discovers available discussions, offers consolidation assessment for multiple discussions, and invokes the technical-specification skill."
4
4
  disable-model-invocation: true
5
- allowed-tools: Bash(.claude/skills/start-specification/scripts/discovery.sh), Bash(mkdir -p docs/workflow/.state), Bash(rm docs/workflow/.state/discussion-consolidation-analysis.md), Bash(.claude/hooks/workflows/write-session-state.sh)
5
+ allowed-tools: Bash(.claude/skills/start-specification/scripts/discovery.sh), Bash(mkdir -p .workflows/.state), Bash(rm .workflows/.state/discussion-consolidation-analysis.md), Bash(.claude/hooks/workflows/write-session-state.sh)
6
6
  hooks:
7
7
  PreToolUse:
8
8
  - hooks:
@@ -65,10 +65,10 @@ When forming groupings:
65
65
 
66
66
  Create the cache directory if needed:
67
67
  ```bash
68
- mkdir -p docs/workflow/.state
68
+ mkdir -p .workflows/.state
69
69
  ```
70
70
 
71
- Write to `docs/workflow/.state/discussion-consolidation-analysis.md`:
71
+ Write to `.workflows/.state/discussion-consolidation-analysis.md`:
72
72
 
73
73
  ```markdown
74
74
  ---