sdlc-framework 1.0.2 → 2.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.
@@ -1,10 +1,10 @@
1
- <purpose>The universal entry point workflow. Accept a plain language description, classify the work, estimate complexity, and either execute inline (simple work) or route to the appropriate specialized command (complex work, bugs, research, hotfixes). This is the "just tell me what to do" workflow.</purpose>
1
+ <purpose>The universal entry point workflow. Accept a plain language description, classify the work, estimate complexity, and either execute inline (simple work), handle critical issues as inline hotfixes, or route to the appropriate specialized command. This is the "just tell me what to do" workflow.</purpose>
2
2
  <when_to_use>Use anytime. This is the default way to start work. The user describes what they need, and this workflow figures out the rest. No prior knowledge of SDLC commands required.</when_to_use>
3
3
  <required_reading>.sdlc/STATE.md, .sdlc/PROJECT.md, .sdlc/LAWS.md</required_reading>
4
4
  <loop_context>
5
- expected_phase: FAST (compressed loop or routing)
5
+ expected_phase: FAST (compressed loop, inline hotfix, or routing)
6
6
  prior_phase: any (fast can be used between loops or as the first action)
7
- next_phase: depends on routing — SPEC, DEBUG, HOTFIX, RESEARCH, or self-contained
7
+ next_phase: depends on routing — SPEC, DEBUG, RESEARCH, DISCUSS, or self-contained
8
8
  </loop_context>
9
9
  <references>
10
10
  @~/.claude/sdlc-framework/references/prompt-detection.md
@@ -49,10 +49,9 @@
49
49
 
50
50
  1. CRITICAL — urgent production issues
51
51
  Indicators: "urgent", "production", "down", "outage", "critical", "P0", "hotfix", "emergency", "ASAP"
52
- Route: /sdlc:hotfix
53
- Display: "Critical issue detected. Routing to /sdlc:hotfix for emergency handling."
54
- Write to STATE.md: fast_context = {original description}
55
- STOP this workflow.
52
+ Route: inline hotfix (skip to inline_hotfix step)
53
+ Display: "Critical issue detected. Running inline hotfix minimal spec, full verification."
54
+ Do NOT stop proceed to inline_hotfix step.
56
55
 
57
56
  2. BUG — something broken that needs debugging
58
57
  Indicators: "fix bug", "broken", "crash", "error when", "fails to", "wrong output", "regression", "not working", "throws", "exception"
@@ -337,4 +336,56 @@
337
336
  WHY: Fast is a side-quest. It records what happened (audit trail) but does not disrupt the main loop state.
338
337
  </step>
339
338
 
339
+ <step name="inline_hotfix" priority="tenth">
340
+ ONLY IF classification = CRITICAL. Emergency fix with minimal ceremony, maximum verification.
341
+
342
+ A. TRIAGE:
343
+ Ask 3 questions:
344
+ - "What is broken? (specific symptom)"
345
+ - "What is the impact? (who is affected)"
346
+ - "When did it start? (recent deploy, config change)"
347
+
348
+ Classify severity:
349
+ - P0: system down, critical path unavailable
350
+ - P1: data corruption, security breach, data loss
351
+ - P2: major feature broken but system is up
352
+
353
+ If not P0/P1: Display "This may not be critical. Consider /sdlc:debug instead." Let user override.
354
+
355
+ Save current STATE.md position — hotfix restores it when done.
356
+
357
+ B. 3-LINE INLINE SPEC:
358
+ - Line 1: WHAT is broken (from triage)
359
+ - Line 2: WHERE is the likely location (quick Grep search)
360
+ - Line 3: WHAT the fix should achieve (expected behavior)
361
+ Display but do NOT wait for approval — speed matters.
362
+ Boundary: fix ONLY the critical issue. No refactoring. No cleanup.
363
+
364
+ C. FIX DIRECTLY:
365
+ - Single-threaded, no sub-agents
366
+ - Read relevant files, apply MINIMAL fix
367
+ - Engineering laws still apply (no empty catch, no hardcoded secrets)
368
+ - Add regression test for the specific failure
369
+ - Mark debt with TODO(hotfix-{date})
370
+
371
+ D. FULL VERIFICATION:
372
+ - Run FULL test suite (all tests, not just affected)
373
+ - For UI: Playwright verification
374
+ - If any fail: fix before proceeding
375
+
376
+ E. FULL REVIEW:
377
+ - Check all modified files against engineering laws
378
+ - Security blockers still block even in emergencies
379
+ - Warnings acceptable for hotfixes
380
+
381
+ F. RECORD:
382
+ - Hotfix number = {phase}.{count+1} (e.g., 02.1, 02.2)
383
+ - Create .sdlc/phases/{phase}/HOTFIX-{number}-SUMMARY.md
384
+ - Update STATE.md: restore prior state, add history entry
385
+ - Update ROADMAP.md: note hotfix under current phase
386
+ - Display completion summary with verification results
387
+
388
+ WHY: Hotfixes trade planning ceremony for speed, but never trade verification or review. The inline approach avoids command-switching overhead during emergencies while maintaining quality gates.
389
+ </step>
390
+
340
391
  </process>
