devrites 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +16 -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 +39 -44
  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
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rite-spec
3
- description: Investigate a new feature and write `spec.md` (placement, gaps, design refs, measurable acceptance) under `.devrites/work/<slug>/`. Use when the user says "new feature", "spec this out", "start a project", "I have an idea". Not for planning approved specs (use `/rite-define`) or replanning (use `/rite-plan`).
3
+ description: Investigate a new feature and write `spec.md` (placement, gaps, design refs, measurable acceptance) under `.devrites/work/<slug>/`. Use when the user says "spec out a new feature" or "I have an idea". Not for planning approved specs (use `/rite-define`) or replanning (use `/rite-plan`).
4
4
  argument-hint: "<feature or idea>"
5
5
  user-invocable: true
6
6
  ---
@@ -45,6 +45,25 @@ stay flat `[ACn]` bullets; the grammar is opt-in by rigor, never forced.
45
45
  [ -f "$P" ] || P=pack/.claude/skills/devrites-lib/scripts/preamble.sh
46
46
  [ -f "$P" ] && bash "$P" || echo "(orientation preamble unavailable on this install — read state.md directly to orient)"
47
47
  ```
48
+ 0a. **Brownfield check — onboard before speccing onto un-adopted existing code.** If this is an
49
+ **existing codebase** (real source predating DevRites) that has **never been adopted** — no
50
+ `.devrites/conventions.md`, no prior `.devrites/work` or `.devrites/archive` — the build has no
51
+ conventions ledger to follow and the first slice would guess the project's idioms. Route
52
+ through `/rite-adopt` **first**, carrying `$ARGUMENTS` as its *next objective*: adopt
53
+ reverse-derives the baseline `spec.md`, **seeds the conventions ledger**, and proposes
54
+ principles, so this feature is specced on top of an onboarded project (adopt owns the
55
+ onboarding; `/rite-spec` only detects and routes — no duplicated logic). In **HITL** present a
56
+ ranked option (recommended: *adopt first, then spec this on top*; escape hatch: *spec-only, skip
57
+ onboarding*); in **AFK** (adoption allowed) run `/rite-adopt` first automatically. **Greenfield
58
+ (no pre-existing source) or an already-onboarded project → skip silently** — never block a spec
59
+ for the absence of adoption (the same no-op discipline as the principles gate). Cheap probe:
60
+ ```bash
61
+ if [ ! -f .devrites/conventions.md ] && [ ! -d .devrites/archive ] \
62
+ && [ -z "$(ls .devrites/work 2>/dev/null)" ] \
63
+ && [ -n "$(git ls-files 2>/dev/null | grep -vE '^\.(devrites|claude)/' | head -1)" ]; then
64
+ echo "brownfield, not yet adopted → recommend /rite-adopt first (carry this idea as its next objective)"
65
+ else echo "greenfield or already onboarded → continue spec"; fi
66
+ ```
48
67
  1. **Understand the request** (`$ARGUMENTS`). Restate the goal and the *real problem
49
68
  behind it* in a sentence or two.
50
69
  2. **Investigate deeply** — [investigation](reference/investigation.md). Produce, and
@@ -78,7 +97,7 @@ stay flat `[ACn]` bullets; the grammar is opt-in by rigor, never forced.
78
97
  backend/data/CLI features skip this.
79
98
  4. **Close the gaps with the human.** Turn each material gap/issue into a question — one
80
99
  at a time, **best guess attached**, structured options + escape hatch. (Vague ask →
81
- `devrites-interview`; rough idea → `rite-pressure-test`; ladders in
100
+ `devrites-interview`; rough idea → `/rite-pressure-test`; ladders in
82
101
  [interview-patterns](reference/interview-patterns.md) / [question-protocol](reference/question-protocol.md).)
83
102
  For a vague ask, **map the decision tree** and resolve each branch depth-first; **cover
84
103
  every dimension** (objective · scope · data model · UX · integration · non-functional ·
@@ -13,6 +13,7 @@ workspace first; if none exists, it stops and tells the user to run `/rite-spec
13
13
  <feature-slug>/
