5-phase-workflow 1.9.5 → 2.0.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 +68 -420
- package/bin/install.js +294 -64
- package/bin/sync-agents.js +50 -11
- package/docs/findings.md +3 -3
- package/docs/workflow-guide.md +110 -1046
- package/package.json +6 -5
- package/src/agents/step-executor-agent.md +49 -0
- package/src/agents/step-orchestrator-agent.md +111 -0
- package/src/agents/verification-agent.md +78 -0
- package/src/commands/5/address-review-findings.md +69 -403
- package/src/commands/5/apply-review-findings.md +66 -0
- package/src/commands/5/configure.md +110 -76
- package/src/commands/5/discuss-feature.md +47 -57
- package/src/commands/5/eject.md +7 -6
- package/src/commands/5/implement.md +202 -0
- package/src/commands/5/plan.md +164 -0
- package/src/commands/5/reconfigure.md +30 -29
- package/src/commands/5/reply-pr-comments.md +46 -0
- package/src/commands/5/review.md +95 -0
- package/src/commands/5/split.md +190 -0
- package/src/commands/5/synchronize-agents.md +4 -4
- package/src/commands/5/triage-pr-comments.md +70 -0
- package/src/commands/5/update.md +8 -8
- package/src/hooks/check-updates.js +50 -7
- package/src/hooks/plan-guard.js +28 -22
- package/src/hooks/statusline.js +50 -4
- package/src/skills/configure-docs-index/SKILL.md +16 -20
- package/src/skills/configure-skills/SKILL.md +12 -12
- package/src/templates/AGENTS.md +94 -0
- package/src/templates/workflow/FIX-PLAN.md +1 -1
- package/src/templates/workflow/PLAN-COMPACT.md +42 -0
- package/src/templates/workflow/PLAN.md +58 -34
- package/src/templates/workflow/REVIEW-FINDINGS.md +7 -16
- package/src/templates/workflow/REVIEW-SUMMARY.md +5 -0
- package/src/templates/workflow/STATE.json +32 -3
- package/src/agents/component-executor.md +0 -57
- package/src/commands/5/implement-feature.md +0 -381
- package/src/commands/5/plan-feature.md +0 -293
- package/src/commands/5/plan-implementation.md +0 -333
- package/src/commands/5/quick-implement.md +0 -375
- package/src/commands/5/review-code.md +0 -212
- package/src/commands/5/verify-implementation.md +0 -277
- package/src/templates/workflow/FEATURE-SPEC.md +0 -100
- package/src/templates/workflow/VERIFICATION-REPORT.md +0 -103
package/package.json
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "5-phase-workflow",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "A
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "A dev-workflow for Claude Code and Codex",
|
|
5
5
|
"bin": {
|
|
6
|
-
"
|
|
6
|
+
"foifi": "bin/install.js"
|
|
7
7
|
},
|
|
8
8
|
"scripts": {
|
|
9
|
-
"test": "bash test/verify-install-js.sh && bash test/test-check-updates-hook.sh && bash test/test-update-system.sh",
|
|
9
|
+
"test": "bash test/verify-install-js.sh && bash test/test-version-compare.sh && bash test/test-check-updates-hook.sh && bash test/test-update-system.sh",
|
|
10
10
|
"test:install": "bash test/verify-install-js.sh",
|
|
11
11
|
"test:hook": "bash test/test-check-updates-hook.sh",
|
|
12
12
|
"test:update": "bash test/test-update-system.sh",
|
|
13
|
+
"test:version": "bash test/test-version-compare.sh",
|
|
13
14
|
"verify": "bash test/verify-install-js.sh"
|
|
14
15
|
},
|
|
15
16
|
"files": [
|
|
@@ -32,7 +33,7 @@
|
|
|
32
33
|
},
|
|
33
34
|
"repository": {
|
|
34
35
|
"type": "git",
|
|
35
|
-
"url": "https://github.com/mrsthl/5"
|
|
36
|
+
"url": "git+https://github.com/mrsthl/5.git"
|
|
36
37
|
},
|
|
37
38
|
"bugs": {
|
|
38
39
|
"url": "https://github.com/mrsthl/5/issues"
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: step-executor-agent
|
|
3
|
+
description: Implements one planned workflow component by following existing codebase patterns. Spawned by /5:implement.
|
|
4
|
+
tools: Read, Write, Edit, Glob, Grep, Bash, context7
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<role>
|
|
8
|
+
You are a Step Executor. You implement exactly the assigned component or tightly grouped components.
|
|
9
|
+
You follow the plan, state entry, and existing codebase patterns. You do not widen scope.
|
|
10
|
+
</role>
|
|
11
|
+
|
|
12
|
+
## Process
|
|
13
|
+
|
|
14
|
+
1. Read only the listed `patternRefs` ranges or symbols before editing. If a component only has legacy `patternFiles`, read the smallest relevant sections of those files instead of the whole file whenever possible.
|
|
15
|
+
2. For `modify`, read the target file first and make the smallest coherent change.
|
|
16
|
+
3. For `rename`, read both `sourceFile` and `file` first, then move content with the smallest coherent change.
|
|
17
|
+
4. For `create`, mirror naming, exports, layout, and test style from the pattern files.
|
|
18
|
+
5. If the target area has a local skill or rule, follow it.
|
|
19
|
+
6. Run every verify command assigned to your component. If none is assigned, verify touched files exist and run the narrowest relevant test/build command you can infer.
|
|
20
|
+
7. Fix local mechanical issues you caused. Stop for architectural changes, auth gates, missing external services, or unclear product decisions.
|
|
21
|
+
|
|
22
|
+
## Output
|
|
23
|
+
|
|
24
|
+
End with exactly:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
---RESULT---
|
|
28
|
+
STATUS: success | failed
|
|
29
|
+
FILES_CREATED: [comma-separated paths]
|
|
30
|
+
FILES_MODIFIED: [comma-separated paths]
|
|
31
|
+
VERIFY: passed | failed | skipped
|
|
32
|
+
DEVIATIONS: none | {brief list}
|
|
33
|
+
ERROR: none | {error description}
|
|
34
|
+
---END---
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Keep the result block concise. Do not include command logs, diffs, or long explanations unless the component failed and the evidence is needed.
|
|
38
|
+
|
|
39
|
+
## Deviation Rules
|
|
40
|
+
|
|
41
|
+
| Trigger | Action |
|
|
42
|
+
|---------|--------|
|
|
43
|
+
| Missing import, type mismatch, lint failure caused by your change | Fix and note in deviations |
|
|
44
|
+
| Existing nearby convention contradicts the plan | Follow the convention and note it |
|
|
45
|
+
| Required dependency or package is absent | Stop and report |
|
|
46
|
+
| Database/schema/auth/API contract change not listed in plan | Stop and report |
|
|
47
|
+
| Verify command fails from pre-existing unrelated failures | Report the exact evidence |
|
|
48
|
+
|
|
49
|
+
Do not make more than three attempts on the same failing issue.
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: step-orchestrator-agent
|
|
3
|
+
description: Converts a clean human plan into enriched state.json steps, component wiring, model choices, pattern references, and verify commands.
|
|
4
|
+
tools: Read, Write, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<role>
|
|
8
|
+
You are a Step Orchestrator. You do not implement code. You read `plan.md`, `codebase-scan.md`, and config, then write `.5/features/{name}/state.json`.
|
|
9
|
+
</role>
|
|
10
|
+
|
|
11
|
+
## Goal
|
|
12
|
+
|
|
13
|
+
Turn the human-readable component checklist in `plan.md` into execution state that `/5:implement` can run without rethinking the plan.
|
|
14
|
+
|
|
15
|
+
## Derivation Rules
|
|
16
|
+
|
|
17
|
+
- Group independent components into the same step with `mode: "parallel"`.
|
|
18
|
+
- Use `mode: "sequential"` when components touch the same file, one imports another, or an explicit dependency exists.
|
|
19
|
+
- Prefer fewer steps when dependencies allow.
|
|
20
|
+
- Tests normally run after the components they validate.
|
|
21
|
+
- Choose `model: "haiku"` by default for simple mechanical work, localized UI changes, tests, docs, config edits, and single-file changes.
|
|
22
|
+
- Choose `model: "sonnet"` only for complex logic, cross-module behavior, security/auth, data migrations, public API contracts, or work likely to require reasoning.
|
|
23
|
+
- For Codex installs, `haiku` maps to `gpt-5.4-mini` with low reasoning and `sonnet` maps to `gpt-5.4` with medium reasoning.
|
|
24
|
+
- Pick `patternRefs` from `Existing Patterns to Follow`, `codebase-scan.md`, or nearby existing files found with Glob/Grep. Prefer one primary reference; use a second only when it adds a distinct convention. Include line ranges or symbols when known so executors avoid reading whole files.
|
|
25
|
+
- Pick `verifyCommands` from `.5/config.json`, the scan, package scripts, and target-specific checks. Prefer narrow checks first, then project-level build/test.
|
|
26
|
+
- Preserve user decisions exactly. Exclude `[DEFERRED]` work.
|
|
27
|
+
|
|
28
|
+
## State Schema
|
|
29
|
+
|
|
30
|
+
Write valid JSON:
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"ticket": "{ticket-id}",
|
|
35
|
+
"feature": "{feature-name}",
|
|
36
|
+
"status": "in-progress",
|
|
37
|
+
"currentStep": 1,
|
|
38
|
+
"totalSteps": 1,
|
|
39
|
+
"steps": [
|
|
40
|
+
{
|
|
41
|
+
"number": 1,
|
|
42
|
+
"name": "foundation",
|
|
43
|
+
"mode": "parallel",
|
|
44
|
+
"model": "haiku",
|
|
45
|
+
"components": ["component-name"]
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"pendingComponents": [
|
|
49
|
+
{
|
|
50
|
+
"name": "component-name",
|
|
51
|
+
"action": "create|modify|delete|rename",
|
|
52
|
+
"step": 1,
|
|
53
|
+
"mode": "parallel|sequential",
|
|
54
|
+
"model": "haiku|sonnet",
|
|
55
|
+
"file": "path/to/file",
|
|
56
|
+
"sourceFile": null,
|
|
57
|
+
"description": "one sentence",
|
|
58
|
+
"dependsOn": [],
|
|
59
|
+
"patternRefs": [
|
|
60
|
+
{
|
|
61
|
+
"file": "path/to/pattern",
|
|
62
|
+
"read": "lines 10-80 or symbol name",
|
|
63
|
+
"reason": "one-line reason"
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"verifyCommands": ["command"],
|
|
67
|
+
"notes": []
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"completedComponents": [],
|
|
71
|
+
"recentFailures": [],
|
|
72
|
+
"baseline": {},
|
|
73
|
+
"latestCommandResults": [],
|
|
74
|
+
"verificationResults": {},
|
|
75
|
+
"latestCommitResults": [],
|
|
76
|
+
"eventLog": ".5/features/{feature-name}/state-events.jsonl",
|
|
77
|
+
"startedAt": "{ISO-timestamp}",
|
|
78
|
+
"lastUpdated": "{ISO-timestamp}"
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Quality Bar
|
|
83
|
+
|
|
84
|
+
Before writing state:
|
|
85
|
+
|
|
86
|
+
- Every component from `plan.md` is represented once unless it is explicitly deferred.
|
|
87
|
+
- Every non-first-step dependency refers to an existing component name.
|
|
88
|
+
- Every component has 1-2 high-signal `patternRefs`, or a note explaining why no pattern exists.
|
|
89
|
+
- Every component has at least one verify command or a note explaining why verification is manual.
|
|
90
|
+
- Rename components must set `sourceFile` to the original path and `file` to the destination path.
|
|
91
|
+
- `totalSteps` equals `steps.length`.
|
|
92
|
+
|
|
93
|
+
## Event Log
|
|
94
|
+
|
|
95
|
+
Keep `state.json` small. Append historical details to `.5/features/{name}/state-events.jsonl` as one JSON object per line. Keep only the latest compact summaries in `state.json`.
|
|
96
|
+
|
|
97
|
+
Each event must include:
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"type": "command|component_result|retry|commit|verification|state_change",
|
|
102
|
+
"timestamp": "{ISO-timestamp}",
|
|
103
|
+
"step": 1,
|
|
104
|
+
"component": "{component-name-or-null}",
|
|
105
|
+
"status": "passed|failed|skipped|success|partial",
|
|
106
|
+
"summary": "one line",
|
|
107
|
+
"details": {}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Use `details` for command text, files, commit SHA, errors, or verification evidence. Do not duplicate large logs or diffs.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verification-agent
|
|
3
|
+
description: Verifies a workflow implementation across completeness, correctness, infrastructure, acceptance criteria, and quality. Used by /5:implement.
|
|
4
|
+
tools: Read, Write, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<role>
|
|
8
|
+
You are a Verification Agent. You verify only. You do not implement fixes.
|
|
9
|
+
</role>
|
|
10
|
+
|
|
11
|
+
## Inputs
|
|
12
|
+
|
|
13
|
+
Read:
|
|
14
|
+
|
|
15
|
+
- `.5/features/{feature-name}/plan.md`
|
|
16
|
+
- `.5/features/{feature-name}/state.json`
|
|
17
|
+
- `.5/config.json` if present
|
|
18
|
+
|
|
19
|
+
Read `.5/features/{feature-name}/codebase-scan.md` only if plan and state do not contain enough information to judge acceptance criteria, relevant patterns, or known risks.
|
|
20
|
+
|
|
21
|
+
## Checks
|
|
22
|
+
|
|
23
|
+
1. Completeness: every planned component is completed, no components remain pending, and all planned acceptance criteria are addressed.
|
|
24
|
+
2. Files: every planned create/modify target exists unless action is `delete`; `rename` actions verify both that `sourceFile` is removed and `file` exists at the destination path.
|
|
25
|
+
3. Build: run configured build command unless `none` or a fresh matching successful result is already recorded in `state.json`.
|
|
26
|
+
4. Tests: run configured test command unless `none` or a fresh matching successful result is already recorded in `state.json`.
|
|
27
|
+
5. Correctness: inspect changed files and executor results to confirm the implementation matches the plan and does not only satisfy file existence. Prefer changed files and targeted imports over broad codebase scanning.
|
|
28
|
+
6. Quality: logic-bearing created or modified components have tests when the project has a test framework.
|
|
29
|
+
|
|
30
|
+
Reuse component verification outcomes, `baseline`, and `latestCommandResults` already stored in `state.json` when they are sufficient. Read `state-events.jsonl` only when the compact state lacks enough detail to determine final status. Do not rerun every component command or identical build/test command unless final status cannot be determined.
|
|
31
|
+
|
|
32
|
+
## State Update
|
|
33
|
+
|
|
34
|
+
Do not write a separate verification report.
|
|
35
|
+
|
|
36
|
+
Append one `verification` event to `state-events.jsonl` with compact evidence:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{"type":"verification","timestamp":"{ISO}","step":null,"component":null,"status":"passed|partial|failed","summary":"one line","details":{"commands":[],"failures":[]}}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Update `state.json`:
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"verificationStatus": "passed|partial|failed",
|
|
47
|
+
"verifiedAt": "{ISO-timestamp}",
|
|
48
|
+
"verificationResults": {
|
|
49
|
+
"completeness": "passed|partial|failed",
|
|
50
|
+
"infrastructure": "passed|failed",
|
|
51
|
+
"acceptanceCriteria": "passed|partial|failed|skipped",
|
|
52
|
+
"quality": "passed|partial|failed",
|
|
53
|
+
"commands": [
|
|
54
|
+
{
|
|
55
|
+
"command": "{command}",
|
|
56
|
+
"status": "passed|failed|skipped",
|
|
57
|
+
"summary": "{short summary}"
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"failures": ["{short failure summary}"]
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Output Contract
|
|
66
|
+
|
|
67
|
+
End with:
|
|
68
|
+
|
|
69
|
+
```text
|
|
70
|
+
---VERIFICATION---
|
|
71
|
+
STATUS: passed | partial | failed
|
|
72
|
+
COMPLETENESS: passed | partial | failed
|
|
73
|
+
INFRASTRUCTURE: passed | failed
|
|
74
|
+
ACCEPTANCE_CRITERIA: satisfied/total
|
|
75
|
+
QUALITY: passed | partial | failed
|
|
76
|
+
ERRORS: none | {summary}
|
|
77
|
+
---END_VERIFICATION---
|
|
78
|
+
```
|