devrites 2.4.0 → 2.5.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.
Files changed (56) hide show
  1. package/CHANGELOG.md +22 -2
  2. package/README.md +1 -1
  3. package/install.sh +31 -2
  4. package/pack/.claude/agents/devrites-security-auditor.md +6 -10
  5. package/pack/.claude/rules/agents.md +3 -2
  6. package/pack/.claude/rules/core.md +1 -1
  7. package/pack/.claude/rules/prose-style.md +1 -1
  8. package/pack/.claude/skills/devrites-api-interface/SKILL.md +6 -7
  9. package/pack/.claude/skills/devrites-audit/SKILL.md +2 -2
  10. package/pack/.claude/skills/devrites-browser-proof/SKILL.md +3 -3
  11. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +1 -1
  12. package/pack/.claude/skills/devrites-doubt/SKILL.md +1 -1
  13. package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +1 -1
  14. package/pack/.claude/skills/devrites-frontend-craft/reference/shape.md +1 -1
  15. package/pack/.claude/skills/devrites-interview/SKILL.md +1 -1
  16. package/pack/.claude/skills/{rite-seal → devrites-lib}/reference/parallel-dispatch.md +19 -7
  17. package/pack/.claude/skills/devrites-lib/scripts/doubt-coverage.sh +35 -15
  18. package/pack/.claude/skills/devrites-lib/scripts/rites.sh +41 -0
  19. package/pack/.claude/skills/devrites-prose-craft/SKILL.md +1 -1
  20. package/pack/.claude/skills/devrites-refresh-indexes/SKILL.md +1 -1
  21. package/pack/.claude/skills/devrites-source-driven/SKILL.md +1 -1
  22. package/pack/.claude/skills/devrites-ux-shape/SKILL.md +1 -1
  23. package/pack/.claude/skills/rite/SKILL.md +7 -25
  24. package/pack/.claude/skills/rite/reference/menu.md +10 -3
  25. package/pack/.claude/skills/rite-adopt/SKILL.md +1 -1
  26. package/pack/.claude/skills/rite-autocomplete/SKILL.md +1 -1
  27. package/pack/.claude/skills/rite-build/SKILL.md +56 -50
  28. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +7 -3
  29. package/pack/.claude/skills/rite-define/SKILL.md +1 -1
  30. package/pack/.claude/skills/rite-doctor/SKILL.md +1 -1
  31. package/pack/.claude/skills/rite-frame/SKILL.md +1 -1
  32. package/pack/.claude/skills/rite-handoff/SKILL.md +4 -4
  33. package/pack/.claude/skills/rite-learn/SKILL.md +1 -1
  34. package/pack/.claude/skills/rite-plan/SKILL.md +5 -1
  35. package/pack/.claude/skills/rite-polish/SKILL.md +1 -1
  36. package/pack/.claude/skills/rite-polish/reference/code.md +4 -0
  37. package/pack/.claude/skills/rite-pressure-test/SKILL.md +3 -2
  38. package/pack/.claude/skills/rite-prototype/SKILL.md +5 -3
  39. package/pack/.claude/skills/rite-prove/SKILL.md +1 -1
  40. package/pack/.claude/skills/rite-quick/SKILL.md +1 -1
  41. package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +3 -2
  42. package/pack/.claude/skills/rite-review/SKILL.md +4 -4
  43. package/pack/.claude/skills/rite-review/reference/cognitive-load.md +4 -2
  44. package/pack/.claude/skills/rite-review/reference/five-axis-review.md +1 -1
  45. package/pack/.claude/skills/rite-review/reference/security-review.md +5 -0
  46. package/pack/.claude/skills/rite-seal/SKILL.md +18 -12
  47. package/pack/.claude/skills/rite-seal/reference/go-no-go.md +18 -2
  48. package/pack/.claude/skills/rite-ship/SKILL.md +1 -1
  49. package/pack/.claude/skills/rite-spec/SKILL.md +21 -2
  50. package/pack/.claude/skills/rite-spec/reference/state-workspace.md +12 -4
  51. package/pack/.claude/skills/rite-status/SKILL.md +1 -1
  52. package/pack/.claude/skills/rite-temper/SKILL.md +1 -1
  53. package/pack/.claude/skills/rite-vet/SKILL.md +1 -1
  54. package/pack/.claude/skills/rite-zoom-out/SKILL.md +3 -2
  55. package/package.json +1 -1
  56. package/pack/.claude/skills/rite-review/reference/parallel-dispatch.md +0 -62
package/CHANGELOG.md CHANGED
@@ -2,11 +2,31 @@
2
2
 
3
3
  All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
4
4
 
