specdacular 0.6.2 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -5
- package/commands/specd/config.md +22 -0
- package/commands/specd/help.md +1 -0
- package/package.json +1 -1
- package/specdacular/workflows/config.md +112 -0
- package/specdacular/workflows/discuss-feature.md +17 -0
- package/specdacular/workflows/execute-plan.md +33 -19
- package/specdacular/workflows/map-codebase.md +18 -1
- package/specdacular/workflows/new-feature.md +17 -0
- package/specdacular/workflows/next-feature.md +17 -0
- package/specdacular/workflows/plan-feature.md +17 -0
- package/specdacular/workflows/plan-phase.md +17 -0
- package/specdacular/workflows/prepare-phase.md +17 -0
- package/specdacular/workflows/research-phase.md +17 -0
- package/specdacular/workflows/review-phase.md +17 -1
- package/specdacular/workflows/status.md +132 -6
package/README.md
CHANGED
|
@@ -8,11 +8,8 @@ Plan features specific enough that an agent can implement without asking questio
|
|
|
8
8
|
npx specdacular
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
> [!
|
|
12
|
-
> **Early Discovery Phase.**
|
|
13
|
-
|
|
14
|
-
> [!WARNING]
|
|
15
|
-
> **Open Source Software.** This is maintained by a small team in their free time. It installs slash commands and workflow files into your `.claude/` directory. Always use version control. Review what gets installed. Back up your work. The software is provided "as is" without warranty of any kind. By using this tool, you accept full responsibility for any changes it makes to your project.
|
|
11
|
+
> [!NOTE]
|
|
12
|
+
> **Early Discovery Phase.** Commands and conventions may change between versions. Pin to a specific version if stability matters to you.
|
|
16
13
|
|
|
17
14
|
---
|
|
18
15
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specd:config
|
|
3
|
+
description: Create or update .specd/config.json with commit settings
|
|
4
|
+
argument-hint: ""
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- AskUserQuestion
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<objective>
|
|
13
|
+
Create or update `.specd/config.json` with global specd settings.
|
|
14
|
+
|
|
15
|
+
Currently supports:
|
|
16
|
+
- `auto_commit_docs` — Whether to auto-commit `.specd/` file changes (default: true)
|
|
17
|
+
- `auto_commit_code` — Whether to auto-commit implementation code changes (default: true)
|
|
18
|
+
</objective>
|
|
19
|
+
|
|
20
|
+
<execution_context>
|
|
21
|
+
@~/.claude/specdacular/workflows/config.md
|
|
22
|
+
</execution_context>
|
package/commands/specd/help.md
CHANGED
|
@@ -47,6 +47,7 @@ Display available specdacular commands and usage guidance.
|
|
|
47
47
|
|
|
48
48
|
| Command | Description |
|
|
49
49
|
|---------|-------------|
|
|
50
|
+
| `/specd:config` | Create or update `.specd/config.json` with commit settings |
|
|
50
51
|
| `/specd:status [--all]` | Show feature status dashboard |
|
|
51
52
|
| `/specd:blueprint [name] [sub]` | Generate visual blueprint (wireframes, diagrams) |
|
|
52
53
|
| `/specd:update` | Update Specdacular to the latest version |
|
package/package.json
CHANGED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Create or update `.specd/config.json` with global specd settings.
|
|
3
|
+
|
|
4
|
+
Supports:
|
|
5
|
+
- `auto_commit_docs` — Whether to auto-commit `.specd/` file changes (default: true)
|
|
6
|
+
- `auto_commit_code` — Whether to auto-commit implementation code changes (default: true)
|
|
7
|
+
|
|
8
|
+
Preserves any existing fields in the config file (e.g., `type` for orchestrator mode).
|
|
9
|
+
</purpose>
|
|
10
|
+
|
|
11
|
+
<process>
|
|
12
|
+
|
|
13
|
+
<step name="check_existing">
|
|
14
|
+
Check if `.specd/config.json` already exists.
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
[ -f ".specd/config.json" ] && echo "exists" || echo "missing"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**If exists:**
|
|
21
|
+
Read the file and parse current values.
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
Current `.specd/config.json`:
|
|
25
|
+
|
|
26
|
+
- `auto_commit_docs`: {value or "not set"}
|
|
27
|
+
- `auto_commit_code`: {value or "not set"}
|
|
28
|
+
{any other fields shown as context}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**If missing:**
|
|
32
|
+
```
|
|
33
|
+
No `.specd/config.json` found. Will create one with commit settings.
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Continue to ask_settings.
|
|
37
|
+
</step>
|
|
38
|
+
|
|
39
|
+
<step name="ask_settings">
|
|
40
|
+
Ask user for preferred commit settings.
|
|
41
|
+
|
|
42
|
+
Use AskUserQuestion:
|
|
43
|
+
- header: "Commit Settings"
|
|
44
|
+
- question: "Which auto-commit settings do you want?"
|
|
45
|
+
- options:
|
|
46
|
+
- "Both on (default)" — `auto_commit_docs: true, auto_commit_code: true`
|
|
47
|
+
- "Docs only" — `auto_commit_docs: true, auto_commit_code: false`
|
|
48
|
+
- "Code only" — `auto_commit_docs: false, auto_commit_code: true`
|
|
49
|
+
- "Both off" — `auto_commit_docs: false, auto_commit_code: false`
|
|
50
|
+
|
|
51
|
+
Map the selection to values:
|
|
52
|
+
- "Both on (default)": `auto_commit_docs = true`, `auto_commit_code = true`
|
|
53
|
+
- "Docs only": `auto_commit_docs = true`, `auto_commit_code = false`
|
|
54
|
+
- "Code only": `auto_commit_docs = false`, `auto_commit_code = true`
|
|
55
|
+
- "Both off": `auto_commit_docs = false`, `auto_commit_code = false`
|
|
56
|
+
|
|
57
|
+
Continue to write_config.
|
|
58
|
+
</step>
|
|
59
|
+
|
|
60
|
+
<step name="write_config">
|
|
61
|
+
Write the config file, preserving any existing fields.
|
|
62
|
+
|
|
63
|
+
**If `.specd/config.json` exists:**
|
|
64
|
+
Read the existing JSON. Merge `auto_commit_docs` and `auto_commit_code` into it, preserving all other fields.
|
|
65
|
+
|
|
66
|
+
**If `.specd/config.json` does not exist:**
|
|
67
|
+
Create `.specd/` directory if needed, then write new config with just the commit settings.
|
|
68
|
+
|
|
69
|
+
**Ensure `.specd/` directory exists:**
|
|
70
|
+
```bash
|
|
71
|
+
mkdir -p .specd
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Write config:**
|
|
75
|
+
Write `.specd/config.json` with the merged content. Example:
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"auto_commit_docs": true,
|
|
79
|
+
"auto_commit_code": true
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Continue to confirm.
|
|
84
|
+
</step>
|
|
85
|
+
|
|
86
|
+
<step name="confirm">
|
|
87
|
+
Show the final config to the user.
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
Config written to `.specd/config.json`:
|
|
91
|
+
|
|
92
|
+
{display full JSON content}
|
|
93
|
+
|
|
94
|
+
**Settings:**
|
|
95
|
+
- Auto-commit docs (.specd/ files): {on|off}
|
|
96
|
+
- Auto-commit code (implementation): {on|off}
|
|
97
|
+
|
|
98
|
+
These settings apply to all specd workflows in this project.
|
|
99
|
+
To change later, run `/specd:config` again.
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
End workflow.
|
|
103
|
+
</step>
|
|
104
|
+
|
|
105
|
+
</process>
|
|
106
|
+
|
|
107
|
+
<success_criteria>
|
|
108
|
+
- [ ] `.specd/config.json` exists with `auto_commit_docs` and `auto_commit_code` fields
|
|
109
|
+
- [ ] Existing config fields preserved (not overwritten)
|
|
110
|
+
- [ ] User confirmed settings via AskUserQuestion
|
|
111
|
+
- [ ] Final config displayed to user
|
|
112
|
+
</success_criteria>
|
|
@@ -312,6 +312,23 @@ Continue to commit.
|
|
|
312
312
|
<step name="commit">
|
|
313
313
|
Commit the discussion updates.
|
|
314
314
|
|
|
315
|
+
**First, check auto-commit setting. Run this command:**
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
cat .specd/config.json 2>/dev/null || echo '{"auto_commit_docs": true}'
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
Read the output. If `auto_commit_docs` is `false`, do NOT run the git commands below. Instead print:
|
|
322
|
+
|
|
323
|
+
```
|
|
324
|
+
Auto-commit disabled for docs — changes not committed.
|
|
325
|
+
Modified files: .specd/features/{feature-name}/CONTEXT.md, DECISIONS.md, STATE.md, config.json
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
Then skip ahead to completion.
|
|
329
|
+
|
|
330
|
+
**Only if `auto_commit_docs` is `true` or not set (default), run:**
|
|
331
|
+
|
|
315
332
|
```bash
|
|
316
333
|
git add .specd/features/{feature-name}/CONTEXT.md .specd/features/{feature-name}/DECISIONS.md .specd/features/{feature-name}/STATE.md .specd/features/{feature-name}/config.json
|
|
317
334
|
git commit -m "docs({feature-name}): discussion session {N}
|
|
@@ -81,7 +81,8 @@ Continue to load_context.
|
|
|
81
81
|
Load ALL context needed for execution.
|
|
82
82
|
|
|
83
83
|
**Read feature context:**
|
|
84
|
-
- `config.json` — Feature settings
|
|
84
|
+
- `config.json` — Feature settings
|
|
85
|
+
- `.specd/config.json` — Global settings (check `auto_commit_code` and `auto_commit_docs`)
|
|
85
86
|
- `STATE.md` — Current progress, completed plans
|
|
86
87
|
- `DECISIONS.md` — Constraints to follow during implementation
|
|
87
88
|
- `RESEARCH.md` — Implementation notes, pitfalls (if exists)
|
|
@@ -180,7 +181,8 @@ Feature execution finished. Review:
|
|
|
180
181
|
- Phase RESEARCH.md: patterns identified
|
|
181
182
|
|
|
182
183
|
**Settings:**
|
|
183
|
-
- Auto-commit: {yes | no} (from config.json)
|
|
184
|
+
- Auto-commit code: {yes | no} (from .specd/config.json, default: yes)
|
|
185
|
+
- Auto-commit docs: {yes | no} (from .specd/config.json, default: yes)
|
|
184
186
|
|
|
185
187
|
**Next plan:** {plans/phase-XX/YY-PLAN.md}
|
|
186
188
|
**Objective:** {one-line from plan}
|
|
@@ -328,23 +330,26 @@ Use AskUserQuestion:
|
|
|
328
330
|
|
|
329
331
|
### 5. Commit task (if auto_commit enabled)
|
|
330
332
|
|
|
331
|
-
**
|
|
333
|
+
**First, check auto-commit setting. Run this command:**
|
|
332
334
|
|
|
333
|
-
**If auto_commit is true:**
|
|
334
335
|
```bash
|
|
335
|
-
|
|
336
|
-
git commit -m "feat({feature}): {task description}"
|
|
336
|
+
cat .specd/config.json 2>/dev/null || echo '{"auto_commit_code": true}'
|
|
337
337
|
```
|
|
338
338
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
- Show message:
|
|
339
|
+
Read the output. If `auto_commit_code` is `false`, do NOT run the git commands below. Instead print:
|
|
340
|
+
|
|
342
341
|
```
|
|
343
|
-
|
|
344
|
-
|
|
342
|
+
Auto-commit disabled for code — changes not committed.
|
|
343
|
+
Modified files: {files from task}
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
Then skip to step 6.
|
|
345
347
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
+
**Only if `auto_commit_code` is `true` or not set (default), run:**
|
|
349
|
+
|
|
350
|
+
```bash
|
|
351
|
+
git add {files from task}
|
|
352
|
+
git commit -m "feat({feature}): {task description}"
|
|
348
353
|
```
|
|
349
354
|
|
|
350
355
|
### 6. Update STATE.md
|
|
@@ -381,18 +386,27 @@ Mark plan complete and suggest next.
|
|
|
381
386
|
|
|
382
387
|
3. Update stage progress checkboxes
|
|
383
388
|
|
|
384
|
-
**Commit STATE.md update
|
|
389
|
+
**Commit STATE.md update. First, check auto-commit setting. Run this command:**
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
cat .specd/config.json 2>/dev/null || echo '{"auto_commit_docs": true}'
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
Read the output. If `auto_commit_docs` is `false`, do NOT run the git commands below. Instead print:
|
|
396
|
+
|
|
397
|
+
```
|
|
398
|
+
Auto-commit disabled for docs — STATE.md changes not committed.
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
Then skip ahead to "Find next plan".
|
|
402
|
+
|
|
403
|
+
**Only if `auto_commit_docs` is `true` or not set (default), run:**
|
|
385
404
|
|
|
386
|
-
**If auto_commit is true:**
|
|
387
405
|
```bash
|
|
388
406
|
git add .specd/features/{feature}/STATE.md
|
|
389
407
|
git commit -m "docs({feature}): complete plan {phase-XX/YY}"
|
|
390
408
|
```
|
|
391
409
|
|
|
392
|
-
**If auto_commit is false:**
|
|
393
|
-
- Do NOT commit
|
|
394
|
-
- Include STATE.md in the list of modified files for user to review
|
|
395
|
-
|
|
396
410
|
**Find next plan:**
|
|
397
411
|
- Check ROADMAP.md for next plan in sequence
|
|
398
412
|
- Or next phase if current phase complete
|
|
@@ -356,7 +356,24 @@ Continue to commit_codebase_map.
|
|
|
356
356
|
</step>
|
|
357
357
|
|
|
358
358
|
<step name="commit_codebase_map">
|
|
359
|
-
Commit the codebase map
|
|
359
|
+
Commit the codebase map.
|
|
360
|
+
|
|
361
|
+
**First, check auto-commit setting. Run this command:**
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
cat .specd/config.json 2>/dev/null || echo '{"auto_commit_docs": true}'
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
Read the output. If `auto_commit_docs` is `false`, do NOT run the git commands below. Instead print:
|
|
368
|
+
|
|
369
|
+
```
|
|
370
|
+
Auto-commit disabled for docs — changes not committed.
|
|
371
|
+
Modified files: .specd/codebase/*.md
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
Then skip ahead to completion.
|
|
375
|
+
|
|
376
|
+
**Only if `auto_commit_docs` is `true` or not set (default), run:**
|
|
360
377
|
|
|
361
378
|
```bash
|
|
362
379
|
git add .specd/codebase/*.md .specd/config.json
|
|
@@ -641,6 +641,23 @@ Continue to commit.
|
|
|
641
641
|
<step name="commit">
|
|
642
642
|
Commit the feature initialization.
|
|
643
643
|
|
|
644
|
+
**First, check auto-commit setting. Run this command:**
|
|
645
|
+
|
|
646
|
+
```bash
|
|
647
|
+
cat .specd/config.json 2>/dev/null || echo '{"auto_commit_docs": true}'
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
Read the output. If `auto_commit_docs` is `false`, do NOT run the git commands below. Instead print:
|
|
651
|
+
|
|
652
|
+
```
|
|
653
|
+
Auto-commit disabled for docs — changes not committed.
|
|
654
|
+
Modified files: .specd/features/{feature-name}/
|
|
655
|
+
```
|
|
656
|
+
|
|
657
|
+
Then skip ahead to completion.
|
|
658
|
+
|
|
659
|
+
**Only if `auto_commit_docs` is `true` or not set (default), run:**
|
|
660
|
+
|
|
644
661
|
```bash
|
|
645
662
|
git add .specd/features/{feature-name}/
|
|
646
663
|
git commit -m "docs({feature-name}): initialize feature
|
|
@@ -592,6 +592,23 @@ Set `stage` to `"complete"`.
|
|
|
592
592
|
**Update STATE.md:**
|
|
593
593
|
Set stage to `complete`.
|
|
594
594
|
|
|
595
|
+
**First, check auto-commit setting. Run this command:**
|
|
596
|
+
|
|
597
|
+
```bash
|
|
598
|
+
cat .specd/config.json 2>/dev/null || echo '{"auto_commit_docs": true}'
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
Read the output. If `auto_commit_docs` is `false`, do NOT run the git commands below. Instead print:
|
|
602
|
+
|
|
603
|
+
```
|
|
604
|
+
Auto-commit disabled for docs — feature completion not committed.
|
|
605
|
+
Modified files: .specd/features/{name}/config.json, .specd/features/{name}/STATE.md
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
Then end the workflow.
|
|
609
|
+
|
|
610
|
+
**Only if `auto_commit_docs` is `true` or not set (default), run:**
|
|
611
|
+
|
|
595
612
|
```bash
|
|
596
613
|
git add .specd/features/{name}/config.json .specd/features/{name}/STATE.md
|
|
597
614
|
git commit -m "docs({feature-name}): feature complete
|
|
@@ -609,6 +609,23 @@ Continue to commit.
|
|
|
609
609
|
<step name="commit">
|
|
610
610
|
Commit the roadmap.
|
|
611
611
|
|
|
612
|
+
**First, check auto-commit setting. Run this command:**
|
|
613
|
+
|
|
614
|
+
```bash
|
|
615
|
+
cat .specd/config.json 2>/dev/null || echo '{"auto_commit_docs": true}'
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
Read the output. If `auto_commit_docs` is `false`, do NOT run the git commands below. Instead print:
|
|
619
|
+
|
|
620
|
+
```
|
|
621
|
+
Auto-commit disabled for docs — changes not committed.
|
|
622
|
+
Modified files: .specd/features/{feature-name}/ROADMAP.md, plans/, STATE.md, config.json
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
Then skip ahead to completion.
|
|
626
|
+
|
|
627
|
+
**Only if `auto_commit_docs` is `true` or not set (default), run:**
|
|
628
|
+
|
|
612
629
|
```bash
|
|
613
630
|
git add .specd/features/{feature-name}/ROADMAP.md .specd/features/{feature-name}/plans/ .specd/features/{feature-name}/STATE.md .specd/features/{feature-name}/config.json
|
|
614
631
|
git commit -m "docs({feature-name}): create roadmap
|
|
@@ -301,6 +301,23 @@ Continue to commit.
|
|
|
301
301
|
<step name="commit">
|
|
302
302
|
Commit the plans.
|
|
303
303
|
|
|
304
|
+
**First, check auto-commit setting. Run this command:**
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
cat .specd/config.json 2>/dev/null || echo '{"auto_commit_docs": true}'
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
Read the output. If `auto_commit_docs` is `false`, do NOT run the git commands below. Instead print:
|
|
311
|
+
|
|
312
|
+
```
|
|
313
|
+
Auto-commit disabled for docs — changes not committed.
|
|
314
|
+
Modified files: .specd/features/{feature-name}/plans/phase-{NN}/*-PLAN.md, ROADMAP.md, STATE.md
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
Then skip ahead to completion.
|
|
318
|
+
|
|
319
|
+
**Only if `auto_commit_docs` is `true` or not set (default), run:**
|
|
320
|
+
|
|
304
321
|
```bash
|
|
305
322
|
git add .specd/features/{feature-name}/plans/phase-{NN}/*-PLAN.md
|
|
306
323
|
git add .specd/features/{feature-name}/ROADMAP.md
|
|
@@ -676,6 +676,23 @@ Continue to commit.
|
|
|
676
676
|
<step name="commit">
|
|
677
677
|
Commit the phase preparation.
|
|
678
678
|
|
|
679
|
+
**First, check auto-commit setting. Run this command:**
|
|
680
|
+
|
|
681
|
+
```bash
|
|
682
|
+
cat .specd/config.json 2>/dev/null || echo '{"auto_commit_docs": true}'
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
Read the output. If `auto_commit_docs` is `false`, do NOT run the git commands below. Instead print:
|
|
686
|
+
|
|
687
|
+
```
|
|
688
|
+
Auto-commit disabled for docs — changes not committed.
|
|
689
|
+
Modified files: .specd/features/{feature}/plans/phase-{NN}/CONTEXT.md, RESEARCH.md (if created), DECISIONS.md
|
|
690
|
+
```
|
|
691
|
+
|
|
692
|
+
Then skip ahead to completion.
|
|
693
|
+
|
|
694
|
+
**Only if `auto_commit_docs` is `true` or not set (default), run:**
|
|
695
|
+
|
|
679
696
|
```bash
|
|
680
697
|
# Add phase CONTEXT.md
|
|
681
698
|
git add ".specd/features/{feature}/plans/phase-{NN}/CONTEXT.md"
|
|
@@ -515,6 +515,23 @@ Continue to commit.
|
|
|
515
515
|
<step name="commit">
|
|
516
516
|
Commit the phase research.
|
|
517
517
|
|
|
518
|
+
**First, check auto-commit setting. Run this command:**
|
|
519
|
+
|
|
520
|
+
```bash
|
|
521
|
+
cat .specd/config.json 2>/dev/null || echo '{"auto_commit_docs": true}'
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
Read the output. If `auto_commit_docs` is `false`, do NOT run the git commands below. Instead print:
|
|
525
|
+
|
|
526
|
+
```
|
|
527
|
+
Auto-commit disabled for docs — changes not committed.
|
|
528
|
+
Modified files: .specd/features/{feature}/plans/phase-{NN}/RESEARCH.md, DECISIONS.md
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
Then skip ahead to completion.
|
|
532
|
+
|
|
533
|
+
**Only if `auto_commit_docs` is `true` or not set (default), run:**
|
|
534
|
+
|
|
518
535
|
```bash
|
|
519
536
|
git add ".specd/features/{feature}/plans/phase-{NN}/RESEARCH.md"
|
|
520
537
|
git add ".specd/features/{feature}/DECISIONS.md"
|
|
@@ -450,7 +450,23 @@ Continue to commit_and_next.
|
|
|
450
450
|
<step name="commit_and_next">
|
|
451
451
|
Commit review changes and suggest next steps.
|
|
452
452
|
|
|
453
|
-
**
|
|
453
|
+
**First, check auto-commit setting. Run this command:**
|
|
454
|
+
|
|
455
|
+
```bash
|
|
456
|
+
cat .specd/config.json 2>/dev/null || echo '{"auto_commit_docs": true}'
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
Read the output. If `auto_commit_docs` is `false`, do NOT run the git commands below. Instead print:
|
|
460
|
+
|
|
461
|
+
```
|
|
462
|
+
Auto-commit disabled for docs — changes not committed.
|
|
463
|
+
Modified files: .specd/features/{feature}/STATE.md, DECISIONS.md, CHANGELOG.md, config.json, plans/phase-{NN}/
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
Then skip ahead to presenting next steps below.
|
|
467
|
+
|
|
468
|
+
**Only if `auto_commit_docs` is `true` or not set (default), run:**
|
|
469
|
+
|
|
454
470
|
```bash
|
|
455
471
|
git add .specd/features/{feature}/STATE.md
|
|
456
472
|
git add .specd/features/{feature}/DECISIONS.md
|
|
@@ -10,17 +10,39 @@
|
|
|
10
10
|
|
|
11
11
|
Check if `$ARGUMENTS` contains `--all`. If so, completed features will be shown in a separate section.
|
|
12
12
|
|
|
13
|
-
### 2.
|
|
13
|
+
### 2. Detect orchestrator mode
|
|
14
|
+
|
|
15
|
+
Read `.specd/config.json` if it exists.
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
cat .specd/config.json 2>/dev/null
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**If config exists and `type` equals `"orchestrator"`:**
|
|
22
|
+
- Set mode = orchestrator
|
|
23
|
+
- Read `projects` array from config.json — each entry has `name` and `path`
|
|
24
|
+
- Continue to step 3
|
|
25
|
+
|
|
26
|
+
**Otherwise (no config, or type != "orchestrator"):**
|
|
27
|
+
- Set mode = project
|
|
28
|
+
- Continue to step 3
|
|
29
|
+
|
|
30
|
+
### 3. Check for features directory
|
|
14
31
|
|
|
15
32
|
Use Glob to check if `.specd/features/*/config.json` matches anything.
|
|
16
33
|
|
|
17
|
-
If
|
|
34
|
+
**If mode = orchestrator and no root features:**
|
|
35
|
+
Also check sub-project features — scan each project path for `{project-path}/.specd/features/*/config.json`. If features found in sub-projects, continue (there's something to show).
|
|
36
|
+
|
|
37
|
+
**If no features found anywhere:** output the following and stop:
|
|
18
38
|
|
|
19
39
|
```
|
|
20
40
|
No features found. Start one with `/specd:feature:new [name]`.
|
|
21
41
|
```
|
|
22
42
|
|
|
23
|
-
###
|
|
43
|
+
### 4. Gather feature data
|
|
44
|
+
|
|
45
|
+
#### If mode = project (single-project, unchanged):
|
|
24
46
|
|
|
25
47
|
For each feature directory in `.specd/features/`:
|
|
26
48
|
|
|
@@ -30,7 +52,32 @@ For each feature directory in `.specd/features/`:
|
|
|
30
52
|
- **Plan completion**: From the `Plan Status` table, count rows with Status = `Complete` vs total rows. Format as `completed/total` (e.g. `5/8`). If no Plan Status table or no rows, use `—`.
|
|
31
53
|
- **Next action**: Extract the first meaningful line from the `## Next Steps` section. Keep it short — take just the **Recommended:** line if present, otherwise the first line. Strip markdown formatting like `**Recommended:**` prefix. Truncate to ~50 chars if needed.
|
|
32
54
|
|
|
33
|
-
|
|
55
|
+
#### If mode = orchestrator:
|
|
56
|
+
|
|
57
|
+
**Step 4a: Gather root features (same as single-project).**
|
|
58
|
+
|
|
59
|
+
For each feature directory in `.specd/features/`, extract feature_name, created, stage, plans, next_action using the same logic as single-project mode.
|
|
60
|
+
|
|
61
|
+
**Step 4b: For each root feature, check for sub-project features.**
|
|
62
|
+
|
|
63
|
+
Read each root feature's `config.json`. If it has a `projects` array (orchestrator feature):
|
|
64
|
+
|
|
65
|
+
For each project entry `{name, path}` in the feature's `projects` array:
|
|
66
|
+
1. Check if `{path}/.specd/features/{feature_name}/` exists
|
|
67
|
+
2. If yes, read `{path}/.specd/features/{feature_name}/config.json` and `{path}/.specd/features/{feature_name}/STATE.md`
|
|
68
|
+
3. Extract the same fields: stage (from STATE.md `**Stage:**`), plan completion, next action
|
|
69
|
+
4. Store as a sub-feature of the parent orchestrator feature, tagged with the project name
|
|
70
|
+
|
|
71
|
+
Mark this root feature as an "orchestrator feature" (has sub-project children).
|
|
72
|
+
|
|
73
|
+
**Step 4c: Scan for standalone sub-project features.**
|
|
74
|
+
|
|
75
|
+
For each project in the repo-level `.specd/config.json` `projects` array:
|
|
76
|
+
1. Use Glob to find `{project-path}/.specd/features/*/config.json`
|
|
77
|
+
2. For each feature found, check if it was already captured as a sub-feature of an orchestrator feature in step 4b
|
|
78
|
+
3. If NOT already captured, gather its data (same extraction logic) and store as a standalone feature, grouped by project name/path
|
|
79
|
+
|
|
80
|
+
### 5. Sort features
|
|
34
81
|
|
|
35
82
|
Sort active features by stage priority (highest first), then by created date (oldest first):
|
|
36
83
|
|
|
@@ -39,7 +86,14 @@ Sort active features by stage priority (highest first), then by created date (ol
|
|
|
39
86
|
3. `research`
|
|
40
87
|
4. `discussion` (least advanced)
|
|
41
88
|
|
|
42
|
-
|
|
89
|
+
**For orchestrator mode:** Apply the same sort to:
|
|
90
|
+
- Root/orchestrator features (the parent rows)
|
|
91
|
+
- Sub-project features within each orchestrator feature
|
|
92
|
+
- Standalone features within each project group
|
|
93
|
+
|
|
94
|
+
### 6. Format output
|
|
95
|
+
|
|
96
|
+
#### If mode = project (single-project, unchanged):
|
|
43
97
|
|
|
44
98
|
**Count features:** Calculate total count and in-progress count (non-complete).
|
|
45
99
|
|
|
@@ -80,6 +134,78 @@ Run `/specd:status --all` to include completed features.
|
|
|
80
134
|
|
|
81
135
|
Where `Completed` date comes from the `**Last Updated:**` field in STATE.md.
|
|
82
136
|
|
|
83
|
-
|
|
137
|
+
#### If mode = orchestrator:
|
|
138
|
+
|
|
139
|
+
**Count features:** Calculate total across root features + standalone sub-project features. In-progress = non-complete/non-abandoned.
|
|
140
|
+
|
|
141
|
+
**Output header:**
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
# Feature Status
|
|
145
|
+
|
|
146
|
+
_{total} features, {in_progress} in progress — orchestrator mode_
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Active features table (orchestrator features with sub-projects):**
|
|
150
|
+
|
|
151
|
+
For each active root feature (not complete/abandoned, unless `--all`):
|
|
152
|
+
|
|
153
|
+
If it's an orchestrator feature (has sub-project children):
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
| Feature | Stage | Plans | Created | Next Action |
|
|
157
|
+
|---------|-------|-------|---------|-------------|
|
|
158
|
+
| {name} | {stage} | {plans} | {created} | {next_action} |
|
|
159
|
+
| └ {project-name} | {stage} | {plans} | | {next_action} |
|
|
160
|
+
| └ {project-name} | {stage} | {plans} | | {next_action} |
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
- Orchestrator feature is the parent row with full data
|
|
164
|
+
- Sub-project rows use `└ {project-name}` in the Feature column
|
|
165
|
+
- Sub-project rows leave Created empty (inherited from parent)
|
|
166
|
+
- Sort sub-project rows by stage priority (same as main sort)
|
|
167
|
+
|
|
168
|
+
If it's a plain root feature (no sub-project children), show it as a normal row (same as single-project).
|
|
169
|
+
|
|
170
|
+
**If standalone sub-project features exist, add a section:**
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
### Project Features
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
For each project that has standalone features:
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
**{project-name}** ({project-path})
|
|
180
|
+
|
|
181
|
+
| Feature | Stage | Plans | Created | Next Action |
|
|
182
|
+
|---------|-------|-------|---------|-------------|
|
|
183
|
+
| {name} | {stage} | {plans} | {created} | {next_action} |
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Only show active standalone features (not complete/abandoned, unless `--all`).
|
|
187
|
+
|
|
188
|
+
**Completed/abandoned features with `--all` flag:**
|
|
189
|
+
|
|
190
|
+
**If `--all` flag is NOT set and there are completed/abandoned features (root or sub-project):**
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
Run `/specd:status --all` to include completed features.
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**If `--all` flag IS set and there are completed/abandoned features, add:**
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
### Completed
|
|
200
|
+
|
|
201
|
+
| Feature | Plans | Completed |
|
|
202
|
+
|---------|-------|-----------|
|
|
203
|
+
| {name} | {completed}/{total} | {last_updated} |
|
|
204
|
+
| └ {project-name} | {completed}/{total} | {last_updated} |
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Show completed orchestrator features with their sub-project rows indented, and completed standalone sub-project features under their project heading.
|
|
208
|
+
|
|
209
|
+
### 7. Output
|
|
84
210
|
|
|
85
211
|
Print the formatted dashboard directly. No file writes. No Task agents. No AskUserQuestion.
|