@curdx/flow 2.2.4 → 2.3.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/.claude-plugin/marketplace.json +3 -2
- package/.claude-plugin/plugin.json +27 -1
- package/CHANGELOG.md +9 -564
- package/README.md +49 -113
- package/agents/flow-adversary.md +1 -0
- package/agents/flow-architect.md +9 -36
- package/agents/flow-brownfield-analyst.md +7 -18
- package/agents/flow-debugger.md +1 -0
- package/agents/flow-edge-hunter.md +1 -0
- package/agents/flow-executor.md +1 -0
- package/agents/flow-orchestrator.md +145 -0
- package/agents/flow-planner.md +11 -37
- package/agents/flow-product-designer.md +9 -41
- package/agents/flow-qa-engineer.md +1 -0
- package/agents/flow-researcher.md +9 -45
- package/agents/flow-reviewer.md +1 -0
- package/agents/flow-security-auditor.md +1 -0
- package/agents/flow-triage-analyst.md +1 -0
- package/agents/flow-ui-researcher.md +1 -0
- package/agents/flow-ux-designer.md +1 -0
- package/agents/flow-verifier.md +1 -0
- package/cli/install-companions.js +8 -8
- package/cli/install-next-steps.js +3 -1
- package/cli/lib/doctor-claude-settings.js +1 -0
- package/cli/lib/doctor-report.js +1 -1
- package/gates/coverage-audit-gate.md +1 -3
- package/gates/tdd-gate.md +0 -6
- package/gates/verification-gate.md +1 -5
- package/hooks/scripts/common.sh +7 -0
- package/hooks/scripts/session-start.sh +1 -1
- package/hooks/scripts/stop-watcher.sh +8 -0
- package/knowledge/artifact-output-discipline.md +24 -0
- package/knowledge/artifact-summary-contracts.md +50 -0
- package/knowledge/claude-code-runtime-contracts.md +13 -1
- package/knowledge/execution-strategies.md +6 -4
- package/knowledge/poc-first-workflow.md +2 -6
- package/knowledge/spec-driven-development.md +0 -4
- package/knowledge/systematic-debugging.md +0 -6
- package/knowledge/two-stage-review.md +8 -6
- package/knowledge/wave-execution.md +2 -1
- package/monitors/monitors.json +8 -0
- package/monitors/scripts/flow-state-monitor.sh +99 -0
- package/package.json +3 -2
- package/schemas/agent-frontmatter.schema.json +4 -0
- package/settings.json +1 -0
- package/skills/brownfield-index/SKILL.md +14 -20
- package/skills/brownfield-index/references/applicability.md +12 -0
- package/skills/brownfield-index/references/handoff.md +8 -0
- package/skills/brownfield-index/references/index-contract.md +10 -0
- package/skills/browser-qa/SKILL.md +15 -35
- package/skills/browser-qa/references/handoff.md +6 -0
- package/skills/browser-qa/references/prerequisites.md +10 -0
- package/skills/browser-qa/references/qa-contract.md +20 -0
- package/skills/cancel/SKILL.md +20 -61
- package/skills/cancel/references/destructive-mode.md +17 -0
- package/skills/cancel/references/reporting.md +18 -0
- package/skills/cancel/references/state-recovery.md +30 -0
- package/skills/cancel/references/target-resolution.md +7 -0
- package/skills/debug/SKILL.md +23 -87
- package/skills/debug/references/context-gathering.md +11 -0
- package/skills/debug/references/failure-guard.md +25 -0
- package/skills/debug/references/intake.md +12 -0
- package/skills/debug/references/phase-workflow.md +34 -0
- package/skills/debug/references/reporting.md +20 -0
- package/skills/epic/SKILL.md +18 -50
- package/skills/epic/references/epic-artifacts.md +20 -0
- package/skills/epic/references/epic-intake.md +9 -0
- package/skills/epic/references/slice-handoff.md +16 -0
- package/skills/fast/SKILL.md +34 -102
- package/skills/fast/references/applicability.md +25 -0
- package/skills/fast/references/clarification.md +20 -0
- package/skills/fast/references/execution-contract.md +56 -0
- package/skills/help/SKILL.md +26 -132
- package/skills/help/references/dispatch.md +20 -0
- package/skills/help/references/overview.md +39 -0
- package/skills/help/references/troubleshoot.md +47 -0
- package/skills/help/references/workflow.md +37 -0
- package/skills/implement/SKILL.md +61 -237
- package/skills/implement/references/error-recovery.md +36 -0
- package/skills/implement/references/linear-execution.md +32 -0
- package/skills/implement/references/preflight.md +43 -0
- package/skills/implement/references/progress-contract.md +32 -0
- package/skills/implement/references/state-init.md +33 -0
- package/skills/implement/references/stop-hook-execution.md +36 -0
- package/skills/implement/references/strategy-router.md +38 -0
- package/skills/implement/references/subagent-execution.md +43 -0
- package/skills/init/SKILL.md +26 -95
- package/skills/init/references/gitignore-and-health.md +26 -0
- package/skills/init/references/next-steps.md +22 -0
- package/skills/init/references/preflight.md +15 -0
- package/skills/init/references/scaffold-contract.md +27 -0
- package/skills/review/SKILL.md +45 -153
- package/skills/review/references/optional-passes.md +48 -0
- package/skills/review/references/preflight.md +38 -0
- package/skills/review/references/report-contract.md +49 -0
- package/skills/review/references/reporting.md +20 -0
- package/skills/review/references/stage-execution.md +32 -0
- package/skills/security-audit/SKILL.md +16 -34
- package/skills/security-audit/references/audit-contract.md +21 -0
- package/skills/security-audit/references/gate-handoff.md +8 -0
- package/skills/security-audit/references/scope-and-depth.md +9 -0
- package/skills/spec/SKILL.md +55 -182
- package/skills/spec/references/artifact-landing.md +31 -0
- package/skills/spec/references/phase-execution.md +50 -0
- package/skills/spec/references/planning-review.md +31 -0
- package/skills/spec/references/preflight-and-routing.md +46 -0
- package/skills/spec/references/reporting.md +21 -0
- package/skills/start/SKILL.md +40 -123
- package/skills/start/references/branch-routing.md +51 -0
- package/skills/start/references/mode-semantics.md +12 -0
- package/skills/start/references/preflight.md +13 -0
- package/skills/start/references/reporting.md +20 -0
- package/skills/start/references/state-seeding.md +44 -0
- package/skills/start/references/workflow-handoff.md +26 -0
- package/skills/status/SKILL.md +17 -61
- package/skills/status/references/gather-contract.md +27 -0
- package/skills/status/references/health-rules.md +27 -0
- package/skills/status/references/output-contract.md +24 -0
- package/skills/status/references/preflight.md +10 -0
- package/skills/status/references/recovery-hints.md +18 -0
- package/skills/ui-sketch/SKILL.md +15 -34
- package/skills/ui-sketch/references/brief-intake.md +10 -0
- package/skills/ui-sketch/references/iteration-handoff.md +5 -0
- package/skills/ui-sketch/references/variant-contract.md +15 -0
- package/skills/verify/SKILL.md +31 -86
- package/skills/verify/references/evidence-workflow.md +39 -0
- package/skills/verify/references/output-contract.md +23 -0
- package/skills/verify/references/preflight.md +11 -0
- package/skills/verify/references/report-handoff.md +35 -0
- package/skills/verify/references/strict-mode.md +12 -0
- package/README.zh.md +0 -160
package/skills/start/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: start
|
|
3
|
-
description:
|
|
3
|
+
description: Create, resume, list, or switch the active feature spec.
|
|
4
4
|
when_to_use: Use when the user wants to create a spec, switch active work, resume a prior spec, list specs, or set the workflow mode for a feature.
|
|
5
5
|
argument-hint: "[<spec-name>] [\"<one-line goal>\"] [--resume] [--list] [--mode=<fast|standard|enterprise>]"
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -9,9 +9,18 @@ allowed-tools: [Read, Write, Bash, AskUserQuestion, Agent]
|
|
|
9
9
|
|
|
10
10
|
# Start or Resume a Feature Spec
|
|
11
11
|
|
|
12
|
-
Entry point for every feature.
|
|
12
|
+
Entry point for every feature. Keep this skill focused on argument parsing,
|
|
13
|
+
branch selection, state seeding, and next-step routing. Detailed branch behavior
|
|
14
|
+
and workflow handoff rules live in:
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
- `references/preflight.md`
|
|
17
|
+
- `references/branch-routing.md`
|
|
18
|
+
- `references/state-seeding.md`
|
|
19
|
+
- `references/mode-semantics.md`
|
|
20
|
+
- `references/workflow-handoff.md`
|
|
21
|
+
- `references/reporting.md`
|
|
22
|
+
|
|
23
|
+
## Invocation Patterns
|
|
15
24
|
|
|
16
25
|
| Pattern | Behavior |
|
|
17
26
|
|---------|----------|
|
|
@@ -24,140 +33,48 @@ Entry point for every feature. Works in four modes depending on flags and existi
|
|
|
24
33
|
|
|
25
34
|
## Preflight
|
|
26
35
|
|
|
27
|
-
|
|
28
|
-
# Require a .flow project
|
|
29
|
-
[ ! -d ".flow" ] && {
|
|
30
|
-
echo "✗ Not a CurdX-Flow project. Run /curdx-flow:init first.";
|
|
31
|
-
exit 1;
|
|
32
|
-
}
|
|
33
|
-
```
|
|
36
|
+
Use `references/preflight.md` for the project-level guard.
|
|
34
37
|
|
|
35
|
-
## Flag
|
|
36
|
-
|
|
37
|
-
**Do not shell-split `$ARGUMENTS`.** It is a user-supplied string that may
|
|
38
|
-
contain quoted substrings with spaces, `$`-signs, or embedded quotes.
|
|
39
|
-
`xargs`, naive `awk`, and `sed`-based quote stripping all mis-parse at
|
|
40
|
-
least one of those cases (e.g. `my-feature "Fix user's login bug"` breaks
|
|
41
|
-
`xargs: unmatched quote`). Parse the string as a model task instead:
|
|
42
|
-
|
|
43
|
-
1. **Flags** (order-independent, each is self-delimited):
|
|
44
|
-
- `--resume` / `--list` — boolean presence
|
|
45
|
-
- `--mode=<fast|standard|enterprise>` — value after `=`
|
|
46
|
-
Detect each with a single regex over the full `$ARGUMENTS` string and
|
|
47
|
-
remove the matched span from your working copy. Flags not in the list
|
|
48
|
-
above are errors — surface them to the user.
|
|
49
|
-
|
|
50
|
-
2. **Positional args** (after flags removed):
|
|
51
|
-
- First whitespace-separated token → `SPEC_NAME` (kebab-case `[a-z0-9-]+`).
|
|
52
|
-
- Remainder of the string, trimmed and with one layer of outer `"..."`
|
|
53
|
-
or `'...'` quotes stripped → `GOAL`. Preserve inner quotes as-is.
|
|
54
|
-
|
|
55
|
-
3. If `SPEC_NAME` does not match `^[a-z0-9][a-z0-9-]*$` (per
|
|
56
|
-
`schemas/spec-state.schema.json`), stop and ask the user to pick a
|
|
57
|
-
valid kebab-case name.
|
|
58
|
-
|
|
59
|
-
Mode must be `fast`, `standard`, or `enterprise`. Invalid → default to
|
|
60
|
-
`standard` with a warning.
|
|
61
|
-
|
|
62
|
-
Example inputs and their parse:
|
|
63
|
-
|
|
64
|
-
| `$ARGUMENTS` | SPEC_NAME | GOAL | flags |
|
|
65
|
-
|-------------------------------------------------|--------------|-------------------------------|---------------|
|
|
66
|
-
| `my-feature "Add JWT auth"` | `my-feature` | `Add JWT auth` | — |
|
|
67
|
-
| `my-feature --mode=fast "Add JWT auth"` | `my-feature` | `Add JWT auth` | mode=fast |
|
|
68
|
-
| `my-feature "Fix user's login bug"` | `my-feature` | `Fix user's login bug` | — |
|
|
69
|
-
| `--list` | — | — | list=true |
|
|
70
|
-
| `--resume` | — | — | resume=true |
|
|
71
|
-
|
|
72
|
-
## Branch logic
|
|
73
|
-
|
|
74
|
-
### Branch A: `--list`
|
|
75
|
-
Enumerate every directory under `.flow/specs/`, read each `.state.json` for `phase` and `updated` (per `schemas/spec-state.schema.json`), print a numbered list, then `AskUserQuestion` to pick one. Picking sets `.flow/.active-spec` and exits.
|
|
76
|
-
|
|
77
|
-
### Branch B: `--resume` (no name)
|
|
78
|
-
Read `.flow/.active-spec`. If it points to a valid spec dir, report its current phase and next suggested command (`/curdx-flow:spec` if incomplete, `/curdx-flow:implement` if tasks ready). If `.active-spec` is empty or stale, fall back to Branch A.
|
|
79
|
-
|
|
80
|
-
### Branch C: `SPEC_NAME` provided, spec exists
|
|
81
|
-
Switch `.flow/.active-spec` to `SPEC_NAME`. Confirm with the user if they intended to switch (not overwrite). Report current phase.
|
|
82
|
-
|
|
83
|
-
### Branch D: `SPEC_NAME` provided, spec does NOT exist
|
|
84
|
-
Create a new spec:
|
|
85
|
-
|
|
86
|
-
Use the `Write` tool for `.flow/specs/$SPEC_NAME/.state.json` and `.flow/.active-spec` so Claude Code checkpoints can rewind the new spec. The state file must match `schemas/spec-state.schema.json`:
|
|
87
|
-
|
|
88
|
-
- `spec_name`, not `spec`
|
|
89
|
-
- `created` as date, not `created_at`
|
|
90
|
-
- `updated` as date-time, not `updated_at`
|
|
91
|
-
- `phase` starts as `research`; there is no `created` phase
|
|
92
|
-
- `version` is required
|
|
93
|
-
|
|
94
|
-
Initial state JSON shape:
|
|
95
|
-
|
|
96
|
-
```json
|
|
97
|
-
{
|
|
98
|
-
"version": "1.0",
|
|
99
|
-
"spec_name": "$SPEC_NAME",
|
|
100
|
-
"goal": "$GOAL",
|
|
101
|
-
"mode": "$FLAG_MODE",
|
|
102
|
-
"phase": "research",
|
|
103
|
-
"phase_status": {},
|
|
104
|
-
"strategy": "auto",
|
|
105
|
-
"execute_state": {},
|
|
106
|
-
"created": "YYYY-MM-DD",
|
|
107
|
-
"updated": "YYYY-MM-DDTHH:MM:SSZ"
|
|
108
|
-
}
|
|
109
|
-
```
|
|
38
|
+
## Flag Parsing
|
|
110
39
|
|
|
111
|
-
|
|
40
|
+
Do not shell-split `$ARGUMENTS`. Parse flags and positional arguments using the
|
|
41
|
+
rules in `references/branch-routing.md`.
|
|
112
42
|
|
|
113
|
-
|
|
43
|
+
Hard constraints:
|
|
114
44
|
|
|
115
|
-
|
|
45
|
+
- Flags allowed: `--resume`, `--list`, `--mode=<fast|standard|enterprise>`
|
|
46
|
+
- First positional token -> `SPEC_NAME`
|
|
47
|
+
- Remaining trimmed content -> `GOAL`
|
|
48
|
+
- `SPEC_NAME` must be kebab-case per `schemas/spec-state.schema.json`
|
|
49
|
+
- Invalid mode -> warn and fall back to `standard`
|
|
116
50
|
|
|
117
|
-
|
|
118
|
-
# Progress Log — $SPEC_NAME
|
|
51
|
+
## Branch Selection
|
|
119
52
|
|
|
120
|
-
|
|
121
|
-
**Mode**: $FLAG_MODE
|
|
122
|
-
**Created**: YYYY-MM-DD
|
|
53
|
+
Use `references/branch-routing.md` for the full branch contract:
|
|
123
54
|
|
|
124
|
-
|
|
125
|
-
|
|
55
|
+
- Branch A: `--list`
|
|
56
|
+
- Branch B: `--resume`
|
|
57
|
+
- Branch C: existing `SPEC_NAME`
|
|
58
|
+
- Branch D: new `SPEC_NAME`
|
|
59
|
+
- Branch E: no args / no flags
|
|
126
60
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
```
|
|
61
|
+
If a new spec must be created, seed `.state.json`, `.flow/.active-spec`, and
|
|
62
|
+
`.progress.md` using `references/state-seeding.md`.
|
|
130
63
|
|
|
131
|
-
|
|
132
|
-
```
|
|
133
|
-
AskUserQuestion:
|
|
134
|
-
"No spec name given. What would you like to do?"
|
|
135
|
-
Options:
|
|
136
|
-
- Create a new spec (prompts for name + goal)
|
|
137
|
-
- Resume the last active spec
|
|
138
|
-
- List all specs
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
Route to the matching branch.
|
|
64
|
+
## Mode Semantics
|
|
142
65
|
|
|
143
|
-
|
|
66
|
+
Use `references/mode-semantics.md` for the workflow defaults implied by
|
|
67
|
+
`mode`.
|
|
144
68
|
|
|
145
|
-
|
|
69
|
+
## Post-Create and Resume Handoff
|
|
146
70
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
| `fast` | skipped (use `/curdx-flow:fast` instead) | linear strategy | karpathy + verification |
|
|
150
|
-
| `standard` | full 4 phases | auto strategy | + tdd + coverage-audit |
|
|
151
|
-
| `enterprise` | full 4 phases + `--review=all` | auto strategy + stricter gates | + adversarial + edge-case + security |
|
|
71
|
+
The next-command routing rules are centralized in
|
|
72
|
+
`references/workflow-handoff.md`.
|
|
152
73
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
```
|
|
156
|
-
✓ Spec ready: <name>
|
|
157
|
-
Goal: <goal>
|
|
158
|
-
Mode: <mode>
|
|
159
|
-
Path: .flow/specs/<name>/
|
|
74
|
+
User-visible create/switch/resume summaries live in `references/reporting.md`.
|
|
75
|
+
For a newly created spec, the immediate handoff remains:
|
|
160
76
|
|
|
77
|
+
```text
|
|
161
78
|
Next: /curdx-flow:spec
|
|
162
79
|
```
|
|
163
80
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Branch Routing — Start Skill Control Flow
|
|
2
|
+
|
|
3
|
+
## Argument Parsing Rules
|
|
4
|
+
|
|
5
|
+
Do not shell-split `$ARGUMENTS`.
|
|
6
|
+
|
|
7
|
+
1. Detect and remove these flags from the raw string:
|
|
8
|
+
- `--resume`
|
|
9
|
+
- `--list`
|
|
10
|
+
- `--mode=<fast|standard|enterprise>`
|
|
11
|
+
2. After flags are removed:
|
|
12
|
+
- first whitespace-delimited token -> `SPEC_NAME`
|
|
13
|
+
- remaining trimmed text -> `GOAL`
|
|
14
|
+
- strip one outer layer of matching single or double quotes from `GOAL`
|
|
15
|
+
3. Reject unknown flags instead of ignoring them.
|
|
16
|
+
|
|
17
|
+
## Branches
|
|
18
|
+
|
|
19
|
+
### Branch A — `--list`
|
|
20
|
+
|
|
21
|
+
- enumerate `.flow/specs/*`
|
|
22
|
+
- read each `.state.json`
|
|
23
|
+
- show phase + updated timestamp
|
|
24
|
+
- use `AskUserQuestion` to choose
|
|
25
|
+
- set `.flow/.active-spec`
|
|
26
|
+
|
|
27
|
+
### Branch B — `--resume`
|
|
28
|
+
|
|
29
|
+
- read `.flow/.active-spec`
|
|
30
|
+
- if stale or missing, fall back to Branch A
|
|
31
|
+
- report current phase and route using `references/workflow-handoff.md`
|
|
32
|
+
|
|
33
|
+
### Branch C — Existing `SPEC_NAME`
|
|
34
|
+
|
|
35
|
+
- switch `.flow/.active-spec` to that spec
|
|
36
|
+
- confirm if the user likely intended to switch rather than overwrite
|
|
37
|
+
- report current phase
|
|
38
|
+
|
|
39
|
+
### Branch D — New `SPEC_NAME`
|
|
40
|
+
|
|
41
|
+
- gather missing `GOAL` if necessary
|
|
42
|
+
- create state and progress files using `references/state-seeding.md`
|
|
43
|
+
- set `.flow/.active-spec`
|
|
44
|
+
|
|
45
|
+
### Branch E — No args / no flags
|
|
46
|
+
|
|
47
|
+
Ask the user to choose:
|
|
48
|
+
|
|
49
|
+
- create a new spec
|
|
50
|
+
- resume the last active spec
|
|
51
|
+
- list all specs
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Start Mode Semantics — What Each Mode Implies
|
|
2
|
+
|
|
3
|
+
The `mode` field in `.state.json` drives later workflow defaults:
|
|
4
|
+
|
|
5
|
+
| Mode | `/curdx-flow:spec` default | `/curdx-flow:implement` default | Gates applied |
|
|
6
|
+
|------|---------------------------|--------------------------------|---------------|
|
|
7
|
+
| `fast` | skipped (use `/curdx-flow:fast` instead) | linear strategy | karpathy + verification |
|
|
8
|
+
| `standard` | full 4 phases | auto strategy | + tdd + coverage-audit |
|
|
9
|
+
| `enterprise` | full 4 phases + `--review=all` | auto strategy + stricter gates | + adversarial + edge-case + security + devex |
|
|
10
|
+
|
|
11
|
+
If an invalid mode is provided during argument parsing, warn and fall back to
|
|
12
|
+
`standard`.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Start Preflight — Project Must Be Initialized
|
|
2
|
+
|
|
3
|
+
Before parsing arguments or touching spec state:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
[ ! -d ".flow" ] && {
|
|
7
|
+
echo "✗ Not a CurdX-Flow project. Run /curdx-flow:init first.";
|
|
8
|
+
exit 1;
|
|
9
|
+
}
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
`/curdx-flow:start` is the first mutable workflow entrypoint after init. If the
|
|
13
|
+
project scaffold is missing, stop immediately instead of attempting recovery.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Start Reporting — User-Facing Summaries
|
|
2
|
+
|
|
3
|
+
For a newly created spec, report:
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
✓ Spec ready: <name>
|
|
7
|
+
Goal: <goal>
|
|
8
|
+
Mode: <mode>
|
|
9
|
+
Path: .flow/specs/<name>/
|
|
10
|
+
|
|
11
|
+
Next: /curdx-flow:spec
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
For resume and switch flows, keep the message short:
|
|
15
|
+
|
|
16
|
+
- identify the active spec
|
|
17
|
+
- state the current phase when known
|
|
18
|
+
- route using `references/workflow-handoff.md`
|
|
19
|
+
|
|
20
|
+
Do not restate the full workflow. Point to the immediate next command only.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# State Seeding — New Spec Bootstrap
|
|
2
|
+
|
|
3
|
+
When creating a fresh spec, use `Write` for all files so Claude checkpoints can
|
|
4
|
+
rewind the bootstrap cleanly.
|
|
5
|
+
|
|
6
|
+
## `.state.json`
|
|
7
|
+
|
|
8
|
+
Required shape:
|
|
9
|
+
|
|
10
|
+
```json
|
|
11
|
+
{
|
|
12
|
+
"version": "1.0",
|
|
13
|
+
"spec_name": "$SPEC_NAME",
|
|
14
|
+
"goal": "$GOAL",
|
|
15
|
+
"mode": "$FLAG_MODE",
|
|
16
|
+
"phase": "research",
|
|
17
|
+
"phase_status": {},
|
|
18
|
+
"strategy": "auto",
|
|
19
|
+
"execute_state": {},
|
|
20
|
+
"created": "YYYY-MM-DD",
|
|
21
|
+
"updated": "YYYY-MM-DDTHH:MM:SSZ"
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## `.progress.md`
|
|
26
|
+
|
|
27
|
+
```markdown
|
|
28
|
+
# Progress Log — $SPEC_NAME
|
|
29
|
+
|
|
30
|
+
**Goal**: $GOAL
|
|
31
|
+
**Mode**: $FLAG_MODE
|
|
32
|
+
**Created**: YYYY-MM-DD
|
|
33
|
+
|
|
34
|
+
## Decisions
|
|
35
|
+
(populated during /curdx-flow:spec)
|
|
36
|
+
|
|
37
|
+
## Learnings
|
|
38
|
+
(populated during /curdx-flow:implement)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Activation
|
|
42
|
+
|
|
43
|
+
Write `.flow/.active-spec` last, after the spec directory and both artifacts
|
|
44
|
+
exist.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Workflow Handoff — What Comes Next
|
|
2
|
+
|
|
3
|
+
`/curdx-flow:start` is the entrypoint, but it should route users to the right
|
|
4
|
+
next command based on current phase.
|
|
5
|
+
|
|
6
|
+
## New Spec
|
|
7
|
+
|
|
8
|
+
After a fresh spec is created:
|
|
9
|
+
|
|
10
|
+
```text
|
|
11
|
+
Next: /curdx-flow:spec
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Resume / Switch Routing
|
|
15
|
+
|
|
16
|
+
When resuming an existing spec:
|
|
17
|
+
|
|
18
|
+
- `phase` before `tasks` completion -> suggest `/curdx-flow:spec`
|
|
19
|
+
- `tasks` completed but execution not complete -> suggest `/curdx-flow:implement`
|
|
20
|
+
- `execute` completed but verification missing or failed -> suggest `/curdx-flow:verify`
|
|
21
|
+
- `verify` completed but review missing or failed -> suggest `/curdx-flow:review`
|
|
22
|
+
- both verification and review completed -> report evidence-backed handoff is
|
|
23
|
+
ready for human PR/release work
|
|
24
|
+
|
|
25
|
+
Do not invent non-existent ship commands. The workflow ends at human handoff
|
|
26
|
+
with persisted evidence.
|
package/skills/status/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: status
|
|
3
|
-
description: Show
|
|
3
|
+
description: Show active spec health, progress, artifacts, and recovery hints.
|
|
4
4
|
when_to_use: Use when the user asks what is active, which phase a spec is in, what artifacts exist, or how to recover from interrupted execution.
|
|
5
5
|
argument-hint: "[--all]"
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -9,77 +9,33 @@ allowed-tools: [Read, Bash, Glob]
|
|
|
9
9
|
|
|
10
10
|
# CurdX-Flow Status
|
|
11
11
|
|
|
12
|
-
Show a compact, read-only status summary for the current project.
|
|
12
|
+
Show a compact, read-only status summary for the current project. Keep this
|
|
13
|
+
entrypoint focused on read-only inventory, health classification, and recovery
|
|
14
|
+
hints. Detailed health and recovery rules live in:
|
|
15
|
+
|
|
16
|
+
- `references/preflight.md`
|
|
17
|
+
- `references/gather-contract.md`
|
|
18
|
+
- `references/health-rules.md`
|
|
19
|
+
- `references/recovery-hints.md`
|
|
20
|
+
- `references/output-contract.md`
|
|
13
21
|
|
|
14
22
|
## Preconditions
|
|
15
23
|
|
|
16
|
-
|
|
17
|
-
[ ! -d ".flow" ] && { echo "✗ Not a CurdX-Flow project. Run /curdx-flow:init first."; exit 1; }
|
|
18
|
-
```
|
|
24
|
+
Use `references/preflight.md` for the project-level guard.
|
|
19
25
|
|
|
20
26
|
## Gather
|
|
21
27
|
|
|
22
|
-
|
|
23
|
-
2. List `.flow/specs/*/` directories.
|
|
24
|
-
3. For each spec, check artifacts:
|
|
25
|
-
- `research.md`
|
|
26
|
-
- `requirements.md`
|
|
27
|
-
- `design.md`
|
|
28
|
-
- `tasks.md`
|
|
29
|
-
- `verification-report.md`
|
|
30
|
-
- `review-report.md`
|
|
31
|
-
4. If `.state.json` exists, read:
|
|
32
|
-
- `phase`
|
|
33
|
-
- `strategy`
|
|
34
|
-
- `phase_status`
|
|
35
|
-
- `execute_state.task_index`
|
|
36
|
-
- `execute_state.total_tasks`
|
|
37
|
-
- `execute_state.failed_attempts`
|
|
38
|
-
- `execute_state.global_iteration`
|
|
39
|
-
5. If `tasks.md` exists, count:
|
|
40
|
-
- completed tasks: lines matching `- [x] **`
|
|
41
|
-
- open tasks: lines matching `- [ ] **`
|
|
28
|
+
Use `references/gather-contract.md` for the full read-only inventory contract.
|
|
42
29
|
|
|
43
30
|
## Output Format
|
|
44
31
|
|
|
45
|
-
|
|
46
|
-
# CurDX-Flow Status
|
|
47
|
-
|
|
48
|
-
Project: <cwd>
|
|
49
|
-
Active spec: <name | none>
|
|
50
|
-
|
|
51
|
-
## Specs
|
|
52
|
-
|
|
53
|
-
### <spec-name> [ACTIVE]
|
|
54
|
-
Phase: <phase | unknown>
|
|
55
|
-
Strategy: <strategy | auto>
|
|
56
|
-
Tasks: <done>/<total from tasks.md> checked, state cursor <task_index>/<total_tasks>
|
|
57
|
-
Failures: <failed_attempts>, rounds: <global_iteration>
|
|
58
|
-
Artifacts: [x] research [x] requirements [x] design [x] tasks [ ] verify [ ] review
|
|
59
|
-
Health: OK | NEEDS_ATTENTION
|
|
60
|
-
Recovery: <one concrete next command>
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## Health Rules
|
|
64
|
-
|
|
65
|
-
- `OK`: state and tasks agree, no failed attempts, no missing current-phase artifact.
|
|
66
|
-
- `NEEDS_ATTENTION`: any of these:
|
|
67
|
-
- `.state.json` says execute complete but `tasks.md` has open tasks.
|
|
68
|
-
- failed attempts > 0.
|
|
69
|
-
- active spec points to a missing directory.
|
|
70
|
-
- current phase's expected artifact is missing or too small.
|
|
71
|
-
|
|
72
|
-
## Recovery Hints
|
|
32
|
+
Use `references/output-contract.md` for the compact markdown report shape.
|
|
73
33
|
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
- In spec phase with missing artifact: `/curdx-flow:spec --resume`
|
|
77
|
-
- Execute in progress: `/curdx-flow:implement --task=next`
|
|
78
|
-
- Stop-hook appears stuck: `/curdx-flow:cancel` then `/curdx-flow:implement --strategy=subagent`
|
|
79
|
-
- Verify missing after execute complete: `/curdx-flow:verify`
|
|
80
|
-
- Review missing after verify pass: `/curdx-flow:review`
|
|
34
|
+
Use `references/health-rules.md` to compute `Health`, and
|
|
35
|
+
`references/recovery-hints.md` to compute the single best next action.
|
|
81
36
|
|
|
82
37
|
## Strictness
|
|
83
38
|
|
|
84
39
|
- Read-only. Do not modify files.
|
|
85
|
-
- Do not claim a spec is complete from `.state.json` alone; compare `tasks.md`
|
|
40
|
+
- Do not claim a spec is complete from `.state.json` alone; compare `tasks.md`
|
|
41
|
+
checkboxes.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Status Gather Contract — What to Read
|
|
2
|
+
|
|
3
|
+
Gather read-only state in this order:
|
|
4
|
+
|
|
5
|
+
1. Read `.flow/.active-spec` if present.
|
|
6
|
+
2. List `.flow/specs/*/` directories.
|
|
7
|
+
3. For each spec, check artifacts:
|
|
8
|
+
- `research.md`
|
|
9
|
+
- `requirements.md`
|
|
10
|
+
- `design.md`
|
|
11
|
+
- `tasks.md`
|
|
12
|
+
- `verification-report.md`
|
|
13
|
+
- `review-report.md`
|
|
14
|
+
4. If `.state.json` exists, read:
|
|
15
|
+
- `phase`
|
|
16
|
+
- `strategy`
|
|
17
|
+
- `phase_status`
|
|
18
|
+
- `execute_state.task_index`
|
|
19
|
+
- `execute_state.total_tasks`
|
|
20
|
+
- `execute_state.failed_attempts`
|
|
21
|
+
- `execute_state.global_iteration`
|
|
22
|
+
5. If `tasks.md` exists, count:
|
|
23
|
+
- completed tasks: lines matching `- [x] **`
|
|
24
|
+
- open tasks: lines matching `- [ ] **`
|
|
25
|
+
|
|
26
|
+
Do not mutate files while gathering. `status` is an observer, not a repair
|
|
27
|
+
workflow.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Status Health Rules — Canonical Evaluation
|
|
2
|
+
|
|
3
|
+
## `OK`
|
|
4
|
+
|
|
5
|
+
Use `OK` only when:
|
|
6
|
+
|
|
7
|
+
- state and tasks agree
|
|
8
|
+
- failed attempts are zero
|
|
9
|
+
- the current phase's expected artifact exists
|
|
10
|
+
|
|
11
|
+
## `NEEDS_ATTENTION`
|
|
12
|
+
|
|
13
|
+
Use `NEEDS_ATTENTION` when any of these is true:
|
|
14
|
+
|
|
15
|
+
- `.state.json` says execute complete but `tasks.md` still has open tasks
|
|
16
|
+
- `failed_attempts > 0`
|
|
17
|
+
- `.flow/.active-spec` points to a missing directory
|
|
18
|
+
- the current phase's expected artifact is missing or obviously truncated
|
|
19
|
+
|
|
20
|
+
## Artifact Expectations
|
|
21
|
+
|
|
22
|
+
- `research` -> `research.md`
|
|
23
|
+
- `requirements` -> `requirements.md`
|
|
24
|
+
- `design` -> `design.md`
|
|
25
|
+
- `tasks` / `execute` -> `tasks.md`
|
|
26
|
+
- `verify` -> `verification-report.md`
|
|
27
|
+
- `review` -> `review-report.md`
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Status Output Contract — Compact Read-Only Summary
|
|
2
|
+
|
|
3
|
+
Render:
|
|
4
|
+
|
|
5
|
+
```markdown
|
|
6
|
+
# CurDX-Flow Status
|
|
7
|
+
|
|
8
|
+
Project: <cwd>
|
|
9
|
+
Active spec: <name | none>
|
|
10
|
+
|
|
11
|
+
## Specs
|
|
12
|
+
|
|
13
|
+
### <spec-name> [ACTIVE]
|
|
14
|
+
Phase: <phase | unknown>
|
|
15
|
+
Strategy: <strategy | auto>
|
|
16
|
+
Tasks: <done>/<total from tasks.md> checked, state cursor <task_index>/<total_tasks>
|
|
17
|
+
Failures: <failed_attempts>, rounds: <global_iteration>
|
|
18
|
+
Artifacts: [x] research [x] requirements [x] design [x] tasks [ ] verify [ ] review
|
|
19
|
+
Health: OK | NEEDS_ATTENTION
|
|
20
|
+
Recovery: <one concrete next command>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Keep it compact and operational. Show one best recovery command, not a list of
|
|
24
|
+
possible next steps.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Status Preflight — Project Must Exist
|
|
2
|
+
|
|
3
|
+
Before reading any status signals:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
[ ! -d ".flow" ] && { echo "✗ Not a CurdX-Flow project. Run /curdx-flow:init first."; exit 1; }
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
`status` is strictly read-only. If `.flow/` does not exist, stop immediately
|
|
10
|
+
and route to `/curdx-flow:init`.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Status Recovery Hints — Single Best Next Command
|
|
2
|
+
|
|
3
|
+
Choose one concrete recovery command, not a menu.
|
|
4
|
+
|
|
5
|
+
## Priority Rules
|
|
6
|
+
|
|
7
|
+
- No `.flow/` -> `/curdx-flow:init`
|
|
8
|
+
- No active spec -> `/curdx-flow:start <name> "<goal>"`
|
|
9
|
+
- Missing or stale spec artifact before tasks completion -> `/curdx-flow:spec`
|
|
10
|
+
- Tasks complete but execute not done -> `/curdx-flow:implement`
|
|
11
|
+
- Execute complete but verification missing or failed -> `/curdx-flow:verify`
|
|
12
|
+
- Verification complete but review missing or failed -> `/curdx-flow:review`
|
|
13
|
+
- Stop-hook or execution parity drift -> `/curdx-flow:cancel`, then `/curdx-flow:implement --strategy=subagent`
|
|
14
|
+
|
|
15
|
+
## Constraint
|
|
16
|
+
|
|
17
|
+
Do not suggest a later-stage command when an earlier missing artifact or failed
|
|
18
|
+
phase blocks it.
|
|
@@ -15,44 +15,25 @@ paths:
|
|
|
15
15
|
|
|
16
16
|
# UI Sketch
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
This skill is for design exploration, not final implementation. Keep the
|
|
19
|
+
entrypoint focused on design-brief intake, variant output requirements, and the
|
|
20
|
+
iteration handoff. Detailed rules live in:
|
|
19
21
|
|
|
20
|
-
|
|
22
|
+
- `references/brief-intake.md`
|
|
23
|
+
- `references/variant-contract.md`
|
|
24
|
+
- `references/iteration-handoff.md`
|
|
21
25
|
|
|
22
|
-
|
|
23
|
-
2. The user provides a description of the UI goal (component, page, or flow).
|
|
26
|
+
## Design Brief
|
|
24
27
|
|
|
25
|
-
|
|
28
|
+
Use `references/brief-intake.md` to confirm the brief before dispatching
|
|
29
|
+
`flow-ux-designer`.
|
|
26
30
|
|
|
27
|
-
|
|
31
|
+
## Variant Contract
|
|
28
32
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
- **Context** (consumer product / enterprise tool / marketing site / internal dashboard)
|
|
32
|
-
- **Must-haves** (brand colors / existing design system / responsive breakpoints)
|
|
33
|
-
- **Variant count** (default: 3 variants with distinct design directions)
|
|
33
|
+
The required outputs for `flow-ux-designer` and optional `flow-ui-researcher`
|
|
34
|
+
live in `references/variant-contract.md`.
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
## Iteration Handoff
|
|
36
37
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
2. Generate N variant HTML/JSX files under `.flow/specs/<active>/sketches/`
|
|
40
|
-
3. For each variant, produce a rationale: typography, color, layout decisions
|
|
41
|
-
4. Open the variants for user preview if a dev server is running
|
|
42
|
-
|
|
43
|
-
### Step 3: Present variants
|
|
44
|
-
|
|
45
|
-
Show the user:
|
|
46
|
-
- **Variant preview URLs** or file paths
|
|
47
|
-
- **Design rationale** per variant (what's different, why)
|
|
48
|
-
- **Accessibility notes** (contrast ratios, focus states)
|
|
49
|
-
|
|
50
|
-
### Step 4: Iterate or finalize
|
|
51
|
-
|
|
52
|
-
- If user picks a variant: move the chosen file into the spec's `design.md` asset section.
|
|
53
|
-
- If user wants a hybrid: dispatch `flow-ux-designer` again with "merge variant A layout + variant B color scheme".
|
|
54
|
-
|
|
55
|
-
## References
|
|
56
|
-
|
|
57
|
-
- `flow-ux-designer` agent: `@${CLAUDE_PLUGIN_ROOT}/agents/flow-ux-designer.md`
|
|
58
|
-
- `flow-ui-researcher` agent (for competitive reference scraping): `@${CLAUDE_PLUGIN_ROOT}/agents/flow-ui-researcher.md`
|
|
38
|
+
How to pick, merge, or promote a variant lives in
|
|
39
|
+
`references/iteration-handoff.md`.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# UI Sketch Brief Intake — What to Clarify
|
|
2
|
+
|
|
3
|
+
Before sketching, confirm:
|
|
4
|
+
|
|
5
|
+
- what is being designed
|
|
6
|
+
- context (consumer, enterprise, marketing, internal tool)
|
|
7
|
+
- must-haves (brand, system, responsive constraints)
|
|
8
|
+
- variant count
|
|
9
|
+
|
|
10
|
+
If the user already provided all of this, do not over-interview.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# UI Sketch Iteration Handoff — Pick, Merge, or Promote
|
|
2
|
+
|
|
3
|
+
- if the user picks a variant, promote it into the active design discussion
|
|
4
|
+
- if the user wants a hybrid, rerun with an explicit merge instruction
|
|
5
|
+
- treat sketches as exploratory assets, not shipped implementation by default
|