devrites 3.2.2 → 3.2.4
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/CHANGELOG.md +14 -0
- package/README.md +1 -1
- package/docs/architecture.md +6 -2
- package/docs/command-map.md +3 -3
- package/docs/engine/agent-contract.md +3 -2
- package/docs/harness-compliance.md +2 -2
- package/docs/orchestration.md +15 -12
- package/docs/porting-to-a-new-harness.md +2 -1
- package/docs/skills.md +7 -2
- package/engine/hooks.go +39 -4
- package/engine/hooks_agent_dispatch.go +1193 -0
- package/engine/hooks_workspace.go +78 -10
- package/engine/internal/forge/forge.go +0 -2
- package/engine/internal/harness/compliance.go +1 -1
- package/engine/internal/harness/harness.go +3 -0
- package/engine/internal/lib/doubtcoverage.go +2 -12
- package/engine/internal/lib/reconcile.go +4 -29
- package/engine/internal/lib/reconcile_test.go +14 -10
- package/engine/main.go +4 -1
- package/engine/tests/hook_test.go +877 -1
- package/engine/tests/lib_parity_test.go +5 -17
- package/engine/tests/parity_reconcile_test.go +1 -1
- package/engine/tests/parity_test.go +2 -6
- package/pack/.claude/skills/devrites-api-interface/SKILL.md +1 -0
- package/pack/.claude/skills/devrites-audit/SKILL.md +5 -6
- package/pack/.claude/skills/devrites-browser-proof/SKILL.md +1 -0
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +1 -0
- package/pack/.claude/skills/devrites-doubt/SKILL.md +2 -1
- package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +1 -0
- package/pack/.claude/skills/devrites-interview/SKILL.md +1 -0
- package/pack/.claude/skills/devrites-lib/SKILL.md +1 -0
- package/pack/.claude/skills/devrites-lib/reference/model-tiers.md +4 -3
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +4 -5
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +15 -8
- package/pack/.claude/skills/devrites-prose-craft/SKILL.md +1 -0
- package/pack/.claude/skills/devrites-refresh-indexes/SKILL.md +1 -0
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +1 -0
- package/pack/.claude/skills/devrites-ux-shape/SKILL.md +1 -0
- package/pack/.claude/skills/rite/SKILL.md +1 -0
- package/pack/.claude/skills/rite-adopt/SKILL.md +1 -0
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +1 -0
- package/pack/.claude/skills/rite-build/SKILL.md +2 -1
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +3 -4
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +11 -12
- package/pack/.claude/skills/rite-clarify/SKILL.md +1 -0
- package/pack/.claude/skills/rite-converge/SKILL.md +1 -0
- package/pack/.claude/skills/rite-customize/SKILL.md +1 -0
- package/pack/.claude/skills/rite-define/SKILL.md +1 -0
- package/pack/.claude/skills/rite-doctor/SKILL.md +1 -0
- package/pack/.claude/skills/rite-dogfood/SKILL.md +1 -0
- package/pack/.claude/skills/rite-explain/SKILL.md +4 -2
- package/pack/.claude/skills/rite-frame/SKILL.md +1 -0
- package/pack/.claude/skills/rite-handoff/SKILL.md +1 -0
- package/pack/.claude/skills/rite-learn/SKILL.md +1 -0
- package/pack/.claude/skills/rite-plan/SKILL.md +1 -0
- package/pack/.claude/skills/rite-polish/SKILL.md +1 -0
- package/pack/.claude/skills/rite-pov/SKILL.md +1 -0
- package/pack/.claude/skills/rite-pr-feedback/SKILL.md +1 -0
- package/pack/.claude/skills/rite-pressure-test/SKILL.md +1 -0
- package/pack/.claude/skills/rite-prototype/SKILL.md +1 -0
- package/pack/.claude/skills/rite-prove/SKILL.md +1 -0
- package/pack/.claude/skills/rite-quick/SKILL.md +1 -0
- package/pack/.claude/skills/rite-resolve/SKILL.md +1 -0
- package/pack/.claude/skills/rite-review/SKILL.md +1 -0
- package/pack/.claude/skills/rite-seal/SKILL.md +1 -0
- package/pack/.claude/skills/rite-seal/reference/phase-contract.md +2 -3
- package/pack/.claude/skills/rite-seal/reference/risk-and-rollback.md +10 -12
- package/pack/.claude/skills/rite-ship/SKILL.md +1 -0
- package/pack/.claude/skills/rite-spec/SKILL.md +1 -0
- package/pack/.claude/skills/rite-status/SKILL.md +1 -0
- package/pack/.claude/skills/rite-temper/SKILL.md +3 -2
- package/pack/.claude/skills/rite-upgrade/SKILL.md +3 -1
- package/pack/.claude/skills/rite-vet/SKILL.md +1 -0
- package/pack/.claude/skills/rite-zoom-out/SKILL.md +1 -0
- package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +1 -0
- package/pack/generated/claude/skills/devrites-audit/SKILL.md +5 -6
- package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +1 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +1 -0
- package/pack/generated/claude/skills/devrites-doubt/SKILL.md +2 -1
- package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +1 -0
- package/pack/generated/claude/skills/devrites-interview/SKILL.md +1 -0
- package/pack/generated/claude/skills/devrites-lib/SKILL.md +1 -0
- package/pack/generated/claude/skills/devrites-lib/reference/model-tiers.md +4 -3
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +4 -5
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +15 -8
- package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +1 -0
- package/pack/generated/claude/skills/devrites-refresh-indexes/SKILL.md +1 -0
- package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +1 -0
- package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-build/SKILL.md +2 -1
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +3 -4
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +11 -12
- package/pack/generated/claude/skills/rite-clarify/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-converge/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-customize/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-define/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-doctor/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-dogfood/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-explain/SKILL.md +4 -2
- package/pack/generated/claude/skills/rite-frame/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-handoff/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-learn/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-plan/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-polish/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-pov/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-prototype/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-prove/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-quick/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-review/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-seal/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +2 -3
- package/pack/generated/claude/skills/rite-seal/reference/risk-and-rollback.md +10 -12
- package/pack/generated/claude/skills/rite-ship/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-spec/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-status/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-temper/SKILL.md +3 -2
- package/pack/generated/claude/skills/rite-upgrade/SKILL.md +3 -1
- package/pack/generated/claude/skills/rite-vet/SKILL.md +1 -0
- package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +1 -0
- package/pack/generated/codex/AGENTS.md +2 -4
- package/pack/generated/codex/hooks.json +24 -5
- package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +6 -4
- package/pack/generated/codex/skills/devrites-audit/SKILL.md +10 -10
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +6 -4
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +6 -4
- package/pack/generated/codex/skills/devrites-doubt/SKILL.md +7 -5
- package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +6 -4
- package/pack/generated/codex/skills/devrites-interview/SKILL.md +6 -4
- package/pack/generated/codex/skills/devrites-lib/SKILL.md +6 -4
- package/pack/generated/codex/skills/devrites-lib/reference/model-tiers.md +4 -3
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +4 -5
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +15 -8
- package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +6 -4
- package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +6 -4
- package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +6 -4
- package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-build/SKILL.md +7 -5
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +3 -4
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +11 -12
- package/pack/generated/codex/skills/rite-clarify/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-converge/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-customize/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-define/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-doctor/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-dogfood/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-explain/SKILL.md +9 -6
- package/pack/generated/codex/skills/rite-frame/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-handoff/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-learn/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-plan/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-polish/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-pov/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-prototype/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-prove/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-quick/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-review/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-seal/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +2 -3
- package/pack/generated/codex/skills/rite-seal/reference/risk-and-rollback.md +10 -12
- package/pack/generated/codex/skills/rite-ship/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-spec/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-status/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-temper/SKILL.md +8 -6
- package/pack/generated/codex/skills/rite-upgrade/SKILL.md +8 -5
- package/pack/generated/codex/skills/rite-vet/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +6 -4
- package/package.json +1 -1
- package/scripts/codex-generate.sh +32 -18
- package/scripts/live-hosts/agent-result.schema.json +2 -1
- package/scripts/live-hosts/claude.sh +2 -2
- package/scripts/live-hosts/codex.sh +4 -0
- package/scripts/live-hosts/fake-host.py +1 -8
- package/scripts/live-hosts/host-transport.py +1 -2
- package/scripts/run-agent-contract-evals.py +3 -3
- package/scripts/run-evals.sh +3 -34
- package/scripts/validate-frontmatter.py +34 -1
- package/engine/testdata/golden/TestParityA1Guard/inline-fallback-silent.golden +0 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=inline.golden +0 -3
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing-inline.golden +0 -3
- package/scripts/eval-runner.py +0 -275
- package/scripts/eval-scorer.mjs +0 -46
- package/scripts/render-eval-summary.py +0 -48
- /package/engine/testdata/golden/TestParityReconcile/{inline-fallback → close-window}/snapshot.golden +0 -0
- /package/engine/testdata/golden/TestParityReconcile/{inline-fallback.golden → close-window.golden} +0 -0
|
@@ -653,8 +653,8 @@ func TestCoverageGolden(t *testing.T) {
|
|
|
653
653
|
// ---- doubt-coverage -------------------------------------------------------
|
|
654
654
|
//
|
|
655
655
|
// Golden: the decisions.md `doubt: MISSING` short-circuit (checked first), the
|
|
656
|
-
//
|
|
657
|
-
//
|
|
656
|
+
// no-log pass, the wright/doubt count line, and the 0/1/2/3 exit taxonomy are
|
|
657
|
+
// checked against golden snapshots.
|
|
658
658
|
|
|
659
659
|
func TestParityDoubtCoverage(t *testing.T) {
|
|
660
660
|
work := t.TempDir()
|
|
@@ -664,15 +664,7 @@ func TestParityDoubtCoverage(t *testing.T) {
|
|
|
664
664
|
"## Decisions stood\n- use flock — doubt: MISSING\n")
|
|
665
665
|
writeFeatureFile(t, work, "missing", "footprint.log", "1000 wright 01\n")
|
|
666
666
|
|
|
667
|
-
//
|
|
668
|
-
writeFeatureFile(t, work, "missing-inline", "decisions.md", "- x — doubt: MISSING\n")
|
|
669
|
-
writeFeatureFile(t, work, "missing-inline", ".reconcile-inline", "")
|
|
670
|
-
|
|
671
|
-
// inline build, no MISSING → exit 0.
|
|
672
|
-
writeFeatureFile(t, work, "inline", ".reconcile-inline", "")
|
|
673
|
-
writeFeatureFile(t, work, "inline", "decisions.md", "## Decisions stood\n- x — doubt: yes\n")
|
|
674
|
-
|
|
675
|
-
// dir exists, no log / dec / marker → "no footprint log" pass.
|
|
667
|
+
// dir exists, no log / decisions → "no footprint log" pass.
|
|
676
668
|
makeFeatureDir(t, work, "nolog")
|
|
677
669
|
|
|
678
670
|
// wright dispatch(es), zero doubt → exit 1.
|
|
@@ -687,7 +679,7 @@ func TestParityDoubtCoverage(t *testing.T) {
|
|
|
687
679
|
"1000 reviewer code-reviewer\n1000 doubt d1\n")
|
|
688
680
|
|
|
689
681
|
for _, arg := range []string{
|
|
690
|
-
"missing", "
|
|
682
|
+
"missing", "nolog",
|
|
691
683
|
"nodoubt", "doubted", "nowright",
|
|
692
684
|
"ghost", // no workspace at all → "no footprint log" pass
|
|
693
685
|
} {
|
|
@@ -708,13 +700,12 @@ func TestParityDoubtCoverage(t *testing.T) {
|
|
|
708
700
|
}
|
|
709
701
|
|
|
710
702
|
// TestDoubtCoverageGolden asserts each verdict's exact stdout inline: the
|
|
711
|
-
// SKIPPED /
|
|
703
|
+
// SKIPPED / no-log messages and the "no doubt ran" prompt.
|
|
712
704
|
func TestDoubtCoverageGolden(t *testing.T) {
|
|
713
705
|
work := t.TempDir()
|
|
714
706
|
const base = ".devrites/features/"
|
|
715
707
|
|
|
716
708
|
writeFile(t, work, base+"miss/decisions.md", "- x — doubt: MISSING\n")
|
|
717
|
-
writeFile(t, work, base+"in/.reconcile-inline", "")
|
|
718
709
|
mkdirAllT(t, work, base+"empty")
|
|
719
710
|
writeFile(t, work, base+"nd/footprint.log", "1000 wright 01\n1000 wright 02\n")
|
|
720
711
|
writeFile(t, work, base+"ok/footprint.log", "1000 wright 01\n1000 doubt d1\n")
|
|
@@ -723,9 +714,6 @@ func TestDoubtCoverageGolden(t *testing.T) {
|
|
|
723
714
|
{"skipped", []string{"doubt-coverage", "miss"},
|
|
724
715
|
"doubt-coverage: SKIPPED: a '## Decisions stood' entry in decisions.md has doubt: MISSING.\n" +
|
|
725
716
|
"A decision was stood and recorded but never doubted. Re-dispatch doubt or escalate.\n", 3},
|
|
726
|
-
{"inline", []string{"doubt-coverage", "in"},
|
|
727
|
-
"doubt-coverage: inline build (.reconcile-inline): footprint heuristic n/a; no MISSING\n" +
|
|
728
|
-
"verdict recorded. Verify by hand that each stood decision carries a devrites-doubt verdict.\n", 0},
|
|
729
717
|
{"no-log", []string{"doubt-coverage", "empty"},
|
|
730
718
|
"doubt-coverage: no footprint log: nothing to assess (pass)\n", 0},
|
|
731
719
|
{"no-doubt-ran", []string{"doubt-coverage", "nd"},
|
|
@@ -68,7 +68,7 @@ func TestParityReconcile(t *testing.T) {
|
|
|
68
68
|
assertGolden(t, out, code)
|
|
69
69
|
})
|
|
70
70
|
|
|
71
|
-
t.Run("
|
|
71
|
+
t.Run("close-window", func(t *testing.T) {
|
|
72
72
|
work := newRepo(t)
|
|
73
73
|
snapshot(t, work)
|
|
74
74
|
out, code := runArgv(t, work, libRootEnv(work), "", binPath, "reconcile", "close", "feat")
|
|
@@ -269,15 +269,12 @@ func TestParityRedwatch(t *testing.T) {
|
|
|
269
269
|
|
|
270
270
|
// TestParityA1Guard checks `hook a1-guard` against golden snapshots for each
|
|
271
271
|
// payload. It blocks a main-thread source edit only when the build window is open
|
|
272
|
-
// and enforce is on, and allows subagent edits, .devrites bookkeeping edits,
|
|
273
|
-
//
|
|
272
|
+
// and enforce is on, and allows subagent edits, .devrites bookkeeping edits, and
|
|
273
|
+
// a closed window.
|
|
274
274
|
func TestParityA1Guard(t *testing.T) {
|
|
275
275
|
work := t.TempDir()
|
|
276
276
|
makeFeatureDir(t, work, "win")
|
|
277
277
|
writeFeatureFile(t, work, "win", ".reconcile-base", "snapshot\n")
|
|
278
|
-
makeFeatureDir(t, work, "inline")
|
|
279
|
-
writeFeatureFile(t, work, "inline", ".reconcile-base", "snapshot\n")
|
|
280
|
-
writeFeatureFile(t, work, "inline", ".reconcile-inline", "")
|
|
281
278
|
makeFeatureDir(t, work, "nowin") // no .reconcile-base → window closed
|
|
282
279
|
|
|
283
280
|
enforce := []string{"DEVRITES_A1_HOOK=enforce"}
|
|
@@ -291,7 +288,6 @@ func TestParityA1Guard(t *testing.T) {
|
|
|
291
288
|
{"devrites-edit-allowed", "win", enforce, `{"tool_name":"Edit","tool_input":{"file_path":".devrites/features/win/state.md"}}`},
|
|
292
289
|
{"non-edit-tool", "win", enforce, `{"tool_name":"Bash","tool_input":{"command":"ls"}}`},
|
|
293
290
|
{"observe-mode-silent", "win", nil, `{"tool_name":"Edit","tool_input":{"file_path":"src/app.js"}}`},
|
|
294
|
-
{"inline-fallback-silent", "inline", enforce, `{"tool_name":"Edit","tool_input":{"file_path":"src/app.js"}}`},
|
|
295
291
|
{"no-window-silent", "nowin", enforce, `{"tool_name":"Edit","tool_input":{"file_path":"src/app.js"}}`},
|
|
296
292
|
} {
|
|
297
293
|
tc := tc
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: devrites-api-interface
|
|
3
3
|
description: Design stable API/interface contracts before implementation: REST/GraphQL endpoints, module boundaries, type contracts, FE/BE splits. Use when the user says "design the API" or a slice crosses a boundary. Not for helpers.
|
|
4
4
|
user-invocable: false
|
|
5
|
+
required-agent-roles: none
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# devrites-api-interface: contract before implementation
|
|
@@ -3,6 +3,7 @@ name: devrites-audit
|
|
|
3
3
|
description: Read-only feature audit on security/perf/simplify: auth trust boundary, injection, secrets, hot-path, payload-size, perf budget, Chesterton delete/cleanup. Use when auditing one axis. Not for writes.
|
|
4
4
|
argument-hint: "<security | perf | simplify>"
|
|
5
5
|
user-invocable: false
|
|
6
|
+
required-agent-roles: none
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# devrites-audit: read-only audit dispatch
|
|
@@ -39,14 +40,12 @@ no cross-pollination and the shared maximum of three concurrent read-only roles.
|
|
|
39
40
|
|
|
40
41
|
## Fallback and scope
|
|
41
42
|
|
|
42
|
-
Use the capability ladder
|
|
43
|
-
|
|
44
|
-
`independence: fallback`. Use these role contracts:
|
|
43
|
+
Use the capability ladder. If no safe fresh-context rung preserves the role's
|
|
44
|
+
read-only boundary, stop for HITL. Use these role contracts:
|
|
45
45
|
|
|
46
46
|
- `.claude/agents/devrites-security-auditor.md`
|
|
47
47
|
- `.claude/agents/devrites-performance-reviewer.md`
|
|
48
48
|
- `.claude/agents/devrites-simplifier-reviewer.md`
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
active feature. Critical findings block seal; simplification never changes behavior.
|
|
50
|
+
Stay inside the active feature. Critical findings block seal; simplification never
|
|
51
|
+
changes behavior.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: devrites-browser-proof
|
|
3
3
|
description: Observe and prove working UI behavior in a real browser with screenshots, interactions, network evidence, and Core Web Vitals. Use for browser proof or performance after the page works.
|
|
4
4
|
user-invocable: false
|
|
5
|
+
required-agent-roles: none
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# devrites-browser-proof: runtime evidence for UI
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: devrites-debug-recovery
|
|
3
3
|
description: Debug application failures: tests, builds, CI, runtime exceptions, browser errors, app 500s. Reproduce, rank hypotheses, fix root cause, regression-test. Use when "debug", "build is red", "tests fail", or the app is broken. Not for DevRites install health.
|
|
4
4
|
user-invocable: false
|
|
5
|
+
required-agent-roles: none
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# devrites-debug-recovery: fix the root cause, not the symptom
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: devrites-doubt
|
|
3
3
|
description: Stress-test one non-trivial decision with an adversarial independent take. Use when the user says "are we sure", "double-check", "what could go wrong", or before boundary/data/auth/API/migration choices. Not for trivial choices.
|
|
4
4
|
user-invocable: false
|
|
5
|
+
required-agent-roles: devrites-doubt-reviewer
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# devrites-doubt: CLAIM → EXTRACT → DOUBT → RECONCILE → STOP
|
|
@@ -22,7 +23,7 @@ code · claiming "this is safe", "this scales", or "this matches the spec".
|
|
|
22
23
|
`agent-packet/v1` and the adversarial objective *"find what's wrong; do not
|
|
23
24
|
validate."* Follow
|
|
24
25
|
[`agents.md`](../devrites-lib/reference/standards/agents.md). Inline does not satisfy
|
|
25
|
-
independence;
|
|
26
|
+
independence; if no fresh-agent rung is available, stop for HITL.
|
|
26
27
|
- [ ] **4. RECONCILE**: classify EVERY finding: contract misread | valid & actionable |
|
|
27
28
|
valid trade-off | noise. **Doubt-theater check:** if two or more cycles find substantive
|
|
28
29
|
issues but classify **zero** as actionable, the review is too agreeable. Sharpen the
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: devrites-frontend-craft
|
|
3
3
|
description: Implement frontend at senior designer-engineer quality: every state covered, anti-AI-slop, WCAG 2.2 AA. Use when the user says "build the UI", "design system", "a11y", or `/rite-build` detects UI. Not for polishing a built feature or design exploration.
|
|
4
4
|
user-invocable: false
|
|
5
|
+
required-agent-roles: none
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# devrites-frontend-craft: UI like a senior designer-engineer
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: devrites-interview
|
|
3
3
|
description: Interview the user one question at a time to extract intent. Use when the user says "interview me", "I am not sure what I want", or the ask is underspecified. Not for casual clarification.
|
|
4
4
|
user-invocable: false
|
|
5
|
+
required-agent-roles: none
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# devrites-interview: extract intent
|
|
@@ -3,6 +3,7 @@ name: devrites-lib
|
|
|
3
3
|
description: Internal shared DevRites helper library. Documents cross-cutting engine commands and references; not a user workflow. Do not invoke directly.
|
|
4
4
|
user-invocable: false
|
|
5
5
|
disable-model-invocation: true
|
|
6
|
+
required-agent-roles: none
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# devrites-lib: internal shared helpers (not a command)
|
|
@@ -21,13 +21,14 @@ one to a reviewer to save cost. The tier a scout runs on is where savings are sa
|
|
|
21
21
|
## The degradation rule
|
|
22
22
|
|
|
23
23
|
Tiers are an optimization, never a correctness dependency. A skill written against tiers must run
|
|
24
|
-
correctly on a harness that cannot select models per agent
|
|
24
|
+
correctly on a harness that cannot select models per agent:
|
|
25
25
|
|
|
26
26
|
1. **Per-agent model override unavailable** → dispatch the scout on the **inherited** model and
|
|
27
27
|
keep its **read budget and output cap**. The cost control falls back to structure, not model
|
|
28
28
|
choice. This is why every scout dispatch also carries an explicit read budget.
|
|
29
|
-
2. **No
|
|
30
|
-
|
|
29
|
+
2. **No safe fresh-agent rung** → stop for HITL when the scout is required, or record the
|
|
30
|
+
explicitly optional scout as skipped. Never relabel root-context work as independent
|
|
31
|
+
specialist dispatch.
|
|
31
32
|
|
|
32
33
|
A skill that only works when it can pick a cheap model is broken. The tier names the *intent*; the
|
|
33
34
|
budget enforces it regardless of what the harness can do.
|
|
@@ -91,9 +91,8 @@ devrites-engine footprint roster <slug>
|
|
|
91
91
|
```
|
|
92
92
|
|
|
93
93
|
`roster` rc=3 means an unaccounted reviewer: dispatch or record why it does not apply.
|
|
94
|
-
rc=1 means an always-on skip; this is valid only for an unchanged-candidate
|
|
95
|
-
|
|
96
|
-
[`../../rite-seal/reference/risk-and-rollback.md`](../../rite-seal/reference/risk-and-rollback.md).
|
|
94
|
+
rc=1 means an always-on skip; this is valid only for an unchanged-candidate
|
|
95
|
+
carry-forward. A required reviewer that cannot be dispatched blocks the phase.
|
|
97
96
|
|
|
98
97
|
## Reconciliation
|
|
99
98
|
|
|
@@ -106,5 +105,5 @@ or the explicit independence fallback in
|
|
|
106
105
|
6. Apply the caller's gate; do not invent a composite score.
|
|
107
106
|
|
|
108
107
|
Every panel reviewer runs at the ceiling or inherited tier. If the named role is
|
|
109
|
-
unavailable, use the universal ladder.
|
|
110
|
-
|
|
108
|
+
unavailable, use the universal ladder. If no fresh-agent rung is available, stop for
|
|
109
|
+
HITL; never execute the reviewer in the root context.
|
|
@@ -50,7 +50,7 @@ review fan-out. Phase skills own their phase-locked role choice.
|
|
|
50
50
|
|
|
51
51
|
## Fresh-context dispatch ladder
|
|
52
52
|
|
|
53
|
-
Use the first
|
|
53
|
+
Use the first safe rung:
|
|
54
54
|
|
|
55
55
|
1. Dispatch the named custom role with the host's spawn primitive.
|
|
56
56
|
2. If spawning works but that role is unavailable, use a generic fresh agent only when
|
|
@@ -59,13 +59,20 @@ Use the first available rung; capability failure never changes the contract:
|
|
|
59
59
|
allowlist (or an isolated/staged checkout) for a `worker`. Tell it to read the
|
|
60
60
|
generated role contract, then give it the same packet. An instruction-only shared-tree
|
|
61
61
|
writer is not an available rung.
|
|
62
|
-
3.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
3. Otherwise stop for HITL; specialist work never runs in the root context.
|
|
63
|
+
|
|
64
|
+
Every canonical skill declares `required-agent-roles` in its frontmatter. Use `none`
|
|
65
|
+
when no fresh agent is unconditionally required for that invocation. Codex reads this
|
|
66
|
+
field from the installed skill at `UserPromptSubmit` and arms a fail-closed completion
|
|
67
|
+
receipt for every listed role; the engine derives roles from skill metadata.
|
|
68
|
+
Conditional scouts and reviewers remain owned by their explicit phase triggers.
|
|
69
|
+
|
|
70
|
+
Claude: `Agent`; Codex: `spawn_agent`. V2 calls the named `agent_type` with
|
|
71
|
+
unique `task_name` and `fork_turns="none"`. GPT-5.6 may hide `agent_type` from the
|
|
72
|
+
schema, but runtime accepts it and loads the TOML; never use `default`. V2 bypasses
|
|
73
|
+
hooks, so Stop/reconcile verify role, native instructions, wait, completion, and result.
|
|
74
|
+
V1 uses guarded `explorer`/`worker` with injected rules and receipt. Prose
|
|
75
|
+
isn't evidence.
|
|
69
76
|
|
|
70
77
|
## File-backed dispatch contract
|
|
71
78
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: devrites-prose-craft
|
|
3
3
|
description: Humanize prose without losing technical content. Use when asked to remove AI-writing tells, match a writing sample or project voice, edit artifacts/replies/commit or PR prose, or run `/rite-polish`'s prose pass. Not for code comments or UI craft.
|
|
4
4
|
user-invocable: false
|
|
5
|
+
required-agent-roles: none
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# devrites-prose-craft: prose that reads human
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: devrites-refresh-indexes
|
|
3
3
|
description: Refresh stale optional indexes. Use when structural lookup disagrees with live code or rite-doctor requests a synchronous reindex.
|
|
4
4
|
user-invocable: false
|
|
5
|
+
required-agent-roles: none
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# devrites-refresh-indexes: keep the code-intelligence indexes fresh
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: devrites-source-driven
|
|
3
3
|
description: Verify uncertain framework/library behavior against official docs or installed source before relying on it. Use when the user says "check the docs", "verify this assumption", or hits an unfamiliar API. Not for internal code.
|
|
4
4
|
user-invocable: false
|
|
5
|
+
required-agent-roles: devrites-evidence-scout
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# devrites-source-driven: verify, don't guess
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: devrites-ux-shape
|
|
3
3
|
description: Plan UX/UI before code: design direction, design brief, visual direction, key states, interaction model for screens/forms/dashboards/settings pages. Use when shaping UI. Not for building/polish.
|
|
4
4
|
user-invocable: false
|
|
5
|
+
required-agent-roles: none
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# devrites-ux-shape: plan the UX/UI before code
|
|
@@ -3,6 +3,7 @@ name: rite-adopt
|
|
|
3
3
|
description: Adopt an existing or legacy codebase into DevRites by reverse-engineering current behavior, seeding conventions, and establishing the workflow. Use for inherited or live applications.
|
|
4
4
|
argument-hint: "[path or area to adopt] [+ what you want to build next]"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: none
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-adopt: onboard existing code
|
|
@@ -3,6 +3,7 @@ name: rite-autocomplete
|
|
|
3
3
|
description: Run the DevRites lifecycle end-to-end unattended; --ship confirms the final gate. Use when the user says "autocomplete", "one-shot this feature", or "ship it autonomously". Not for a single phase.
|
|
4
4
|
argument-hint: "[idea] [--ship|--yolo] [--max-slices N]"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: none
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-autocomplete: full lifecycle, unattended
|
|
@@ -3,6 +3,7 @@ name: rite-build
|
|
|
3
3
|
description: Build one approved vertical slice, then stop with evidence. Use when the next planned slice should be implemented. Not for multiple slices.
|
|
4
4
|
argument-hint: "[slice number or name]"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: devrites-slice-wright
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-build: one verified slice
|
|
@@ -19,7 +20,7 @@ doubt, fail-on-red, recording, and stop checks. See
|
|
|
19
20
|
## Rules consulted (read on demand from `.claude/skills/devrites-lib/reference/standards/`)
|
|
20
21
|
Read `.claude/skills/devrites-lib/reference/standards/core.md` first (workflow step 0). The
|
|
21
22
|
following load on demand: **the wright reads them** (they are named in its contract) while it
|
|
22
|
-
writes; read them yourself for the doubt/record gates
|
|
23
|
+
writes; read them yourself for the doubt/record gates:
|
|
23
24
|
- `coding-style.md`: naming, function shape, guard clauses, comments, reuse-first.
|
|
24
25
|
- `error-handling.md`: fail fast, no silent catches, fail closed.
|
|
25
26
|
- `testing.md`: pyramid, behaviour over implementation, see-it-fail-first.
|
|
@@ -55,9 +55,8 @@ See also [`one-slice-cycle.md`](one-slice-cycle.md).
|
|
|
55
55
|
**Default serial branch.** Follow
|
|
56
56
|
[`wright-dispatch.md`](wright-dispatch.md) end to end; it owns snapshot timing, stuck
|
|
57
57
|
logging, the exact packet, conditional skill loading, and return checks. Dispatch through
|
|
58
|
-
named wright → safely enforced generic fresh worker
|
|
59
|
-
|
|
60
|
-
enforcement or isolated staging; it never skips reconciliation. Before any canonical
|
|
58
|
+
named wright → safely enforced generic fresh worker. If neither is available, stop for
|
|
59
|
+
HITL; the root never performs wright work. Before any canonical
|
|
61
60
|
`.devrites/` mutation, validate the typed result and require a clean immediate
|
|
62
61
|
`devrites-engine reconcile check`; exit `5` rejects the writer result.
|
|
63
62
|
4. **Doubt every stood decision before accepting the slice.** The writer never grades its
|
|
@@ -176,4 +175,4 @@ See also [`one-slice-cycle.md`](one-slice-cycle.md).
|
|
|
176
175
|
just built. **When every slice is built** (`✅ ALL BUILT`) say so explicitly (the build
|
|
177
176
|
phase is complete, the next phase is `/rite-prove`) don't leave completion implicit.
|
|
178
177
|
|
|
179
|
-
> **Mid-flight discipline.** The wright
|
|
178
|
+
> **Mid-flight discipline.** The wright must resist doing two slices, skipping TDD, adding a defensive check, or wandering outside `touched-files.md`; you must resist skipping the post-return `devrites-doubt` because the wright "seems confident": see [`anti-patterns.md`](anti-patterns.md). Load it the moment you reach for the excuse.
|
|
@@ -121,15 +121,14 @@ Only then persist `state.md`, `evidence.md`, `touched-files.md`, decision/doubt
|
|
|
121
121
|
and browser evidence. Keep the retained window across a genuine human wait that will
|
|
122
122
|
resume the same slice. Close it before abandoning the slice for a scope/plan transition.
|
|
123
123
|
|
|
124
|
-
## Host
|
|
125
|
-
|
|
126
|
-
Use named wright →
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
wright
|
|
134
|
-
|
|
135
|
-
same allowlist, baseline, integrity gates, and close command remain mandatory.
|
|
124
|
+
## Host dispatch
|
|
125
|
+
|
|
126
|
+
Use named wright → enforced V1 generic worker from `standards/agents.md`. On Codex
|
|
127
|
+
MultiAgent V2, dispatch the exact named `devrites-slice-wright` with a unique
|
|
128
|
+
`task_name` and `fork_turns="none"`; its durable child rollout must prove the native
|
|
129
|
+
wright role, wait, completion, and non-empty result from the current reconcile window.
|
|
130
|
+
Any generic worker still needs the exact allowlist or an isolated checkout;
|
|
131
|
+
reconciliation alone is insufficient. If no safe fresh-agent rung is available, stop
|
|
132
|
+
for HITL. On Codex, `reconcile check` and `reconcile close` require the completed
|
|
133
|
+
wright receipt bound to the current reconcile snapshot.
|
|
134
|
+
The root never performs wright work.
|
|
@@ -3,6 +3,7 @@ name: rite-clarify
|
|
|
3
3
|
description: Run the topology-first decision-coverage scan after rite-spec and before strategy or architecture. Audit actors, journeys, states, data, integrations, operations, proof, assumptions, and must-NOT boundaries; close Partial/Missing rows and emit decision-coverage.md CLEAR. Use for missing/stale coverage or a missed pre-build product decision.
|
|
4
4
|
argument-hint: "[feature-slug]"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: none
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-clarify: resolve product decisions
|
|
@@ -3,6 +3,7 @@ name: rite-converge
|
|
|
3
3
|
description: Converge intent and live code. Use when resuming a half-built feature, after `/rite-adopt` drift, or the user asks "what's left to build". Not for initial planning.
|
|
4
4
|
argument-hint: "[feature-slug]"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: devrites-evidence-scout
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-converge: compare live code with intent
|
|
@@ -4,6 +4,7 @@ description: User-invoked helper for authoring DevRites overrides or extensions.
|
|
|
4
4
|
argument-hint: "[override <agent> | extension <name>]"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
disable-model-invocation: true
|
|
7
|
+
required-agent-roles: none
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# /rite-customize: guided project customization
|
|
@@ -3,6 +3,7 @@ name: rite-define
|
|
|
3
3
|
description: Define the first build plan from an approved spec: architecture, task slices, traceability, and state. Use when turning approved intent into its initial plan.
|
|
4
4
|
argument-hint: "[feature-slug]"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: devrites-plan-drafter
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-define: plan from the spec
|
|
@@ -3,6 +3,7 @@ name: rite-doctor
|
|
|
3
3
|
description: Doctor DevRites setup or index health. Use when workflow wiring is broken, the user asks to check DevRites, or says "reindex". Not for application bugs.
|
|
4
4
|
argument-hint: "[--code | --reindex]"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: none
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-doctor: health check
|
|
@@ -4,6 +4,7 @@ description: User-invoked explainer that teaches one concept, diff, idea, or rec
|
|
|
4
4
|
argument-hint: "[a concept | a diff ref | an idea | \"what did I do this week?\"], or bare to be asked"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
disable-model-invocation: true
|
|
7
|
+
required-agent-roles: none
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# /rite-explain: the human half of the learning loop
|
|
@@ -42,8 +43,9 @@ Dispatch by task shape, per [`devrites-lib/reference/model-tiers.md`](../devrite
|
|
|
42
43
|
orchestrator's own model; nothing is dispatched down. Teaching quality is the whole product: do
|
|
43
44
|
not cheapen it.
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
No per-agent model control means dispatch the scout as a same-model fresh agent under the
|
|
47
|
+
same budget. If no fresh-agent rung is available, stop with the missing capability; never run
|
|
48
|
+
the scout in the root context.
|
|
47
49
|
|
|
48
50
|
## Workflow
|
|
49
51
|
|
|
@@ -3,6 +3,7 @@ name: rite-frame
|
|
|
3
3
|
description: Frame an ad-hoc ask before coding, then audit the diff. Use for underspecified imperative asks, raw-diff self-audits, or `/rite-quick` setup. Not a lifecycle gate.
|
|
4
4
|
argument-hint: "[task to frame | diff to audit]"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: none
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-frame: frame the goal, audit the diff
|
|
@@ -4,6 +4,7 @@ description: User-invoked handoff writer: sync chat-only context into `.devrites
|
|
|
4
4
|
user-invocable: true
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
argument-hint: "[what the next session will focus on]"
|
|
7
|
+
required-agent-roles: none
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# /rite-handoff: chat-only context, into a fresh-agent doc
|
|
@@ -4,6 +4,7 @@ description: User-invoked review of the learning ledger; promotes recurring less
|
|
|
4
4
|
argument-hint: "[--mine | \"<lesson to record>\"]"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
disable-model-invocation: true
|
|
7
|
+
required-agent-roles: none
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# /rite-learn: the cross-feature learning loop
|
|
@@ -3,6 +3,7 @@ name: rite-plan
|
|
|
3
3
|
description: Re-plan existing work when reality invalidates the plan: reslice a slice that is too big, repair drift, reorder dependencies, split boundaries, or unblock work. Not first-pass decomposition.
|
|
4
4
|
argument-hint: "[mode: decompose|reslice|repair|reorder|split|unblock|course-correct|revise]"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: devrites-plan-drafter
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-plan: (re)plan an active feature
|
|
@@ -3,6 +3,7 @@ name: rite-polish
|
|
|
3
3
|
description: Polish the active feature before review: code always, UI when touched. Use when the user says "polish this", "finish before review", "normalize the UI", or "make it bolder/quieter". Not for repo-wide refactors.
|
|
4
4
|
argument-hint: "[target | bolder | quieter | distill | harden | normalize-only]"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: none
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-polish: finish before review
|
|
@@ -3,6 +3,7 @@ name: rite-pov
|
|
|
3
3
|
description: Project-grounded verdict for adopting, switching, rejecting, or revisiting a named external technology, library, platform, CVE, or pattern. Use when deciding whether this project should commit to an outside option.
|
|
4
4
|
argument-hint: "[candidate/link/question]"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: none
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-pov: project-grounded external verdict
|
|
@@ -4,6 +4,7 @@ description: Explicit utility for resolving GitHub PR review feedback.
|
|
|
4
4
|
argument-hint: "[PR number|thread URL|blank for current branch]"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
disable-model-invocation: true
|
|
7
|
+
required-agent-roles: none
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# /rite-pr-feedback: resolve PR review threads
|
|
@@ -3,6 +3,7 @@ name: rite-pressure-test
|
|
|
3
3
|
description: Pressure-test a rough/vague idea: ideate, explore 3-5 approaches, radically different shapes, diverge then converge on direction before spec. Not for writing spec.
|
|
4
4
|
argument-hint: "[rough idea or plan to stress-test]"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: none
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-pressure-test: diverge then converge
|
|
@@ -4,6 +4,7 @@ description: User-invoked throwaway prototype for one logic or UI design questio
|
|
|
4
4
|
user-invocable: true
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
argument-hint: "[the question the prototype is answering]"
|
|
7
|
+
required-agent-roles: none
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# /rite-prototype: answer one question with throwaway code
|
|
@@ -3,6 +3,7 @@ name: rite-prove
|
|
|
3
3
|
description: Prove a completed feature with tests and the full test suite, build/typecheck/lint, end-to-end/browser evidence, screenshots, commands, and outputs for seal. Not for single-slice proof.
|
|
4
4
|
argument-hint: "[feature-slug]"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: devrites-proof-runner
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-prove: prove the completed feature
|
|
@@ -3,6 +3,7 @@ name: rite-quick
|
|
|
3
3
|
description: Express lane for a small reversible change: typo/copy/config, rate-limit constant, error message, local variable rename, feature flag, README link, one-file/function fix.
|
|
4
4
|
argument-hint: "<what to change>"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: none
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-quick: express lane for small changes
|
|
@@ -4,6 +4,7 @@ description: User-invoked resume verb for answering, dropping, or batch-resolvin
|
|
|
4
4
|
argument-hint: "<qid> \"<answer>\" | --drop <qid> [\"<reason>\"] | --batch <path-to-yaml>"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
disable-model-invocation: true
|
|
7
|
+
required-agent-roles: none
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# /rite-resolve: answer the human gate
|
|
@@ -3,6 +3,7 @@ name: rite-review
|
|
|
3
3
|
description: Review polished feature diff for correctness, readability, architecture, security, tests proving acceptance, Critical/Important findings, and quality dimensions before seal.
|
|
4
4
|
argument-hint: "[scope: slice N | feature] [--full]"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: devrites-spec-reviewer, devrites-code-reviewer
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-review: feature-scoped review
|
|
@@ -3,6 +3,7 @@ name: rite-seal
|
|
|
3
3
|
description: Decide GO / NO-GO readiness on the active feature. Use when the user asks "seal this", "GO / NO-GO", "decide if we can ship", "can we ship", or "safe to merge". Not for commit/push/tag/close; use /rite-ship.
|
|
4
4
|
argument-hint: "[feature-slug] [--full]"
|
|
5
5
|
user-invocable: true
|
|
6
|
+
required-agent-roles: devrites-test-analyst
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /rite-seal: GO / NO-GO
|