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.
- package/CHANGELOG.md +22 -2
- package/README.md +1 -1
- package/install.sh +31 -2
- package/pack/.claude/agents/devrites-security-auditor.md +6 -10
- package/pack/.claude/rules/agents.md +3 -2
- package/pack/.claude/rules/core.md +1 -1
- package/pack/.claude/rules/prose-style.md +1 -1
- package/pack/.claude/skills/devrites-api-interface/SKILL.md +6 -7
- package/pack/.claude/skills/devrites-audit/SKILL.md +2 -2
- package/pack/.claude/skills/devrites-browser-proof/SKILL.md +3 -3
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +1 -1
- package/pack/.claude/skills/devrites-doubt/SKILL.md +1 -1
- package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +1 -1
- package/pack/.claude/skills/devrites-frontend-craft/reference/shape.md +1 -1
- package/pack/.claude/skills/devrites-interview/SKILL.md +1 -1
- package/pack/.claude/skills/{rite-seal → devrites-lib}/reference/parallel-dispatch.md +19 -7
- package/pack/.claude/skills/devrites-lib/scripts/doubt-coverage.sh +35 -15
- package/pack/.claude/skills/devrites-lib/scripts/rites.sh +41 -0
- package/pack/.claude/skills/devrites-prose-craft/SKILL.md +1 -1
- package/pack/.claude/skills/devrites-refresh-indexes/SKILL.md +1 -1
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +1 -1
- package/pack/.claude/skills/devrites-ux-shape/SKILL.md +1 -1
- package/pack/.claude/skills/rite/SKILL.md +7 -25
- package/pack/.claude/skills/rite/reference/menu.md +10 -3
- package/pack/.claude/skills/rite-adopt/SKILL.md +1 -1
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +1 -1
- package/pack/.claude/skills/rite-build/SKILL.md +56 -50
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +7 -3
- package/pack/.claude/skills/rite-define/SKILL.md +1 -1
- package/pack/.claude/skills/rite-doctor/SKILL.md +1 -1
- package/pack/.claude/skills/rite-frame/SKILL.md +1 -1
- package/pack/.claude/skills/rite-handoff/SKILL.md +4 -4
- package/pack/.claude/skills/rite-learn/SKILL.md +1 -1
- package/pack/.claude/skills/rite-plan/SKILL.md +5 -1
- package/pack/.claude/skills/rite-polish/SKILL.md +1 -1
- package/pack/.claude/skills/rite-polish/reference/code.md +4 -0
- package/pack/.claude/skills/rite-pressure-test/SKILL.md +3 -2
- package/pack/.claude/skills/rite-prototype/SKILL.md +5 -3
- package/pack/.claude/skills/rite-prove/SKILL.md +1 -1
- package/pack/.claude/skills/rite-quick/SKILL.md +1 -1
- package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +3 -2
- package/pack/.claude/skills/rite-review/SKILL.md +4 -4
- package/pack/.claude/skills/rite-review/reference/cognitive-load.md +4 -2
- package/pack/.claude/skills/rite-review/reference/five-axis-review.md +1 -1
- package/pack/.claude/skills/rite-review/reference/security-review.md +5 -0
- package/pack/.claude/skills/rite-seal/SKILL.md +18 -12
- package/pack/.claude/skills/rite-seal/reference/go-no-go.md +18 -2
- package/pack/.claude/skills/rite-ship/SKILL.md +1 -1
- package/pack/.claude/skills/rite-spec/SKILL.md +21 -2
- package/pack/.claude/skills/rite-spec/reference/state-workspace.md +12 -4
- package/pack/.claude/skills/rite-status/SKILL.md +1 -1
- package/pack/.claude/skills/rite-temper/SKILL.md +1 -1
- package/pack/.claude/skills/rite-vet/SKILL.md +1 -1
- package/pack/.claude/skills/rite-zoom-out/SKILL.md +3 -2
- package/package.json +1 -1
- 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 "
|
|
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 →
|
|
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` /
|
|
52
|
-
`
|
|
53
|
-
`
|
|
54
|
-
|
|
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.
|
|
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:
|
|
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:
|
|
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",
|
|
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
|
|
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.
|
|
3
|
+
"version": "2.5.1",
|
|
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).
|