@leeovery/claude-technical-workflows 2.1.38 → 2.1.40

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.
@@ -0,0 +1,57 @@
1
+ # Input Review
2
+
3
+ *Reference for **[spec-review](spec-review.md)***
4
+
5
+ ---
6
+
7
+ Phase 1 compares the specification against all source material to catch anything missed.
8
+
9
+ ## The Review Process
10
+
11
+ 1. **Re-read ALL source material** — Go back to every source document, discussion, research note, and reference. Don't rely on memory.
12
+
13
+ 2. **Compare systematically** — For each piece of source material:
14
+ - What topics does it cover?
15
+ - Are those topics fully captured in the specification?
16
+ - Are there details, edge cases, or decisions that didn't make it?
17
+
18
+ 3. **Search for the forgotten** — Look specifically for:
19
+ - Edge cases mentioned in passing
20
+ - Constraints or requirements buried in tangential discussions
21
+ - Technical details that seemed minor at the time
22
+ - Decisions made early that may have been overshadowed
23
+ - Error handling, validation rules, or boundary conditions
24
+ - Integration points or data flows mentioned but not elaborated
25
+
26
+ 4. **Collect what you find** — Note each finding for your summary. Categorize:
27
+ - **Enhancing an existing topic** — Details that belong in an already-documented section. Note which section it would enhance.
28
+ - **An entirely missed topic** — Something that warrants its own section but was glossed over. New topics get added at the end.
29
+
30
+ 5. **Never fabricate** — Every item you flag must trace back to specific source material. If you can't point to where it came from, don't suggest it. The goal is to catch missed content, not invent new requirements.
31
+
32
+ 6. **User confirms before inclusion** — Standard workflow applies: present proposed additions, get approval, then log verbatim.
33
+
34
+ 7. **Surface potential gaps** — After reviewing source material, consider whether the specification has gaps that the sources simply didn't address:
35
+ - Edge cases that weren't discussed
36
+ - Error scenarios not covered
37
+ - Integration points that seem implicit but aren't specified
38
+ - Behaviors that are ambiguous without clarification
39
+
40
+ Collect these alongside the missed content. This should be infrequent — most gaps will be caught from source material. But occasionally the sources themselves have blind spots worth surfacing.
41
+
42
+ 8. **Create the tracking file** — If findings exist, write them to `review-input-tracking-c{N}.md` using the format from **[review-tracking-format.md](review-tracking-format.md)**. Commit the tracking file.
43
+
44
+ ## What You're NOT Doing in Phase 1
45
+
46
+ - **Not inventing requirements** — When surfacing gaps not in sources, you're asking questions, not proposing answers
47
+ - **Not assuming gaps need filling** — If something isn't in the sources, it may have been intentionally omitted
48
+ - **Not padding the spec** — Only add what's genuinely missing and relevant
49
+ - **Not re-litigating decisions** — If something was discussed and rejected, it stays rejected
50
+
51
+ ## Completing Phase 1
52
+
53
+ When you've:
54
+ - Systematically reviewed all source material for missed content
55
+ - Created the tracking file (if findings exist) and committed it
56
+
57
+ → Return to **[spec-review.md](spec-review.md)** for finding processing.
@@ -0,0 +1,66 @@
1
+ # Review Tracking Format
2
+
3
+ *Reference for **[spec-review](spec-review.md)***
4
+
5
+ ---
6
+
7
+ Review tracking files capture analysis findings so work persists across context refresh.
8
+
9
+ ## Location
10
+
11
+ Store tracking files in the specification topic directory (`docs/workflow/specification/{topic}/`), cycle-numbered:
12
+ - `review-input-tracking-c{N}.md` — Phase 1 findings for cycle N
13
+ - `review-gap-analysis-tracking-c{N}.md` — Phase 2 findings for cycle N
14
+
15
+ Tracking files are **never deleted**. After all findings are processed, mark `status: complete`. Previous cycles' files persist as analysis history.
16
+
17
+ ## Format
18
+
19
+ ```markdown
20
+ ---
21
+ status: in-progress | complete
22
+ created: YYYY-MM-DD
23
+ cycle: {N}
24
+ phase: Input Review | Gap Analysis
25
+ topic: [Topic Name]
26
+ ---
27
+
28
+ # Review Tracking: [Topic Name] - [Phase]
29
+
30
+ ## Findings
31
+
32
+ ### 1. [Brief Title]
33
+
34
+ **Source**: [Where this came from — file/section reference, or "Specification analysis" for Gap Analysis]
35
+ **Category**: Enhancement to existing topic | New topic | Gap/Ambiguity
36
+ **Affects**: [Which section(s) of the specification]
37
+
38
+ **Details**:
39
+ [Explanation of what was found and why it matters]
40
+
41
+ **Proposed Addition**:
42
+ [What you would add to the specification — leave blank until discussed]
43
+
44
+ **Resolution**: Pending | Approved | Adjusted | Skipped
45
+ **Notes**: [Any discussion notes or adjustments made]
46
+
47
+ ---
48
+
49
+ ### 2. [Next Finding]
50
+ ...
51
+ ```
52
+
53
+ ## Workflow with Tracking Files
54
+
55
+ 1. Complete your analysis and create the tracking file with all findings
56
+ 2. Commit the tracking file — ensures it survives context refresh
57
+ 3. Present the summary to the user (from the tracking file)
58
+ 4. Work through items one at a time:
59
+ - Present the item
60
+ - Discuss and refine
61
+ - Get approval
62
+ - Log to specification
63
+ - Update the tracking file: mark resolution, add notes
64
+ 5. After all items resolved, mark tracking file `status: complete`
65
+
66
+ **Why tracking files**: If context refreshes mid-review, you can read the tracking file and continue where you left off. The tracking file shows which items are resolved and which remain. This is especially important when reviews surface 10-20 items that need individual discussion.
@@ -0,0 +1,114 @@
1
+ # Specification Completion
2
+
3
+ *Reference for **[technical-specification](../SKILL.md)***
4
+
5
+ ---
6
+
7
+ ## Step 1: Determine Specification Type
8
+
9
+ Before asking for sign-off, assess whether this is a **feature** or **cross-cutting** specification. See **[specification-format.md](specification-format.md)** for type definitions.
10
+
11
+ **Feature specification** — Something to build:
12
+ - Has concrete deliverables (code, APIs, UI)
13
+ - Can be planned with phases, tasks, acceptance criteria
14
+ - Results in a standalone implementation
15
+
16
+ **Cross-cutting specification** — Patterns/policies that inform other work:
17
+ - Defines "how to do things" rather than "what to build"
18
+ - Will be referenced by multiple feature specifications
19
+ - Implementation happens within features that apply these patterns
20
+
21
+ Present your assessment to the user:
22
+
23
+ > *Output the next fenced block as markdown (not a code block):*
24
+
25
+ ```
26
+ This specification appears to be a **[feature/cross-cutting]** specification.
27
+
28
+ [Brief rationale — e.g., "It defines a caching strategy that will inform how multiple features handle data retrieval, rather than being a standalone piece of functionality to build."]
29
+
30
+ - **Feature specs** proceed to planning and implementation
31
+ - **Cross-cutting specs** are referenced by feature plans but don't have their own implementation plan
32
+
33
+ Does this assessment seem correct?
34
+ ```
35
+
36
+ **STOP.** Wait for user confirmation before proceeding.
37
+
38
+ ---
39
+
40
+ ## Step 2: Verify Tracking Files Complete
41
+
42
+ Before proceeding to sign-off, confirm that all review tracking files across all cycles have `status: complete`:
43
+
44
+ - `review-input-tracking-c{N}.md` — should be marked complete after each Phase 1
45
+ - `review-gap-analysis-tracking-c{N}.md` — should be marked complete after each Phase 2
46
+
47
+ If any tracking file still shows `status: in-progress`, mark it complete now.
48
+
49
+ > **CHECKPOINT**: Do not proceed to sign-off if any tracking files still show `status: in-progress`. They indicate incomplete review work.
50
+
51
+ ---
52
+
53
+ ## Step 3: Sign-Off
54
+
55
+ > *Output the next fenced block as markdown (not a code block):*
56
+
57
+ ```
58
+ · · · · · · · · · · · ·
59
+ - **`y`/`yes`** — Conclude specification and mark as concluded
60
+ - **Comment** — Add context before concluding
61
+ · · · · · · · · · · · ·
62
+ ```
63
+
64
+ **STOP.** Wait for user response.
65
+
66
+ #### If comment
67
+
68
+ Discuss the user's context, apply any changes, then re-present the sign-off prompt above.
69
+
70
+ #### If yes
71
+
72
+ → Proceed to **Step 4**.
73
+
74
+ ---
75
+
76
+ ## Step 4: Update Frontmatter and Conclude
77
+
78
+ Update the specification frontmatter:
79
+
80
+ ```yaml
81
+ ---
82
+ topic: {topic-name}
83
+ status: concluded
84
+ type: feature # or cross-cutting, as confirmed
85
+ date: YYYY-MM-DD # Use today's actual date
86
+ review_cycle: {N}
87
+ finding_gate_mode: gated
88
+ ---
89
+ ```
90
+
91
+ Specification is complete when:
92
+ - All topics have validated content
93
+ - All sources are marked as `incorporated`
94
+ - At least one review cycle completed with no findings, OR user explicitly chose to proceed past the re-loop prompt
95
+ - All review tracking files marked `status: complete`
96
+ - Type has been determined and confirmed
97
+ - User confirms the specification is complete
98
+ - No blocking gaps remain
99
+
100
+ Commit: `spec({topic}): conclude specification`
101
+
102
+ ---
103
+
104
+ ## Step 5: Handle Source Specifications
105
+
106
+ If any of your sources were **existing specifications** (as opposed to discussions, research, or other reference material), these have now been consolidated into the new specification.
107
+
108
+ 1. Mark each source specification as superseded by updating its frontmatter:
109
+ ```yaml
110
+ status: superseded
111
+ superseded_by: {new-specification-name}
112
+ ```
113
+ 2. Inform the user which files were updated
114
+ 3. Commit: `spec({topic}): mark source specifications as superseded`
@@ -0,0 +1,109 @@
1
+ # Spec Construction
2
+
3
+ *Reference for **[technical-specification](../SKILL.md)***
4
+
5
+ ---
6
+
7
+ Follow stages A through F sequentially for each topic in the specification. Each topic completes a full cycle before the next begins.
8
+
9
+ ```
10
+ A. Exhaustive extraction from sources
11
+ B. Synthesize and present for approval
12
+ C. Discuss and refine (if needed)
13
+ D. Approval gate
14
+ E. Log and commit
15
+ F. Topic complete → loop back to A or exit
16
+ ```
17
+
18
+ ---
19
+
20
+ ## A. Exhaustive Extraction
21
+
22
+ Load **[exhaustive-extraction.md](exhaustive-extraction.md)** and follow its instructions for the current topic.
23
+
24
+ When working with multiple sources, search each one — information about a single topic may be scattered across documents.
25
+
26
+ ### Context Resurfacing
27
+
28
+ When extraction reveals information that affects **already-logged topics**, resurface them immediately. Even mid-discussion — interrupt, flag what you found, and discuss whether it changes anything.
29
+
30
+ If it does: summarize what's changing in the chat, then re-present the full updated topic. The summary is for discussion only — the specification just gets the clean replacement. **Standard workflow applies: user approves before you update.**
31
+
32
+ > **CHECKPOINT**: Even when resurfacing content, you MUST NOT update the specification until the user explicitly approves the change. Present the updated version, wait for approval, then update.
33
+
34
+ Better to resurface and confirm "already covered" than let something slip past.
35
+
36
+ ---
37
+
38
+ ## B. Synthesize and Present
39
+
40
+ Present your understanding to the user **in the format it would appear in the specification**:
41
+
42
+ > *Output the next fenced block as markdown (not a code block):*
43
+
44
+ ```
45
+ Here's what I understand about [topic] based on the reference material. This is exactly what I'll write into the specification:
46
+
47
+ [content as rendered markdown]
48
+ ```
49
+
50
+ Then, **separately from the content above** (clear visual break):
51
+
52
+ > *Output the next fenced block as markdown (not a code block):*
53
+
54
+ ```
55
+ · · · · · · · · · · · ·
56
+ **To proceed:**
57
+ - **`y`/`yes`** — Approved. I'll add the above to the specification **verbatim** (exactly as shown, no modifications).
58
+ - **Or tell me what to change.**
59
+ · · · · · · · · · · · ·
60
+ ```
61
+
62
+ Content and choices must be visually distinct (not run together).
63
+
64
+ > **CHECKPOINT**: After presenting, you MUST STOP and wait for the user's response. Do NOT proceed to logging. Do NOT present the next topic. WAIT.
65
+
66
+ ---
67
+
68
+ ## C. Discuss and Refine
69
+
70
+ Work through the content together:
71
+ - Validate what's accurate
72
+ - Remove what's wrong, outdated, or hallucinated
73
+ - Add what's missing through brief discussion
74
+ - **Course correct** based on knowledge from subsequent project work
75
+ - Refine wording and structure
76
+
77
+ This is a **human-level conversation**, not form-filling. The user brings context from across the project that may not be in the reference material — decisions from other topics, implications from later work, or knowledge that can't all fit in context.
78
+
79
+ ---
80
+
81
+ ## D. Approval Gate
82
+
83
+ **DO NOT PROCEED TO LOGGING WITHOUT EXPLICIT USER APPROVAL.**
84
+
85
+ If you are uncertain whether the user approved, **ASK**: "Ready to log it, or do you want to change something?"
86
+
87
+ > **CHECKPOINT**: If you are about to write to the specification and the user's last message was not explicit approval, **STOP**. Present the choices again.
88
+
89
+ ---
90
+
91
+ ## E. Log and Commit
92
+
93
+ 1. Write to the specification — **verbatim** as presented and approved. No silent modifications.
94
+ 2. After completing exhaustive extraction from a source (all relevant content presented and logged), update that source's status to `incorporated` in the specification frontmatter. See **[specification-format.md](specification-format.md)** for source status details.
95
+ 3. Commit at natural breaks — after significant exchanges, after each major topic, and before any context refresh.
96
+
97
+ ---
98
+
99
+ ## F. Topic Complete
100
+
101
+ This is the end of this iteration.
102
+
103
+ #### If additional topics remain
104
+
105
+ → Proceed to **A. Exhaustive Extraction** and follow the instructions as written.
106
+
107
+ #### If all topics are covered
108
+
109
+ → Return to **[technical-specification SKILL.md](../SKILL.md)** for **Step 5**.
@@ -0,0 +1,154 @@
1
+ # Specification Review
2
+
3
+ *Reference for **[technical-specification](../SKILL.md)***
4
+
5
+ ---
6
+
7
+ Two-phase review of the specification. Phase 1 (Input Review) compares against source material. Phase 2 (Gap Analysis) reviews the specification as a standalone document.
8
+
9
+ **Why this matters**: The specification is the golden document. Plans are built from it, and those plans inform implementation. If a detail isn't in the specification, it won't make it to the plan, and therefore won't be built. Worse, the implementation agent may hallucinate to fill gaps, potentially getting it wrong. The goal is a specification robust enough that an agent or human could pick it up, create plans, break it into tasks, and write the code.
10
+
11
+ Load **[review-tracking-format.md](review-tracking-format.md)** — internalize the tracking file format for both phases.
12
+
13
+ ---
14
+
15
+ ## A. Cycle Management
16
+
17
+ Check the `review_cycle` field in the specification frontmatter.
18
+
19
+ #### If `review_cycle` is 0 or not set
20
+
21
+ Set `review_cycle: 1` in the specification frontmatter.
22
+
23
+ #### If `review_cycle` is already set
24
+
25
+ Increment `review_cycle` by 1.
26
+
27
+ Record the current cycle number — used for tracking file naming (`c{N}`).
28
+
29
+ Commit the updated frontmatter.
30
+
31
+ → If `review_cycle <= 3`, proceed to **B. Phase 1 — Input Review**.
32
+
33
+ #### If `review_cycle > 3`
34
+
35
+ **Do NOT skip review autonomously.** This gate is an escape hatch for the user — not a signal to stop. The expected default is to continue running review until no issues are found. Present the choice and let the user decide.
36
+
37
+ > *Output the next fenced block as a code block:*
38
+
39
+ ```
40
+ Review cycle {N}
41
+
42
+ Review has run {N-1} times so far. You can continue (recommended if issues
43
+ were still found last cycle) or skip to completion.
44
+ ```
45
+
46
+ > *Output the next fenced block as markdown (not a code block):*
47
+
48
+ ```
49
+ · · · · · · · · · · · ·
50
+ - **`p`/`proceed`** — Continue review *(default)*
51
+ - **`s`/`skip`** — Skip review, proceed to completion
52
+ · · · · · · · · · · · ·
53
+ ```
54
+
55
+ **STOP.** Wait for user choice. You MUST NOT choose on the user's behalf.
56
+
57
+ #### If `proceed`
58
+
59
+ → Continue to **B. Phase 1 — Input Review**.
60
+
61
+ #### If `skip`
62
+
63
+ → Jump to **E. Completion**.
64
+
65
+ ---
66
+
67
+ ## B. Phase 1 — Input Review
68
+
69
+ 1. Load **[review-input.md](review-input.md)** and follow its instructions (analysis + tracking file creation).
70
+ 2. Load **[process-review-findings.md](process-review-findings.md)** and follow its instructions to process findings with the user.
71
+
72
+ → Proceed to **C. Phase 2 — Gap Analysis**.
73
+
74
+ ---
75
+
76
+ ## C. Phase 2 — Gap Analysis
77
+
78
+ 1. Load **[review-gap-analysis.md](review-gap-analysis.md)** and follow its instructions (analysis + tracking file creation).
79
+ 2. Load **[process-review-findings.md](process-review-findings.md)** and follow its instructions to process findings with the user.
80
+
81
+ → Proceed to **D. Re-Loop Prompt**.
82
+
83
+ ---
84
+
85
+ ## D. Re-Loop Prompt
86
+
87
+ #### If no findings were surfaced in either phase of this cycle
88
+
89
+ → Skip the re-loop prompt and proceed directly to **E. Completion** (nothing to re-analyse).
90
+
91
+ #### If findings were surfaced
92
+
93
+ Check `finding_gate_mode` and `review_cycle` in the specification frontmatter.
94
+
95
+ #### If `finding_gate_mode: auto` and `review_cycle < 5`
96
+
97
+ > *Output the next fenced block as a code block:*
98
+
99
+ ```
100
+ Review cycle {N} complete — findings applied. Running follow-up cycle.
101
+ ```
102
+
103
+ → Return to **A. Cycle Management**.
104
+
105
+ #### If `finding_gate_mode: auto` and `review_cycle >= 5`
106
+
107
+ > *Output the next fenced block as a code block:*
108
+
109
+ ```
110
+ Review cycle {N}
111
+
112
+ Auto-review has not converged after 5 cycles — escalating for human review.
113
+ ```
114
+
115
+ → Present the gated re-loop prompt below.
116
+
117
+ #### If `finding_gate_mode: gated`
118
+
119
+ > *Output the next fenced block as markdown (not a code block):*
120
+
121
+ ```
122
+ · · · · · · · · · · · ·
123
+ - **`r`/`reanalyse`** — Run another review cycle (Phase 1 + Phase 2)
124
+ - **`p`/`proceed`** — Proceed to completion
125
+ · · · · · · · · · · · ·
126
+ ```
127
+
128
+ **STOP.** Wait for user response.
129
+
130
+ #### If reanalyse
131
+
132
+ → Return to **A. Cycle Management** to begin a fresh cycle.
133
+
134
+ #### If proceed
135
+
136
+ → Continue to **E. Completion**.
137
+
138
+ ---
139
+
140
+ ## E. Completion
141
+
142
+ 1. **Verify tracking files are marked complete** — All input review and gap analysis tracking files across all cycles must have `status: complete`.
143
+
144
+ > **CHECKPOINT**: Do not confirm completion if any tracking files still show `status: in-progress`. They indicate incomplete review work.
145
+
146
+ 2. **Commit** all review tracking files: `spec({topic}): complete specification review (cycle {N})`
147
+
148
+ > *Output the next fenced block as a code block:*
149
+
150
+ ```
151
+ Specification review complete — {N} cycle(s), all tracking files finalised.
152
+ ```
153
+
154
+ → Return to **[technical-specification SKILL.md](../SKILL.md)** for **Step 7**.
@@ -0,0 +1,166 @@
1
+ # Specification Format
2
+
3
+ *Reference for **[technical-specification](../SKILL.md)***
4
+
5
+ ---
6
+
7
+ This file defines the canonical structure for specification files (`docs/workflow/specification/{topic}/specification.md`).
8
+
9
+ The specification is a single file per topic. Structure is **flexible** — organize around phases and subject matter, not rigid sections. This is a working document.
10
+
11
+ > **CHECKPOINT**: You should NOT be creating or writing to this file unless you have explicit user approval for specific content. If you're about to create this file with content you haven't presented and had approved, **STOP**. That violates the workflow.
12
+
13
+ ---
14
+
15
+ ## Frontmatter
16
+
17
+ ```yaml
18
+ ---
19
+ topic: {topic-name}
20
+ status: in-progress
21
+ type: feature
22
+ date: YYYY-MM-DD
23
+ review_cycle: 0
24
+ finding_gate_mode: gated
25
+ sources:
26
+ - name: {source-name}
27
+ status: pending
28
+ ---
29
+ ```
30
+
31
+ | Field | Set when |
32
+ |-------|----------|
33
+ | `topic` | Spec creation (Step 2) — kebab-case identifier matching the directory name |
34
+ | `status` | Spec creation → `in-progress`; conclusion → `concluded` |
35
+ | `type` | Spec creation → `feature` (default); completion → `feature` or `cross-cutting` |
36
+ | `date` | Spec creation — today's date; update on each commit |
37
+ | `review_cycle` | Starts at 0; incremented each review cycle. Missing field treated as 0. |
38
+ | `finding_gate_mode` | Spec creation → `gated`; user opts in → `auto` |
39
+ | `sources` | Spec creation — all sources as `pending`; updated as extraction completes |
40
+
41
+ ---
42
+
43
+ ## Body
44
+
45
+ ```markdown
46
+ # Specification: [Topic Name]
47
+
48
+ ## Specification
49
+
50
+ [Validated content accumulates here, organized by topic/phase]
51
+
52
+ ---
53
+
54
+ ## Working Notes
55
+
56
+ [Optional - capture in-progress discussion if needed]
57
+ ```
58
+
59
+ ---
60
+
61
+ ## Sources and Incorporation Status
62
+
63
+ **All specifications must track their sources**, even when built from a single source. This enables proper tracking when additional material is later added.
64
+
65
+ Track each source with its incorporation status:
66
+
67
+ ```yaml
68
+ sources:
69
+ - name: auth-flow
70
+ status: incorporated
71
+ - name: api-design
72
+ status: pending
73
+ ```
74
+
75
+ **Status values:**
76
+ - `pending` — Source has been selected but content extraction is not complete
77
+ - `incorporated` — Source content has been fully extracted and woven into the specification
78
+
79
+ **When to update source status:**
80
+
81
+ 1. **When creating the specification**: All sources start as `pending`
82
+ 2. **After completing exhaustive extraction from a source**: Mark that source as `incorporated`
83
+ 3. **When adding a new source to an existing spec**: Add it with `status: pending`
84
+
85
+ **How to determine if a source is incorporated:**
86
+
87
+ A source is `incorporated` when you have:
88
+ - Performed exhaustive extraction (reviewed ALL content in the source for relevant material)
89
+ - Presented and logged all relevant content from that source
90
+ - No more content from that source needs to be extracted
91
+
92
+ **Important**: The specification's overall `status: concluded` should only be set when:
93
+ - All sources are marked as `incorporated`
94
+ - Both review phases are complete
95
+ - User has signed off
96
+
97
+ If a new source is added to a concluded specification (via grouping analysis), the specification effectively needs updating — even if the file still says `status: concluded`, the presence of `pending` sources indicates work remains.
98
+
99
+ ---
100
+
101
+ ## Specification Types
102
+
103
+ The `type` field distinguishes between specifications that result in standalone implementation work versus those that inform how other work is done.
104
+
105
+ ### Feature Specifications (`type: feature`)
106
+
107
+ Feature specifications describe something to **build** — a concrete piece of functionality with its own implementation plan.
108
+
109
+ **Examples:**
110
+ - User authentication system
111
+ - Order processing pipeline
112
+ - Notification service
113
+ - Dashboard analytics
114
+
115
+ **Characteristics:**
116
+ - Results in a dedicated implementation plan
117
+ - Has concrete deliverables (code, APIs, UI)
118
+ - Can be planned with phases, tasks, and acceptance criteria
119
+ - Progress is measurable ("the feature is done")
120
+
121
+ **This is the default type.** If not specified, assume `feature`.
122
+
123
+ ### Cross-Cutting Specifications (`type: cross-cutting`)
124
+
125
+ Cross-cutting specifications describe **patterns, policies, or architectural decisions** that inform how features are built. They don't result in standalone implementation — instead, they're referenced by feature specifications and plans.
126
+
127
+ **Examples:**
128
+ - Caching strategy
129
+ - Rate limiting policy
130
+ - Error handling conventions
131
+ - Logging and observability standards
132
+ - API versioning approach
133
+ - Security patterns
134
+
135
+ **Characteristics:**
136
+ - Does NOT result in a dedicated implementation plan
137
+ - Defines "how to do things" rather than "what to build"
138
+ - Referenced by multiple feature specifications
139
+ - Implementation happens within features that apply these patterns
140
+ - No standalone "done" state — the patterns are applied across features
141
+
142
+ ### Why This Matters
143
+
144
+ Cross-cutting specifications go through the same validation phases. The decisions are just as important to validate and document. The difference is what happens after:
145
+
146
+ - **Feature specs** → Planning → Implementation → Review
147
+ - **Cross-cutting specs** → Referenced by feature plans → Applied during feature implementation
148
+
149
+ When planning a feature, the planning process surfaces relevant cross-cutting specifications as context. This ensures that a "user authentication" plan incorporates the validated caching strategy and error handling conventions.
150
+
151
+ ### Determining the Type
152
+
153
+ Ask: **"Is there a standalone thing to build, or does this inform how we build other things?"**
154
+
155
+ | Question | Feature | Cross-Cutting |
156
+ |----------|---------|---------------|
157
+ | Can you demo it when done? | Yes — "here's the login page" | No — it's invisible infrastructure |
158
+ | Does it have its own UI/API/data? | Yes | No — lives within other features |
159
+ | Can you plan phases and tasks for it? | Yes | Tasks would be "apply X to feature Y" |
160
+ | Is it used by one feature or many? | Usually one | By definition, multiple |
161
+
162
+ **Edge cases:**
163
+ - A "caching service" that provides shared caching infrastructure → **Feature** (you're building something)
164
+ - "How we use caching across the app" → **Cross-cutting** (policy/pattern)
165
+ - Authentication system → **Feature**
166
+ - Authentication patterns and security requirements → **Cross-cutting**