@jakkrichm/create-nexus-devflow 2.9.5 → 2.10.1
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 +3 -3
- package/dist/lib/dashboard-page.d.ts +1 -1
- package/dist/lib/dashboard-page.js +5 -1
- package/dist/lib/dashboard-page.js.map +1 -1
- package/dist/lib/project-config.d.ts +2 -0
- package/dist/lib/project-config.js +5 -2
- package/dist/lib/project-config.js.map +1 -1
- package/dist/lib/review.d.ts +38 -0
- package/dist/lib/review.js +429 -0
- package/dist/lib/review.js.map +1 -0
- package/dist/lib/skill-manager.d.ts +10 -1
- package/dist/lib/skill-manager.js +241 -19
- package/dist/lib/skill-manager.js.map +1 -1
- package/dist/lib/status.d.ts +19 -2
- package/dist/lib/status.js +83 -15
- package/dist/lib/status.js.map +1 -1
- package/dist/scripts/prepare-template.js +7 -0
- package/dist/scripts/prepare-template.js.map +1 -1
- package/package.json +1 -1
- package/template/.agents/skills/audit/SKILL.md +119 -144
- package/template/.agents/skills/audit/reference/independent-review.md +128 -0
- package/template/.agents/skills/autopilot/SKILL.md +22 -1
- package/template/.agents/skills/browser-tests/SKILL.md +163 -0
- package/template/.agents/skills/check/SKILL.md +32 -23
- package/template/.agents/skills/complete/SKILL.md +28 -39
- package/template/.agents/skills/continuous/SKILL.md +12 -0
- package/template/.agents/skills/doctor/SKILL.md +8 -4
- package/template/.agents/skills/feature/SKILL.md +22 -1
- package/template/.agents/skills/implement/SKILL.md +21 -1
- package/template/.agents/skills/onboard/SKILL.md +17 -1
- package/template/.agents/skills/{tests → setup-tests}/SKILL.md +8 -8
- package/template/.agents/skills/status/SKILL.md +12 -1
- package/template/.agents/skills/try/SKILL.md +9 -24
- package/template/.claude/skills/audit/SKILL.md +119 -144
- package/template/.claude/skills/audit/reference/independent-review.md +128 -0
- package/template/.claude/skills/autopilot/SKILL.md +22 -1
- package/template/.claude/skills/browser-tests/SKILL.md +163 -0
- package/template/.claude/skills/check/SKILL.md +32 -23
- package/template/.claude/skills/complete/SKILL.md +28 -39
- package/template/.claude/skills/continuous/SKILL.md +12 -0
- package/template/.claude/skills/doctor/SKILL.md +9 -4
- package/template/.claude/skills/feature/SKILL.md +22 -1
- package/template/.claude/skills/implement/SKILL.md +21 -1
- package/template/.claude/skills/onboard/SKILL.md +17 -1
- package/template/.claude/skills/{tests → setup-tests}/SKILL.md +8 -8
- package/template/.claude/skills/status/SKILL.md +12 -1
- package/template/.claude/skills/try/SKILL.md +9 -24
- package/template/AGENTS.md +8 -4
- package/template/devflow/build-plan.md +14 -0
- package/template/devflow/config.json +2 -0
- package/template/devflow/context/coding-standards.md +8 -1
|
@@ -44,6 +44,26 @@ the visual target - build components to match them, and treat `prototypes/theme.
|
|
|
44
44
|
as the token source (the spec's first step ports it into the app's global
|
|
45
45
|
stylesheet before the components are built).
|
|
46
46
|
|
|
47
|
+
### Quality-gate and browser preflight
|
|
48
|
+
|
|
49
|
+
Read `devflow/config.json` and the target spec's recorded decision for
|
|
50
|
+
`qualityGates.regular.independentReview`. `manual` does not activate an
|
|
51
|
+
automatic gate, `always` does, and `when-sensitive` follows the sensitivity
|
|
52
|
+
decision and evidence captured by `/feature` or `/fix`. Stop for a spec repair
|
|
53
|
+
instead of guessing when a conditional decision is missing.
|
|
54
|
+
|
|
55
|
+
Treat any product or living-spec edit in this build as invalidating an earlier
|
|
56
|
+
receipt. After the final Verify pass, an active gate routes to
|
|
57
|
+
`audit independent current`; only a fresh receipt with `passed` verdict and
|
|
58
|
+
`current` freshness may proceed toward `/complete`. This skill never approves
|
|
59
|
+
its own work or rewrites receipt evidence.
|
|
60
|
+
|
|
61
|
+
For a browser-facing step, run `npm run test:browser` when the script exists and
|
|
62
|
+
record the result in the step evidence. Use `browseros-neo` for the interactive
|
|
63
|
+
handoff when it is available and the done-when is visual or behavioral. When the
|
|
64
|
+
script or MCP is absent, report that exact limitation; do not silently install a
|
|
65
|
+
runner or claim browser evidence.
|
|
66
|
+
|
|
47
67
|
**Resuming?** If the spec already has some build steps checked off (`- [x]`), this
|
|
48
68
|
feature was started earlier and interrupted (often a cleared context). The spec and
|
|
49
69
|
its ticked steps are files, so pick up where it left off: read which steps are done,
|
|
@@ -217,4 +237,4 @@ approval. This skill does not touch main.
|
|
|
217
237
|
|
|
218
238
|
Format the output to match the project's conventions in
|
|
219
239
|
`devflow/context/ai-interaction.md`: concise, scannable markdown, with lists for
|
|
220
|
-
enumerations and tables for matrices rather than dense paragraphs.
|
|
240
|
+
enumerations and tables for matrices rather than dense paragraphs.
|
|
@@ -133,6 +133,22 @@ If no changes are needed, say so.
|
|
|
133
133
|
|
|
134
134
|
## Step 5 - point to optional CI setup
|
|
135
135
|
|
|
136
|
+
Before the CI handoff, read `devflow/config.json` and report the effective
|
|
137
|
+
`qualityGates.regular.independentReview` onboarding default. Preserve an
|
|
138
|
+
existing valid user choice. Explain that `manual` is opt-in, `always` requires a
|
|
139
|
+
fresh receipt for every regular run, and `when-sensitive` activates for work
|
|
140
|
+
touching authentication, authorization, secrets, payments, personal data,
|
|
141
|
+
destructive operations, dependencies, deployment, or another security boundary.
|
|
142
|
+
Onboarding has no active task to review, so it must not create `review.md` or
|
|
143
|
+
claim a verdict; when the future gate activates, the handoff is
|
|
144
|
+
`audit independent current` after final implementation and verification.
|
|
145
|
+
|
|
146
|
+
Detect browser capability without installing anything. If the project already
|
|
147
|
+
declares `test:browser`, record `npm run test:browser` in the onboarding report.
|
|
148
|
+
Also report whether `browseros-neo` is available for interactive UI evidence.
|
|
149
|
+
When a browser-facing project lacks either capability, point to `/browser-tests`
|
|
150
|
+
as an optional setup route and describe the gap honestly.
|
|
151
|
+
|
|
136
152
|
Do not create or change Verify commands or GitHub workflows during onboarding.
|
|
137
153
|
Report any verification command or CI already present. When equivalent automatic
|
|
138
154
|
pull-request checks are absent, mention the optional standalone setup:
|
|
@@ -261,4 +277,4 @@ $overview
|
|
|
261
277
|
|
|
262
278
|
Format the output to match the project's conventions in
|
|
263
279
|
`devflow/context/ai-interaction.md`: concise, scannable markdown, with lists for
|
|
264
|
-
enumerations and tables for matrices rather than dense paragraphs.
|
|
280
|
+
enumerations and tables for matrices rather than dense paragraphs.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: tests
|
|
3
|
-
description: "[devflow] Add or normalize unit testing for a Blueprint project. Detects the stack, reuses an existing test runner when present, or installs the stack-native unit test runner when missing, then adds one small example test, updates AGENTS.md commands, runs build and tests, and reports the diff. Use when the user runs /tests, invokes $tests, asks to add unit tests, set up unit testing, configure tests, or make tests part of the Blueprint workflow."
|
|
2
|
+
name: setup-tests
|
|
3
|
+
description: "[devflow] Add or normalize unit testing for a Blueprint project. Detects the stack, reuses an existing test runner when present, or installs the stack-native unit test runner when missing, then adds one small example test, updates AGENTS.md commands, runs build and tests, and reports the diff. Use when the user runs /setup-tests, invokes $setup-tests, asks to add unit tests, set up unit testing, configure tests, or make tests part of the Blueprint workflow."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# tests - add unit testing to the project
|
|
6
|
+
# setup-tests - add unit testing to the project
|
|
7
7
|
|
|
8
8
|
**First action:** Before project inspection, preflight, or any other tool call,
|
|
9
9
|
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
@@ -11,13 +11,13 @@ contract in `AGENTS.md`.
|
|
|
11
11
|
|
|
12
12
|
Where this sits in the workflow:
|
|
13
13
|
|
|
14
|
-
any time -> [tests] -> test command in AGENTS.md -> /feature + /implement use it
|
|
15
|
-
(setup)
|
|
14
|
+
any time -> [setup-tests] -> test command in AGENTS.md -> /feature + /implement use it
|
|
15
|
+
(setup) (the opt-in testing gate) (logic steps get tests)
|
|
16
16
|
|
|
17
17
|
Testing is optional in the Blueprint until the project declares a real test
|
|
18
18
|
command in `AGENTS.md`. This skill is the explicit setup path. It adds or
|
|
19
19
|
normalizes **unit testing** only; browser automation and end-to-end testing are
|
|
20
|
-
separate setup
|
|
20
|
+
separate optional setup through `/browser-tests`.
|
|
21
21
|
|
|
22
22
|
## Input
|
|
23
23
|
|
|
@@ -71,7 +71,7 @@ Apply the smallest practical diff:
|
|
|
71
71
|
when available, the test watch command.
|
|
72
72
|
5. If a `Verify` command already exists, add the real test command to it between
|
|
73
73
|
typecheck and build while preserving any established project checks. Do not
|
|
74
|
-
create verification or CI only because `/tests` was invoked.
|
|
74
|
+
create verification or CI only because `/setup-tests` was invoked.
|
|
75
75
|
6. Update `devflow/context/coding-standards.md` only if the project needs a
|
|
76
76
|
stack-specific testing note different from the default.
|
|
77
77
|
|
|
@@ -127,4 +127,4 @@ Show the diff summary. Do not commit, merge, push, or start product feature work
|
|
|
127
127
|
|
|
128
128
|
Format the output to match the project's conventions in
|
|
129
129
|
`devflow/context/ai-interaction.md`: concise, scannable markdown, with lists for
|
|
130
|
-
enumerations and tables for matrices rather than dense paragraphs.
|
|
130
|
+
enumerations and tables for matrices rather than dense paragraphs.
|
|
@@ -58,6 +58,17 @@ state.
|
|
|
58
58
|
8. **Onboarding check** - Before recommending `/overview`, check whether `AGENTS.md`
|
|
59
59
|
still contains the `<!-- devflow:onboarding-required -->` marker or standard template commands.
|
|
60
60
|
When it does, onboarding is incomplete and `/onboard` is the next action.
|
|
61
|
+
9. **Independent review and browser evidence** - read
|
|
62
|
+
`qualityGates.regular.independentReview` from `devflow/config.json` and the
|
|
63
|
+
recorded sensitivity decision for `when-sensitive`. For every active run,
|
|
64
|
+
report the `review.md` state, verdict, freshness, check result, warnings, and
|
|
65
|
+
whether the effective gate is satisfied. An active gate with a missing,
|
|
66
|
+
pending, malformed, changes-requested, or stale receipt routes to
|
|
67
|
+
`audit independent current`, never `/complete`. Also report whether the spec
|
|
68
|
+
requires browser proof, whether `npm run test:browser` is declared and has
|
|
69
|
+
recorded evidence, and whether an interactive `browseros-neo` handoff is
|
|
70
|
+
available or explicitly unavailable. This remains read-only: do not execute
|
|
71
|
+
either browser path from `/status`.
|
|
61
72
|
|
|
62
73
|
## Output
|
|
63
74
|
|
|
@@ -106,4 +117,4 @@ drift is half the value of the command.
|
|
|
106
117
|
|
|
107
118
|
Format the output to match the project's conventions in
|
|
108
119
|
`devflow/context/ai-interaction.md`: concise, scannable markdown, with lists for
|
|
109
|
-
enumerations and tables for matrices rather than dense paragraphs.
|
|
120
|
+
enumerations and tables for matrices rather than dense paragraphs.
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: try
|
|
3
|
-
description: "[devflow] Generate a human manual try guide for the current or most recently completed Blueprint feature, fix, or rollback. Reads the spec, project commands, and available app context, then tells the user exactly what to start, where to go, what to click or run, what to expect, and what would count as wrong. Read-only. Use when the user runs /try, invokes $try, asks how to test manually, asks where to click, asks how to see the change, or wants a manual review path after /implement, /autopilot, /check, or /complete."
|
|
3
|
+
description: "[devflow] Generate a human manual try guide for the current or most recently completed Blueprint feature, fix, or rollback. Reads the spec, project commands, and available app context, connects with MCP browseros-neo when available for interactive previews, then tells the user exactly what to start, where to go, what to click or run, what to expect, and what would count as wrong. Read-only. Use when the user runs /try, invokes $try, asks how to test manually, asks where to click, asks how to see the change, or wants a manual review path after /implement, /autopilot, /check, or /complete."
|
|
4
|
+
argument-hint: "[{latest|step-id|path}]"
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# try - manual review guide
|
|
7
8
|
|
|
9
|
+
$ARGUMENTS
|
|
10
|
+
|
|
8
11
|
Where this sits in the workflow:
|
|
9
12
|
|
|
10
13
|
/implement or /complete -> [try] -> human review
|
|
@@ -58,7 +61,7 @@ include one unaffected regression path from the rollback spec.
|
|
|
58
61
|
|
|
59
62
|
Use the Commands section in `AGENTS.md`. Match the project type:
|
|
60
63
|
|
|
61
|
-
- **Web app** - dev server command, URL, and the route or screen to open.
|
|
64
|
+
- **Web app** - dev server command, URL, and the route or screen to open. If `browseros-neo` MCP server is active (`http://127.0.0.1:9010/mcp`), you can also offer to inspect or navigate in the live browser.
|
|
62
65
|
- **Server/API** - server command, base URL, endpoint, method, and expected
|
|
63
66
|
response shape.
|
|
64
67
|
- **CLI** - exact command(s), arguments, and expected output.
|
|
@@ -77,9 +80,9 @@ Produce a short guide with these sections:
|
|
|
77
80
|
2. **Open** - URLs, screens, tabs, API endpoints, or CLI commands.
|
|
78
81
|
3. **Do** - clicks, inputs, selections, or command arguments.
|
|
79
82
|
4. **Expect** - visible result, output, response, state change, file, or lack of
|
|
80
|
-
|
|
83
|
+
error.
|
|
81
84
|
5. **Watch For** - common wrong outcomes, console or network errors, stale data,
|
|
82
|
-
|
|
85
|
+
missing fields, bad empty states, layout issues, or safety warnings.
|
|
83
86
|
|
|
84
87
|
Keep it concrete. Prefer:
|
|
85
88
|
|
|
@@ -97,23 +100,5 @@ End with:
|
|
|
97
100
|
|
|
98
101
|
- **Best signal** - the one thing the user should try first.
|
|
99
102
|
- **Optional deeper checks** - only if useful.
|
|
100
|
-
- **
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
If the feature is not user-visible, say so and provide the closest manual signal,
|
|
104
|
-
such as an API response, CLI output, log line, or unit test command.
|
|
105
|
-
|
|
106
|
-
## Rules
|
|
107
|
-
|
|
108
|
-
- Read-only only. Do not edit, commit, merge, push, install, or delete.
|
|
109
|
-
- Do not run the app unless the user explicitly asks you to try it for them.
|
|
110
|
-
- Do not pretend a path is known when the spec does not say it. Give the best
|
|
111
|
-
likely path and label uncertainty.
|
|
112
|
-
- Keep the guide short enough to follow while the app is open.
|
|
113
|
-
- Match the project's commands from `AGENTS.md`.
|
|
114
|
-
|
|
115
|
-
## Formatting
|
|
116
|
-
|
|
117
|
-
Format the output to match the project's conventions in
|
|
118
|
-
`devflow/context/ai-interaction.md`: concise, scannable markdown, with numbered
|
|
119
|
-
steps for the manual path and short bullets for warnings.
|
|
103
|
+
- **MCP Visual Preview** - mention live browser inspection via MCP `browseros-neo` if active.
|
|
104
|
+
- **Gaps** - anything the guide cannot know from the docs, such as missing route or seed data.
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: audit
|
|
3
|
-
description: "[devflow] Read-only code audit for a Blueprint project, except for the findings ledger it maintains at devflow/context/{xxx-slug}/findings.md. Reviews the active feature, changed files, a selected path, or the full project through all concerns or a focused quality, security, performance, or tests lens. Use when the user runs /audit, invokes $audit, asks for
|
|
3
|
+
description: "[devflow] Read-only code audit for a Blueprint project, except for the findings ledger it maintains at devflow/context/{xxx-slug}/findings.md and the optional independent-review request or receipt at devflow/context/{xxx-slug}/review.md. Reviews the active feature, changed files, a selected path, or the full project through all concerns or a focused quality, security, performance, or tests lens. Independent mode hands an immutable checkpoint to a selected fresh reviewer session and records a freshness-bound receipt. Use when the user runs /audit, invokes $audit, asks for an independent review, code or quality audit, security review, performance review, test quality review, dead-code or duplication check, vibe-coded project cleanup, or standards review."
|
|
4
|
+
argument-hint: "[{current|changed|full|path}] [{quality|security|performance|tests}] [independent]"
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# audit - review code quality against the project standards
|
|
7
8
|
|
|
9
|
+
$ARGUMENTS
|
|
10
|
+
|
|
8
11
|
**First action:** Before project inspection, preflight, or any other tool call,
|
|
9
12
|
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
10
13
|
contract in `AGENTS.md`.
|
|
@@ -20,9 +23,20 @@ workflow health. This skill checks the code itself through either a broad review
|
|
|
20
23
|
or one focused lens: quality, security, performance, or tests.
|
|
21
24
|
|
|
22
25
|
It reviews code without changing it: it never edits source files, installs
|
|
23
|
-
dependencies, commits, merges, pushes, or starts product work.
|
|
24
|
-
the findings ledger at `devflow/context/{xxx-slug}/findings.md` (Step 4),
|
|
25
|
-
record of findings and their status.
|
|
26
|
+
dependencies, commits, merges, pushes, or starts product work. A normal audit's
|
|
27
|
+
one write is the findings ledger at `devflow/context/{xxx-slug}/findings.md` (Step 4),
|
|
28
|
+
the durable record of findings and their status. Independent mode may also
|
|
29
|
+
write `devflow/context/{xxx-slug}/review.md` using the exact record contract in
|
|
30
|
+
`reference/independent-review.md`.
|
|
31
|
+
|
|
32
|
+
The quality-gate config controls when another workflow invokes this skill
|
|
33
|
+
automatically. An explicit `/audit` or `$audit` request always selects the audit
|
|
34
|
+
regardless of whether the applicable gate is `manual`, conditional, or `always`.
|
|
35
|
+
A selected `independentReview` gate invokes independent mode instead of letting
|
|
36
|
+
the builder satisfy its own review. When both audit and independent review are
|
|
37
|
+
selected, one passing independent review satisfies the audit gate.
|
|
38
|
+
A missing config means built-in defaults. If it exists but is invalid, stop and
|
|
39
|
+
point to `/doctor` before writing the findings ledger.
|
|
26
40
|
|
|
27
41
|
## Input
|
|
28
42
|
|
|
@@ -62,15 +76,99 @@ the request names multiple lenses, review their union and report them separately
|
|
|
62
76
|
If the requested scope is unclear, pick the smallest useful scope and state it.
|
|
63
77
|
If the lens is unclear, use all lenses and state that choice.
|
|
64
78
|
|
|
79
|
+
Optional review mode:
|
|
80
|
+
|
|
81
|
+
- `independent`: prepare or complete an independent review of `current` across
|
|
82
|
+
all four lenses. It cannot be combined with `changed`, `full`, a path scope,
|
|
83
|
+
or a focused lens because a completion receipt must cover the whole active
|
|
84
|
+
work item.
|
|
85
|
+
|
|
86
|
+
## Independent mode
|
|
87
|
+
|
|
88
|
+
`/audit independent current` is a two-session workflow. The builder session
|
|
89
|
+
prepares a request. The selected fresh reviewer session runs the same command
|
|
90
|
+
to complete it. DevFlow verifies the exact target and later staleness. The
|
|
91
|
+
adapter, model, and fresh-session identity remain declared metadata.
|
|
92
|
+
|
|
93
|
+
Read `reference/independent-review.md` before either phase.
|
|
94
|
+
|
|
95
|
+
### Phase A - prepare the handoff
|
|
96
|
+
|
|
97
|
+
Use this phase when `devflow/context/{xxx-slug}/review.md` has no current `pending`
|
|
98
|
+
request for `HEAD` and the current spec hash.
|
|
99
|
+
|
|
100
|
+
1. Require an active spec with every build step checked and status `verified`, a
|
|
101
|
+
non-default work branch, a reliable merge base, and a clean working tree.
|
|
102
|
+
Independent mode accepts only a locally recorded remote default branch,
|
|
103
|
+
local `main`, or local `master` as its enforceable base ref. Stop when none
|
|
104
|
+
reliably covers the active work.
|
|
105
|
+
The current full `HEAD` must be the approved review checkpoint, including the
|
|
106
|
+
verified spec. Never create that commit inside Audit. If work is dirty, stop
|
|
107
|
+
and ask the user to approve a review checkpoint through `/implement`, even
|
|
108
|
+
when normal checkpoint commits are disabled.
|
|
109
|
+
2. Read installed adapters from `.nexus/nexus-devflow.json` or manifest when valid.
|
|
110
|
+
Detect `.agents/skills` as `antigravity`/`codex`/`copilot` and `.claude/skills`
|
|
111
|
+
as `claude`.
|
|
112
|
+
3. Ask which detected adapter and available model should review. Recommend an
|
|
113
|
+
equal-or-stronger coding model, a different model family when practical, and
|
|
114
|
+
high reasoning for sensitive work. Offer a fresh session in the current
|
|
115
|
+
adapter as the fallback.
|
|
116
|
+
4. Record the full target SHA, full merge-base SHA, the exact local base ref
|
|
117
|
+
used to calculate it, exact spec SHA-256, current adapter and model,
|
|
118
|
+
requested reviewer adapter and model, workflow, and
|
|
119
|
+
whether the configured Check gate is required. Write the pending template
|
|
120
|
+
into `devflow/context/{xxx-slug}/review.md`.
|
|
121
|
+
5. Set dashboard activity to `ready` and give the exact handoff command for the
|
|
122
|
+
selected adapter. Claude Code uses `/audit independent current`; Google Antigravity uses
|
|
123
|
+
`/audit independent current`; Codex uses `$audit independent current`. Tell
|
|
124
|
+
the user to open a fresh session with only the handoff, not the builder chat.
|
|
125
|
+
|
|
126
|
+
Stop after the handoff. The builder never continues into Phase B in the same
|
|
127
|
+
session.
|
|
128
|
+
|
|
129
|
+
### Phase B - perform the review
|
|
130
|
+
|
|
131
|
+
Use this phase when a current pending request exists in `devflow/context/{xxx-slug}/review.md`.
|
|
132
|
+
|
|
133
|
+
1. Confirm the current adapter matches `Requested reviewer`, the current model
|
|
134
|
+
matches `Requested model` unless the runtime-default sentinel was selected,
|
|
135
|
+
`HEAD` matches `Target commit`, the recorded base ref still produces the
|
|
136
|
+
recorded merge base, the exact spec hash matches, and no path differs from
|
|
137
|
+
the target except `devflow/context/{xxx-slug}/review.md` and
|
|
138
|
+
`devflow/context/{xxx-slug}/findings.md`. Stop on any mismatch or stale state.
|
|
139
|
+
2. Proceed only from the fresh reviewer handoff. Record `fresh session` as a
|
|
140
|
+
declaration. If the reviewer has the builder conversation, stop and request a fresh session.
|
|
141
|
+
3. Run Steps 1 through 3 across `current` with quality, security, performance,
|
|
142
|
+
and tests together. Review the code fresh against the recorded
|
|
143
|
+
`Base commit` and `Target commit`; exclude the request and findings files
|
|
144
|
+
from the code scope. Existing findings are context, never the review
|
|
145
|
+
checklist.
|
|
146
|
+
4. Run `/check` from the reviewer session when the request says Check is
|
|
147
|
+
required. Follow Check's server and evidence boundaries. A required check
|
|
148
|
+
that cannot run prevents a passing receipt.
|
|
149
|
+
5. Update the findings ledger through Step 4, then replace the pending request
|
|
150
|
+
with a completed receipt in `devflow/context/{xxx-slug}/review.md`. Use `passed` only when the whole target was
|
|
151
|
+
reviewed, required checks passed, and no P0 or P1 finding is `open` or
|
|
152
|
+
`fixed`.
|
|
153
|
+
6. Report the receipt target, reviewer adapter and model, commands, evidence,
|
|
154
|
+
findings, remaining risk, and whether the receipt passed. Never repair code
|
|
155
|
+
from the reviewer session.
|
|
156
|
+
|
|
157
|
+
After changes are requested, the builder repairs through `/implement`, obtains
|
|
158
|
+
approval for a new checkpoint, and prepares a new request. The next reviewer
|
|
159
|
+
pass reviews the complete new delta, not only the old findings.
|
|
160
|
+
|
|
65
161
|
## Step 1 - gather context
|
|
66
162
|
|
|
67
163
|
Read:
|
|
68
164
|
|
|
69
165
|
- `AGENTS.md`
|
|
166
|
+
- `devflow/config.json`
|
|
70
167
|
- `devflow/context/project-overview.md`
|
|
71
168
|
- `devflow/context/coding-standards.md`
|
|
72
169
|
- `devflow/context/{xxx-slug}/spec.md` (when a task is active)
|
|
73
170
|
- `devflow/context/{xxx-slug}/findings.md` (or existing ledger), for existing IDs and statuses
|
|
171
|
+
- `devflow/context/{xxx-slug}/review.md`, for independent request and receipt state
|
|
74
172
|
- `devflow/context/ai-interaction.md`
|
|
75
173
|
- `devflow/build-plan.md`, when feature order matters
|
|
76
174
|
- git branch and working tree status
|
|
@@ -137,143 +235,20 @@ Do not nitpick harmless style differences unless they signal drift from the loca
|
|
|
137
235
|
patterns. Prefer a short list of real findings over a broad list of guesses.
|
|
138
236
|
|
|
139
237
|
Do not broaden a focused pass because another category might be interesting.
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
the
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
**The ledger never scopes the review.** Review the code fresh in Step 3, then
|
|
158
|
-
record what the review found. Working from the open findings as a checklist and
|
|
159
|
-
verifying only those is the exact failure this file exists to prevent: a repair
|
|
160
|
-
can introduce a new defect that no existing entry points at.
|
|
161
|
-
|
|
162
|
-
One block per finding. The header line is the machine-readable contract and must
|
|
163
|
-
keep this exact shape; the prose below it is for humans and may vary:
|
|
164
|
-
|
|
165
|
-
### F-03 [P0] open - Retained auth volumes carry the run label
|
|
166
|
-
|
|
167
|
-
**File:** ops/agent-proof/compose.yaml:86
|
|
168
|
-
**Found:** 2026-07-21 by /audit (scope: current; lens: security)
|
|
169
|
-
**Why it matters:** ...
|
|
170
|
-
**Suggested fix:** ...
|
|
171
|
-
**Resolution:**
|
|
172
|
-
|
|
173
|
-
IDs are sequential within the ledger (`F-01`, `F-02`, ...), never reused and
|
|
174
|
-
never renumbered while their entries live here, even after a finding closes.
|
|
175
|
-
Bare IDs are scoped to the live ledger: `/complete` archives resolved entries
|
|
176
|
-
under a work-item prefix (feature 12's `F-03` becomes `12/F-03`), and that
|
|
177
|
-
prefixed form is the permanent reference. A later ledger that has emptied and
|
|
178
|
-
reset starts at `F-01` again without colliding. Severity reuses the P0-P3
|
|
179
|
-
scheme from Step 5; only P0 and P1 block `/complete`. Status is one of:
|
|
180
|
-
|
|
181
|
-
| Status | Meaning | Blocks P0/P1 at /complete |
|
|
182
|
-
|---|---|---|
|
|
183
|
-
| `unverified` | Suspected, no confirming evidence yet | No |
|
|
184
|
-
| `open` | Confirmed, not yet repaired | Yes |
|
|
185
|
-
| `fixed` | Repaired, not yet re-reviewed | Yes |
|
|
186
|
-
| `closed` | Repaired and re-reviewed against the new code | No |
|
|
187
|
-
| `accepted` | Not fixing, by the user's explicit decision; reason recorded in Resolution | No |
|
|
188
|
-
| `invalid` | Re-examination proved the finding wrong; evidence recorded in Resolution | No |
|
|
189
|
-
|
|
190
|
-
After the review:
|
|
191
|
-
|
|
192
|
-
- Append each new confirmed finding as `open` with the next sequential ID, one
|
|
193
|
-
past the highest ID present in the ledger (entries carried forward from
|
|
194
|
-
earlier work count; a fresh ledger starts at `F-01`).
|
|
195
|
-
- Record an unverified risk worth tracking as `unverified`. It is a lead, not a
|
|
196
|
-
defect, and never gates a merge.
|
|
197
|
-
- Update the entries this pass re-examined: correct the status or severity and
|
|
198
|
-
note the evidence in **Resolution**.
|
|
199
|
-
- Move a `fixed` finding to `closed` only when all three hold: this pass's
|
|
200
|
-
reviewed set included the finding's file, re-examining the repaired code
|
|
201
|
-
confirmed the original defect is gone and the repair introduced no new one,
|
|
202
|
-
and the report names the finding as closed. An unrelated new finding in the
|
|
203
|
-
same file gets its own entry and does not keep the repaired one open. Never
|
|
204
|
-
close a finding implicitly.
|
|
205
|
-
- Set `accepted` only on the user's explicit decision in the current session,
|
|
206
|
-
and record their reason. Never accept a finding on their behalf.
|
|
207
|
-
- Set `invalid` only when re-examination shows the finding was wrong, and
|
|
208
|
-
record that evidence in **Resolution**. It is a review verdict (or the
|
|
209
|
-
user's explicit call), never a shortcut past the gate for blocked work.
|
|
210
|
-
|
|
211
|
-
`fixed` blocking `/complete` is deliberate: a repair is not done when the code
|
|
212
|
-
changes, it is done when a review has looked at the result. `/implement` marks
|
|
213
|
-
repairs `fixed`; only a review pass moves them to `closed`.
|
|
214
|
-
|
|
215
|
-
## Step 5 - report findings
|
|
216
|
-
|
|
217
|
-
Lead with findings, ordered by severity, using the IDs the ledger assigned:
|
|
218
|
-
|
|
219
|
-
F-04 [P1] Title
|
|
220
|
-
File: path:line
|
|
221
|
-
Why it matters: ...
|
|
222
|
-
Suggested fix: ...
|
|
223
|
-
|
|
224
|
-
Severity:
|
|
225
|
-
|
|
226
|
-
- `P0` - data loss, security break, or code that cannot ship
|
|
227
|
-
- `P1` - likely bug, broken contract, missing guard, or high-risk duplication
|
|
228
|
-
- `P2` - maintainability issue worth fixing before the feature closes
|
|
229
|
-
- `P3` - small cleanup, consistency issue, or follow-up candidate
|
|
230
|
-
|
|
231
|
-
Use P0 or P1 only when a concrete code path, violated contract or security
|
|
232
|
-
boundary, failing command or test, or reproducible behavior confirms the risk. If
|
|
233
|
-
the evidence is incomplete, list it under `Unverified risks` with the missing
|
|
234
|
-
validation instead of presenting it as a confirmed high-severity finding.
|
|
235
|
-
|
|
236
|
-
If there are no findings, say that clearly for the selected lens and name any
|
|
237
|
-
remaining risk or missing signal, such as "no test command declared" or
|
|
238
|
-
"browser flow not audited."
|
|
239
|
-
|
|
240
|
-
Then include:
|
|
241
|
-
|
|
242
|
-
- ledger changes: findings added, updated, or closed this pass, by ID
|
|
243
|
-
- commands run and results
|
|
244
|
-
- selected scope
|
|
245
|
-
- selected lens or lenses
|
|
246
|
-
- base branch, merge base, and commit range for `current`, when available
|
|
247
|
-
- files or directories reviewed
|
|
248
|
-
- generated, third-party, or otherwise excluded paths
|
|
249
|
-
- applicable standards checked
|
|
250
|
-
- browser or runtime evidence inspected, when relevant
|
|
251
|
-
- skipped, focused, or placeholder tests found, when the tests lens was selected
|
|
252
|
-
- checks that were unavailable or could not run
|
|
253
|
-
- suggested repair order
|
|
254
|
-
|
|
255
|
-
For `full`, say whether coverage was complete or partial. Never label a partial
|
|
256
|
-
review as a full-project audit.
|
|
257
|
-
|
|
258
|
-
## Rules
|
|
259
|
-
|
|
260
|
-
- The findings ledger is the only file this skill writes. Never edit, format,
|
|
261
|
-
install, commit, merge, push, or delete anything else.
|
|
262
|
-
- A focused lens is not a broad audit. State what was not reviewed and never
|
|
263
|
-
imply that omitted lenses passed.
|
|
264
|
-
- The ledger reports status; it never defines what the review looks at. Do not
|
|
265
|
-
turn open findings into the review checklist.
|
|
266
|
-
- Never fetch, pull, or run network-backed audit tools without explicit approval.
|
|
267
|
-
- Never reproduce secrets or sensitive values in findings or command output.
|
|
268
|
-
- Findings first. Keep summaries short.
|
|
269
|
-
- Ground every finding in a file path and line number when possible.
|
|
270
|
-
- Avoid speculative rewrites. Recommend the smallest fix that removes the risk.
|
|
271
|
-
- Respect existing project patterns over generic advice.
|
|
272
|
-
- Do not require perfection. The goal is code that is understandable, consistent,
|
|
273
|
-
testable where it matters, and safe to keep building on.
|
|
274
|
-
|
|
275
|
-
## Formatting
|
|
276
|
-
|
|
277
|
-
Format the output to match the project's conventions in
|
|
278
|
-
`devflow/context/ai-interaction.md`: concise, scannable markdown, with lists for
|
|
279
|
-
enumerations and tables for matrices rather than dense paragraphs.
|
|
238
|
+
If a critical security or data-loss issue surfaces during a quality, performance,
|
|
239
|
+
or test review, report that one blocker plainly under Security and continue with
|
|
240
|
+
the chosen lens.
|
|
241
|
+
|
|
242
|
+
## Step 4 - record and report findings
|
|
243
|
+
|
|
244
|
+
Maintain the durable record in `devflow/context/{xxx-slug}/findings.md` (or `devflow/context/findings.md`):
|
|
245
|
+
|
|
246
|
+
1. Read existing IDs to avoid collisions.
|
|
247
|
+
2. Use sequential IDs with the lens prefix: `Q-001`, `S-001`, `P-001`, `T-001`.
|
|
248
|
+
3. Set severity honestly:
|
|
249
|
+
- `P0`: critical blocking bug, data corruption, severe vulnerability, complete outage.
|
|
250
|
+
- `P1`: serious defect, missing critical test, unhandled core error.
|
|
251
|
+
- `P2`: moderate debt, performance degradation, missing edge cases.
|
|
252
|
+
- `P3`: minor improvement, code cleanup, cosmetic tweak.
|
|
253
|
+
4. Set status: `open`, `fixed`, `closed`, `accepted`, or `invalid`.
|
|
254
|
+
5. Display concise findings summary and next actions.
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Independent review record
|
|
2
|
+
|
|
3
|
+
`devflow/context/{xxx-slug}/review.md` holds one active request or latest receipt for the
|
|
4
|
+
current work item. It is generated workflow state that is committed with the
|
|
5
|
+
work, archived by `/complete`, and then reset.
|
|
6
|
+
|
|
7
|
+
## Reset stub
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# Independent Review
|
|
11
|
+
|
|
12
|
+
> **Generated file.** Holds the active independent-review request or latest
|
|
13
|
+
> receipt for the current work item. `/audit independent current` prepares a
|
|
14
|
+
> handoff against an approved checkpoint, a fresh reviewer session completes it,
|
|
15
|
+
> and `/complete` refuses stale, pending, or changes-requested review state.
|
|
16
|
+
|
|
17
|
+
_No independent review requested. Run `/audit independent current` to prepare one._
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Pending request
|
|
21
|
+
|
|
22
|
+
Use full commit SHAs, the exact permitted base ref used to calculate the merge base,
|
|
23
|
+
a lowercase SHA-256 hash of the exact
|
|
24
|
+
`devflow/context/{xxx-slug}/spec.md` bytes, an ISO-8601 timestamp, and one of
|
|
25
|
+
`antigravity`, `claude`, `codex`, `copilot`, or `opencode` for each adapter field.
|
|
26
|
+
Model fields use the full identifier exposed by runtime or session metadata,
|
|
27
|
+
not a generic family label. When unavailable, record
|
|
28
|
+
`unknown (runtime did not expose exact model)` instead of guessing. When the
|
|
29
|
+
review runtime cannot select a specific model before the session starts, use
|
|
30
|
+
`runtime default (exact model not known until reviewer starts)` for Requested
|
|
31
|
+
model and record the exact runtime model in the completed receipt.
|
|
32
|
+
|
|
33
|
+
```markdown
|
|
34
|
+
# Independent Review
|
|
35
|
+
|
|
36
|
+
**Status:** pending
|
|
37
|
+
**Target commit:** <full 40-character checkpoint SHA>
|
|
38
|
+
**Base commit:** <full 40-character merge-base SHA>
|
|
39
|
+
**Base ref:** <local branch or remote-tracking ref used for the merge base>
|
|
40
|
+
**Spec hash:** <64-character SHA-256>
|
|
41
|
+
**Prepared by:** <adapter>
|
|
42
|
+
**Builder model:** <exact model reported by the builder runtime>
|
|
43
|
+
**Requested reviewer:** <adapter>
|
|
44
|
+
**Requested model:** <exact model or user-selected runtime default>
|
|
45
|
+
**Requested at:** <ISO-8601 timestamp>
|
|
46
|
+
**Workflow:** <regular or continuous>
|
|
47
|
+
**Check required:** <yes or no>
|
|
48
|
+
|
|
49
|
+
## Handoff
|
|
50
|
+
|
|
51
|
+
Review the active spec and the complete `<base>..<target>` delta in a fresh
|
|
52
|
+
session without the builder conversation. Run all Audit lenses from scratch.
|
|
53
|
+
Run Check when required above. Do not edit product code, accept findings, or
|
|
54
|
+
reuse the existing findings as the review scope.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
For an independently enforceable receipt, `Base ref` must be a locally recorded
|
|
58
|
+
remote default branch, local `main`, or local `master`. It cannot be the current
|
|
59
|
+
work branch, and `Base commit` cannot equal `Target commit`. If none of those
|
|
60
|
+
base refs reliably covers the active work, stop instead of creating a receipt
|
|
61
|
+
whose review range cannot be re-derived.
|
|
62
|
+
|
|
63
|
+
## Completed receipt
|
|
64
|
+
|
|
65
|
+
Keep the request fields unchanged and replace `pending` with `passed` or
|
|
66
|
+
`changes-requested`. Add these fields and sections:
|
|
67
|
+
|
|
68
|
+
```markdown
|
|
69
|
+
**Reviewer adapter:** <adapter>
|
|
70
|
+
**Reviewer model:** <exact model reported by the reviewer runtime>
|
|
71
|
+
**Reviewer context:** fresh session
|
|
72
|
+
**Reviewed at:** <ISO-8601 timestamp>
|
|
73
|
+
**Scope:** current
|
|
74
|
+
**Lenses:** quality, security, performance, tests
|
|
75
|
+
**Verdict:** <passed or changes-requested>
|
|
76
|
+
**Check result:** <passed, failed, unavailable, or not-required>
|
|
77
|
+
|
|
78
|
+
## Commands
|
|
79
|
+
|
|
80
|
+
- `<command>`: <pass, fail, or unavailable>
|
|
81
|
+
|
|
82
|
+
## Evidence
|
|
83
|
+
|
|
84
|
+
- <safe concise evidence reference>
|
|
85
|
+
|
|
86
|
+
## Findings
|
|
87
|
+
|
|
88
|
+
- <finding IDs, or `None`>
|
|
89
|
+
|
|
90
|
+
## Remaining risk
|
|
91
|
+
|
|
92
|
+
- <risk or unavailable signal, or `None identified`>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Every unavailable verification command must appear under Remaining risk, even
|
|
96
|
+
when Check was not required and the receipt may still pass.
|
|
97
|
+
|
|
98
|
+
All four completed-receipt sections must contain at least one entry. Use
|
|
99
|
+
`- None`, `- None identified`, or `- No commands run` when that is the truthful
|
|
100
|
+
result. When Check is required, `Check result` must be `passed` before the
|
|
101
|
+
receipt can pass. Use `not-required` only when Check was not required.
|
|
102
|
+
|
|
103
|
+
Use `passed` only when all four lenses covered the complete target delta, every
|
|
104
|
+
required check passed, and no P0 or P1 finding is `open` or `fixed`.
|
|
105
|
+
P2 and P3 findings may remain with their normal ledger status. Use
|
|
106
|
+
`changes-requested` for a blocking finding, failed required check, incomplete
|
|
107
|
+
scope, adapter mismatch, or missing fresh-session declaration.
|
|
108
|
+
|
|
109
|
+
## Freshness
|
|
110
|
+
|
|
111
|
+
A receipt is current only when all of these hold:
|
|
112
|
+
|
|
113
|
+
- `HEAD` exactly equals `Target commit`.
|
|
114
|
+
- `Base ref` still resolves and its merge base with `Target commit` exactly
|
|
115
|
+
equals `Base commit`, and it remains a locally recorded remote default branch,
|
|
116
|
+
local `main`, or local `master`.
|
|
117
|
+
- The exact task spec bytes still match `Spec hash`.
|
|
118
|
+
- No tracked, staged, unstaged, or untracked path differs from the target except
|
|
119
|
+
`devflow/context/{xxx-slug}/review.md` and `devflow/context/{xxx-slug}/findings.md`.
|
|
120
|
+
- The completed reviewer adapter matches `Requested reviewer`.
|
|
121
|
+
- The completed reviewer model exactly matches `Requested model`, unless the
|
|
122
|
+
request explicitly selected the runtime-default sentinel above. In that case,
|
|
123
|
+
`Reviewer model` must still contain the exact model exposed after the reviewer
|
|
124
|
+
session starts, never the sentinel itself.
|
|
125
|
+
|
|
126
|
+
Any other code, test, configuration, spec, or acceptance-criteria change makes
|
|
127
|
+
the receipt stale. A stale receipt never proves the new state. Prepare a new
|
|
128
|
+
request against a new approved checkpoint and review the whole delta again.
|
|
@@ -82,6 +82,27 @@ If the only issue is that `project-overview.md` is stale and the plans are clear
|
|
|
82
82
|
regenerate it using the `/overview` behavior and continue. Include that in the
|
|
83
83
|
final packet.
|
|
84
84
|
|
|
85
|
+
### Quality-gate and browser preflight
|
|
86
|
+
|
|
87
|
+
Read `qualityGates.regular.independentReview` from `devflow/config.json`.
|
|
88
|
+
`manual` is opt-in, `always` activates the gate, and `when-sensitive` activates
|
|
89
|
+
when the task touches authentication, authorization, secrets, payments,
|
|
90
|
+
personal data, destructive operations, dependencies, deployment, or another
|
|
91
|
+
security boundary. Reuse the target spec's recorded sensitivity decision; if it
|
|
92
|
+
is missing, record the evidence-backed decision before implementation.
|
|
93
|
+
|
|
94
|
+
Any product or living-spec edit invalidates an earlier receipt. After the final
|
|
95
|
+
Verify and targeted audit repairs, an active gate requires the
|
|
96
|
+
`audit independent current` handoff in a fresh reviewer context. Autopilot must
|
|
97
|
+
stop rather than self-approve when it cannot obtain a receipt with `passed`
|
|
98
|
+
verdict and `current` freshness; it never continues toward `/complete` on a
|
|
99
|
+
pending, malformed, changes-requested, stale, or missing receipt.
|
|
100
|
+
|
|
101
|
+
For browser-visible behavior, run `npm run test:browser` when `test:browser` is
|
|
102
|
+
declared and capture interactive evidence with `browseros-neo` when available.
|
|
103
|
+
If either path is unavailable, record the limitation in the review packet and do
|
|
104
|
+
not install a runner or claim browser proof implicitly.
|
|
105
|
+
|
|
85
106
|
## Step 2 - choose or write the spec
|
|
86
107
|
|
|
87
108
|
If `devflow/context/{xxx-slug}/spec.md` already contains an active spec,
|
|
@@ -233,4 +254,4 @@ Stop immediately and report instead of continuing when Autopilot would need to:
|
|
|
233
254
|
|
|
234
255
|
Format the output to match the project's conventions in
|
|
235
256
|
`devflow/context/ai-interaction.md`: concise, scannable markdown, with lists for
|
|
236
|
-
enumerations and tables for matrices rather than dense paragraphs.
|
|
257
|
+
enumerations and tables for matrices rather than dense paragraphs.
|