@@ -152,7 +152,7 @@
152
152
  | ... | ... | ... | ... |
153
153
 
154
154
  ## Future Milestones
155
- {Leave blank — added via /sdlc:milestone}
155
+ {Leave blank — added via /sdlc:init milestone <name>}
156
156
  ```
157
157
 
158
158
  WHY: The roadmap gives structure to the work. Without it, specs are disconnected tasks with no arc. The phase structure ensures work builds on itself in a logical order.
@@ -0,0 +1,206 @@
1
+ <purpose>Show loop position, save session context (pause), or restore session context (resume). Consolidates status, pause, and resume into a single workflow. The state machine always knows the next action — this workflow surfaces it.</purpose>
2
+ <when_to_use>Run anytime. No-arg for status. "pause" before a break. "resume" when returning. Can run at any loop position.</when_to_use>
3
+ <required_reading>.sdlc/STATE.md, .sdlc/ROADMAP.md</required_reading>
4
+ <loop_context>
5
+ expected_phase: any (status/pause/resume work at any loop position)
6
+ prior_phase: current position is preserved
7
+ next_phase: determined by STATE.md
8
+ </loop_context>
9
+ <process>
10
+
11
+ <step name="determine_mode" priority="first">
12
+ Parse $ARGUMENTS to determine the mode.
13
+
14
+ IF $ARGUMENTS is empty or not "pause"/"resume": MODE = STATUS
15
+ IF $ARGUMENTS starts with "pause": MODE = PAUSE. Extract optional reason.
16
+ IF $ARGUMENTS starts with "resume": MODE = RESUME. Extract optional handoff path.
17
+
18
+ Read .sdlc/STATE.md.
19
+
20
+ IF .sdlc/ does not exist:
21
+ Display: "Framework not initialized. Run /sdlc:init first."
22
+ STOP.
23
+
24
+ Extract: loop_position, current_milestone, current_phase, current_plan, next_required_action, blockers, deferred_issues.
25
+
26
+ WHY: One entry point with three modes eliminates the need for three separate commands. The state file is the single source of truth regardless of mode.
27
+ </step>
28
+
29
+ <step name="show_status" priority="second">
30
+ ONLY IF MODE = STATUS.
31
+
32
+ Read .sdlc/ROADMAP.md for milestone progress data.
33
+
34
+ Display the core loop with current position highlighted:
35
+ ```
36
+ SDLC Loop Position:
37
+
38
+ SPEC ──→ IMPLEMENT ──→ VERIFY ──→ REVIEW ──→ CLOSE
39
+ │ │
40
+ └──────────────── next cycle ←─────────────────┘
41
+
42
+ Current: [IMPLEMENT] ◄── YOU ARE HERE
43
+ ```
44
+
45
+ Use `[PHASE]` brackets around the current position.
46
+ If in DEBUG, show as a side branch off IMPLEMENT.
47
+
48
+ Display project context:
49
+ ```
50
+ Milestone: {name} ({completed_phases}/{total_phases} phases)
51
+ Phase: {name}
52
+ Plan: {name or "none — run /sdlc:spec"}
53
+ ```
54
+
55
+ Calculate and display progress bar from ROADMAP.md:
56
+ ```
57
+ Progress: [████████░░░░░░░░░░░░] 40% (4/10 plans completed)
58
+ ```
59
+
60
+ Show blockers and deferred issues (or "No blockers. No deferred issues.").
61
+
62
+ Force ONE next action from loop_position with explanation:
63
+ ```
64
+ NEXT ACTION REQUIRED: /sdlc:impl
65
+
66
+ What it does: Implements the current plan by writing code with subagent workers.
67
+ Why it is next: The spec phase is complete. The plan has been approved.
68
+ ```
69
+
70
+ WHY: Status is the "where am I" command. Junior developers need the visual. Senior developers need the forced next action. Both get what they need.
71
+ </step>
72
+
73
+ <step name="pause_gather_context" priority="third">
74
+ ONLY IF MODE = PAUSE.
75
+
76
+ Gather session context:
77
+
78
+ A. GIT STATE:
79
+ Run: git status --short (if git repo)
80
+ Run: git log --oneline -5
81
+
82
+ B. WORK COMPLETED THIS SESSION:
83
+ Read STATE.md history entries. Summarize recent work.
84
+
85
+ C. IN-PROGRESS WORK:
86
+ Read any active spec, review, or summary files referenced in STATE.md.
87
+ Determine: which tasks done, which pending, which ACs verified.
88
+
89
+ D. DECISIONS AND BLOCKERS:
90
+ Scan recent .sdlc/ files for recorded decisions.
91
+ Note any blockers from STATE.md.
92
+
93
+ E. USER CONTEXT:
94
+ Ask: "Anything to remember for next session not already in files? (or press enter to skip)"
95
+ Record response if provided.
96
+
97
+ WHY: Session context is ephemeral — conversation history may not survive. The handoff captures it before it is lost.
98
+ </step>
99
+
100
+ <step name="pause_save" priority="fourth">
101
+ ONLY IF MODE = PAUSE.
102
+
103
+ Create .sdlc/HANDOFF.md (overwrite if exists):
104
+ ```markdown
105
+ # Session Handoff
106
+
107
+ ## Session Info
108
+ - **Paused at**: {ISO timestamp}
109
+ - **Reason**: {from arguments or "manual pause"}
110
+ - **Loop position**: {from STATE.md}
111
+ - **Next required action**: {from STATE.md}
112
+
113
+ ## What Was Done This Session
114
+ {Bulleted list of work completed}
115
+
116
+ ## Current State
117
+ - **Phase**: {phase name and number}
118
+ - **Plan**: {plan number and title, or "no active plan"}
119
+ - **Loop step**: {position} — {status}
120
+
121
+ ## In-Progress Work
122
+ {What is partially done — specific tasks, files, ACs}
123
+
124
+ ## Decisions Made
125
+ {List of decisions with rationale}
126
+
127
+ ## Blockers / Open Questions
128
+ {List or "None"}
129
+
130
+ ## User Context
131
+ {Verbatim notes from the user, if any}
132
+
133
+ ## Git State
134
+ - **Branch**: {current branch}
135
+ - **Commit**: {latest commit hash and message}
136
+ - **Uncommitted changes**: {yes/no — details}
137
+ ```
138
+
139
+ IF UNCOMMITTED CHANGES EXIST:
140
+ Ask: "You have uncommitted changes. Create a WIP commit? (yes/no)"
141
+ If yes: stage relevant files (not .env), commit "wip({phase}): {brief description}"
142
+ If no: note in handoff that uncommitted changes exist.
143
+
144
+ Update STATE.md: add paused_at timestamp, history entry. Do NOT change loop_position.
145
+
146
+ Display:
147
+ ```
148
+ Session saved.
149
+
150
+ Handoff: .sdlc/HANDOFF.md
151
+ State: {loop_position}
152
+ Next action (on resume): {next_required_action}
153
+
154
+ When you return, run /sdlc:status resume
155
+ ```
156
+
157
+ WHY: HANDOFF.md bridges sessions. The explicit resume instruction ensures the next session starts correctly.
158
+ </step>
159
+
160
+ <step name="resume_restore" priority="fifth">
161
+ ONLY IF MODE = RESUME.
162
+
163
+ A. LOCATE HANDOFF:
164
+ If path in $ARGUMENTS: use that file.
165
+ Else if .sdlc/HANDOFF.md exists: use it.
166
+ Else: display "No handoff found. Resuming from STATE.md." Skip to next-action determination.
167
+
168
+ B. READ AND DISPLAY CONTEXT:
169
+ Read handoff. Calculate time since pause.
170
+ ```
171
+ === SESSION RESUMED ===
172
+
173
+ Last session: {time} ago
174
+ Loop position: {position}
175
+
176
+ Work in progress:
177
+ - {from handoff}
178
+
179
+ Decisions:
180
+ - {from handoff}
181
+
182
+ Blockers:
183
+ - {from handoff, or "None"}
184
+ ```
185
+
186
+ If blockers: ask "These blockers were noted. Are they resolved?"
187
+
188
+ C. VERIFY GIT STATE:
189
+ Run: git status
190
+ Compare branch and uncommitted changes to handoff.
191
+ If branch changed: warn.
192
+ If new commits since pause: display them.
193
+
194
+ D. ARCHIVE HANDOFF:
195
+ Rename .sdlc/HANDOFF.md to .sdlc/HANDOFF-{timestamp}.md.archived
196
+ Remove paused_at from STATE.md.
197
+ Add history entry: "{timestamp} | resume | Resumed from {loop_position}."
198
+
199
+ E. FORCE NEXT ACTION:
200
+ Determine from STATE.md next_required_action.
201
+ Display: "NEXT ACTION REQUIRED: {action}"
202
+
203
+ WHY: Exactly ONE next action. The state machine has already decided. The user just executes it.
204
+ </step>
205
+
206
+ </process>
@@ -113,7 +113,7 @@
113
113
  IF NO NEXT PHASE (this was the last phase in the milestone):
114
114
  Update .sdlc/STATE.md:
115
115
  - loop_position: TRANSITION ✓
116
- - next_required_action: /sdlc:milestone complete
116
+ - next_required_action: /sdlc:close (milestone completion handled inline)
117
117
  - Add history entry: "{timestamp} | transition | Phase {current} complete. Last phase in milestone. Trigger milestone completion."
118
118
 
119
119
  Update .sdlc/ROADMAP.md:
@@ -193,8 +193,8 @@
193
193
  Completed: Phase {number} — {name} (LAST PHASE)
194
194
  Milestone {milestone-number} — {milestone-name}: ALL PHASES COMPLETE
195
195
 
196
- NEXT ACTION REQUIRED: /sdlc:milestone complete
197
- Run /sdlc:milestone complete to finalize the milestone.
196
+ NEXT ACTION REQUIRED: /sdlc:close
197
+ Run /sdlc:close to finalize the milestone.
198
198
  ```
