@nurix/etna 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/data/harnesses/code/CLAUDE.md +115 -97
- package/data/harnesses/code/agents/boundary-mapper.md +91 -0
- package/data/harnesses/code/agents/brainstorm.md +107 -0
- package/data/harnesses/code/agents/change-review.md +1 -0
- package/data/harnesses/code/agents/contract-monitor.md +1 -0
- package/data/harnesses/code/agents/dep-health.md +1 -0
- package/data/harnesses/code/agents/git-history.md +1 -0
- package/data/harnesses/code/agents/maintenance.md +1 -0
- package/data/harnesses/code/agents/review.md +1 -0
- package/data/harnesses/code/agents/spec-mode.md +1 -0
- package/data/harnesses/code/rules/general.md +1 -0
- package/data/harnesses/code/rules/nomenclature.md +1 -0
- package/data/harnesses/code/scripts/build-ownership-index.sh +1 -0
- package/data/harnesses/code/scripts/check-doc-drift.sh +1 -0
- package/data/harnesses/code/skills/boundaries/SKILL.md +86 -0
- package/data/harnesses/code/skills/documentation/SKILL.md +1 -0
- package/data/harnesses/code/skills/introspect/SKILL.md +1 -0
- package/data/harnesses/code/skills/technical-brainstorm/README.md +287 -0
- package/data/harnesses/code/skills/technical-brainstorm/SKILL.md +598 -0
- package/data/harnesses/code/skills/technical-brainstorm/greenfield.md +99 -0
- package/data/harnesses/code/skills/technical-brainstorm/templates/backlog.md +39 -0
- package/data/harnesses/code/skills/technical-brainstorm/templates/decisions.md +42 -0
- package/data/harnesses/code/skills/technical-brainstorm/templates/doctrine.md +31 -0
- package/data/harnesses/code/skills/technical-brainstorm/templates/glossary.md +19 -0
- package/data/harnesses/code/skills/technical-brainstorm/templates/inventory.md +44 -0
- package/data/harnesses/code/skills/technical-brainstorm/templates/milestones.md +43 -0
- package/data/harnesses/code/skills/technical-brainstorm/templates/non-goals.md +21 -0
- package/data/harnesses/code/skills/technical-brainstorm/templates/plan-doc.md +61 -0
- package/data/harnesses/code/skills/technical-brainstorm/templates/questions.md +84 -0
- package/data/harnesses/code/skills/technical-brainstorm/templates/references.md +28 -0
- package/data/harnesses/code/skills/technical-brainstorm/templates/rejected.md +29 -0
- package/data/harnesses/code/skills/technical-brainstorm/templates/state.md +8 -0
- package/data/harnesses/code/skills/workflow-mapper/SKILL.md +1 -0
- package/data/harnesses/kb-agi/CLAUDE.md +15 -0
- package/data/harnesses/kb-agi/agents/kb-agi-init.md +1 -0
- package/data/harnesses/kb-agi/agents/kb-catch-stale.md +1 -0
- package/data/harnesses/kb-agi/agents/kb-find-gaps.md +1 -0
- package/data/harnesses/kb-agi/agents/kb-fix-links.md +1 -0
- package/data/harnesses/kb-agi/agents/kb-refresh-frontdoor.md +1 -0
- package/data/harnesses/kb-agi/agents/kb-refresh-summaries.md +1 -0
- package/data/harnesses/kb-agi/agents/kb-sync-metadata.md +1 -0
- package/data/harnesses/kb-agi/rules/kb.md +4 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
CLI to bootstrap a project with a Nurix harness. Copies the harness's `CLAUDE.md`, skills, agents, rules, and scripts into the project so they live with the code — version-controllable, editable per project, and visible without leaving the repo.
|
|
4
4
|
|
|
5
|
+
A second install path also exists and is fully supported: `/plugin install <plugin>@nurixlabs` from inside Claude Code, which installs the harness as a plugin from the `nurixlabs/skills` marketplace. The two paths are first-class equals — pick the one that matches how you want to manage the harness. See [`docs/architecture/harness-install-model.md`](../../docs/architecture/harness-install-model.md) for the comparison.
|
|
6
|
+
|
|
5
7
|
## Usage
|
|
6
8
|
|
|
7
9
|
From the root of the project you want to bootstrap:
|
|
@@ -1,6 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code
|
|
3
|
+
description: Canonical Nurix code-project harness (spec v9) — three peer authoring modes (Brainstorming / Spec / Plan), modules as bounded contexts, typed application boundaries, ownership rules. The reference CLAUDE.md every Nurix codebase starts with.
|
|
4
|
+
version: 0.2.0
|
|
5
|
+
keywords:
|
|
6
|
+
- harness
|
|
7
|
+
- code
|
|
8
|
+
- workflow
|
|
9
|
+
- documentation
|
|
10
|
+
- boundaries
|
|
11
|
+
- nurix
|
|
12
|
+
plugin: nurix-harness
|
|
13
|
+
---
|
|
14
|
+
|
|
1
15
|
# Agent Instructions
|
|
2
16
|
|
|
3
|
-
This file defines how AI agents (Claude, GPT, etc.) should work on this project.
|
|
17
|
+
This file defines how AI agents (Claude, GPT, etc.) should work on this project. **This file is the harness** — it orchestrates the skills and agents that do the work. There is no separate "harness" skill.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Bootstrap
|
|
22
|
+
|
|
23
|
+
> If `docs/structure.md` is missing in this repo, the repo is **not yet harnessed**. Before any other work: invoke the `documentation` skill to run its baseline (`"baseline this repo"`). Both the baseline and the boundary baseline (`boundary-mapper`, below) can also be re-triggered manually at any time.
|
|
24
|
+
|
|
25
|
+
This bootstrap is the only step that runs **before** the harness exists. Everything else below assumes a baselined repo.
|
|
4
26
|
|
|
5
27
|
---
|
|
6
28
|
|
|
@@ -11,39 +33,66 @@ This file defines how AI agents (Claude, GPT, etc.) should work on this project.
|
|
|
11
33
|
- Ignore **[`README.md`](README.md)** — it's for human reference only
|
|
12
34
|
- Check **[`package.json`](package.json)** for available scripts. **Detect the package manager from the lockfile** (`pnpm-lock.yaml` → pnpm, `yarn.lock` → yarn, `package-lock.json` → npm) and use the matching command. Don't hardcode a specific manager.
|
|
13
35
|
- Look at similar modules/files and follow existing patterns
|
|
14
|
-
|
|
15
|
-
> **If you are a Claude agent** (for example, `claude-4.5-sonnet`) — other agents ignore:
|
|
16
|
-
> Check **[`.claude/rules/`](.claude/rules/)** for specialized instructions (automatically loaded into memory)
|
|
36
|
+
- Check **[`.claude/rules/`](.claude/rules/)** for specialized instructions (automatically loaded into memory)
|
|
17
37
|
|
|
18
38
|
---
|
|
19
39
|
|
|
20
40
|
## Workflows
|
|
21
41
|
|
|
22
|
-
|
|
42
|
+
Three peer modes. Each names what triggers entry, which agent + skill implement it, and how it exits.
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
┌──────────────────────────┐ ┌──────────────────────────┐
|
|
46
|
+
│ Brainstorming Mode │◀────▶│ Spec Mode │
|
|
47
|
+
│ (30k-foot strategy, │ │ (feature SSoT) │
|
|
48
|
+
│ shapes module pillars │ │ │
|
|
49
|
+
│ + the IA boundary) │ │ spec-mode agent │
|
|
50
|
+
│ brainstorm agent │ │ + documentation skill │
|
|
51
|
+
│ + technical-brainstorm │ │ │
|
|
52
|
+
└──────────────┬───────────┘ └──────────────┬───────────┘
|
|
53
|
+
│ │
|
|
54
|
+
└─────────────────┬───────────────┘
|
|
55
|
+
▼
|
|
56
|
+
┌──────────────────────┐
|
|
57
|
+
│ Plan Mode │
|
|
58
|
+
│ docs/history/plans/ │
|
|
59
|
+
└──────────┬───────────┘
|
|
60
|
+
▼
|
|
61
|
+
Completion
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Four transitions: `brainstorm → spec`, `brainstorm → plan`, `spec → plan`, `plan → complete`.
|
|
65
|
+
|
|
66
|
+
### Brainstorming Mode
|
|
23
67
|
|
|
24
|
-
|
|
68
|
+
30,000-foot directional work — doctrine, glossary, non-goals, open questions, and the **information architecture** (entity model + topology). Dispatch the `brainstorm` agent paired with the `technical-brainstorm` skill. The agent works in a transient session workspace and returns structured findings the main agent harvests. **Pillars are module-local** (`docs/modules/{m}/pillars/`); cross-module steering (domain model, shared glossary, ADRs) lives in `docs/architecture/`. IA settled here is captured as the `domain` boundary in `docs/boundaries/` (see Boundaries). Exits to Spec Mode (feature-scoped follow-up), Plan Mode (cross-cutting implementation), or close-and-harvest.
|
|
25
69
|
|
|
26
|
-
|
|
70
|
+
### Spec Mode
|
|
27
71
|
|
|
28
|
-
|
|
72
|
+
New feature work. Create/update `docs/features/{feature}.md` (or `docs/modules/{m}/features/{feature}.md` in a graduated repo) using the **Feature Documentation template** (Status: Draft) from the `documentation` skill. Dispatch the **`spec-mode`** agent for codebase research; interview the user for design-intent sections. Present for approval, then → Plan Mode.
|
|
29
73
|
|
|
30
|
-
|
|
31
|
-
- Mark the plan `Status: Complete` and fill the **Completed:** date. The plan is now frozen.
|
|
32
|
-
- **Flip the feature spec** to `Status: Active` and extend it in place with the implementation sections (Architecture, Key Functions, State, Redux, Files). Same file. Confirm `owns`/`touches` frontmatter against actual code; resolve any unresolved Open Questions by folding them into Background.
|
|
33
|
-
- If `docs/routing.md` exists, use it to find other docs affected by the changes; otherwise glob `docs/features/**/*.md` and check `owns`/`touches` frontmatter. Update affected docs — or create new ones if a touched area has no doc yet.
|
|
34
|
-
- Create a changelog entry in `docs/history/changelog/YYYY-MM-DD-feature-name.md`.
|
|
74
|
+
### Plan Mode
|
|
35
75
|
|
|
36
|
-
`docs/
|
|
76
|
+
A spec is approved. Create `docs/history/plans/YYYY-MM-DD-{feature}.md` using the **Plan template**. Link the spec in the **Spec** field. The **Proposed Changes** subsections are load-bearing — `introspect` parses them to check boundary impact.
|
|
77
|
+
|
|
78
|
+
### Completion
|
|
79
|
+
|
|
80
|
+
- Mark the plan `Status: Complete`, fill **Completed:**. Frozen.
|
|
81
|
+
- Flip the feature spec to `Status: Active`; extend it in place with implementation sections (Architecture, Key Functions, State, Files). Confirm `owns`/`touches` frontmatter against code.
|
|
82
|
+
- Use `docs/routing.md` (or `owns`/`touches` frontmatter) to update affected docs; create new ones where a touched area has none.
|
|
83
|
+
- Create a changelog entry in `docs/history/changelog/YYYY-MM-DD-{feature}.md`.
|
|
84
|
+
|
|
85
|
+
`docs/features/` (and `docs/modules/{m}/features/`) is _what_ we're building. `docs/history/plans/` is _how_ we built it.
|
|
37
86
|
|
|
38
87
|
### Context Routing
|
|
39
88
|
|
|
40
89
|
Before modifying code in an unfamiliar area:
|
|
41
90
|
|
|
42
|
-
1. If **[`docs/routing.md`](docs/routing.md)** exists, read it for file-pattern → doc/agent mapping. If
|
|
43
|
-
2. If **[`docs/OWNERSHIP_INDEX.md`](docs/OWNERSHIP_INDEX.md)** exists,
|
|
44
|
-
3.
|
|
45
|
-
|
|
46
|
-
|
|
91
|
+
1. If **[`docs/routing.md`](docs/routing.md)** exists, read it for file-pattern → module/doc/agent mapping. If absent, skip.
|
|
92
|
+
2. If **[`docs/OWNERSHIP_INDEX.md`](docs/OWNERSHIP_INDEX.md)** exists, find the owning feature doc (rolled up to its module) and read it before changing code. Else glob `docs/{features,modules/*/features}/**/*.md` and check `owns` frontmatter.
|
|
93
|
+
3. **Check `docs/boundaries/`** — if your change touches a documented boundary (the entity model, the store shape, the API surface, the schema, …), read that boundary file first. A change to a `CRITICAL`/`HIGH` boundary warrants `introspect` before you start.
|
|
94
|
+
4. If a `docs/memory/{domain}.md` file exists, read it for failure modes.
|
|
95
|
+
5. In a graduated repo, the module's own `docs/modules/{m}/CLAUDE.md` auto-loads in that subtree — follow it.
|
|
47
96
|
|
|
48
97
|
### Project Memory
|
|
49
98
|
|
|
@@ -51,89 +100,69 @@ Project-specific learnings live in `docs/memory/` (git-tracked). Cross-project u
|
|
|
51
100
|
|
|
52
101
|
| File | Owner | Contents |
|
|
53
102
|
|------|-------|----------|
|
|
54
|
-
| `docs/memory/main.md` | Main agent | Project-wide patterns, conventions
|
|
55
|
-
| `docs/memory/{agent-name}.md` | The named sub-agent | Strategy memory
|
|
103
|
+
| `docs/memory/main.md` | Main agent | Project-wide patterns, conventions, recurring failure modes |
|
|
104
|
+
| `docs/memory/{agent-name}.md` | The named sub-agent | Strategy memory — how to be effective on this project. Never user-centric. |
|
|
56
105
|
| `~/.claude/projects/...` | Auto-memory system | User preferences, role, communication style, cross-project habits |
|
|
57
106
|
|
|
58
|
-
**Override the default auto-memory location for project-relevant facts.**
|
|
59
|
-
|
|
60
|
-
`docs/memory/main.md` is scaffolded during baseline. Append entries dated `## YYYY-MM-DD — {topic}`; oldest at bottom is fine.
|
|
107
|
+
**Override the default auto-memory location for project-relevant facts.** Ask: *is this true of this project, or this user?* Project facts → `docs/memory/`. User facts → `~/.claude/`.
|
|
61
108
|
|
|
62
109
|
### Out-of-Scope Discovery
|
|
63
110
|
|
|
64
|
-
When implementing a plan, if you discover
|
|
65
|
-
|
|
66
|
-
- Append it to `docs/history/backlog.md` under the appropriate priority (P0–P3)
|
|
67
|
-
- Format: `- **[P1]** Description — discovered by [plan-name or agent-name]`
|
|
68
|
-
- Do NOT ask permission. Just append and mention it in your response.
|
|
111
|
+
When implementing a plan, if you discover important work outside the current scope: append it to `docs/history/backlog.md` under a priority (P0–P3), format `- **[P1]** Description — discovered by [plan-name or agent-name]`. Don't ask permission; just append and mention it.
|
|
69
112
|
|
|
70
113
|
### Doc Ownership
|
|
71
114
|
|
|
72
|
-
Feature docs
|
|
115
|
+
Feature docs require YAML frontmatter with `owns`, `touches`, `depends_on`. Architecture docs describe cross-cutting patterns (no ownership); operations docs describe procedures. Boundary docs name the modules they bound. The `spec-mode` agent checks ownership conflicts during research.
|
|
73
116
|
|
|
74
|
-
|
|
117
|
+
### Modules — vertical bounded contexts (graduation)
|
|
75
118
|
|
|
76
|
-
|
|
119
|
+
Flat `docs/features/` is the **default**. A repo **graduates** to `docs/modules/{module}/` when it has **≥2 genuine bounded contexts**, each with its own doctrine. A module owns both `features/` (the *what*) and `pillars/` (the *why* — module-local doctrine/decisions/glossary). Ungraduated features and graduated modules may coexist. Each module carries an auto-loaded `CLAUDE.md` with an idempotent bootstrap: *"If `./pillars/` is empty, initialize it from the `technical-brainstorm` templates seeded from `./features/`; anything cross-module escalates to `docs/architecture/`."* Pillar files are **lazy** — created when they have content, never as empty stubs. A decision touching 2+ modules is an ADR in `docs/architecture/adr/`, never module-local.
|
|
77
120
|
|
|
78
|
-
|
|
121
|
+
### Architecture Decisions (ADRs)
|
|
79
122
|
|
|
80
|
-
- File: `docs/architecture/adr/NNNN-kebab-case.md
|
|
81
|
-
- Invoke the `documentation` skill with "record an ADR" or "architecture decision".
|
|
123
|
+
Record an ADR when a decision (a) changes how state, dependencies, or boundaries are organized, (b) has a rejected alternative worth remembering, and (c) could be re-litigated. Default: don't write one. File: `docs/architecture/adr/NNNN-kebab-case.md`, frozen once written. Invoke the `documentation` skill with "record an ADR".
|
|
82
124
|
|
|
83
125
|
---
|
|
84
126
|
|
|
85
|
-
##
|
|
127
|
+
## Boundaries (`docs/boundaries/`)
|
|
86
128
|
|
|
87
|
-
|
|
129
|
+
`docs/boundaries/` holds the repo's **typed application boundaries** — horizontal cross-cutting contracts that ripple when touched. Each boundary is one file, typed by the **Application Boundary Scale**, with a `[BOUNDARY: type · severity]` header, the modules it **bounds**, its shape (transcribed, or a `file:line` pointer), invariants, blast radius, and a safe-change checklist. Boundaries are the **edges** between module **nodes**.
|
|
88
130
|
|
|
89
|
-
|
|
90
|
-
|-----------|------|---------|-----------------|
|
|
91
|
-
| `spec-mode` | Agent | Codebase research before writing a feature spec | Invoked during Spec Mode |
|
|
92
|
-
| `maintenance` | Agent | Periodic audit — fix docs drifting from code | "run maintenance", "audit docs", "check drift" |
|
|
93
|
-
| `contract-monitor` | Agent | Post-implementation contract audit — scan code against guardrails | "check contracts", "audit guardrails", "code drift" |
|
|
94
|
-
| `review` | Agent | Code health — bundle, performance, anti-patterns | "weekly review", "review code health", "check bundle" |
|
|
95
|
-
| `dep-health` | Agent | Dependency supply-chain audit | "audit dependencies", "check CVEs", "dep health" |
|
|
96
|
-
| `git-history` | Agent | Classify recent commits into a velocity/severity CSV | "classify commits", "commit history report" |
|
|
97
|
-
| `change-review` | Agent | Velocity heatmap, risk zones (high churn + low coverage) | "where is risk accumulating", "velocity report" |
|
|
98
|
-
| `documentation` | Skill | Baseline audit, scaffolding, templates, ADRs, guardrails | "baseline docs", "create docs", "audit docs", "record an ADR", "architecture decision", "create guardrails" |
|
|
99
|
-
| `workflow-mapper` | Skill | Discover and diagram codebase workflows | "map workflows", "trace flows" |
|
|
100
|
-
| `introspect` | Skill | Pre-implementation impact analysis against guardrails | "introspect this plan", "impact analysis" |
|
|
131
|
+
Two categories: **technology** boundaries (Redux store shape, API surface, DB schema, wire contracts, routes, …) and **domain** boundaries (the **information-architecture entity model** — usually the highest-severity boundary in the repo — and tenancy).
|
|
101
132
|
|
|
102
|
-
|
|
133
|
+
Three components share this surface:
|
|
103
134
|
|
|
104
|
-
|
|
135
|
+
- **`boundary-mapper`** (agent) — detects the stack + IA and **generates / baselines / updates** `docs/boundaries/`. Pairs with the `boundaries` skill (the scale). Trigger: "baseline boundaries".
|
|
136
|
+
- **`introspect`** (skill, pre-implementation) — checks a proposed plan against `docs/boundaries/`; the boundary **severity** sets review depth.
|
|
137
|
+
- **`contract-monitor`** (agent, post-implementation) — scans the live codebase against `docs/boundaries/`, per boundary type.
|
|
105
138
|
|
|
106
|
-
|
|
107
|
-
- **`introspect`** (pre-implementation) — checks a proposed plan against guardrails to surface cascading risk before coding
|
|
139
|
+
`point` vs `transcribe`: self-locating shapes (DB schema, routes) get a pointer + invariants (code stays source-of-truth); synthesized contracts (composed store tree, API envelope, the IA model, tenancy) are transcribed — then the boundary file owns the shape and feature docs link up.
|
|
108
140
|
|
|
109
|
-
|
|
141
|
+
> Agents and skills come from the bound plugin (`plugin: nurix-harness`). Their triggers are model-invoked — refer to each component's frontmatter, not a registry table here.
|
|
110
142
|
|
|
111
143
|
---
|
|
112
144
|
|
|
113
|
-
##
|
|
145
|
+
## Defaults & Constraints
|
|
114
146
|
|
|
115
147
|
Unless explicitly requested:
|
|
116
148
|
|
|
117
149
|
❌ **Tests** — Never generate, update, or modify test files.
|
|
118
150
|
❌ **Dependencies** — Never upgrade frameworks, libraries, or dependencies.
|
|
119
151
|
❌ **Compatibility** — Never maintain backward compatibility unless specified.
|
|
120
|
-
❌ **Browser Automation** — Never use "Claude in Chrome" (CDP/MCP browser tools) unless
|
|
121
|
-
❌ **Protected Files** — Never modify these read-only files:
|
|
122
|
-
`AGENTS.md`, `docs/operations/protected-files.md`
|
|
152
|
+
❌ **Browser Automation** — Never use "Claude in Chrome" (CDP/MCP browser tools) unless explicitly requested.
|
|
153
|
+
❌ **Protected Files** — Never modify these read-only files: `AGENTS.md`, `docs/operations/protected-files.md`
|
|
123
154
|
✅ **Documentation** — Keep `docs/` updated when code changes affect documented behavior.
|
|
124
|
-
⚠️ **Plans** —
|
|
125
|
-
⚠️ **Tool Issues** — If any CLI tool,
|
|
155
|
+
⚠️ **Plans** — Created directly in `docs/history/plans/`. Once `Complete`/`Abandoned`, frozen — never edited. New scope → new dated plan linking back.
|
|
156
|
+
⚠️ **Tool Issues** — If any CLI tool, alias, or MCP tool behaves unexpectedly, report the exact tool, command, and error to the user.
|
|
126
157
|
|
|
127
158
|
---
|
|
128
159
|
|
|
129
160
|
## File Structure
|
|
130
161
|
|
|
131
|
-
- Add file path at top of each file:
|
|
132
|
-
|
|
133
|
-
- Add a 1-line function description as a comment above each function:
|
|
134
|
-
`// Extract JWT token from request based on endpoint type`
|
|
162
|
+
- Add file path at top of each file: `// src/modules/example.js - Module for handling user authentication`
|
|
163
|
+
- Add a 1-line function description as a comment above each function.
|
|
135
164
|
- Keep related code together in a logical hierarchy.
|
|
136
|
-
- No inline comments that restate obvious code. No commented-out code. If a block
|
|
165
|
+
- No inline comments that restate obvious code. No commented-out code. If a block needs a comment to be understood, refactor for clarity instead.
|
|
137
166
|
|
|
138
167
|
---
|
|
139
168
|
|
|
@@ -145,46 +174,35 @@ Unless explicitly requested:
|
|
|
145
174
|
|
|
146
175
|
### Folder Structure
|
|
147
176
|
|
|
148
|
-
|
|
177
|
+
| Folder | Purpose | Mutability |
|
|
178
|
+
| --- | --- | --- |
|
|
179
|
+
| `docs/architecture/` | Cross-module patterns, domain model, cross-module glossary, ADRs | Living |
|
|
180
|
+
| `docs/architecture/adr/` | Architecture Decision Records — numbered, one per file | Frozen (supersede) |
|
|
181
|
+
| `docs/features/` | How implemented features work today (flat default, ungraduated) | Living |
|
|
182
|
+
| `docs/modules/` | Vertical bounded contexts; each owns `features/` + `pillars/` (graduation) | Living |
|
|
183
|
+
| `docs/boundaries/` | Horizontal typed application boundaries (one file each) | Generated/updated by `boundary-mapper` |
|
|
184
|
+
| `docs/operations/` | Setup, development, deployment | Living |
|
|
185
|
+
| `docs/history/` | Plans, changelogs, backlog | Frozen or append-only |
|
|
186
|
+
| `docs/memory/` | Project knowledge + agent state | Living |
|
|
187
|
+
| `docs/tests/` | Test plans and automation | Living |
|
|
149
188
|
|
|
150
|
-
|
|
151
|
-
| ------------------------ | -------------------------------------------------------- | --------------------- |
|
|
152
|
-
| `docs/architecture/` | System-wide patterns, technical decisions, API specs | Living |
|
|
153
|
-
| `docs/architecture/adr/` | Architecture Decision Records — numbered, one per file | Frozen (supersede) |
|
|
154
|
-
| `docs/features/` | How implemented features work today | Living |
|
|
155
|
-
| `docs/operations/` | Setup, development, deployment | Living |
|
|
156
|
-
| `docs/history/` | Plans, changelogs, backlog | Frozen or append-only |
|
|
157
|
-
| `docs/memory/` | Project knowledge + agent state | Living |
|
|
158
|
-
| `docs/tests/` | Test plans and automation | Living |
|
|
189
|
+
There is **no repo-wide `docs/pillars/` folder** — pillars are module-local. Flat `docs/features/` is the default; `docs/modules/` is a graduation (≥2 bounded contexts).
|
|
159
190
|
|
|
160
191
|
### Naming & Lifecycle
|
|
161
192
|
|
|
162
|
-
- Features: `kebab-case.md` — living
|
|
163
|
-
- Plans: `YYYY-MM-DD-kebab-case.md` —
|
|
164
|
-
-
|
|
165
|
-
-
|
|
193
|
+
- Features: `kebab-case.md` — living, status `Active`
|
|
194
|
+
- Plans / Changelogs: `YYYY-MM-DD-kebab-case.md` — plans freeze after Complete/Abandoned; changelogs append-only
|
|
195
|
+
- ADRs: `NNNN-kebab-case.md` — frozen; supersede via a new ADR
|
|
196
|
+
- Boundaries: `kebab-case.md` (e.g. `information-architecture.md`, `redux-state.md`) — maintained by `boundary-mapper`
|
|
166
197
|
- Memory: `{agent-name}.md` — agent-maintained
|
|
167
198
|
|
|
168
199
|
### Documentation Maintenance
|
|
169
200
|
|
|
170
|
-
- **Prerequisite**: Before creating changelogs, feature docs, or plans, check
|
|
171
|
-
- After plan completion: create a
|
|
172
|
-
- Update related docs affected by the changes (use `docs/routing.md` to find
|
|
173
|
-
- Non-plan changes (refactors, bug fixes, API changes): prompt user first
|
|
174
|
-
- Multi-commit changes: include `Commits: abc1234, def5678`
|
|
175
|
-
- Missing `docs/README.md`: create a documentation index
|
|
201
|
+
- **Prerequisite**: Before creating changelogs, feature docs, or plans, check `docs/memory/index.md` records a baseline. If not, prompt to baseline first.
|
|
202
|
+
- After plan completion: create a changelog entry + update `docs/history/CHANGELOG.md` (no confirmation needed).
|
|
203
|
+
- Update related docs affected by the changes (use `docs/routing.md` to find them).
|
|
204
|
+
- Non-plan changes (refactors, bug fixes, API changes): prompt user first.
|
|
176
205
|
|
|
177
206
|
### Keeping the Loop Tight
|
|
178
207
|
|
|
179
|
-
When you create, move, or delete a doc:
|
|
180
|
-
- If **[`docs/routing.md`](docs/routing.md)** exists, update it — file-pattern routes and keyword routes
|
|
181
|
-
- Update **[`docs/README.md`](docs/README.md)** — add/remove the doc's entry
|
|
182
|
-
- If creating a new top-level domain folder and routing.md exists: add the folder to routing.md's **Top-Level Folders** table
|
|
183
|
-
|
|
184
|
-
When you move or rename source files:
|
|
185
|
-
- Check `owns`/`touches` frontmatter in the owning doc. Find the owning doc via `docs/routing.md` or `docs/OWNERSHIP_INDEX.md` if either is present; otherwise glob `docs/features/**/*.md` and match against `owns` patterns. Update paths to match the new locations.
|
|
186
|
-
|
|
187
|
-
When you create a new doc that owns code:
|
|
188
|
-
- Add `owns`, `touches`, `depends_on` YAML frontmatter
|
|
189
|
-
- Verify `owns` globs don't conflict with existing docs (check `docs/OWNERSHIP_INDEX.md` if present, otherwise compare against `owns` frontmatter across `docs/features/`)
|
|
190
|
-
|
|
208
|
+
When you create, move, or delete a doc: update `docs/routing.md` (routes) and `docs/README.md` (index). When you move/rename source files: update `owns`/`touches` in the owning doc, and re-run `boundary-mapper` (update mode) if a boundary's shape moved. When you add a doc that owns code: add `owns`/`touches`/`depends_on` frontmatter and verify globs don't conflict.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: boundary-mapper
|
|
3
|
+
description: Application-boundary generator. Detects the project's stack and information architecture, then baselines / creates / updates the typed boundary files in docs/boundaries/ (one file per boundary — Redux store shape, API surface, DB schema, wire contracts, tenancy, auth, the IA entity model, …). Each boundary is typed by the Application Boundary Scale and gets a severity that drives introspect's review depth. Pairs with the `boundaries` skill for the per-technology scale. Triggers on "baseline boundaries", "map application boundaries", "generate guardrails", "what are the boundaries here", "/boundary-mapper".
|
|
4
|
+
tools: Read, Glob, Grep, Bash, Write, Edit
|
|
5
|
+
model: inherit
|
|
6
|
+
plugins: [nurix-harness]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Boundary-Mapper Agent
|
|
10
|
+
|
|
11
|
+
You generate and maintain `docs/boundaries/` — the repo's **typed application boundaries**. A boundary is a horizontal cross-cutting contract that multiple modules touch (the Redux store shape, the API surface, the DB schema, the information-architecture entity model, tenancy). You are the *front* of the boundary lifecycle:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
boundary-mapper (generate) → introspect (pre-impl) → contract-monitor (post-impl)
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Introspect and contract-monitor both *consume* the boundary set; you *produce* it. Without you, boundary docs are hand-written and incomplete — the easy-to-miss ones (API surface, Redux store shape, the IA model) never get written because they read as "just how the app is built."
|
|
18
|
+
|
|
19
|
+
You are the portable **process**. The `boundaries` skill holds the per-technology **knowledge** (the Application Boundary Scale). Read the skill before a run.
|
|
20
|
+
|
|
21
|
+
## Modes
|
|
22
|
+
|
|
23
|
+
- **Baseline** — no `docs/boundaries/` yet. Detect the stack + IA, instantiate one file per boundary that exists.
|
|
24
|
+
- **Create** — add a single new boundary doc.
|
|
25
|
+
- **Update** — re-scan; refresh boundary files whose shape has drifted from code (the maintenance agent flags drift; you fix the boundary file).
|
|
26
|
+
|
|
27
|
+
## Before starting
|
|
28
|
+
|
|
29
|
+
1. Read the `boundaries` skill's Application Boundary Scale.
|
|
30
|
+
2. If `docs/memory/boundary-mapper.md` exists, read it for project-specific boundary exceptions and prior decisions.
|
|
31
|
+
3. Detect the stack: read `package.json` (deps), lockfile, and skim the source tree. Map detected technologies to their boundary types via the scale.
|
|
32
|
+
4. Detect the information architecture: read `docs/architecture/` (domain-model, ADRs), doctrine in any `docs/modules/*/pillars/` or `docs/pillars/`, and the entity/contract definitions (e.g. a `@org/contracts` package, `schema.ts`, `models.py`). The IA entity model is the flagship `domain`-category boundary.
|
|
33
|
+
|
|
34
|
+
## The two boundary categories
|
|
35
|
+
|
|
36
|
+
| Category | Sourced from | Example |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| **technology** | stack detection (`package.json` + source) | redux-store, api-surface, db-schema, wire-contracts, realtime-channels, auth |
|
|
39
|
+
| **domain** | the product's information architecture (ADRs, doctrine, contracts pkg) — *not* stack detection | the entity model + topology (the IA boundary), tenancy |
|
|
40
|
+
|
|
41
|
+
## `point` vs `transcribe` — decide per boundary
|
|
42
|
+
|
|
43
|
+
The scale assigns each boundary type a **doc-mode**:
|
|
44
|
+
|
|
45
|
+
- **`point`** — *self-locating* shapes the agent (and any reader) finds unaided: DB schema → `schema.ts`/`models.py`; routes → the router file. Write a **pointer (`file:line`) + invariants + safe-change checklist**. Do **not** transcribe the shape — a copy rots on the next codegen/push; the code stays source-of-truth.
|
|
46
|
+
- **`transcribe`** — *synthesized* contracts with no single code home: the Redux composed store tree (spread across slices), the API response envelope (a convention), the IA relationship/topology, tenancy. Transcribe these canonically into the boundary file. When you transcribe, **the boundary file owns the shape + rules; feature docs own only their slice's behavior and link up** (a `runs.md` says "adds runs slice keys X, Y — see `boundaries/redux-state.md`", it does not redescribe the store).
|
|
47
|
+
|
|
48
|
+
Docs never outrank code. For `point` boundaries you mirror with `file:line`, you do not fork.
|
|
49
|
+
|
|
50
|
+
## Boundary file anatomy
|
|
51
|
+
|
|
52
|
+
Every file in `docs/boundaries/` follows this shape:
|
|
53
|
+
|
|
54
|
+
```markdown
|
|
55
|
+
# <Boundary name>
|
|
56
|
+
|
|
57
|
+
[BOUNDARY: <type> · <CRITICAL|HIGH|MED|LOW>]
|
|
58
|
+
|
|
59
|
+
**Bounds.** <which modules / planes sit on each side of this contract>
|
|
60
|
+
|
|
61
|
+
## Shape
|
|
62
|
+
<transcribed contract, OR a pointer: `packages/.../schema.ts:NN` with a one-line orientation>
|
|
63
|
+
|
|
64
|
+
## Invariants
|
|
65
|
+
<what must hold>
|
|
66
|
+
|
|
67
|
+
## Blast radius
|
|
68
|
+
<what breaks, and where, if violated>
|
|
69
|
+
|
|
70
|
+
## Safe-change checklist
|
|
71
|
+
- [ ] <step>
|
|
72
|
+
- [ ] <step>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Write `docs/boundaries/README.md` as the index: list every boundary, its type, severity, and which boundary scale (technology packs) is active.
|
|
76
|
+
|
|
77
|
+
## Rules
|
|
78
|
+
|
|
79
|
+
- **One file per boundary.** Don't bundle unrelated boundaries.
|
|
80
|
+
- **Name the bounding modules** in every file — boundaries are the *edges* between module *nodes*; the boundary graph and the module graph share vertices.
|
|
81
|
+
- **Severity is load-bearing.** It feeds `introspect`'s review depth. Default CRITICAL for the IA model, DB schema, wire contracts, auth, tenancy; HIGH for API surface, Redux store, workflow signatures, env parity; MED for realtime channels. Adjust from the scale + project memory.
|
|
82
|
+
- **Don't invent boundaries the repo doesn't have.** Only instantiate types the detected stack/IA actually exhibits. `log()` what you skipped and why.
|
|
83
|
+
- **Read-only on production code.** You write only under `docs/boundaries/` and `docs/memory/boundary-mapper.md`.
|
|
84
|
+
|
|
85
|
+
## Strategy memory
|
|
86
|
+
|
|
87
|
+
After a run you may append to `docs/memory/boundary-mapper.md` (git-tracked): project-specific boundary exceptions, where the IA model actually lives in this repo, stack quirks that change a doc-mode, recurring drift zones. Never user preferences (those are `~/.claude/`); never a transcription of a boundary's content (that's the boundary file). Date each entry `## YYYY-MM-DD — {topic}`.
|
|
88
|
+
|
|
89
|
+
## Pair with the `boundaries` skill
|
|
90
|
+
|
|
91
|
+
The skill owns the Application Boundary Scale (`technology → boundary-types → doc-mode → default-severity`, with per-technology packs for react-router, redux-toolkit, vite, shadcn/ui, express, django, fastapi, and the `domain` category for IA) and the boundary-file template. You drive detection and writing; the skill provides the knowledge. When unsure how a technology's boundaries are typed, defer to the skill's packs.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brainstorm
|
|
3
|
+
description: Brainstorming-mode facilitator. Use to open / drive / close 30k-foot strategic design conversations that mutate the pillars (doctrine, glossary, non-goals, references, inventory, decisions, backlog, milestones, questions, rejected). Pair with the `technical-brainstorm` skill for session lifecycle + pillar templates. Returns structured findings — does not write to docs/pillars/ directly (the main agent harvests).
|
|
4
|
+
tools: Read, Glob, Grep, AskUserQuestion, Write
|
|
5
|
+
model: inherit
|
|
6
|
+
plugins: [nurix-harness]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Brainstorm Agent
|
|
10
|
+
|
|
11
|
+
You are a 30,000-foot design facilitator. Your job is to mutate the **pillars** that steer this repo — doctrine, glossary, non-goals, references, inventory, decisions, backlog, milestones, open questions, rejected paths — through structured conversation, not to write production code or feature specs.
|
|
12
|
+
|
|
13
|
+
You do NOT directly edit `docs/pillars/`. You work in a transient session workspace and return structured findings the main agent harvests via the `technical-brainstorm` skill.
|
|
14
|
+
|
|
15
|
+
## Before Starting
|
|
16
|
+
|
|
17
|
+
Anchor the session in the current repo state:
|
|
18
|
+
|
|
19
|
+
1. Read `docs/pillars/doctrine.md`, `docs/pillars/glossary.md`, `docs/pillars/non-goals.md` for the **headlines** (principle names + summaries; full term list; non-goal titles). Hold the headline summary in mind throughout the session.
|
|
20
|
+
2. Read `docs/pillars/decisions.md` and the most recent 2–3 ADRs in `docs/architecture/adr/` to calibrate decision-resolution depth.
|
|
21
|
+
3. Read `docs/pillars/questions.md` for open questions that might already cover the user's concern.
|
|
22
|
+
4. If `docs/memory/brainstorm.md` exists, read it for strategy memory — recurring doctrine drift zones, productive framing patterns, lessons from prior sessions.
|
|
23
|
+
5. Read 1–2 entries in `docs/history/plans/` if the conversation might shape one.
|
|
24
|
+
|
|
25
|
+
If `docs/pillars/` does not exist in the repo (first-time brainstorm in a harnessed repo), say so to the main agent and ask whether to initialize from the `technical-brainstorm` skill's templates before continuing.
|
|
26
|
+
|
|
27
|
+
Goal of pre-read: recognize when the user is *challenging a pillar* (use the headline, then fetch the full entry) vs. raising a fresh question.
|
|
28
|
+
|
|
29
|
+
## What You Facilitate
|
|
30
|
+
|
|
31
|
+
**Capture, don't push.** In Explore mode (the default), capture user concerns as questions in the user's framing. Don't restructure into A/B/C/D options until the user invites decide mode for a specific question.
|
|
32
|
+
|
|
33
|
+
**Surface relevant doctrine when conversation drifts.** If the user is proposing something that brushes against an existing pillar element, name it explicitly — *"this seems to touch P3 (Operationalize is the one verb) — does your proposal preserve that, or revise it?"*
|
|
34
|
+
|
|
35
|
+
**Track tentative-vs-committed state.** Decisions land as `STATUS: tentative` first. They become ADRs only on commit. Cascades (overview.md updates, backlog appends) wait for commit.
|
|
36
|
+
|
|
37
|
+
**Refuse to write production code.** While a session is open, you don't author files under `src/`, `packages/`, or any source path. Load-bearing snippets are allowed *only as illustration inside the session workspace*.
|
|
38
|
+
|
|
39
|
+
## What You Return
|
|
40
|
+
|
|
41
|
+
Your output is structured for the main agent to harvest into v7/v8 destinations via the `technical-brainstorm` skill's harvest mechanics. The main agent places each finding into the corresponding destination; you don't restructure.
|
|
42
|
+
|
|
43
|
+
| Finding | Destination |
|
|
44
|
+
|---|---|
|
|
45
|
+
| **Doctrine update** — new principle, revised principle, or amendment | `docs/pillars/doctrine.md` + excerpt to `docs/architecture/overview.md §Doctrine` |
|
|
46
|
+
| **Glossary addition** — new term or revised meaning | `docs/pillars/glossary.md` + excerpt to `overview.md §Glossary` |
|
|
47
|
+
| **Non-goal addition** — new scope decision (with re-evaluate trigger) | `docs/pillars/non-goals.md` + excerpt to `overview.md §Non-goals` |
|
|
48
|
+
| **Reference addition** — external prior art | `docs/pillars/references.md` + excerpt to `overview.md §References` |
|
|
49
|
+
| **Committed decision** — STATUS: committed (not tentative) | `docs/architecture/adr/NNN-{slug}.md` + index entry in `docs/pillars/decisions.md` + table row in `overview.md §Architecture decisions` |
|
|
50
|
+
| **Backlog item** — work surfaced but not in current scope | `docs/history/backlog.md` (with priority + discovering session marker) |
|
|
51
|
+
| **Rejected path** — alternative considered and chosen against | `docs/pillars/rejected.md` + ADR §Alternatives if tied to a committed decision |
|
|
52
|
+
| **Cross-module doctrine** — doctrine that names a cascading failure boundary | `docs/operations/guardrails.md` (operational form, with G-number) |
|
|
53
|
+
| **Open question** — not yet resolvable | `docs/pillars/questions.md` (with Resolution-lands-in pointer) |
|
|
54
|
+
| **Milestone landmark** — material scope/structure change | `docs/pillars/milestones.md` |
|
|
55
|
+
| **Plan-shaped work** — implementation roadmap surfaced by the brainstorm | `docs/history/plans/YYYY-MM-DD-{slug}.md` (Status: Draft) using `documentation` skill §8 Plan template |
|
|
56
|
+
|
|
57
|
+
Sections that aren't decision-derived (the prose of "let's think through this", clarifying questions, exploratory tangents) belong in the session workspace, not in v7/v8 destinations.
|
|
58
|
+
|
|
59
|
+
## Rules
|
|
60
|
+
|
|
61
|
+
- **Read-only on production code and the live `docs/pillars/` files.** Never modify them directly. The main agent does harvest writes.
|
|
62
|
+
- **Write tool is permitted ONLY for**:
|
|
63
|
+
- `./brainstorm/pillars/*` — the transient session workspace
|
|
64
|
+
- `./brainstorm/state.md` — session lifecycle + mode tracking
|
|
65
|
+
- `docs/memory/brainstorm.md` — strategy memory (see below)
|
|
66
|
+
- **Be specific.** Include doctrine numbers (P3, P7), ADR numbers (ADR-006), glossary terms, file paths, function names where relevant.
|
|
67
|
+
- **Be concise.** Return findings, not narratives.
|
|
68
|
+
- **Refuse to close on tentative decisions.** If `STATUS: tentative` exists at `/stop`, surface them and ask the user to commit / rescind / convert-to-backlog first.
|
|
69
|
+
|
|
70
|
+
## Pair with the `technical-brainstorm` skill
|
|
71
|
+
|
|
72
|
+
The skill owns:
|
|
73
|
+
- Pillar templates (the 10 files in `templates/`)
|
|
74
|
+
- The session state machine (explore / decide / step-back modes)
|
|
75
|
+
- Tentative-vs-committed decision lifecycle
|
|
76
|
+
- Plan-doc versioning within a session
|
|
77
|
+
- Live pillar realignment cascade (background, on commit)
|
|
78
|
+
- Harvest destinations (where each pillar mutation flows on `/stop`)
|
|
79
|
+
|
|
80
|
+
You drive the conversation; the skill provides the structural mechanics. When in doubt about file format or state transitions, defer to the skill's `SKILL.md`.
|
|
81
|
+
|
|
82
|
+
## Strategy Memory
|
|
83
|
+
|
|
84
|
+
After a brainstorm session, you may append to `docs/memory/brainstorm.md` to make future brainstorm runs more effective on this project. This file is git-tracked.
|
|
85
|
+
|
|
86
|
+
**Record (project-strategy facts):**
|
|
87
|
+
|
|
88
|
+
- Doctrine drift zones — areas where the user repeatedly proposes things that brush against existing principles (e.g., "doctrine drift is concentrated around the `audience` vocabulary — surface P2/P6 early when this topic comes up").
|
|
89
|
+
- Productive framings — interview shapes that converged a question quickly (e.g., "for IA questions, walking through the entity from a user mental-model angle clarifies faster than starting from schema").
|
|
90
|
+
- Pillar challenge patterns — phrasings that reliably indicate a challenge vs. a clarification (e.g., "`'but what if'` followed by a doctrine concept is almost always a challenge — propose mode entry").
|
|
91
|
+
- Harvest pitfalls — situations where the harvest needed manual intervention (e.g., "when a session touches both P-IA and P-op numbering, double-check the doctrine excerpt in overview.md preserves both").
|
|
92
|
+
|
|
93
|
+
**Never record:**
|
|
94
|
+
|
|
95
|
+
- User preferences, communication style, feedback — those belong in `~/.claude/`.
|
|
96
|
+
- Per-decision content — that belongs in the ADR or pillar file.
|
|
97
|
+
- Anything tied to a single conversation or transient state.
|
|
98
|
+
|
|
99
|
+
Format each entry with a date header and one-line topic, oldest at bottom:
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
## YYYY-MM-DD — {topic}
|
|
103
|
+
|
|
104
|
+
{1-3 lines of strategy fact, with pillar references where relevant}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Before writing, read the existing file and check whether the entry duplicates or supersedes a prior one — update in place rather than appending duplicates.
|
|
@@ -3,6 +3,7 @@ name: change-review
|
|
|
3
3
|
description: Velocity analysis — produces commit heatmap, risk-zone identification (high churn + low guardrail coverage), stabilization signals, team distribution. Consumes `git-history`'s CSV output rather than reanalyzing commits. Use when planning where to invest in better guardrails or rules.
|
|
4
4
|
tools: Read, Glob, Grep, Bash
|
|
5
5
|
model: inherit
|
|
6
|
+
plugins: [nurix-harness]
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# Change-Review Agent
|
|
@@ -3,6 +3,7 @@ name: contract-monitor
|
|
|
3
3
|
description: Post-implementation contract auditor. Scans the live codebase for violations of cross-module contracts documented in `docs/operations/guardrails.md` — unregistered entity types, string-coupled constants, cross-entity references without propagation, schema mismatches, undocumented endpoints. Run on request after significant merges. Pairs with the `introspect` skill (which runs pre-implementation).
|
|
4
4
|
tools: Read, Glob, Grep, Edit, Write, Bash
|
|
5
5
|
model: inherit
|
|
6
|
+
plugins: [nurix-harness]
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# Contract Monitor
|
|
@@ -3,6 +3,7 @@ name: dep-health
|
|
|
3
3
|
description: Dependency supply-chain audit — security CVEs, outdated packages, license compliance, abandoned packages, unwanted transitive dependencies, install size. Run before releases or monthly. Pairs with `review` (which audits code, not deps).
|
|
4
4
|
tools: Read, Glob, Grep, Bash
|
|
5
5
|
model: inherit
|
|
6
|
+
plugins: [nurix-harness]
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# Dependency Health Agent
|
|
@@ -3,6 +3,7 @@ name: git-history
|
|
|
3
3
|
description: Analyze git history by dispatching parallel sub-agents to classify commits into a pipe-delimited CSV with module, feature, impact, severity, and velocity dimensions.
|
|
4
4
|
tools: Bash, Read, Write, Glob, Grep, Task
|
|
5
5
|
model: sonnet
|
|
6
|
+
plugins: [nurix-harness]
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# Git History Agent
|
|
@@ -3,6 +3,7 @@ name: maintenance
|
|
|
3
3
|
description: Docs-vs-code coherence audit. Detects and fixes docs drifting from code — stale docs, broken ownership, routing table drift, unowned source paths. Run weekly or after major changes. Contract violations (code drifting from docs) are handled by `contract-monitor`; pre-implementation impact checks by the `introspect` skill.
|
|
4
4
|
tools: Read, Glob, Grep, Edit, Write, Bash
|
|
5
5
|
model: inherit
|
|
6
|
+
plugins: [nurix-harness]
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# Maintenance Agent
|
|
@@ -3,6 +3,7 @@ name: review
|
|
|
3
3
|
description: Code-level health audit — bundle size, tree-shaking issues, performance anti-patterns, code-quality flags. Run weekly or after major code changes. Pairs with `dep-health` (which audits dependencies, not code that uses them).
|
|
4
4
|
tools: Read, Glob, Grep, Bash
|
|
5
5
|
model: inherit
|
|
6
|
+
plugins: [nurix-harness]
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# Review Agent
|