14
14
  brief.md # short user-facing objective
15
15
  spec.md # what to build + why (from /rite-spec)
16
+ checklists/ # spec-quality checklists — "unit tests for English", one <domain>.md per requirement domain (from /rite-spec; gated at spec readiness)
16
17
  references/ # saved design/reference assets (screenshots, exports, video)
17
18
  references.md # index of design references (saved files + links)
18
19
  strategy.md # strategic review: scope mode + pre-mortem + dimension scores (from /rite-temper; optional — always invoked, significance-gated, in /rite-autocomplete)
@@ -20,6 +21,8 @@ workspace first; if none exists, it stops and tells the user to run `/rite-spec
20
21
  tasks.md # ordered vertical slices (from /rite-define)
21
22
  eng-review.md # engineering plan review: scope challenge + axis findings + failure modes + parallelization (from /rite-vet — run on every plan; depth scales light/full, never skipped; always in /rite-autocomplete)
22
23
  test-plan.md # build-readable coverage target: coverage diagram + per-gap test requirements + acceptance→test map (from /rite-vet; read by /rite-build + /rite-prove)
24
+ coverage.md # traceability matrix: AC-id → slice(s) → test (from /rite-define; walked by /rite-prove + /rite-seal)
25
+ devex.md # developer-experience scorecard — predicted (/rite-vet) → measured (/rite-prove) → reconciled (/rite-seal); only when a developer-facing surface is in scope
23
26
  state.md # phase, active slice, risk, next step
24
27
  questions.md # asked questions + answers
25
28
  decisions.md # decisions + rationale (+ a `## Dead ends` section: approaches tried that failed + why, so retries don't repeat them)
@@ -27,6 +30,7 @@ workspace first; if none exists, it stops and tells the user to run `/rite-spec
27
30
  drift.md # spec/plan drift observations + resolutions
28
31
  touched-files.md # files changed or intentionally inspected
29
32
  evidence.md # commands run + results
33
+ forge-report.md # competitive-build record: K candidates → winner + grafts (from /rite-build on a `Forge: yes` slice; rare)
30
34
  browser-evidence.md # screenshots, routes, console, viewport checks
31
35
  design-brief.md # UX/UI contract — if UI involved (from /rite-spec via devrites-ux-shape; refined per slice in /rite-build)
32
36
  polish-report.md # normalize+polish output
@@ -48,10 +52,14 @@ workspace first; if none exists, it stops and tells the user to run `/rite-spec
48
52
  `ACTIVE`. **`/rite-define` reads `spec.md`** and adds `plan.md` + `tasks.md` and updates
49
53
  `state.md`. Other skills read the active workspace; none create a new one.
50
54
  - Each phase **updates `state.md`** and the relevant evidence files.