199
199
 
200
200
  WHY: The display makes the transition visible. Moving to a new phase is a significant moment — the user should know where they are in the broader plan.
@@ -1,99 +0,0 @@
1
- ---
2
- name: sdlc:hotfix
3
- description: "Emergency fix with minimal ceremony, maximum verification"
4
- argument-hint: "<critical-issue>"
5
- allowed-tools: [Read, Write, Bash, Glob, Grep, Edit, mcp__plugin_playwright_playwright__browser_navigate, mcp__plugin_playwright_playwright__browser_snapshot, mcp__plugin_playwright_playwright__browser_click, mcp__plugin_playwright_playwright__browser_fill_form, mcp__plugin_playwright_playwright__browser_take_screenshot, mcp__plugin_playwright_playwright__browser_evaluate, mcp__plugin_playwright_playwright__browser_console_messages, mcp__plugin_playwright_playwright__browser_close, AskUserQuestion]
6
- ---
7
-
8
- <objective>
9
- Emergency fix for critical issues. Minimal ceremony getting to the fix. Maximum verification after the fix. No corners cut on quality — only on planning overhead.
10
-
11
- **When to use:** Production is broken. A critical path is failing. Security vulnerability discovered. Something that cannot wait for a full SPEC cycle.
12
-
13
- **What it does:**
14
- 1. Skip full spec — create a lightweight inline spec (3 lines).
15
- 2. Fix the issue directly.
16
- 3. Run FULL verification (tests + Playwright).
17
- 4. Run FULL review (engineering laws compliance).
18
- 5. Record as a hotfix with decimal phase numbering (2.1, 2.2, etc.).
19
-
20
- **What happens next:** /sdlc:verify to run the full verification suite.
21
- </objective>
22
-
23
- <execution_context>
24
- @~/.claude/sdlc-framework/workflows/hotfix.md
25
- @.sdlc/STATE.md
26
- @.sdlc/LAWS.md
27
- </execution_context>
28
-
29
- <context>
30
- $ARGUMENTS
31
-
32
- Read .sdlc/STATE.md to get current milestone and phase.
33
- Read .sdlc/LAWS.md — hotfixes are NOT exempt from engineering laws.
34
- </context>
35
-
36
- <process>
37
- Follow workflow: @~/.claude/sdlc-framework/workflows/hotfix.md
38
-
39
- Step-by-step:
40
-
41
- 1. **Pre-flight check**
42
- - Verify .sdlc/ exists. If not, tell the user to run /sdlc:init first.
43
- - Read .sdlc/STATE.md to get current phase number (e.g., phase 2).
44
- - Assign hotfix number: current phase + decimal increment (2.1, 2.2, etc.).
45
- - Update STATE.md: set loop_position to HOTFIX, record hotfix number.
46
-
47
- 2. **Lightweight inline spec (3 lines)**
48
- - Line 1: WHAT is broken. (From $ARGUMENTS.)
49
- - Line 2: WHERE is the likely location. (Quick search with Grep.)
50
- - Line 3: WHAT the fix should achieve. (Expected behavior.)
51
- - Record this inline spec in STATE.md under the hotfix entry.
52
-
53
- 3. **Fix the issue**
54
- - Search for the affected code using Grep and Read.
55
- - Apply the fix. Follow engineering laws:
56
- - DRY: use existing patterns.
57
- - Handle edge cases.
58
- - Named types for complex objects.
59
- - No lint suppression. No non-null assertions.
60
- - Max 40 lines per function.
61
- - Keep the change surface as small as possible. Fix the issue, nothing more.
62
-
63
- 4. **Full verification**
64
- - Run the entire test suite. Not just affected tests — ALL tests.
65
- - For UI-related hotfixes:
66
- - Use Playwright to navigate to affected pages.
67
- - Verify the fix visually with screenshots.
68
- - Check console for errors.
69
- - Test the happy path AND edge cases.
70
- - If tests fail: fix the test failures before proceeding. Do not skip.
71
-
72
- 5. **Full review against engineering laws**
73
- - Read .sdlc/LAWS.md.
74
- - Check every changed line against every applicable law.
75
- - Verify: no dead code introduced, no unused imports, no inline complex types.
76
- - If any law is violated: fix it. Hotfixes are not exempt.
77
-
78
- 6. **Record in STATE.md**
79
- - Update .sdlc/STATE.md:
80
- - Record hotfix number (decimal: 2.1, 2.2, etc.).
81
- - Record: issue description, files changed, tests run, verification status.
82
- - Set loop_position back to current phase position.
83
- - Create .sdlc/hotfixes/HOTFIX-{number}-{timestamp}.md with full details.
84
-
85
- 7. **Force next action**
86
- - Output: "NEXT ACTION REQUIRED: /sdlc:verify — run full verification suite to confirm no regressions."
87
- </process>
88
-
89
- <success_criteria>
90
- - [ ] Inline spec created (3 lines: what, where, expected behavior)
91
- - [ ] Fix applied following engineering laws — no exceptions for hotfixes
92
- - [ ] Full test suite runs and passes
93
- - [ ] Playwright verification completed for UI-related hotfixes
94
- - [ ] Engineering laws review passed on all changed code
95
- - [ ] Hotfix recorded in STATE.md with decimal phase numbering
96
- - [ ] Hotfix detail file created in .sdlc/hotfixes/
97
- - [ ] Change surface is minimal — only the fix, nothing extra
98
- - [ ] Output ends with NEXT ACTION REQUIRED: /sdlc:verify
99
- </success_criteria>
@@ -1,136 +0,0 @@
1
- ---
2
- name: sdlc:milestone
3
- description: "Create or complete project milestones"
4
- argument-hint: "[create <name> | complete]"
5
- allowed-tools: [Read, Write, Bash, Glob, Grep, AskUserQuestion]
6
- ---
7
-
8
- <objective>
9
- Manage project milestones. Create new milestones with scope definition. Complete milestones with verification, archival, and tagging.
10
-
11
- **When to use:**
12
- - Starting a new body of work: `/sdlc:milestone create <name>`
13
- - Finishing a milestone: `/sdlc:milestone complete`
14
- - Checking milestone status: `/sdlc:milestone` (no argument)
15
-
16
- **What it does:**
17
- - **No argument:** Show current milestone status, phases, and progress.
18
- - **create:** Ask clarification questions about scope, then create milestone with phases.
19
- - **complete:** Verify all phases done, archive, update ROADMAP.md, create git tag.
20
-
21
- **What happens next:**
22
- - After create: /sdlc:spec to define the first unit of work.
23
- - After complete: Completion summary displayed.
24
- </objective>
25
-
26
- <execution_context>
27
- @~/.claude/sdlc-framework/workflows/milestone.md
28
- @.sdlc/STATE.md
29
- @.sdlc/ROADMAP.md
30
- </execution_context>
31
-
32
- <context>
33
- $ARGUMENTS — one of: empty, "create <name>", or "complete".
34
-
35
- Read .sdlc/STATE.md for current milestone.
36
- Read .sdlc/ROADMAP.md for milestone definitions and progress.
37
- </context>
38
-
39
- <process>
40
- Follow workflow: @~/.claude/sdlc-framework/workflows/milestone.md
41
-
42
- Step-by-step:
43
-
44
- ### If no argument: SHOW STATUS
45
-
46
- 1. Read .sdlc/ROADMAP.md.
47
- 2. Read .sdlc/STATE.md for current milestone.
48
- 3. Display:
49
- ```
50
- Current Milestone: {name}
51
- Status: {in-progress | blocked}
52
-
53
- Phases:
54
- [x] Phase 1: {name} — completed
55
- [x] Phase 2: {name} — completed
56
- [ ] Phase 3: {name} — in progress (3/5 plans done)
57
- [ ] Phase 4: {name} — not started
58
-
59
- Progress: [████████████░░░░░░░░] 60%
60
- ```
61
- 4. Show the next required action based on current loop position.
62
-
63
- ### If "create <name>": CREATE MILESTONE
64
-
65
- 1. Parse the milestone name from $ARGUMENTS.
66
- 2. Ask clarification questions via AskUserQuestion:
67
- - "What is the objective of this milestone? (1-2 sentences)"
68
- - "What are the key deliverables? (list 3-5)"
69
- - "What does 'done' look like? (acceptance criteria)"
70
- - "Estimated number of phases? (suggest based on deliverables)"
71
- 3. Create the milestone in .sdlc/ROADMAP.md:
72
- ```
73
- ## Milestone: {name}
74
- Objective: {from answer}
75
- Status: in-progress
76
-
77
- ### Phases
78
- - Phase 1: {derived from deliverables}
79
- - Phase 2: {derived from deliverables}
80
- ...
81
-
82
- ### Acceptance Criteria
83
- - {from answer}
84
- ```
85
- 4. Update .sdlc/STATE.md:
86
- - Set current_milestone to the new milestone name.
87
- - Set current_phase to Phase 1.
88
- - Set loop_position to SPEC.
89
- 5. Output: "NEXT ACTION REQUIRED: /sdlc:spec — define the first unit of work for Phase 1."
90
-
91
- ### If "complete": COMPLETE MILESTONE
92
-
93
- 1. Read .sdlc/STATE.md and .sdlc/ROADMAP.md.
94
- 2. Verify ALL phases in the current milestone are marked complete.
95
- - If any phase is incomplete, output: "Cannot complete milestone. Phase {N}: {name} is not done. Complete it first." Then stop.
96
- 3. Archive the milestone:
97
- - Create .sdlc/archive/MILESTONE-{name}-{timestamp}.md with full milestone data.
98
- - Mark the milestone as `completed` in ROADMAP.md with completion timestamp.
99
- 4. Update ROADMAP.md:
100
- - Set milestone status to `completed`.
101
- - If there is a next milestone, note it.
102
- 5. Create a git tag:
103
- - Run `git tag -a milestone/{name} -m "Milestone completed: {name}"`.
104
- - If git is not initialized or tag fails, warn but continue.
105
- 6. Update STATE.md:
106
- - Clear current_milestone if no next milestone.
107
- - Or set current_milestone to the next milestone and loop_position to SPEC.
108
- 7. Output completion summary:
109
- ```
110
- Milestone Complete: {name}
111
-
112
- Phases completed: {N}
113
- Plans executed: {N}
114
- Hotfixes applied: {N}
115
- Git tag: milestone/{name}
116
-
117
- {If next milestone exists}
118
- Next milestone: {name}
119
- Run /sdlc:spec to begin.
120
-
121
- {If no next milestone}
122
- All milestones complete. Define new milestones with /sdlc:milestone create <name>.
123
- ```
124
- </process>
125
-
126
- <success_criteria>
127
- - [ ] No argument: milestone status displayed with phase progress
128
- - [ ] Create: clarification questions asked, milestone added to ROADMAP.md, STATE.md updated
129
- - [ ] Create: output ends with NEXT ACTION REQUIRED: /sdlc:spec
130
- - [ ] Complete: all phases verified as done before completing
131
- - [ ] Complete: milestone archived to .sdlc/archive/
132
- - [ ] Complete: ROADMAP.md updated with completion status
133
- - [ ] Complete: git tag created
134
- - [ ] Complete: STATE.md updated for next milestone (or cleared)
135
- - [ ] No guessing — all scope gathered via clarification questions
136
- </success_criteria>
@@ -1,115 +0,0 @@
1
- ---
2
- name: sdlc:pause
3
- description: "Save context for session break"
4
- argument-hint: "[reason]"
5
- allowed-tools: [Read, Write, Bash, Glob, Grep, AskUserQuestion]
6
- ---
7
-
8
- <objective>
9
- Save complete session context so you can walk away and pick up exactly where you left off. Creates a HANDOFF.md that captures everything the next session needs.
10
-
11
- **When to use:** You need to take a break, switch tasks, or end your session. Run this before closing your terminal.
12
-
13
- **What it does:**
14
- 1. Detect current loop position from STATE.md.
15
- 2. Gather all context: work done, decisions made, blockers, in-progress tasks.
16
- 3. Create HANDOFF.md with everything needed to resume.
17
- 4. Optionally create a WIP git commit.
18
- 5. Tell you exactly how to resume.
19
-
20
- **What happens next:** When you return, run /sdlc:resume.
21
- </objective>
22
-
23
- <execution_context>
24
- @~/.claude/sdlc-framework/workflows/pause-resume.md
25
- @.sdlc/STATE.md
26
- </execution_context>
27
-
28
- <context>
29
- $ARGUMENTS — optional reason for pausing (e.g., "end of day", "switching to urgent task").
30
-
31
- Read .sdlc/STATE.md to detect current loop position and active work.
32
- </context>
33
-
34
- <process>
35
- Follow workflow: @~/.claude/sdlc-framework/workflows/pause-resume.md
36
-
37
- Step-by-step:
38
-
39
- 1. **Read current state**
40
- - Read .sdlc/STATE.md to get:
41
- - Current loop_position (SPEC, IMPLEMENT, VERIFY, REVIEW, CLOSE, DEBUG, HOTFIX).
42
- - Current milestone and phase.
43
- - Current plan (if any).
44
- - Any recorded blockers.
45
-
46
- 2. **Gather session context**
47
- - Check git status for uncommitted changes (`git status --short`).
48
- - Check git log for recent commits in this session (`git log --oneline -5`).
49
- - Read any in-progress spec, plan, or task files referenced in STATE.md.
50
- - Scan .sdlc/ for recently modified files (`find .sdlc -mmin -120 -type f`).
51
-
52
- 3. **Create HANDOFF.md**
53
- - Save to .sdlc/handoffs/HANDOFF-{timestamp}.md with:
54
-
55
- ```
56
- # Session Handoff — {timestamp}
57
-
58
- ## Loop Position
59
- {current loop_position} in {milestone} / {phase}
60
-
61
- ## Work Completed This Session
62
- - {list of completed tasks, commits, files changed}
63
-
64
- ## Work In Progress
65
- - {what was being worked on when paused}
66
- - {current state of that work}
67
-
68
- ## Decisions Made
69
- - {any architectural or design decisions}
70
-
71
- ## Blockers
72
- - {anything preventing progress}
73
-
74
- ## Uncommitted Changes
75
- - {list of modified/untracked files from git status}
76
-
77
- ## Resume Instructions
78
- Run /sdlc:resume to continue.
79
- The framework will pick up at: {loop_position}
80
- Next action will be: {determined next action}
81
- ```
82
-
83
- 4. **Update STATE.md**
84
- - Add session continuity section:
85
- - `paused_at: {timestamp}`
86
- - `pause_reason: {from $ARGUMENTS or "manual pause"}`
87
- - `handoff_file: .sdlc/handoffs/HANDOFF-{timestamp}.md`
88
- - Do NOT change loop_position — it stays where it was.
89
-
90
- 5. **Offer WIP commit**
91
- - Check if there are uncommitted changes.
92
- - If yes, ask the user via AskUserQuestion:
93
- "You have uncommitted changes. Create a WIP commit? (yes/no)"
94
- - If yes: stage all changes and commit with message "WIP: {current task} [sdlc:pause]".
95
- - If no: note in HANDOFF.md that uncommitted changes exist.
96
-
97
- 6. **Output resume instructions**
98
- - Print:
99
- ```
100
- Session paused. Context saved to .sdlc/handoffs/HANDOFF-{timestamp}.md
101
-
102
- When you return, run: /sdlc:resume
103
- ```
104
- - Do not suggest any other actions. The only valid next step is /sdlc:resume.
105
- </process>
106
-
107
- <success_criteria>
108
- - [ ] Current loop position detected from STATE.md
109
- - [ ] All session context gathered (commits, changes, decisions, blockers)
110
- - [ ] HANDOFF.md created in .sdlc/handoffs/ with complete context
111
- - [ ] STATE.md updated with session continuity section
112
- - [ ] WIP commit offered if uncommitted changes exist
113
- - [ ] Output clearly states: "When you return, run /sdlc:resume"
114
- - [ ] No ambiguity — exactly one path forward
115
- </success_criteria>