@dccxx/auggiegw 1.0.28 → 1.0.29
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/.claude/commands/{opsx/apply.md → spec-apply.md} +160 -149
- package/.claude/commands/spec-archive.md +88 -0
- package/.claude/commands/spec-ff.md +147 -0
- package/.claude/commands/spec-new.md +147 -0
- package/.claude/commands/spec-plan.md +298 -0
- package/.claude/commands/spec-uiux-design.md +620 -0
- package/.claude/commands/{opsx/verify.md → spec-verify.md} +159 -161
- package/.claude/skills/{openspec-apply-change → spec-apply}/SKILL.md +160 -153
- package/.claude/skills/spec-archive/SKILL.md +88 -0
- package/.claude/skills/spec-ff/SKILL.md +147 -0
- package/.claude/skills/spec-new/SKILL.md +147 -0
- package/.claude/skills/{openspec-explore → spec-plan}/SKILL.md +295 -287
- package/.claude/skills/spec-uiux-design/SKILL.md +620 -0
- package/.claude/skills/{openspec-verify-change → spec-verify}/SKILL.md +159 -165
- package/dist/cli.js +3 -3
- package/openspec/changes/archive/2026-02-07-fix-skill-yaml-frontmatter/.openspec.yaml +2 -0
- package/openspec/changes/archive/2026-02-07-fix-skill-yaml-frontmatter/design.md +69 -0
- package/openspec/changes/archive/2026-02-07-fix-skill-yaml-frontmatter/proposal.md +25 -0
- package/openspec/changes/archive/2026-02-07-fix-skill-yaml-frontmatter/specs/skill-directory-structure/spec.md +29 -0
- package/openspec/changes/archive/2026-02-07-fix-skill-yaml-frontmatter/specs/skill-yaml-frontmatter/spec.md +61 -0
- package/openspec/changes/archive/2026-02-07-fix-skill-yaml-frontmatter/tasks.md +14 -0
- package/openspec/specs/skill-directory-structure/spec.md +16 -4
- package/openspec/specs/skill-yaml-frontmatter/spec.md +61 -0
- package/package.json +2 -2
- package/.augment/commands/compact.md +0 -73
- package/.augment/skills/compact/SKILL.md +0 -73
- package/.claude/commands/opsx/archive.md +0 -157
- package/.claude/commands/opsx/bulk-archive.md +0 -242
- package/.claude/commands/opsx/continue.md +0 -114
- package/.claude/commands/opsx/explore.md +0 -174
- package/.claude/commands/opsx/ff.md +0 -94
- package/.claude/commands/opsx/new.md +0 -69
- package/.claude/commands/opsx/onboard.md +0 -525
- package/.claude/commands/opsx/sync.md +0 -134
- package/.claude/skills/openspec-archive-change/SKILL.md +0 -114
- package/.claude/skills/openspec-bulk-archive-change/SKILL.md +0 -246
- package/.claude/skills/openspec-continue-change/SKILL.md +0 -118
- package/.claude/skills/openspec-ff-change/SKILL.md +0 -101
- package/.claude/skills/openspec-new-change/SKILL.md +0 -74
- package/.claude/skills/openspec-onboard/SKILL.md +0 -529
- package/.claude/skills/openspec-sync-specs/SKILL.md +0 -138
- /package/openspec/changes/{add-dual-prompt-save → archive/2026-02-05-add-dual-prompt-save}/.openspec.yaml +0 -0
- /package/openspec/changes/{add-dual-prompt-save → archive/2026-02-05-add-dual-prompt-save}/design.md +0 -0
- /package/openspec/changes/{add-dual-prompt-save → archive/2026-02-05-add-dual-prompt-save}/proposal.md +0 -0
- /package/openspec/changes/{add-dual-prompt-save → archive/2026-02-05-add-dual-prompt-save}/specs/dual-prompt-save/spec.md +0 -0
- /package/openspec/changes/{add-dual-prompt-save → archive/2026-02-05-add-dual-prompt-save}/specs/skill-directory-structure/spec.md +0 -0
- /package/openspec/changes/{add-dual-prompt-save → archive/2026-02-05-add-dual-prompt-save}/tasks.md +0 -0
|
@@ -1,152 +1,163 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description:
|
|
4
|
-
category: Workflow
|
|
5
|
-
tags: [workflow, artifacts, experimental]
|
|
2
|
+
name: spec-apply
|
|
3
|
+
description: spec-apply
|
|
6
4
|
---
|
|
7
5
|
|
|
8
|
-
Implement tasks from an OpenSpec change.
|
|
9
|
-
|
|
10
|
-
**
|
|
11
|
-
|
|
12
|
-
**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
**
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
**
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
-
|
|
141
|
-
-
|
|
142
|
-
-
|
|
143
|
-
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
6
|
+
Implement tasks from an OpenSpec change.
|
|
7
|
+
|
|
8
|
+
**⚠️ MODE: IMPLEMENTATION** — This command puts you in implementation mode. You write code, complete tasks, and modify files. This is the OPPOSITE of explore mode (`/spec-plan`). When this command ends (completion or pause), you remain in implementation context until the user explicitly switches mode.
|
|
9
|
+
|
|
10
|
+
**Input**: Optionally specify a change name. If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
|
|
11
|
+
|
|
12
|
+
**Steps**
|
|
13
|
+
|
|
14
|
+
1. **Select the change**
|
|
15
|
+
|
|
16
|
+
If a name is provided, use it. Otherwise:
|
|
17
|
+
- Infer from conversation context if the user mentioned a change
|
|
18
|
+
- Auto-select if only one active change exists
|
|
19
|
+
- If ambiguous, run `openspec list --json` to get available changes and use the **AskUserQuestion tool** to let the user select
|
|
20
|
+
|
|
21
|
+
Always announce: "Using change: <name>" and how to override (e.g., `/spec-apply <other>`).
|
|
22
|
+
|
|
23
|
+
2. **Check status to understand the schema**
|
|
24
|
+
```bash
|
|
25
|
+
openspec status --change "<name>" --json
|
|
26
|
+
```
|
|
27
|
+
Parse the JSON to understand:
|
|
28
|
+
- `schemaName`: The workflow being used (e.g., "spec-driven")
|
|
29
|
+
- Which artifact contains the tasks (typically "tasks" for spec-driven, check status for others)
|
|
30
|
+
|
|
31
|
+
3. **Get apply instructions**
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
openspec instructions apply --change "<name>" --json
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
This returns:
|
|
38
|
+
- Context file paths (varies by schema - could be proposal/specs/design/tasks or spec/tests/implementation/docs)
|
|
39
|
+
- Progress (total, complete, remaining)
|
|
40
|
+
- Task list with status
|
|
41
|
+
- Dynamic instruction based on current state
|
|
42
|
+
|
|
43
|
+
**Handle states:**
|
|
44
|
+
- If `state: "blocked"` (missing artifacts): show message, suggest using openspec-continue-change
|
|
45
|
+
- If `state: "all_done"`: congratulate, suggest archive
|
|
46
|
+
- Otherwise: proceed to implementation
|
|
47
|
+
|
|
48
|
+
4. **Read context files**
|
|
49
|
+
|
|
50
|
+
Read the files listed in `contextFiles` from the apply instructions output.
|
|
51
|
+
The files depend on the schema being used:
|
|
52
|
+
- **spec-driven**: proposal, specs, design, tasks
|
|
53
|
+
- Other schemas: follow the contextFiles from CLI output
|
|
54
|
+
|
|
55
|
+
5. **Show current progress**
|
|
56
|
+
|
|
57
|
+
Display:
|
|
58
|
+
- Schema being used
|
|
59
|
+
- Progress: "N/M tasks complete"
|
|
60
|
+
- Remaining tasks overview
|
|
61
|
+
- Dynamic instruction from CLI
|
|
62
|
+
|
|
63
|
+
6. **Implement tasks (loop until done or blocked)**
|
|
64
|
+
|
|
65
|
+
For each pending task:
|
|
66
|
+
- Show which task is being worked on
|
|
67
|
+
- Make the code changes required
|
|
68
|
+
- Keep changes minimal and focused
|
|
69
|
+
- Mark task complete in the tasks file: `- [ ]` → `- [x]`
|
|
70
|
+
- Continue to next task
|
|
71
|
+
|
|
72
|
+
**Pause if:**
|
|
73
|
+
- Task is unclear → ask for clarification
|
|
74
|
+
- Implementation reveals a design issue → suggest updating artifacts
|
|
75
|
+
- Error or blocker encountered → report and wait for guidance
|
|
76
|
+
- User interrupts
|
|
77
|
+
|
|
78
|
+
7. **On completion or pause, show status**
|
|
79
|
+
|
|
80
|
+
Display:
|
|
81
|
+
- Tasks completed this session
|
|
82
|
+
- Overall progress: "N/M tasks complete"
|
|
83
|
+
- If all done: suggest archive
|
|
84
|
+
- If paused: explain why and wait for guidance
|
|
85
|
+
|
|
86
|
+
**Output During Implementation**
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
## Implementing: <change-name> (schema: <schema-name>)
|
|
90
|
+
|
|
91
|
+
Working on task 3/7: <task description>
|
|
92
|
+
[...implementation happening...]
|
|
93
|
+
✓ Task complete
|
|
94
|
+
|
|
95
|
+
Working on task 4/7: <task description>
|
|
96
|
+
[...implementation happening...]
|
|
97
|
+
✓ Task complete
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Output On Completion**
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
## Implementation Complete
|
|
104
|
+
|
|
105
|
+
**Change:** <change-name>
|
|
106
|
+
**Schema:** <schema-name>
|
|
107
|
+
**Progress:** 7/7 tasks complete ✓
|
|
108
|
+
|
|
109
|
+
### Completed This Session
|
|
110
|
+
- [x] Task 1
|
|
111
|
+
- [x] Task 2
|
|
112
|
+
...
|
|
113
|
+
|
|
114
|
+
All tasks complete! Ready to archive this change.
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Output On Pause (Issue Encountered)**
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
## Implementation Paused
|
|
121
|
+
|
|
122
|
+
**Change:** <change-name>
|
|
123
|
+
**Schema:** <schema-name>
|
|
124
|
+
**Progress:** 4/7 tasks complete
|
|
125
|
+
|
|
126
|
+
### Issue Encountered
|
|
127
|
+
<description of the issue>
|
|
128
|
+
|
|
129
|
+
**Options:**
|
|
130
|
+
1. <option 1>
|
|
131
|
+
2. <option 2>
|
|
132
|
+
3. Other approach
|
|
133
|
+
|
|
134
|
+
What would you like to do?
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**Guardrails**
|
|
138
|
+
- Keep going through tasks until done or blocked
|
|
139
|
+
- Always read context files before starting (from the apply instructions output)
|
|
140
|
+
- If task is ambiguous, pause and ask before implementing
|
|
141
|
+
- If implementation reveals issues, pause and suggest artifact updates
|
|
142
|
+
- Keep code changes minimal and scoped to each task
|
|
143
|
+
- Update task checkbox immediately after completing each task
|
|
144
|
+
- Pause on errors, blockers, or unclear requirements - don't guess
|
|
145
|
+
- Use contextFiles from CLI output, don't assume specific file names
|
|
146
|
+
|
|
147
|
+
**Fluid Workflow Integration**
|
|
148
|
+
|
|
149
|
+
This skill supports the "actions on a change" model:
|
|
150
|
+
|
|
151
|
+
- **Can be invoked anytime**: Before all artifacts are done (if tasks exist), after partial implementation, interleaved with other actions
|
|
152
|
+
- **Allows artifact updates**: If implementation reveals design issues, suggest updating artifacts - not phase-locked, work fluidly
|
|
153
|
+
|
|
154
|
+
**Mode Transition Hints**
|
|
155
|
+
|
|
156
|
+
After implementation completes or pauses, suggest next actions that respect mode boundaries:
|
|
157
|
+
|
|
158
|
+
- To think/explore/brainstorm → `/spec-plan`
|
|
159
|
+
- To create a new change → `/spec-ff`
|
|
160
|
+
- To verify implementation → `/spec-verify`
|
|
161
|
+
- To archive completed work → `/spec-archive`
|
|
162
|
+
|
|
163
|
+
**IMPORTANT**: After this command ends, do NOT automatically continue writing code on subsequent user messages unless the user explicitly asks to continue implementation or invokes `/spec-apply` again. If the user invokes `/spec-plan`, you MUST fully switch to explore mode — no code writing. If the user invokes `/spec-ff`, you MUST fully switch to change creation mode — no code writing, no continuing tasks.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-archive
|
|
3
|
+
description: spec-archive
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
model: claude-sonnet-4-5
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Archive a completed change in the experimental workflow.
|
|
11
|
+
|
|
12
|
+
**Input**: Optionally specify a change name. If omitted, infer from conversation context or auto-select.
|
|
13
|
+
|
|
14
|
+
**Steps**
|
|
15
|
+
|
|
16
|
+
1. **Resolve the target change (smart detection)**
|
|
17
|
+
|
|
18
|
+
Resolve which change to archive using this priority order — do NOT prompt unless truly ambiguous:
|
|
19
|
+
|
|
20
|
+
1. **Explicit name provided** → use it directly
|
|
21
|
+
2. **Conversation context** → if the user recently ran `/spec-apply <name>` or `/spec-verify <name>` or otherwise worked on a specific change in this conversation, auto-select it and display: `Auto-selected "<name>" (from conversation context)`
|
|
22
|
+
3. **Single active change** → run `openspec list --json`, if only 1 active (non-archived) change exists, auto-select it and display: `Auto-selected "<name>" (only active change)`
|
|
23
|
+
4. **Ambiguous** → multiple active changes and no clear context. Only then use **AskUserQuestion tool** to let the user select. Show only active changes with their schema.
|
|
24
|
+
|
|
25
|
+
2. **Check artifact and task completion status (non-blocking)**
|
|
26
|
+
|
|
27
|
+
Run `openspec status --change "<name>" --json` to check artifact completion.
|
|
28
|
+
Read the tasks file (typically `tasks.md`) to check for incomplete tasks.
|
|
29
|
+
|
|
30
|
+
Collect warnings but **do NOT prompt for confirmation** — proceed automatically:
|
|
31
|
+
|
|
32
|
+
- **Incomplete artifacts**: Note which artifacts are not `done` → include in final summary as warning
|
|
33
|
+
- **Incomplete tasks**: Count `- [ ]` vs `- [x]` → include in final summary as warning
|
|
34
|
+
- **No tasks file**: Proceed without task-related warning
|
|
35
|
+
|
|
36
|
+
3. **Auto-sync delta specs**
|
|
37
|
+
|
|
38
|
+
Check for delta specs at `openspec/changes/<name>/specs/`.
|
|
39
|
+
|
|
40
|
+
- **No delta specs exist** → skip sync, proceed to archive
|
|
41
|
+
- **Delta specs exist but already synced** (main specs already reflect all changes) → skip sync, proceed to archive
|
|
42
|
+
- **Delta specs exist and need syncing** → display a brief summary of what will be synced, then **automatically sync** using the openspec-sync-specs skill (agent-driven). Do NOT prompt for sync/skip choice.
|
|
43
|
+
|
|
44
|
+
4. **Perform the archive**
|
|
45
|
+
|
|
46
|
+
Create the archive directory if it doesn't exist:
|
|
47
|
+
```bash
|
|
48
|
+
mkdir -p openspec/changes/archive
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Generate target name using current date: `YYYY-MM-DD-<change-name>`
|
|
52
|
+
|
|
53
|
+
**Check if target already exists:**
|
|
54
|
+
- If yes: Fail with error, suggest renaming existing archive or using different date
|
|
55
|
+
- If no: Move the change directory to archive
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
mv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
5. **Display consolidated summary**
|
|
62
|
+
|
|
63
|
+
Show a single summary that includes everything — results and any warnings collected during the process:
|
|
64
|
+
|
|
65
|
+
**Output On Success**
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
## Archive Complete
|
|
69
|
+
|
|
70
|
+
**Change:** <change-name>
|
|
71
|
+
**Schema:** <schema-name>
|
|
72
|
+
**Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/
|
|
73
|
+
**Specs:** ✓ Synced to main specs (or "No delta specs" or "Already synced")
|
|
74
|
+
|
|
75
|
+
⚠️ 2 artifacts were incomplete: design, tasks
|
|
76
|
+
⚠️ 3/7 tasks were incomplete
|
|
77
|
+
(or "All artifacts complete. All tasks complete." if no warnings)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Guardrails**
|
|
81
|
+
- Auto-select change when inferable from conversation context or when only one active change exists
|
|
82
|
+
- Only prompt for change selection when truly ambiguous (multiple active changes, no context)
|
|
83
|
+
- Never prompt for confirmation on incomplete artifacts or tasks — show warnings in summary
|
|
84
|
+
- Never prompt for sync decision — always auto-sync when delta specs need syncing
|
|
85
|
+
- Use artifact graph (openspec status --json) for completion checking
|
|
86
|
+
- Preserve .openspec.yaml when moving to archive (it moves with the directory)
|
|
87
|
+
- Show clear consolidated summary with all warnings at the end
|
|
88
|
+
- Use openspec-sync-specs approach (agent-driven) for syncing
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-ff
|
|
3
|
+
description: spec-ff
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Create a new change — explore if needed, then generate all artifacts for implementation.
|
|
7
|
+
|
|
8
|
+
**⚠️ MODE BOUNDARY RESET:** When this command is invoked, **stop any prior activity** — whether you were implementing code (`/spec-apply`), exploring (`/spec-plan`), or anything else. You are now in **change creation mode**. No code writing. No continuing prior tasks. Fresh start.
|
|
9
|
+
|
|
10
|
+
**Input**: A description of what to build, optionally with a kebab-case name. Can range from vague ("login page") to specific ("add JWT auth with refresh tokens using Redis session store").
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Phase 0: Context Check
|
|
15
|
+
|
|
16
|
+
Before evaluating the user's request, check what already exists:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
openspec list --json
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**If active changes exist**, the user might want to:
|
|
23
|
+
- **Create a brand new change** — proceed normally to Phase 1
|
|
24
|
+
- **Update an existing change's artifacts** — e.g., "I forgot to add email validation to the auth change"
|
|
25
|
+
|
|
26
|
+
**How to tell the difference:**
|
|
27
|
+
- User's input clearly relates to an active change → ask: "You have an active change `<name>`. Want to update its artifacts, or create a separate change?"
|
|
28
|
+
- User's input is unrelated to any active change → proceed to Phase 1 (new change)
|
|
29
|
+
- User explicitly says "new" or provides a new name → proceed to Phase 1
|
|
30
|
+
|
|
31
|
+
**If updating an existing change**: Skip `openspec new change`, go directly to Phase 2 step 3 (get status) using the existing change name. Update only the artifacts that need changes.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Phase 1: Understand
|
|
36
|
+
|
|
37
|
+
Evaluate the user's input to decide the next phase.
|
|
38
|
+
|
|
39
|
+
**If no input provided**, ask what they want to build (open-ended, no preset options). Do NOT proceed without a request.
|
|
40
|
+
|
|
41
|
+
**If input provided**, assess clarity:
|
|
42
|
+
|
|
43
|
+
| Signal | Means | Next Phase |
|
|
44
|
+
|--------|-------|------------|
|
|
45
|
+
| Clear scope, known tech, specific enough to write a proposal | **Ready** | → Phase 2 (Create) |
|
|
46
|
+
| Vague idea, missing key decisions, multiple possible approaches, unknown constraints | **Needs exploration** | → Explore (below) |
|
|
47
|
+
|
|
48
|
+
**Bias toward action.** If you can make reasonable assumptions, go to Phase 2. Only explore when the ambiguity would lead to fundamentally wrong artifacts.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Explore (when needed)
|
|
53
|
+
|
|
54
|
+
**Goal**: Get enough clarity to create good artifacts. This is NOT open-ended brainstorming — it's focused exploration with a destination.
|
|
55
|
+
|
|
56
|
+
**Subagent rule**: If you use subagents during exploration (e.g., for codebase analysis, planning), instruct them to **report findings only — no file creation**.
|
|
57
|
+
|
|
58
|
+
**Stance**: Curious, visual, grounded. Ask questions that emerge naturally. Use ASCII diagrams when they help. Investigate the codebase for context.
|
|
59
|
+
|
|
60
|
+
**What you might do:**
|
|
61
|
+
- Ask 2-3 clarifying questions (not an interrogation)
|
|
62
|
+
- Sketch the problem space with ASCII diagrams
|
|
63
|
+
- Investigate the codebase to surface relevant patterns, integration points, or constraints
|
|
64
|
+
- Compare approaches briefly if there's a real fork in the road
|
|
65
|
+
|
|
66
|
+
**Keep it focused.** You're exploring to CREATE, not exploring to explore. When you have enough to write a solid proposal, move on.
|
|
67
|
+
|
|
68
|
+
**When sufficient clarity emerges**, present a brief summary and ask for confirmation:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
## Ready to create
|
|
72
|
+
|
|
73
|
+
**What**: [1-2 sentence summary of the change]
|
|
74
|
+
**Approach**: [key technical decisions]
|
|
75
|
+
**Scope**: [what's in, what's out]
|
|
76
|
+
|
|
77
|
+
Create this change? (yes / discuss more)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
- User confirms → Phase 2
|
|
81
|
+
- User wants to discuss more → continue exploring
|
|
82
|
+
- If exploration reveals this is too vague or the user just wants to think → suggest `/spec-plan` for open-ended exploration
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Phase 2: Create
|
|
87
|
+
|
|
88
|
+
Once the request is clear (either from input or after exploration):
|
|
89
|
+
|
|
90
|
+
1. **Derive a kebab-case name** from the description (e.g., "add user authentication" → `add-user-auth`).
|
|
91
|
+
|
|
92
|
+
2. **Create the change directory**
|
|
93
|
+
```bash
|
|
94
|
+
openspec new change "<name>"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
3. **Get the artifact build order**
|
|
98
|
+
```bash
|
|
99
|
+
openspec status --change "<name>" --json
|
|
100
|
+
```
|
|
101
|
+
Parse: `applyRequires` (artifact IDs needed before implementation) and `artifacts` (list with status and dependencies).
|
|
102
|
+
|
|
103
|
+
4. **Create artifacts in dependency order**
|
|
104
|
+
|
|
105
|
+
Use the **TodoWrite tool** to track progress.
|
|
106
|
+
|
|
107
|
+
For each artifact that is `ready` (dependencies satisfied):
|
|
108
|
+
- Get instructions: `openspec instructions <artifact-id> --change "<name>" --json`
|
|
109
|
+
- The instructions JSON includes:
|
|
110
|
+
- `context`: Project background (constraints for you — do NOT include in output)
|
|
111
|
+
- `rules`: Artifact-specific rules (constraints for you — do NOT include in output)
|
|
112
|
+
- `template`: The structure to use for your output file
|
|
113
|
+
- `instruction`: Schema-specific guidance for this artifact type
|
|
114
|
+
- `outputPath`: Where to write the artifact
|
|
115
|
+
- `dependencies`: Completed artifacts to read for context
|
|
116
|
+
- Read any completed dependency files for context
|
|
117
|
+
- Create the artifact file using `template` as structure
|
|
118
|
+
- Apply `context` and `rules` as constraints — do NOT copy them into the file
|
|
119
|
+
- Show brief progress: "✓ Created <artifact-id>"
|
|
120
|
+
|
|
121
|
+
Continue until all `applyRequires` artifacts have `status: "done"`. Re-check with `openspec status` after each artifact.
|
|
122
|
+
|
|
123
|
+
If an artifact requires user input (unclear context), ask and continue.
|
|
124
|
+
|
|
125
|
+
5. **Show final status**
|
|
126
|
+
```bash
|
|
127
|
+
openspec status --change "<name>"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Output**: Change name/location, artifacts created, and: "Run `/spec-apply` to start implementation."
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
**Artifact Creation Guidelines**
|
|
135
|
+
|
|
136
|
+
- Follow the `instruction` field from `openspec instructions` for each artifact type
|
|
137
|
+
- Read dependency artifacts for context before creating new ones
|
|
138
|
+
- Use `template` as structure — fill in its sections
|
|
139
|
+
- **`context` and `rules` are constraints for YOU, not content for the file** — never copy them into output
|
|
140
|
+
|
|
141
|
+
**Guardrails**
|
|
142
|
+
- Create ALL artifacts needed for implementation (as defined by schema's `apply.requires`)
|
|
143
|
+
- Always read dependency artifacts before creating a new one
|
|
144
|
+
- Prefer making reasonable decisions to keep momentum — only ask when critically unclear
|
|
145
|
+
- If a change with that name already exists, suggest continuing that change instead
|
|
146
|
+
- Verify each artifact file exists after writing before proceeding to next
|
|
147
|
+
- **Don't over-explore** — 2-3 rounds of questions max before creating. If still unclear, create with best understanding and note assumptions in the proposal
|