51
- - Don't create `strategy.md` / `eng-review.md` / `test-plan.md` / `evidence.md` /
52
- `browser-evidence.md` / `design-brief.md` / `polish-report.md` / `review.md` / `seal.md` /
53
- `ship.md` / `handoff.md` until the producing phase runs absence is meaningful (it means
54
- "not done yet"). `strategy.md` is written by `/rite-temper` (which may also edit `spec.md` /
55
+ - Don't create `checklists/` / `strategy.md` / `eng-review.md` / `test-plan.md` /
56
+ `coverage.md` / `devex.md` / `evidence.md` / `forge-report.md` / `browser-evidence.md` /
57
+ `design-brief.md` / `polish-report.md` / `review.md` / `seal.md` / `ship.md` / `handoff.md`
58
+ until the producing phase runs absence is meaningful (it means "not done yet").
59
+ `coverage.md` is the `/rite-define` traceability matrix; `devex.md` is the conditional DX
60
+ scorecard (only when a developer-facing surface is in scope — greenfield no-op otherwise);
61
+ `forge-report.md` records a competitive `Forge: yes` build and is absent on the common
62
+ single-path slice. `strategy.md` is written by `/rite-temper` (which may also edit `spec.md` /
55
63
  `decisions.md` / `assumptions.md` via the Spec Drift Guard); its absence means the spec was
56
64
  planned without a strategic review. `eng-review.md` + `test-plan.md` are written by `/rite-vet`
57
65
  (which also hardens `plan.md` / `tasks.md`, and routes acceptance-changing deltas via the Spec
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rite-status
3
- description: Read-only report on the active feature — phase, active slice, next action, evidence, open questions, drift, risks, handoff readiness. Use when the user says "where am I", "what's next", "status", "is this ready to ship", "show the active feature". Not for invoking phases or for the menu (use `/rite`).
3
+ description: Read-only report on the active feature — phase, active slice, next action, evidence, open questions, drift, risks, and handoff readiness. Not for invoking phases or for the menu (use `/rite`).
4
4
  argument-hint: "[feature-slug]"
5
5
  user-invocable: true
6
6
  disable-model-invocation: true
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rite-temper
3
- description: Strategic review of a readied `spec.md` before planning — pick a scope mode (expand / selective / hold-rigor / reduce-to-MVP), run a pre-mortem, harden the spec, and fold decisions back via the Spec Drift Guard plus a persistent `strategy.md`. Use when the user says "temper this", "strategy review", "think bigger", "scope check", "pre-mortem the spec", "are we over/under-building", or before defining a big or risky feature. Not for a rough idea (`/rite-pressure-test`), a mid-build decision (`devrites-doubt`), a code diff (`/rite-review`), or the final gate (`/rite-seal`).
3
+ description: Temper a readied `spec.md` before planning. Use when the user says "temper this", "strategy review", "pre-mortem the spec", "are we over/under-building", or before defining a big or risky feature. Not for a rough idea (`/rite-pressure-test`), a mid-build decision (`devrites-doubt`), a code diff (`/rite-review`), or the final gate (`/rite-seal`).
4
4
  argument-hint: "[feature-slug] [--mode expand|selective|hold|reduce]"
5
5
  user-invocable: true
6
6
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rite-vet
3
- description: Engineering review of a defined plan before any code challenge implementation scope, then review architecture / code-quality / test-coverage / performance through senior-engineer lenses, confidence-banding each finding; harden `plan.md` / `tasks.md` and write `eng-review.md` + the build-readable `test-plan.md`. Use when the user says "vet the plan", "engineering review", "review the architecture", "lock in the plan", or before building a feature. Not for the spec's strategy (`/rite-temper`), a mid-build decision (`devrites-doubt`), a code diff (`/rite-review`), or the final gate (`/rite-seal`).
3
+ description: Vet a defined plan before any code with a senior-engineer plan review. Use when the user says "vet the plan", "engineering review", "lock in the plan", or before building a feature. Not for the spec's strategy (`/rite-temper`), a mid-build decision (`devrites-doubt`), a code diff (`/rite-review`), or the final gate (`/rite-seal`).
4
4
  argument-hint: "[slug] [--cross-model] [--full]"
5
5
  user-invocable: true
6
6
  ---
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: rite-zoom-out
3
- description: Zoom out one abstraction layer in unfamiliar code — return a structural map (modules, callers, callees, ADR/decisions touching the area) in the project's vocabulary. Use when the user says "zoom out", "map this", "bigger picture", "I don't know this area", "what calls this". Not for implementing changes (read-only) or one-symbol lookups (use grep).
3
+ description: Zoom out one abstraction layer in unfamiliar code — return a structural map (modules, callers, callees, ADR/decisions touching the area) in the project's vocabulary. Use when the user says "zoom out", "map this", or "what calls this". Not for implementing changes (read-only) or one-symbol lookups (use grep).
4
+ argument-hint: "[symbol | file | area to map]"
4
5
  user-invocable: true
5
6
  ---
6
7
 
@@ -16,7 +17,7 @@ on demand.
16
17
 
17
18
  ## What this skill returns
18
19
 
19
- A **map, not an essay**. One pass should answer:
20
+ A **structural map** terse. One pass should answer:
20
21
 
21
22
  - **The area** — what this code is for, in one sentence, using the project's own
22
23
  vocabulary.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devrites",
3
- "version": "2.4.0",
3
+ "version": "2.5.0",
4
4
  "description": "DevRites — disciplined senior-engineer workflow skills pack for Claude Code",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "homepage": "https://github.com/ViktorsBaikers/DevRites#readme",
@@ -1,62 +0,0 @@
1
- # Parallel review dispatch
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.
4
-
5
- DevRites ships ten fresh-context review subagents under `.claude/agents/` (plus the write-capable `devrites-slice-wright`, 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 this fan-out — `devrites-strategy-reviewer` is **pre-plan** (for `/rite-temper`) and `devrites-plan-reviewer` is **pre-build** (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.
6
-
7
- Pattern: delegate to specialized agents with isolated context, brief each one precisely, run them concurrently, reconcile on return.
8
-
9
- ## When to use which subagent
10
-
11
- | Subagent | Always | Conditional |
12
- |---|---|---|
13
- | `devrites-spec-reviewer` | `/rite-review` Spec axis; `/rite-seal` | — |
14
- | `devrites-code-reviewer` | `/rite-review` Code-review axis; `/rite-seal` | — |
15
- | `devrites-test-analyst` | `/rite-seal` | — |
16
- | `devrites-frontend-reviewer` | — | UI files in the diff |
17
- | `devrites-security-auditor` | — | input / auth / data / external integrations / secrets in scope |
18
- | `devrites-performance-reviewer` | — | perf budget in `spec.md` or visible regression risk |
19
- | `devrites-doubt-reviewer` | — | a non-trivial decision is being stood up (called from `devrites-doubt`) |
20
- | `devrites-simplifier-reviewer` | — | `/rite-polish` Phase 1 audit (called from `devrites-audit simplify`) |
21
-
22
- ## Dispatch shape
23
-
24
- For each chosen subagent, the caller uses the `Task` tool with this prompt shape:
25
-
26
- ```
27
- Audit the active DevRites feature.
28
-
29
- Workspace: .devrites/work/<slug>/
30
- Read (yourself, fresh context):
31
- - spec.md (+ acceptance criteria)
32
- - touched-files.md
33
- - the git diff
34
- - <any axis-specific files: decisions.md, evidence.md, references/...>
35
-
36
- Apply your documented discipline. Return labeled findings (Critical /
37
- Important / Suggestion / Nit / FYI) using your documented output format,
38
- ONE FINDING PER LINE, cite file:line.
39
-
40
- Feature scope only. No edits. Do not summarize or re-rank — the caller
41
- reconciles.
42
- ```
43
-
44
- Rules:
45
-
46
- - **One Task call per subagent.** Send them in a single message with multiple `Task` invocations so the runtime dispatches concurrently.
47
- - **No cross-pollination.** Each subagent gets only its narrow brief and the workspace path. Do not pass another subagent's findings into a sibling's prompt — that recreates the masking problem.
48
- - **No author context.** Do not include the caller's analysis or the user's framing of the change; the point is a fresh, adversarial read.
49
- - **Feature scope only.** Each subagent must stay inside `touched-files.md` + the diff.
50
-
51
- ## Reconciliation
52
-
53
- When the subagents return:
54
-
55
- 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.
56
- 2. **Surface contradictions explicitly.** "Spec axis says complete, Code-review axis says untestable" is a finding, not noise. The caller decides at the gate.
57
- 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).
58
- 4. **One scale.** All subagents use the same five-label scale. Reject any subagent output that invents its own.
59
-
60
- ## Fallback
61
-
62
- 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).