5
- ## [2.4.0](https://github.com/ViktorsBaikers/DevRites/compare/v2.3.0...v2.4.0) (2026-06-27)
5
+ ## [2.5.1](https://github.com/ViktorsBaikers/DevRites/compare/v2.5.0...v2.5.1) (2026-06-28)
6
+
7
+ ### Fixed
8
+
9
+ * **rite:** ask HITL build gaps inline instead of deferring to resolve ([33266f1](https://github.com/ViktorsBaikers/DevRites/commit/33266f19d9ad30f53fc8ef267f486a5562be61c7))
10
+
11
+ ## [2.5.0](https://github.com/ViktorsBaikers/DevRites/compare/v2.4.0...v2.5.0) (2026-06-28)
12
+
13
+ ### Added
14
+
15
+ * **installer:** prune files dropped from the pack on update ([830352a](https://github.com/ViktorsBaikers/DevRites/commit/830352ae19b2726cadd627ab7ca4f12b1b85c7fc))
16
+
17
+ ### Fixed
18
+
19
+ * **devrites:** close skill-pack SSOT drift + consolidate review dispatch ([649db40](https://github.com/ViktorsBaikers/DevRites/commit/649db4040a120d04c35e91b8f69d51f610df9a5f))
20
+
21
+ ## [2.4.0](https://github.com/ViktorsBaikers/DevRites/compare/v2.3.0...v2.4.0) (2026-06-28)
6
22
 
7
23
  ### Added
8
24
 
9
- * **devrites:** enforce the doubt gate from invocation through seal ([0397cca](https://github.com/ViktorsBaikers/DevRites/commit/0397cca2158ed1e798c29122485d4e2b69ea4f80))
25
+ * **devrites:** enforce the doubt gate from invocation through seal ([6ff29d0](https://github.com/ViktorsBaikers/DevRites/commit/6ff29d0caa3384d6ba85f480369d0fb01d80fad1))
26
+
27
+ ### Fixed
28
+
29
+ * **devrites:** calibrate doubt-coverage and close per-slice skip ([5bc09eb](https://github.com/ViktorsBaikers/DevRites/commit/5bc09eb94062f728bd855a2a581784e4e1197522))
10
30
 
11
31
  ## [2.3.0](https://github.com/ViktorsBaikers/DevRites/compare/v2.2.0...v2.3.0) (2026-06-23)
12
32
 
package/README.md CHANGED
@@ -101,7 +101,7 @@ Full diagram set (lifecycle, polish orchestrator, review fan-out, debug loop,
101
101
  rules carrier, workspace state, namespace map) →
102
102
  [`docs/flow.md`](docs/flow.md).
103
103
 
104
- **Status:** [`v2.4.0`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v2.4.0) — see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
104
+ **Status:** [`v2.5.1`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v2.5.1) — see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
105
105
 
106
106
  ## Contents
107
107
 
package/install.sh CHANGED
@@ -162,7 +162,7 @@ mkdir -p "$TMP_GEN_DIR"
162
162
  cleanup() { rm -f "$MANIFEST_TMP"; rm -rf "$TMP_GEN_DIR"; }
163
163
  trap cleanup EXIT
164
164
 
165
- N_INSTALL=0; N_OVERWRITE=0; N_SKIP=0
165
+ N_INSTALL=0; N_OVERWRITE=0; N_SKIP=0; N_PRUNE=0
166
166
 
167
167
  # install_file SRC RELDEST — copy one file, honoring conflict + manifest rules.
168
168
  install_file() {
@@ -325,6 +325,35 @@ case "$ALIAS_MODE" in
325
325
  esac
326
326
  DR_INSTALL_FLAGS="$(printf '%s' "$DR_INSTALL_FLAGS" | sed 's/^ //')"
327
327
 
328
+ # ---- prune files dropped since the previous install ----------------------
329
+ # install_file only adds/overwrites; a file the prior manifest tracked but the
330
+ # current pack no longer ships would orphan on an in-place update (the path
331
+ # update.sh takes: download release → re-run install.sh --force). Remove
332
+ # exactly those: managed paths only (listed in the OLD manifest, absent from the
333
+ # new one), never unmanaged user files and never .devrites/ runtime state.
334
+ if [ -f "$PREV_MANIFEST" ]; then
335
+ while IFS= read -r _rel; do
336
+ case "$_rel" in ''|\#*) continue ;; esac # skip comments + blank lines
337
+ case "$_rel" in .devrites/*) continue ;; esac # never touch runtime state
338
+ grep -Fxq -- "$_rel" "$MANIFEST_TMP" && continue # still shipped → keep
339
+ _dead="$TARGET/$_rel"
340
+ [ -e "$_dead" ] || continue # already gone
341
+ if [ "$DRYRUN" -eq 1 ]; then
342
+ dr_say " [prune] $_rel ${DR_Y}(dropped from pack)${DR_R}"
343
+ else
344
+ rm -f "$_dead"
345
+ # tidy now-empty parent dirs, bounded strictly below .claude/
346
+ _d="$(dirname "$_dead")"
347
+ while [ "$_d" != "$TARGET/.claude" ] && [ "$_d" != "$TARGET" ] && [ "$_d" != "/" ]; do
348
+ rmdir "$_d" 2>/dev/null || break
349
+ _d="$(dirname "$_d")"
350
+ done
351
+ dr_say " [prune] $_rel"
352
+ fi
353
+ N_PRUNE=$((N_PRUNE+1))
354
+ done < "$PREV_MANIFEST"
355
+ fi
356
+
328
357
  # ---- write manifest ------------------------------------------------------
329
358
  if [ "$DRYRUN" -eq 0 ]; then
330
359
  mkdir -p "$TARGET/.claude"
@@ -340,7 +369,7 @@ fi
340
369
  # ---- summary -------------------------------------------------------------
341
370
  dr_say ""
342
371
  dr_ok "DevRites $([ "$DRYRUN" -eq 1 ] && echo 'plan complete (dry run)' || echo installed)"
343
- dr_say " installed: $N_INSTALL overwritten: $N_OVERWRITE skipped(conflict): $N_SKIP"
372
+ dr_say " installed: $N_INSTALL overwritten: $N_OVERWRITE skipped(conflict): $N_SKIP pruned: $N_PRUNE"
344
373
  dr_say ""
345
374
  dr_say "${DR_B}Commands:${DR_R} /rite /rite-spec /rite-define /rite-plan /rite-build /rite-prove /rite-polish /rite-review /rite-seal /rite-status"
346
375
  dr_say "${DR_B}Utilities:${DR_R} /rite-pressure-test /rite-zoom-out /rite-prototype /rite-handoff"
@@ -20,16 +20,12 @@ Workspace `.devrites/work/<slug>/`: read `spec.md` (data model / API / affected
20
20
  `decisions.md`, `touched-files.md`. Run `git diff` and read the touched files.
21
21
 
22
22
  ## Audit (feature scope, OWASP-oriented)
23
- - **Injection**parameterized queries; no string-built SQL/shell/HTML; output encoding.
24
- - **Access control** — server-side authz on every sensitive action; no trusting
25
- client-supplied IDs/roles; no IDOR.
26
- - **Auth / session / secrets** — secure handling; nothing sensitive in code, logs, or
27
- responses.
28
- - **Sensitive data** — least exposure; encryption where required; PII not logged.
29
- - **SSRF / outbound** — URL allowlist/validation; timeouts; no untrusted reflection.
30
- - **Misconfiguration** — safe defaults, debug off, CORS scoped, headers per project.
31
- - **Dependencies** — new/updated packages free of known-vuln versions.
32
- - **Deserialization** of untrusted data.
23
+ Walk the **single-sourced OWASP-web checklist** — injection, access control / IDOR, auth /
24
+ session / secrets, sensitive-data exposure, SSRF / outbound, misconfiguration, vulnerable
25
+ dependencies, unsafe deserialization — in
26
+ [`../skills/rite-review/reference/security-review.md`](../skills/rite-review/reference/security-review.md).
27
+ Apply each against the diff adversarially; the checklist is the *what*, this agent is the
28
+ independent *who*.
33
29
 
34
30
  ## AI / LLM surface (only when the feature calls a model / builds an agent / does RAG / exposes tool-use)
35
31
  Apply the OWASP LLM Top 10 (`.claude/rules/security.md` § AI / LLM features):
@@ -90,8 +90,9 @@ The prefix mirrors visibility:
90
90
  names (`prototype`, `handoff`, `diagnose`, etc.) — peer skill packs may
91
91
  collide on the bare names internally even though these never appear in the
92
92
  user's slash menu. Parallel reviewer fan-out at `/rite-seal` is no longer
93
- a skill — it lives as a reference file
94
- (`.claude/skills/rite-seal/reference/parallel-dispatch.md`).
93
+ a skill — it lives as a shared reference file
94
+ (`.claude/skills/devrites-lib/reference/parallel-dispatch.md`), pointed at by both
95
+ `/rite-review` and `/rite-seal`.
95
96
 
96
97
  The `/rite` menu carries the routing previously held by `devrites-selector`, which
97
98
  has been removed. `user-invocable:` in each `SKILL.md` is the source of truth; the
@@ -1,7 +1,7 @@
1
1
  # DevRites core rules — always-on
2
2
 
3
3
  The minimal always-on subset of the DevRites engineering rules. DevRites
4
- `rite-*` skills Read `.claude/rules/core.md` as their first step; the other 20
4
+ `rite-*` skills Read `.claude/rules/core.md` as their first step; the other 22
5
5
  rule files in this directory load on demand by the phase that needs them (see
6
6
  `README.md` for the index).
7
7
 
@@ -31,7 +31,7 @@ means killing filler; in technical writing it means keeping the precise list.
31
31
  | False binary contrast — "It's not X, it's Y", "The question isn't X. It's Y", "not just X but Y" | State Y directly. Drop the negation. |
32
32
  | Fake profundity — "Let that sink in", "This is the deepest problem", "make no mistake" | Show the thing; trust the reader to weigh it. |
33
33
  | Vague declaratives — "The implications are significant", "the reasons are structural" | Name the specific implication or reason. |
34
- | Marketing adjectives on code/work — "robust", "scalable", "seamless", "production-ready", "comprehensive solution" | Say what it does and what proves it. |
34
+ | Marketing adjectives *selling* the work — "a robust, scalable, seamless, production-ready solution" | Say what it does and what proves it. (Calibrated: "robust" / "scalable" / "comprehensive" are legitimate in a *precise technical claim* — "robust to a dropped connection, see `evidence.md`" — only slop when they sell. The canonical word-by-word tiering is `devrites-prose-craft/reference/banned-phrases.md` § AI vocabulary.) |
35
35
  | Hedging stacks — "it's important to note that, generally, in most cases" | Make the claim, or cut it. |
36
36
  | False agency — "the data tells us", "the complaint becomes a fix", "the decision emerges" | Name who did it. "The grader reads X and returns Y." |
37
37
  | Meta-narration — "In this section we'll…", "Let me walk you through…", "as we'll see" | Let the text move; delete the announcement. |
@@ -35,11 +35,10 @@ contract. Neither side blocks on the other.
35
35
 
36
36
  ## Doubt the contract
37
37
  Before standing the interface, run `devrites-doubt` — boundary decisions are exactly the
38
- non-trivial kind worth an adversarial check. Record the contract + rationale in
39
- `decisions.md`.
38
+ non-trivial kind worth an adversarial check.
40
39
 
41
- ## Gotchas
42
- - Be conservative you can add to a contract later, but removing or changing a field breaks every consumer.
43
- - Validate at the boundary; never trust caller-supplied IDs, roles, or prices.
44
- - A breaking change to an existing consumer is a user decision (and a `drift.md` event if unplanned), not a silent edit.
45
- - Match the project's existing endpoint/module conventions; a competing convention is a tax, not a design.
40
+ ## Done when
41
+ The contract is complete only when **every** field carries a type + optionality + unit,
42
+ **every** success and error status code is enumerated with its error-body shape, the
43
+ `devrites-doubt` verdict is accept, and the contract + rationale are recorded in
44
+ `decisions.md`. A contract that pins only the happy-path shape is not done.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: devrites-audit
3
- description: Read-only audit dispatch for the active feature on the requested axis — security (OWASP, trust boundary, secrets), perf (measure-first, N+1, CWV), or simplify (Chesterton's Fence, deletion test). Use when the user says "security review", "is this safe", "is this fast enough", "perf check", "N+1", "simplify this", "Chesterton's Fence". Not for write actions or whole-project audits.
3
+ description: Audit the active feature read-only on one axis — security (OWASP, trust boundary, secrets), perf (measure-first, N+1, CWV), or simplify (Chesterton's Fence, deletion test). Use when the user says "security review", "perf check", or "simplify this". Not for write actions or whole-project audits.
4
4
  argument-hint: "<security | perf | simplify>"
5
5
  user-invocable: false
6
6
  ---
@@ -52,7 +52,7 @@ reconciles.
52
52
 
53
53
  Rules for the dispatch:
54
54
 
55
- - **One subagent per call.** This skill is not a fan-out; multi-axis fan-out is `/rite-seal`'s job (see `.claude/skills/rite-seal/reference/parallel-dispatch.md`).
55
+ - **One subagent per call.** This skill is not a fan-out; multi-axis fan-out is `/rite-seal`'s job (see `.claude/skills/devrites-lib/reference/parallel-dispatch.md`).
56
56
  - **No author context.** Do not pass the caller's analysis or framing of the change to the subagent — fresh, adversarial read is the point.
57
57
  - **No cross-pollination.** If the caller wants more than one axis, dispatch each axis in its own `Task` call in a single message so the runtime parallelizes; each subagent gets only its own brief.
58
58
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: devrites-browser-proof
3
- description: Prove UI behavior via the browser-proof ladder — browser-harness → Chrome DevTools MCP → `/run`+`/verify` → project E2E → manual — recording routes, viewports, screenshots, console, network, interactions, design-reference match to `browser-evidence.md`. Use when the user says "check the UI in browser", "screenshot this", "prove it renders". Not for backend-only features.
3
+ description: Prove UI behavior in a real browser, capturing screenshots, console, network, interactions, and Core Web Vitals to `browser-evidence.md`. Use when the user says "check the UI in browser", "screenshot this", "prove it renders", or a Core Web Vital / perf budget needs measuring. Not for backend-only features.
4
4
  user-invocable: false
5
5
  ---
6
6
 
@@ -46,7 +46,7 @@ reads it in Measured mode) and note the tool + route in `browser-evidence.md`. N
46
46
  a lab value as a field value or vice versa.
47
47
 
48
48
  ## Evidence schema → `browser-evidence.md`
49
- Tooling used · route(s) · viewports (375/768/1280) · screenshot paths **opened and
49
+ Tooling used · route(s) · viewports (320/768/1024/1440 — the canonical responsive set; see [`devrites-frontend-craft/reference/quality-standards.md`](../devrites-frontend-craft/reference/quality-standards.md)) · screenshot paths **opened and
50
50
  described** · console errors/warnings · network failures · interaction path tested ·
51
51
  accessibility basics · responsive checks · **CWV capture** (tool + route + each
52
52
  source-labeled value, or `pending (manual)` + the command) · **Visual Verdict** (the
@@ -67,7 +67,7 @@ error / success / disabled / long-content), plus key **design-reference** diffs
67
67
  not the markup:
68
68
 
69
69
  ```markdown
70
- ## Visual Verdict — <route / component> (viewport: 375 / 1280)
70
+ ## Visual Verdict — <route / component> (viewport: 320 / 1440)
71
71
  | Criterion (source) | Expected | Observed (screenshot) | Verdict | Severity |
72
72
  |---|---|---|---|---|
73
73
  | empty state (brief) | welcoming copy + primary action | renders, copy present | PASS | — |
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: devrites-debug-recovery
3
- description: Debug systematically when tests, builds, or runtime/browser checks fail — deterministic feedback loop, reproduce, 3-5 ranked hypotheses, instrument, fix root cause, regression-test. Use when the user says "debug this", "why is it failing", "it broke", "the build is red", "the tests fail". Not for code review or flaky tests (fix the flake first).
3
+ description: Debug systematically when tests, builds, or runtime/browser checks fail — reproduce, rank hypotheses, fix the root cause, regression-test. Use when the user says "debug this", "the build is red", or "the tests fail". Not for code review or flaky tests (fix the flake first).
4
4
  user-invocable: false
5
5
  ---
6
6
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: devrites-doubt
3
- description: Stress-test a single non-trivial decision via CLAIM EXTRACT → DOUBT → RECONCILE → STOP with `devrites-doubt-reviewer` for an independent take. Use when the user says "are we sure", "double-check this", "what could go wrong", or a boundary / data-model / auth / public-API / migration change is about to commit. Not for post-merge review or trivial choices.
3
+ description: Stress-test a single non-trivial decision with an adversarial `devrites-doubt-reviewer` for an independent take. Use when the user says "are we sure", "double-check this", "what could go wrong", or a boundary / data-model / auth / public-API / migration change is about to commit. Not for post-merge review or trivial choices.
4
4
  user-invocable: false
5
5
  ---
6
6
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: devrites-frontend-craft
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", "ship-quality frontend", "design system", "a11y", or `/rite-build` detects UI. Not for polishing a built feature or design exploration.
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
5
  ---
6
6
 
@@ -25,7 +25,7 @@ brief inline.
25
25
  - success
26
26
  - disabled / read-only / no-permission
27
27
  - long content / overflow / many items
28
- 5. **Responsive** — how it reflows from small (375) to large (1280). What collapses,
28
+ 5. **Responsive** — how it reflows from small (320) to large (1440). What collapses,
29
29
  stacks, hides, or scrolls.
30
30
  6. **Accessibility** — focus order, labels, contrast, keyboard operability, semantics.
31
31
  7. **Interaction model** — what's inline vs. navigated vs. (rarely) a modal; optimistic
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: devrites-interview
3
- description: One-question-at-a-time interview to extract what the user wants — each question carries a best-guess + structured options; stop at ~95% confidence. Use when the user says "interview me", "grill me", "I'm not sure what I want", or `/rite-spec` / `/rite-define` flags the ask as underspecified. Not for casual clarification or ideation (use `rite-pressure-test`).
3
+ description: Interview the user one question at a time to extract what they want. Use when the user says "interview me", "I'm not sure what I want", or `/rite-spec` / `/rite-define` flags the ask as underspecified. Not for casual clarification or ideation (use `/rite-pressure-test`).
4
4
  user-invocable: false
5
5
  ---
6
6
 
@@ -1,17 +1,26 @@
1
1
  # Parallel review dispatch
2
2
 
3
- How `/rite-review` and `/rite-seal` fan out the fresh-context review subagents under `.claude/agents/`. Loaded on demand by the calling skill — not a skill itself.
3
+ How `/rite-review` and `/rite-seal` fan out the fresh-context review subagents under
4
+ `.claude/agents/`. The **single source** for the dispatch + reconciliation contract — loaded on
5
+ demand by the calling skill (each points here); not a skill itself.
4
6
 
5
- DevRites ships ten fresh-context review subagents under `.claude/agents/` (plus the write-capable `devrites-slice-wright`, which is not a reviewer). Eight are post-build reviewers used at the seal / multi-axis review; the other two are gate-specific and *not* part of the seal fan-out — `devrites-strategy-reviewer` is **pre-plan** (it judges the spec for `/rite-temper`) and `devrites-plan-reviewer` is **pre-build** (it judges the plan for `/rite-vet`). The seal and the multi-axis review need most of the post-build reviewers running **at the same time**, on the same workspace + diff, so the verdicts don't contaminate each other.
7
+ DevRites ships ten fresh-context review subagents under `.claude/agents/` (plus the
8
+ write-capable `devrites-slice-wright`, which is not a reviewer). Eight are post-build reviewers
9
+ used at the seal / multi-axis review; the other two are gate-specific and *not* part of this
10
+ fan-out — `devrites-strategy-reviewer` is **pre-plan** (it judges the spec for `/rite-temper`)
11
+ and `devrites-plan-reviewer` is **pre-build** (it judges the plan for `/rite-vet`). The seal and
12
+ the multi-axis review need most of the post-build reviewers running **at the same time**, on the
13
+ same workspace + diff, so the verdicts don't contaminate each other.
6
14
 
7
- Pattern: delegate to specialized agents with isolated context, brief each one precisely, run them concurrently, reconcile on return.
15
+ Pattern: delegate to specialized agents with isolated context, brief each one precisely, run
16
+ them concurrently, reconcile on return.
8
17
 
9
18
  ## When to use which subagent
10
19
 
11
20
  | Subagent | Always | Conditional |
12
21
  |---|---|---|
13
22
  | `devrites-spec-reviewer` | `/rite-review` Spec axis; `/rite-seal` | — |
14
- | `devrites-code-reviewer` | `/rite-review` Standards axis; `/rite-seal` | — |
23
+ | `devrites-code-reviewer` | `/rite-review` Code-review axis; `/rite-seal` | — |
15
24
  | `devrites-test-analyst` | `/rite-seal` | — |
16
25
  | `devrites-frontend-reviewer` | — | UI files in the diff |
17
26
  | `devrites-security-auditor` | — | input / auth / data / external integrations / secrets in scope |
@@ -19,6 +28,9 @@ Pattern: delegate to specialized agents with isolated context, brief each one pr
19
28
  | `devrites-doubt-reviewer` | — | a non-trivial decision is being stood up (called from `devrites-doubt`) |
20
29
  | `devrites-simplifier-reviewer` | — | `/rite-polish` Phase 1 audit (called from `devrites-audit simplify`) |
21
30
 
31
+ One entity, one name: the `devrites-code-reviewer`'s axis is the **Code-review axis** everywhere
32
+ (at both `/rite-review` and `/rite-seal`) — don't rename it per caller.
33
+
22
34
  ## Dispatch shape
23
35
 
24
36
  For each chosen subagent, the caller uses the `Task` tool with this prompt shape:
@@ -58,12 +70,12 @@ Rules:
58
70
 
59
71
  When the subagents return:
60
72
 
61
- 1. **Quote verbatim.** Place each subagent's findings under its own `## <axis>` heading in `review.md` / `seal.md`. Do not merge, re-rank, or summarize.
62
- 2. **Surface contradictions explicitly.** "Spec axis says complete, Standards axis says untestable" is a finding, not noise. The caller decides at the gate.
73
+ 1. **Quote verbatim.** Place each subagent's findings under its own `## <axis>` heading in `review.md` / `seal.md`. Do not merge, re-rank, or summarize. `devrites-code-reviewer` runs its **full** documented discipline (tests-first, correctness, readability, architecture, maintainability, standards); the inline lead **reconciles** the returned reports — it does not re-run those same axes itself.
74
+ 2. **Surface contradictions explicitly.** "Spec axis says complete, Code-review axis says untestable" is a finding, not noise. The caller decides at the gate.
63
75
  3. **Severity is the gate, not a score.** Sum the labels (`Critical / Important / Suggestion / Nit / FYI`) and apply the caller's gate (`/rite-seal` blocks on `Critical == 0`; `/rite-review` reports counts).
64
76
  4. **One scale.** All subagents use the same five-label scale (Critical / Important / Suggestion / Nit / FYI). Reject any subagent output that invents its own. **Exception:** `devrites-simplifier-reviewer` deliberately emits only Suggestion / Nit / FYI (it is non-blocking by design) — that is a valid subset of the scale, not an invented one; do not reject it during reconciliation.
65
77
  5. **Consensus roll-up (after the verbatim per-axis record).** Keep every axis's findings verbatim under its `## <axis>` heading (above), then add one deduped roll-up the gate reads: where **≥2 axes flag the same `file:line`**, raise it to the top and mark it *consensus* — independent corroboration raises confidence. A lone low-confidence finding with no `file:line` or evidence anchor drops out of the roll-up (it stays in its per-axis section). The roll-up reduces noise without hiding any axis — the verbatim sections are the audit trail; the roll-up is the actionable summary the gate acts on.
66
78
 
67
79
  ## Fallback
68
80
 
69
- If the `Task` tool is unavailable in the current environment, the caller runs the relevant subagent discipline **inline** in its own context and flags the result as a fallback (not an independent review). The seal weighs the fallback differently — see [`./risk-and-rollback.md`](./risk-and-rollback.md).
81
+ If the `Task` tool is unavailable in the current environment, the caller runs the relevant subagent discipline **inline** in its own context and flags the result as a fallback (not an independent review). The seal weighs the fallback differently — see [`../../rite-seal/reference/risk-and-rollback.md`](../../rite-seal/reference/risk-and-rollback.md).
@@ -1,25 +1,47 @@
1
1
  #!/usr/bin/env bash
2
2
  # doubt-coverage.sh — did the build doubt the decisions it stood?
3
- # Deterministic, zero-token. Reads the append-only footprint log the orchestrator writes at
4
- # /rite-build step 4 (one `doubt` line per devrites-doubt dispatch) and reports doubt coverage
5
- # against wright dispatches. It CANNOT prove a 1:1 verdict-per-decision match `Decisions stood`
6
- # is not a structured ledger so it proves the cheap, unambiguous half: a feature that ran the
7
- # wright but never once doubted a decision. The seal's prose gate (step 4a) + the reviewer fan-out
8
- # judge severity against decisions.md.
3
+ # Deterministic, zero-token. Two checks, both sourced from records /rite-build writes:
4
+ # 1. decisions.md `## Decisions stood` each stood decision ends `— doubt: <verdict>`; a
5
+ # `doubt: MISSING` token means the decision was recorded but never doubted (the unambiguous
6
+ # skipcaught even when only some slices skipped doubt).
7
+ # 2. footprint.log `doubt` lines vs `wright` lines; zero doubt across any wright run is the
8
+ # coarse "no doubt ran at all" signal the seal then verifies against decisions.md.
9
+ # It cannot prove a 1:1 verdict-per-decision match beyond what the build recorded — the seal's
10
+ # prose gate (step 4a) + the reviewer fan-out judge the rest.
9
11
  #
10
12
  # doubt-coverage.sh <slug>
11
13
  #
12
- # Exit: 0 = doubt dispatches present, or nothing to assess (no log / no wright) → pass.
13
- # 1 = wright dispatch(es) logged but ZERO doubt dispatches coverage gap. The seal treats
14
- # it as a finding (Important; NO-GO when decisions.md records an irreversible-risk
15
- # decision — auth / public-API / migration — with no verdict).
14
+ # Exit: 0 = doubt covered, or not assessable (no log / no wright / inline build) → pass.
15
+ # 1 = footprint shows wright dispatch(es) but ZERO doubt → no doubt ran at all; a prompt to
16
+ # VERIFY against decisions.md (every-slice-trivial passes; a skipped decision is a finding).
16
17
  # 2 = usage.
18
+ # 3 = decisions.md records a stood decision with `doubt: MISSING` → doubt was definitively
19
+ # skipped for a decision on record. The seal treats it as a finding.
17
20
  set -u
18
21
 
19
22
  slug="${1:-}"
20
23
  [ -n "$slug" ] || { echo "usage: doubt-coverage.sh <slug>" >&2; exit 2; }
21
24
 
22
- log=".devrites/work/$slug/footprint.log"
25
+ dir=".devrites/work/$slug"
26
+ log="$dir/footprint.log"
27
+ dec="$dir/decisions.md"
28
+
29
+ # A recorded stood decision that was never doubted is the unambiguous failure — check it first,
30
+ # and on every path (it survives the inline-build case below, where the footprint heuristic can't).
31
+ if [ -f "$dec" ] && grep -q 'doubt: MISSING' "$dec"; then
32
+ echo "doubt-coverage: SKIPPED — a '## Decisions stood' entry in decisions.md has doubt: MISSING."
33
+ echo "A decision was stood and recorded but never doubted. Re-dispatch doubt or escalate."
34
+ exit 3
35
+ fi
36
+
37
+ # Inline build (Task tool unavailable): the wright + doubt ran in-context, dispatching nothing,
38
+ # so the footprint heuristic does not apply — the decisions.md check above is the assessment.
39
+ if [ -f "$dir/.reconcile-inline" ]; then
40
+ echo "doubt-coverage: inline build (.reconcile-inline) — footprint heuristic n/a; no MISSING"
41
+ echo "verdict recorded. Verify by hand that each stood decision carries a devrites-doubt verdict."
42
+ exit 0
43
+ fi
44
+
23
45
  if [ ! -f "$log" ]; then
24
46
  echo "doubt-coverage: no footprint log — nothing to assess (pass)"
25
47
  exit 0
@@ -27,13 +49,11 @@ fi
27
49
 
28
50
  w=$(awk '$2=="wright"{n++} END{print n+0}' "$log")
29
51
  d=$(awk '$2=="doubt"{n++} END{print n+0}' "$log")
30
-
31
52
  echo "doubt-coverage: $w wright · $d doubt"
32
53
 
33
54
  if [ "$w" -gt 0 ] && [ "$d" -eq 0 ]; then
34
- echo "doubt-coverage: GAP $w wright dispatch(es), 0 doubt dispatches. Either every slice's"
35
- echo "'Decisions stood' was genuinely empty, or step-4 doubt was skipped. Confirm against"
36
- echo "decisions.md before GO."
55
+ echo "doubt-coverage: no doubt dispatched across $w wright run(s). Either every slice's"
56
+ echo "'Decisions stood' was genuinely empty, or doubt was skipped verify against decisions.md."
37
57
  exit 1
38
58
  fi
39
59
  exit 0
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env bash
2
+ # rites.sh — locate and run a devrites-lib helper by name, across install layouts.
3
+ #
4
+ # Usage: rites.sh <name> [args...]
5
+ # <name> = helper basename without extension (preamble, readiness, reconcile,
6
+ # stuck, footprint, test-integrity, progress, conventions, tick-afk, ...).
7
+ #
8
+ # Runs <this-dir>/<name>.sh — or <name>.py via python3 — propagating its exit code
9
+ # unchanged, so callers that read `$?` (readiness/reconcile/test-integrity/tick-afk)
10
+ # keep working. A missing helper, or a .py helper with no python3, prints a degraded
11
+ # note to stderr and exits 0 (degraded-but-continue, the same standing as the inline
12
+ # `|| echo "(... unavailable)"` fallback this replaces).
13
+ #
14
+ # This is the single home for the three-layout script-resolution dance; callers only
15
+ # locate THIS script (one target) and name the helper they want.
16
+ set -u
17
+
18
+ dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" 2>/dev/null && pwd)" || dir="."
19
+ name="${1:-}"
20
+ if [ -z "$name" ]; then
21
+ echo "rites: usage: rites.sh <name> [args...]" >&2
22
+ exit 2
23
+ fi
24
+ shift
25
+
26
+ sh="$dir/$name.sh"
27
+ py="$dir/$name.py"
28
+
29
+ if [ -f "$sh" ]; then
30
+ exec bash "$sh" "$@"
31
+ fi
32
+ if [ -f "$py" ]; then
33
+ if command -v python3 >/dev/null 2>&1; then
34
+ exec python3 "$py" "$@"
35
+ fi
36
+ echo "(devrites helper '$name' needs python3 — skipped)" >&2
37
+ exit 0
38
+ fi
39
+
40
+ echo "(devrites helper '$name' unavailable on this install)" >&2
41
+ exit 0
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: devrites-prose-craft
3
- description: Write the artifacts and chat replies a senior engineer would — direct, specific, human voice not the default LLM tells (filler openers, false contrasts, fake profundity, em-dash tics, hedging). Use when a DevRites phase writes prose (spec.md, plan.md, decisions.md, review.md, seal.md, commit/PR bodies) or composes a user-facing reply, and as the catch pass in /rite-polish. Calibrated for technical writing — keeps precise lists, exact terms, and spec structure. Not for code comments and naming (the build-time anti-slop charter covers those) or UI craft (use devrites-frontend-craft).
3
+ description: Write the artifacts and chat replies a senior engineer would — direct, specific, human voice, with the default LLM tells stripped. Use when a DevRites phase writes prose (spec.md, plan.md, decisions.md, review.md, seal.md, commit/PR bodies) or a user-facing reply, and as the catch pass in /rite-polish. Not for code comments and naming (the build-time anti-slop charter covers those) or UI craft (use devrites-frontend-craft).
4
4
  user-invocable: false
5
5
  ---
6
6
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: devrites-refresh-indexes
3
- description: Keep the optional code-intelligence indexes — codebase-memory-mcp, codegraph, graphify — current after code changes so the next structural lookup reads live code, not a stale graph. Use when the index looks stale (a structural lookup disagrees with the live code), after a large change before a structural query, or the user says "reindex" / "the graph is stale" / "refresh the index". The Stop hook does this automatically; this skill is the manual force + the reference for it. Not for agentmemory (a separate, judgment-based store).
3
+ description: Keep the optional code-intelligence indexes — codebase-memory-mcp, codegraph, graphify — current after code changes so the next structural lookup reads live code. Use when a structural lookup disagrees with the live code, after a large change before a structural query, or the user says "reindex". The Stop hook does this automatically; this skill is the manual force + the reference for it. Not for agentmemory (a separate, judgment-based store).
4
4
  user-invocable: false
5
5
  ---
6
6
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: devrites-source-driven
3
- description: Verify uncertain framework or library behavior against official docs or installed source before relying on it, then record the source in `evidence.md` / `decisions.md`. Use when the user says "check the docs", "is this still the API", "don't guess", "cite the source", "verify this assumption", or build encounters an unfamiliar framework call. Not for project-internal code or trivial stdlib calls.
3
+ description: Verify uncertain framework or library behavior against official docs or installed source before relying on it, then record the source in `evidence.md` / `decisions.md`. Use when the user says "check the docs", "verify this assumption", or build hits an unfamiliar framework call. Not for project-internal code or trivial stdlib calls.
4
4
  user-invocable: false
5
5
  ---
6
6
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: devrites-ux-shape
3
- description: Plan the UX/UI before any code — produce the feature-level `design-brief.md` (design direction, key states, interaction model, visual-direction probe) the build then targets. Use when `/rite-spec` detects UI, or the user says "shape the UX", "plan the UI before coding", "design direction", "what should this look like", or a UI feature needs its look & flow decided up front. Woven into spec/build, not a separate phase. Not for building (use `devrites-frontend-craft`), polishing a built UI (use `/rite-polish`), or throwaway exploration (use `/rite-prototype`).
3
+ description: Plan the UX/UI before any code — produce the feature-level `design-brief.md` the build then targets. Use when `/rite-spec` detects UI, or the user says "shape the UX" or "plan the UI before coding". Not for building (use `devrites-frontend-craft`), polishing a built UI (use `/rite-polish`), or throwaway exploration (use `/rite-prototype`).
4
4
  user-invocable: false
5
5
  ---
6
6
 
@@ -40,6 +40,7 @@ F=.claude/skills/rite-$V/SKILL.md
40
40
  | `ship` | `/rite-ship` | type-GO + commit/push/tag, then archive the task |
41
41
  | `status [slug]` | `/rite-status` | active feature, next action, evidence |
42
42
  | `doctor` | `/rite-doctor` | health check — install integrity, stale ACTIVE, orphaned gates, hook wiring |
43
+ | `learn [--mine \| "<lesson>"]` | `/rite-learn` | review the captured learning ledger → promote recurring lessons to project rules / principles |
43
44
  | `use <slug>` | (inline) | switch the active feature — re-point `.devrites/ACTIVE` |
44
45
  | `resolve <qid> "<answer>"` | `/rite-resolve` | answer a HITL gate |
45
46
  | `prototype [question]` | `/rite-prototype` | throwaway prototype |
@@ -62,8 +63,8 @@ Specialist triggers (model-invoked inside the above):
62
63
  `devrites-source-driven` (uncertain library) · `devrites-doubt` (non-trivial
63
64
  decision) · `devrites-api-interface` (cross-boundary) ·
64
65
  `devrites-audit <security|perf|simplify>` (single-axis review/polish pass) ·
65
- `devrites-debug-recovery` (failures). Parallel reviewer fan-out at seal lives
66
- inline in `/rite-seal` (see its `reference/parallel-dispatch.md`).
66
+ `devrites-debug-recovery` (failures). Parallel reviewer fan-out at seal is a shared
67
+ reference (see [`devrites-lib/reference/parallel-dispatch.md`](../devrites-lib/reference/parallel-dispatch.md)).
67
68
 
68
69
  ## What to output
69
70
 
@@ -96,6 +97,7 @@ SEAL /rite seal ≡ /rite-seal final GO / NO-GO
96
97
  SHIP /rite ship ≡ /rite-ship type-GO + commit/push/tag, then archive + clear ACTIVE
97
98
  STATUS /rite status ≡ /rite-status active feature, next action, evidence, risks
98
99
  DOCTOR /rite doctor ≡ /rite-doctor health check — install · stale ACTIVE · orphaned gates · hook wiring
100
+ LEARN /rite learn ... ≡ /rite-learn review captured lessons → promote to project rules / principles
99
101
  SWITCH /rite use <slug> re-point .devrites/ACTIVE to another feature (inline)
100
102
  RESUME /rite resolve ... ≡ /rite-resolve answer a HITL checkpoint
101
103
  AUTO /rite autocomplete ... ≡ /rite-autocomplete run the whole lifecycle unattended (--ship to push)
@@ -110,26 +112,6 @@ UTILITY /rite frame | prototype | handoff | zoom-out | pressure-test (or
110
112
 
111
113
  ## Core operating rules (every DevRites skill enforces)
112
114
 
113
- The minimal version lives in `.claude/rules/core.md`; DevRites skills Read it as
114
- their first step, and the other rule files load on demand. The rule list:
115
-
116
- 1. **Right step, right time** — smallest relevant workflow; don't load everything.
117
- 2. **No silent assumptions** — surface material assumptions; ask when the
118
- answer changes scope, architecture, data model, UX, security, migration
119
- risk, or acceptance.
120
- 3. **No guessing through confusion** — if requirements / code / tests / docs
121
- conflict, stop, name the conflict, present options, wait for resolution
122
- when the answer changes the product.
123
- 4. **Spec is living, not sacred** — change spec/plan only through the
124
- Spec Drift Guard; never code against a known-wrong plan.
125
- 5. **One slice at a time** — `/rite-build` does one slice then stops.
126
- 6. **Evidence over confidence** — tests, builds, runtime, screenshots beat
127
- assertions; record commands and output.
128
- 7. **Feature scope only** — review / simplify / polish / security stay within
129
- the active feature and touched files.
130
- 8. **Prefer existing conventions** — follow the project's architecture,
131
- components, tokens, tests, and commands.
132
- 9. **Verify uncertain facts at the source** — when framework / library
133
- behaviour matters and isn't certain, check the docs or source and record it.
134
-
135
- Detail in [reference/menu.md](reference/menu.md) when needed.
115
+ The operating rules live in `.claude/rules/core.md`; DevRites skills Read it as
116
+ their first step, and the other rule files load on demand. See
117
+ [`.claude/rules/README.md`](../../rules/README.md) for the full index.
@@ -8,21 +8,28 @@ what each command does or how phases connect.
8
8
  | Phase | Command | Use when |
9
9
  |---|---|---|
10
10
  | Spec | `/rite-spec <feature>` | **Start here.** Investigate deeply → write spec.md. Asks you with options; gathers any design references you attach (optional). |
11
+ | Adopt | `/rite-adopt` | Onboard an existing codebase instead of starting fresh — reverse-derive spec.md + seed the conventions ledger. |
11
12
  | Temper | `/rite-temper` | _Optional, before define._ Strategic review of the spec — scope mode (expand/selective/hold-rigor/reduce) + pre-mortem; hardens the spec. Best on big/risky features; mandatory in `/rite-autocomplete`. |
12
13
  | Plan | `/rite-define` | Turn the approved spec into plan + vertical task slices + state. |
14
+ | Vet | `/rite-vet` | _Optional, before build._ Engineering review of the plan — scope · architecture · tests · perf; hardens the plan. Best on big/risky features; mandatory in `/rite-autocomplete`. |
13
15
  | Re-plan | `/rite-plan` | The active plan is too big, wrong, stale, ambiguous, or blocked. |
14
16
  | Build | `/rite-build` | Implement the next single vertical slice. Stops after one slice. |
15
17
  | Prove | `/rite-prove` | Prove the current scope: tests, build, runtime, browser evidence. |
16
18
  | Polish | `/rite-polish` | Code polish always; UI normalize + ship-quality polish if UI is in scope. Modes: `bolder/quieter/distill/harden/normalize-only`. |
17
19
  | Review | `/rite-review` | Feature-scoped review before sealing. |
18
- | Seal | `/rite-seal` | Final GO / NO-GO decision. |
20
+ | Seal | `/rite-seal` | Final GO / NO-GO decision (no git). |
21
+ | Ship | `/rite-ship` | Type-GO → commit/push/tag, then archive the task + clear ACTIVE. |
19
22
  | Status | `/rite-status` | See where the active feature stands. |
23
+ | Doctor | `/rite-doctor` | Health check — install integrity, stale ACTIVE, orphaned gates, hook wiring. |
24
+ | Learn | `/rite-learn` | Review the captured learning ledger → promote recurring lessons to project rules / principles. |
20
25
 
21
26
  ## Typical orderings
22
27
 
23
28
  - **Every feature**: `/rite-spec` (spec) → *(big feature? `/rite-temper` — strategic review)* →
24
- `/rite-define` (plan) → `/rite-build` ×N (all slices) `/rite-prove` (once all built) →
25
- `/rite-polish` (always: code + UI if UI) → `/rite-review` → `/rite-seal`.
29
+ `/rite-define` (plan) → *(big feature? `/rite-vet` engineering review)*
30
+ `/rite-build` ×N (all slices) → `/rite-prove` (once all built)
31
+ `/rite-polish` (always: code + UI if UI) → `/rite-review` → `/rite-seal` → `/rite-ship`.
32
+ - **Existing codebase**: `/rite-adopt` (onboard → spec.md + conventions) → continue at `/rite-define`.
26
33
  - **Drift mid-build**: stop → drift question → `/rite-plan` (repair) → resume build.
27
34
 
28
35
  ## Rules this menu obeys
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rite-adopt
3
- description: Bring an EXISTING codebase under DevRites — reverse-derive a `spec.md` of current behavior, placement, and architecture, and seed the project conventions ledger from the idioms the code already follows, then hand off to the lifecycle. Use when the user says "adopt this project", "onboard this codebase", "we already have code", "bring this repo into DevRites", or "reverse-engineer a spec from the existing app". Not for a brand-new feature or idea (use `/rite-spec`), planning an approved spec (`/rite-define`), or just mapping unfamiliar code without onboarding it (`/rite-zoom-out`).
3
+ description: Bring an EXISTING codebase under DevRites — reverse-derive a `spec.md` of current behavior, placement, and architecture, and seed the project conventions ledger from the idioms the code already follows, then hand off to the lifecycle. Use when the user says "adopt this project" or "reverse-engineer a spec from the existing app". Not for a brand-new feature or idea (use `/rite-spec`), planning an approved spec (`/rite-define`), or just mapping unfamiliar code without onboarding it (`/rite-zoom-out`).
4
4
  argument-hint: "[path or area to adopt] [+ what you want to build next]"
5
5
  user-invocable: true
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rite-autocomplete
3
- description: Run the entire DevRites lifecycle end-to-end with no per-phase human iteration — spec → temper → define → vet → build×N → prove → polish → review → seal → ship — picking the best option at each soft gate and recording why. A vague prompt triggers an up-front interview, then it runs unattended, pausing only on hard irreversible-risk / blocking / escalating gates or a NO-GO; `--ship` (alias `--yolo`) auto-confirms the final type-GO. Use when the user says "autocomplete", "do the whole thing", "run the full cycle", "one-shot this feature", or "ship it autonomously". Not for a single phase (use the specific `/rite-*` skill) or when the user wants to drive each step.
3
+ description: Run the entire DevRites lifecycle end-to-end, unattended no per-phase human iteration; `--ship` auto-confirms the final gate. Use when the user says "autocomplete", "one-shot this feature", or "ship it autonomously". Not for a single phase (use the specific `/rite-*` skill) or when the user wants to drive each step.
4
4
  argument-hint: "[idea] [--ship|--yolo] [--max-slices N]"
5
5
  user-invocable: true
6
6
  ---