create-claude-cabinet 0.11.1 → 0.11.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  # Claude Cabinet
2
2
 
3
3
  A cabinet of expert advisors for your Claude Code project. One command
4
- gives Claude a memory, 20 domain experts, a planning process, and the
4
+ gives Claude a memory, 27 domain experts, a planning process, and the
5
5
  habit of starting sessions informed and ending them properly.
6
6
 
7
7
  Built by a guy who'd rather talk to Claude than write code. Most of it
@@ -12,7 +12,7 @@ was built by Claude. I just complained until it worked.
12
12
  Your project gets a cabinet — specialist advisors who each own a domain
13
13
  and weigh in when their expertise matters:
14
14
 
15
- - **Cabinet members** — 20 domain experts (security, accessibility,
15
+ - **Cabinet members** — 27 domain experts (security, accessibility,
16
16
  architecture, QA, etc.) who review your project and surface what
17
17
  you'd miss alone
18
18
  - **Briefings** — project context members read before weighing in
@@ -37,7 +37,9 @@ say `/onboard`. It'll interview you about your project and set everything
37
37
  up based on your answers.
38
38
 
39
39
  **New to this?** See [GETTING-STARTED.md](GETTING-STARTED.md) for a
40
- step-by-step walkthrough.
40
+ step-by-step walkthrough. Then [WORKFLOW-GUIDE.md](WORKFLOW-GUIDE.md)
41
+ for how to use everything — when to plan, when to audit, what the
42
+ cabinet does for you, and how the system grows with your project.
41
43
 
42
44
  ### For developers
43
45
 
package/lib/cli.js CHANGED
@@ -163,6 +163,70 @@ function generateSkillIndex(projectDir) {
163
163
  const skillsDir = path.join(projectDir, '.claude', 'skills');
164
164
  if (!fs.existsSync(skillsDir)) return 0;
165
165
 
166
+ // Read project directive overlay if it exists
167
+ const projectDirectives = {};
168
+ const directivesFile = path.join(projectDir, '.claude', 'cabinet', 'directives-project.yaml');
169
+ if (fs.existsSync(directivesFile)) {
170
+ const dContent = fs.readFileSync(directivesFile, 'utf8');
171
+ // Parse simple YAML: top-level keys are member names, nested keys are
172
+ // standing-mandate (list) and directives (map)
173
+ let currentMember = null;
174
+ let inDirectives = false;
175
+ let currentDirectiveKey = null;
176
+ let currentDirectiveValue = '';
177
+ for (const line of dContent.split('\n')) {
178
+ if (/^\s*#/.test(line) || line.trim() === '') continue;
179
+ const indent = line.length - line.trimStart().length;
180
+ const content = line.trim();
181
+
182
+ // Flush previous directive value
183
+ if (currentDirectiveKey && indent <= 4 && !/^\s/.test(line.charAt(0)) || (indent <= 4 && currentDirectiveKey)) {
184
+ if (currentMember && currentDirectiveKey) {
185
+ if (!projectDirectives[currentMember]) projectDirectives[currentMember] = {};
186
+ if (!projectDirectives[currentMember].directives) projectDirectives[currentMember].directives = {};
187
+ projectDirectives[currentMember].directives[currentDirectiveKey] = currentDirectiveValue.trim();
188
+ }
189
+ currentDirectiveKey = null;
190
+ currentDirectiveValue = '';
191
+ }
192
+
193
+ if (indent === 0) {
194
+ // Top-level: member name
195
+ const m = content.match(/^(cabinet-[\w-]+):\s*$/);
196
+ if (m) {
197
+ currentMember = m[1];
198
+ projectDirectives[currentMember] = projectDirectives[currentMember] || {};
199
+ inDirectives = false;
200
+ }
201
+ } else if (indent === 2 && currentMember) {
202
+ const kv = content.match(/^([\w-]+):\s*(.*)$/);
203
+ if (kv) {
204
+ if (kv[1] === 'standing-mandate') {
205
+ // Parse [item1, item2] or item1, item2
206
+ const val = kv[2].replace(/^\[|\]$/g, '');
207
+ projectDirectives[currentMember].standingMandate = val.split(/,\s*/).map(s => s.trim()).filter(Boolean);
208
+ inDirectives = false;
209
+ } else if (kv[1] === 'directives') {
210
+ inDirectives = true;
211
+ }
212
+ }
213
+ } else if (indent === 4 && inDirectives && currentMember) {
214
+ const kv = content.match(/^([\w-]+):\s*(.*)$/);
215
+ if (kv) {
216
+ currentDirectiveKey = kv[1];
217
+ currentDirectiveValue = kv[2].replace(/^[>|]\s*$/, '');
218
+ }
219
+ } else if (indent >= 6 && currentDirectiveKey) {
220
+ currentDirectiveValue += ' ' + content;
221
+ }
222
+ }
223
+ // Flush last directive
224
+ if (currentMember && currentDirectiveKey) {
225
+ if (!projectDirectives[currentMember].directives) projectDirectives[currentMember].directives = {};
226
+ projectDirectives[currentMember].directives[currentDirectiveKey] = currentDirectiveValue.trim();
227
+ }
228
+ }
229
+
166
230
  const entries = [];
167
231
  const dirs = fs.readdirSync(skillsDir, { withFileTypes: true });
168
232
  for (const dir of dirs) {
@@ -202,6 +266,21 @@ function generateSkillIndex(projectDir) {
202
266
  entry.directives = fm.directives;
203
267
  }
204
268
 
269
+ // Merge project directive overlay (if any)
270
+ const overlay = projectDirectives[dir.name];
271
+ if (overlay) {
272
+ // Append project standing mandates (union, no duplicates)
273
+ if (overlay.standingMandate) {
274
+ const existing = entry.standingMandate || [];
275
+ const merged = [...new Set([...existing, ...overlay.standingMandate])];
276
+ entry.standingMandate = merged;
277
+ }
278
+ // Merge project directives (project wins on conflict)
279
+ if (overlay.directives) {
280
+ entry.directives = { ...(entry.directives || {}), ...overlay.directives };
281
+ }
282
+ }
283
+
205
284
  entries.push(entry);
206
285
  }
207
286
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-claude-cabinet",
3
- "version": "0.11.1",
3
+ "version": "0.11.2",
4
4
  "description": "Claude Cabinet — opinionated process scaffolding for Claude Code projects",
5
5
  "bin": {
6
6
  "create-claude-cabinet": "bin/create-claude-cabinet.js"
@@ -226,8 +226,8 @@ command queue processing (needed by any project with an async work queue).
226
226
 
227
227
  ## Writing Domain-Specific Cabinet Members
228
228
 
229
- CC ships 14 generic cabinet members. Flow has 19 additional domain-specific
230
- cabinet members. Here are three examples showing how to write your own.
229
+ CC ships 27 generic cabinet members. Your project can add domain-specific
230
+ cabinet members on top of these. Here are three examples showing how to write your own.
231
231
 
232
232
  ### Example 1: GTD (encoding domain expertise)
233
233
 
@@ -1,486 +1,227 @@
1
- # Process-in-a-Box
1
+ # Claude Cabinet — Template Reference
2
2
 
3
- Generic methodology artifacts extracted from Flow, a cognitive workspace
4
- built on Claude Code. These are the transferable parts of a development
5
- process that emerged from months of iterative building the patterns
6
- that work regardless of what you're building.
3
+ These are the upstream templates that the `create-claude-cabinet` installer
4
+ copies into your project. Everything here mirrors the `.claude/` directory
5
+ structure. The installer handles copying, hook merging, and index generation
6
+ you don't need to copy files manually unless you want to.
7
7
 
8
- For the full methodology and the reasoning behind these artifacts, see
9
- the [methodology essay](../areas/flow-development/process-in-a-box-methodology.md).
8
+ For the adoption story and user-facing docs, see the root
9
+ [README.md](../README.md). For how Flow and other projects extend these
10
+ templates, see [EXTENSIONS.md](EXTENSIONS.md).
10
11
 
11
12
  ## What's Here
12
13
 
13
- This package contains **Waves 1-7** artifacts. Wave 1 is generic as-is.
14
- Wave 2 parameterizes mixed-extractable artifacts — replacing hardcoded
15
- paths with references to `_briefing.md` and environment variables. Wave 3
16
- skeletons the session loop — orient and debrief — using the `phases/`
17
- pattern established by validate in Wave 2. Wave 4 skeletons the
18
- compliance stack enforcement pipeline, plan, and execute. Wave 5
19
- skeletons the audit loop audit, pulse, triage-audit with a reference
20
- data layer, cabinet member infrastructure, and scripts that make the
21
- whole system work out of the box. Wave 6 documents how Flow extends
22
- and will adopt the package — see [EXTENSIONS.md](EXTENSIONS.md) for
23
- annotated phase file overrides, reusable patterns, and cabinet member
24
- writing examples. Wave 7 adds the lifecycle layer — onboarding,
25
- capability seeding, upgrades, and Claude Cabinet health monitoring.
26
-
27
- Everything is organized to mirror the `.claude/` directory structure, so
28
- adoption is straightforward: copy what you need into your project's
29
- `.claude/` directory.
30
-
31
- ### Hooks (4)
32
-
33
- | Artifact | Wave | What It Does |
34
- |----------|------|-------------|
35
- | `hooks/git-guardrails.sh` | 1 | PreToolUse hook that blocks destructive git operations (force push to main, hard reset, git clean). Zero configuration needed. |
36
- | `hooks/stop-hook.md` | 1 | Template for a Stop event hook that checks whether the session-closing skill ran. Prompt-type (advisory, not blocking). |
37
- | `hooks/skill-telemetry.sh` | 2 | UserPromptSubmit hook that detects /skill-name invocations and logs to JSONL. Configurable via env vars. |
38
- | `hooks/skill-tool-telemetry.sh` | 2 | PostToolUse hook that captures programmatic Skill tool invocations. Configurable via env vars. |
39
-
40
- ### Rules (1)
41
-
42
- | Artifact | Wave | What It Does |
43
- |----------|------|-------------|
44
- | `rules/enforcement-pipeline.md` | 4 | Generic enforcement pipeline: capture classify → promote → encode → monitor. Describes the compliance stack, enforcement types, promotion criteria. |
45
-
46
- ### Skills (13)
47
-
48
- | Artifact | Wave | What It Does |
49
- |----------|------|-------------|
50
- | `skills/menu/SKILL.md` | 1 | Dynamically discovers and displays all skills by scanning `.claude/skills/*/SKILL.md`. No hardcoded content. |
51
- | `skills/investigate/SKILL.md` | 2 | Structured codebase exploration: frame observe hypothesize test → conclude. Pure methodology, no project-specific content. |
52
- | `skills/validate/SKILL.md` | 2 | **First `phases/` skeleton.** Orchestrates validators and presents a unified summary. Validators defined in `phases/validators.md`. |
53
- | `skills/orient/SKILL.md` | 3 | **Session start skeleton.** Loads context, syncs data, scans work, runs health checks and maintenance, presents briefing. 7 phase files. |
54
- | `skills/debrief/SKILL.md` | 3 | **Session close skeleton.** Inventories work, closes items, updates state, records lessons, captures loose ends. 8 phase files. |
55
- | `skills/plan/SKILL.md` | 4 | **Planning skeleton.** Research, overlap check, draft, cabinet member critique, completeness check, present, file work item. 7 phase files. |
56
- | `skills/execute/SKILL.md` | 4 | **Execution skeleton.** Load plan, activate cabinet members, 3-checkpoint protocol (pre-implementation, per-file-group, pre-commit), validate, verify AC. 5 phase files. |
57
- | `skills/audit/SKILL.md` | 5 | **Audit skeleton.** Select cabinet members, fast structural checks, load triage suppression, spawn parallel cabinet member agents with two-phase protocol, merge and persist findings. 5 phase files. |
58
- | `skills/pulse/SKILL.md` | 5 | **Pulse skeleton.** Self-description accuracy check: count freshness, dead reference spot-check, staleness detection. Two modes: embedded (silent in orient/debrief) and standalone. 3 phase files. |
59
- | `skills/triage-audit/SKILL.md` | 5 | **Triage skeleton.** Load findings, prepare commentary, present via local web UI or CLI, apply verdicts (fix/defer/reject), create actions for approved findings. 3 phase files. |
60
- | `skills/onboard/SKILL.md` | 7 | **Onboarding skeleton.** Conversational interview that generates the initial context layer. Re-runnable: first run generates, subsequent runs refine. 6 phase files. |
61
- | `skills/seed/SKILL.md` | 7 | **Capability seeding skeleton.** Detects technology adoption signals, proposes expertise conversations, builds and maintains cabinet members collaboratively. 4 phase files. |
62
- | `skills/cc-upgrade/SKILL.md` | 7 | **Upgrade skeleton.** Conversational merge when new Claude Cabinet skeletons arrive. Intelligence is the merge strategy — conversation, not mechanical copy. 4 phase files. |
63
-
64
- ### Scripts (6)
65
-
66
- | Artifact | Wave | What It Does |
67
- |----------|------|-------------|
68
- | `scripts/pib-db.js` | 5 | Reference data layer CLI. SQLite database for work tracking (actions, projects) and audit findings. Commands: init, query, create-action, list-actions, create-project, ingest-findings, triage, triage-history. |
69
- | `scripts/pib-db-schema.sql` | 5 | Database schema: projects, actions, audit_runs, audit_findings (with triage status). |
70
- | `scripts/merge-findings.js` | 5 | Merges per-cabinet-member JSON outputs into unified run-summary.json. Optional `--db` flag to ingest into pib-db. |
71
- | `scripts/load-triage-history.js` | 5 | Builds suppression lists from triage history. Tries pib-db first, falls back to filesystem scan. |
72
- | `scripts/triage-server.mjs` | 5 | Self-contained Node.js HTTP server for triage UI. Zero external dependencies. In-memory data shuttle. |
73
- | `scripts/triage-ui.html` | 5 | Browser-based triage interface. Dark-themed, findings grouped by cabinet member, severity badges, Fix/Defer/Reject/Question verdicts, bulk actions, progress bar. |
74
- | `scripts/finding-schema.json` | 5 | JSON Schema for audit finding validation. |
75
-
76
- ### Cabinet Members (15 + 7 infrastructure)
77
-
78
- Generic expert lenses that activate at structured checkpoints (planning,
79
- execution, audit). Each is a named domain expert encoded in markdown.
80
-
81
- **Wave 1 generic as-is (8):**
82
-
83
- | Cabinet Member | Domain | Activation |
84
- |------------|--------|-----------|
85
- | `anti-confirmation` | Reasoning quality, cognitive bias detection | On high-stakes decisions |
86
- | `boundary-man` | Implicit guards, silent exclusions, ZOMBIES analysis | Always-on during execution |
87
- | `debugger` | Dependency chains, environment prereqs, pre-flight investigation | Always-on during execution |
88
- | `small-screen` | Viewport adaptability, touch targets, responsive layout | During audits + layout code |
89
- | `organized-mind` | Levitin's cognitive neuroscience applied to system design | During audits + planning |
90
- | `speed-freak` | Database queries, render efficiency, bundle size, perceived speed | During audits |
91
- | `qa` | Active testing, acceptance criteria, regression verification | Always-on during plan + execute |
92
- | `technical-debt` | Fowler's debt quadrant, Beck's four rules, structural sustainability | During audits |
93
-
94
- **Wave 2 parameterized via `_briefing.md` (6):**
95
-
96
- | Cabinet Member | Domain | What's Parameterized |
97
- |------------|--------|---------------------|
98
- | `accessibility` | WCAG compliance, keyboard nav, screen reader, focus management | Scan scope paths, UI framework references |
99
- | `data-integrity` | Cross-store consistency, referential integrity, API contracts | Database paths, entity types, server paths |
100
- | `record-keeper` | Docs-code drift, convention compliance, CLAUDE.md coverage | File paths, validation scripts, entity types |
101
- | `process-therapist` | Skill/cabinet member effectiveness, overlap/gap analysis | Audit infrastructure paths, prompt guide location |
102
- | `workflow-cop` | Development lifecycle, human burden, guardrail effectiveness | Deployment platform, sync mechanisms, scheduled tasks |
103
- | `security` | Threat model, secrets management, API protection, deployment security | Server paths, deployment config, secret names |
104
-
105
- **Wave 7 lifecycle (1):**
106
-
107
- | Cabinet Member | Domain | Activation |
108
- |------------|--------|-----------|
109
- | `cc-health` | Claude Cabinet adoption health, phase file coverage, configuration drift, anti-bloat | Always-on during audit |
110
-
111
- **Infrastructure files (7):**
112
-
113
- | File | Wave | Purpose |
114
- |------|------|---------|
115
- | `_eval-protocol.md` | 1 | Structured assessment framework for evaluating skill/cabinet member effectiveness |
116
- | `_composition-patterns.md` | 1 | Five patterns for combining cabinet members: parallel, sequential, adversarial, nested, temporal |
117
- | `_briefing-template.md` | 1+2 | Template for the project-specific briefing every cabinet member reads. Wave 2 added: Scan Scopes, API Configuration, Entity Types, User Context. |
118
- | `_prompt-guide.md` | 2 | Craft knowledge for writing cabinet member prompts. 17 principles including Levitin's cognitive architecture. |
119
- | `output-contract.md` | 5 | How cabinet members produce structured findings for the audit system. Defines the assumption/evidence/question triad, severity calibration, positive findings, autoFixable field, JSON output format. |
120
- | `committees.yaml` | 5 | Upstream committee definitions for organizing cabinet members (ux, code, health, process, strategic). Upstream-owned; project customizations go in `committees-project.yaml`. |
121
- | `_lifecycle.md` | 5 | When to adopt, retire, and assess cabinet members. Cross-cutting vs grouped distinction. |
14
+ ### Hooks (5)
15
+
16
+ | Artifact | What It Does |
17
+ |----------|-------------|
18
+ | `hooks/git-guardrails.sh` | PreToolUse hook that blocks destructive git operations (force push to main, hard reset, git clean). Zero configuration. |
19
+ | `hooks/stop-hook.md` | Stop event hook that checks whether the session-closing skill ran. Prompt-type (advisory, not blocking). |
20
+ | `hooks/skill-telemetry.sh` | UserPromptSubmit hook that detects /skill-name invocations and logs to JSONL. Configurable via env vars. |
21
+ | `hooks/skill-tool-telemetry.sh` | PostToolUse hook that captures programmatic Skill tool invocations. Configurable via env vars. |
22
+ | `hooks/cc-upstream-guard.sh` | PreToolUse hook that blocks edits to manifest-tracked upstream files. Prevents downstream drift. |
23
+
24
+ ### Rules (2)
25
+
26
+ | Artifact | What It Does |
27
+ |----------|-------------|
28
+ | `rules/enforcement-pipeline.md` | Generic enforcement pipeline: capture, classify, promote, encode, monitor. Describes the compliance stack and promotion criteria. |
29
+ | `rules/memory-capture.md` | When and how to capture memories to omega. What to capture, what not to, cadence guidance. |
30
+
31
+ ### Skills (22 workflow + 27 cabinet members)
32
+
33
+ **Workflow Skills:**
34
+
35
+ | Skill | What It Does |
36
+ |-------|-------------|
37
+ | `skills/audit/` | Convene the full cabinet for a quality review. Select members, run structural checks, spawn parallel agents, merge and persist findings. 5 phase files. |
38
+ | `skills/cabinet/` | Front door to browse and consult expert cabinet members. Reads from `_index.json`. |
39
+ | `skills/cc-upgrade/` | Conversational upgrade when new Claude Cabinet versions arrive. Intelligence is the merge strategy. |
40
+ | `skills/debrief/` | Session close. Inventory work, close items, run cabinet consultations, update state, persist, record lessons. 9 phase files. |
41
+ | `skills/debrief-quick/` | Quick debrief variant — core phases only, skip presentation. |
42
+ | `skills/execute/` | Execute a plan with cabinet member checkpoints. 3-checkpoint protocol (pre-implementation, per-file-group, pre-commit). 5 phase files. |
43
+ | `skills/execute-plans/` | Batch execution of multiple plans with conflict detection. |
44
+ | `skills/extract/` | Analyze project artifacts and propose upstream extraction candidates for Claude Cabinet. |
45
+ | `skills/investigate/` | Structured codebase exploration: frame, observe, hypothesize, test, conclude. |
46
+ | `skills/link/` | Set up local development linking for Claude Cabinet source repo work. |
47
+ | `skills/memory/` | Browse, search, and manage semantic memory via omega. |
48
+ | `skills/menu/` | Dynamically discover and display all available skills. Reads from `_index.json`. |
49
+ | `skills/onboard/` | Conversational onboarding. Interviews you, generates briefings, wires the session loop. Re-runnable. 8 phase files. |
50
+ | `skills/orient/` | Session start. Load context, sync data, scan work, run health checks, spawn cabinet consultations, show skills menu. 7 phase files. |
51
+ | `skills/orient-quick/` | Quick orient variant core phases only, skip presentation. |
52
+ | `skills/plan/` | Structured planning with cabinet critique. Research, overlap check, draft, critique, completeness, present, file. 9 phase files. |
53
+ | `skills/publish/` | Publish workflow (CC source repo only, not shipped to consumers). |
54
+ | `skills/pulse/` | Self-description accuracy check. Count freshness, dead references, staleness. 3 phase files. |
55
+ | `skills/seed/` | Recruit new cabinet members. Detect technology signals, propose expertise, build collaboratively. 4 phase files. |
56
+ | `skills/triage-audit/` | Audit finding triage via local web UI or CLI. Load, present, apply verdicts. 3 phase files. |
57
+ | `skills/unlink/` | Remove local development linking. Returns to published npm package. |
58
+ | `skills/validate/` | Run structural validation checks. Validators defined in phase files. |
59
+ | `skills/work-tracker/` | Open the work tracking UI interactively. Starts local server. |
60
+
61
+ **Cabinet Members (27):**
62
+
63
+ Generic expert lenses that activate at structured checkpoints. Each is a
64
+ domain expert encoded in markdown with frontmatter declaring standing
65
+ mandates and scoped directives.
66
+
67
+ | Cabinet Member | Domain |
68
+ |----------------|--------|
69
+ | `cabinet-accessibility` | WCAG compliance, keyboard nav, screen reader, focus management |
70
+ | `cabinet-anti-confirmation` | Reasoning quality, cognitive bias detection |
71
+ | `cabinet-architecture` | System fit, infrastructure leverage, CTO-level evaluation |
72
+ | `cabinet-boundary-man` | Implicit guards, silent exclusions, ZOMBIES analysis |
73
+ | `cabinet-cc-health` | Claude Cabinet adoption health, configuration drift, anti-bloat |
74
+ | `cabinet-data-integrity` | Cross-store consistency, referential integrity, API contracts |
75
+ | `cabinet-debugger` | Dependency chains, error modes, environment prerequisites |
76
+ | `cabinet-framework-quality` | UI framework utilization, API coverage, anti-patterns |
77
+ | `cabinet-goal-alignment` | Strategic purpose alignment, feature-mission fit |
78
+ | `cabinet-historian` | Institutional memory, decision archaeology, context preservation |
79
+ | `cabinet-information-design` | Spatial composition, visual hierarchy, layout decisions |
80
+ | `cabinet-mantine-quality` | Mantine v8 specialist (opt-in pre-built variant) |
81
+ | `cabinet-organized-mind` | Levitin's cognitive neuroscience applied to system design |
82
+ | `cabinet-process-therapist` | Skill/process effectiveness, overlap/gap analysis |
83
+ | `cabinet-qa` | Active testing, acceptance criteria, regression verification |
84
+ | `cabinet-record-keeper` | Documentation accuracy, docs-code drift, convention compliance |
85
+ | `cabinet-roster-check` | Skill ecosystem strategy, coverage gaps, redundancy |
86
+ | `cabinet-security` | Threat model, secrets management, API protection |
87
+ | `cabinet-small-screen` | Viewport adaptability, touch targets, responsive layout |
88
+ | `cabinet-speed-freak` | Database queries, render efficiency, perceived speed |
89
+ | `cabinet-system-advocate` | Feature adoption tracking, capability discoverability |
90
+ | `cabinet-technical-debt` | Fowler's debt quadrant, structural sustainability |
91
+ | `cabinet-ui-experimentalist` | Bleeding-edge UI patterns, experimental techniques |
92
+ | `cabinet-usability` | Interaction model coherence, UX design |
93
+ | `cabinet-user-advocate` | End-user perspective, system education |
94
+ | `cabinet-vision` | Strategic direction, what the project should become |
95
+ | `cabinet-workflow-cop` | Development lifecycle, human burden, guardrail effectiveness |
96
+
97
+ **Cabinet Infrastructure (8):**
98
+
99
+ | File | Purpose |
100
+ |------|---------|
101
+ | `cabinet/committees.yaml` | Upstream committee definitions (ux, code, health, process, strategic). Project customizations go in `committees-project.yaml`. |
102
+ | `cabinet/directives-project.yaml` | Template for project-level directive overlay. Extends upstream members with project-specific mandates and directives. |
103
+ | `cabinet/composition-patterns.md` | Five patterns for combining cabinet members: parallel, sequential, adversarial, nested, temporal. |
104
+ | `cabinet/eval-protocol.md` | Structured assessment framework for evaluating skill/cabinet member effectiveness. |
105
+ | `cabinet/lifecycle.md` | When to adopt, retire, and assess cabinet members. |
106
+ | `cabinet/output-contract.md` | How cabinet members produce structured findings for the audit system. |
107
+ | `cabinet/prompt-guide.md` | Craft knowledge for writing cabinet member prompts. 17 principles. |
108
+
109
+ ### Scripts (12)
110
+
111
+ | Script | What It Does |
112
+ |--------|-------------|
113
+ | `scripts/cabinet-memory-adapter.py` | Python adapter for omega memory. Project-scoped tiered retrieval. |
114
+ | `scripts/cc-drift-check.cjs` | Compare installed file hashes against manifest. Detect upstream drift. |
115
+ | `scripts/finding-schema.json` | JSON Schema for audit finding validation. |
116
+ | `scripts/load-triage-history.js` | Build suppression lists from triage history. Tries pib-db first, falls back to filesystem. |
117
+ | `scripts/merge-findings.js` | Merge per-cabinet-member JSON outputs into unified run-summary. Optional `--db` flag for pib-db ingestion. |
118
+ | `scripts/pib-db.js` | Reference data layer CLI. SQLite for work tracking (actions, projects) and audit findings. |
119
+ | `scripts/pib-db-schema.sql` | Database schema: projects, actions, audit_runs, audit_findings. |
120
+ | `scripts/resolve-committees.cjs` | Merge upstream `committees.yaml` with project `committees-project.yaml`. Deterministic output. |
121
+ | `scripts/triage-server.mjs` | Self-contained Node.js HTTP server for triage UI. Zero external dependencies. |
122
+ | `scripts/triage-ui.html` | Browser-based triage interface. Dark-themed, severity badges, bulk actions. |
123
+ | `scripts/work-tracker-server.mjs` | Self-contained Node.js HTTP server for work tracking UI. |
124
+ | `scripts/work-tracker-ui.html` | Browser-based work tracking interface. Projects, actions, filtering. |
125
+
126
+ ### Briefing Templates (6)
127
+
128
+ | Template | What It Generates |
129
+ |----------|-------------------|
130
+ | `briefing/_briefing-template.md` | Hub template. Describes all briefing files and the member-to-briefing mapping. |
131
+ | `briefing/_briefing-identity-template.md` | Project identity: what it is, core principles, user context. |
132
+ | `briefing/_briefing-architecture-template.md` | Tech stack, data stores, deployment. |
133
+ | `briefing/_briefing-jurisdictions-template.md` | Directory layout, file ownership, conventions. |
134
+ | `briefing/_briefing-cabinet-template.md` | Active members, portfolio rules, invocation patterns. |
135
+ | `briefing/_briefing-work-tracking-template.md` | Work tracking setup, query patterns. |
136
+ | `briefing/_briefing-api-template.md` | API endpoints, auth, entity types (only if project has an API). |
122
137
 
123
138
  ### Memory (1 pattern + 1 template)
124
139
 
125
140
  | Artifact | What It Does |
126
141
  |----------|-------------|
127
- | `patterns/pattern-intelligence-first.md` | Universal principle: use LLM for semantic work, JSON for pipelines, research before coding |
128
- | `patterns/_pattern-template.md` | The pattern file format itself — frontmatter schema for the feedback-to-enforcement pipeline |
142
+ | `memory/patterns/pattern-intelligence-first.md` | Universal principle: use LLM for semantic work, JSON for pipelines, research before coding. |
143
+ | `memory/patterns/_pattern-template.md` | Pattern file format for the feedback-to-enforcement pipeline. |
129
144
 
130
145
  ## How to Adopt
131
146
 
132
- ### Minimum viable adoption
147
+ ### Recommended: use the installer
148
+
149
+ ```bash
150
+ npx create-claude-cabinet
151
+ ```
152
+
153
+ The CLI walks you through module selection, copies templates, sets up
154
+ hooks, generates the skill index, and optionally installs a SQLite work
155
+ tracker. Then run `/onboard` in Claude Code for conversational setup.
156
+
157
+ For non-developers or fresh machines:
158
+
159
+ ```bash
160
+ curl -fsSL https://raw.githubusercontent.com/orenmagid/claude-cabinet/main/install.sh | bash
161
+ ```
162
+
163
+ ### Manual adoption (copy what you need)
164
+
165
+ If you prefer manual control, copy files from this `templates/` directory
166
+ into your project's `.claude/` directory. The minimum viable adoption:
133
167
 
134
168
  1. Copy `hooks/git-guardrails.sh` to `.claude/hooks/`
135
- 2. Add the hook to your `.claude/settings.json`:
136
- ```json
137
- {
138
- "hooks": {
139
- "PreToolUse": [{
140
- "matcher": "Bash",
141
- "hooks": [{
142
- "type": "command",
143
- "command": ".claude/hooks/git-guardrails.sh"
144
- }]
145
- }]
146
- }
147
- }
148
- ```
149
- 3. Copy `skills/menu/SKILL.md` to `.claude/skills/menu/`
150
-
151
- You now have git safety and skill discovery.
152
-
153
- ### Adding telemetry
154
-
155
- 1. Copy `hooks/skill-telemetry.sh` and `hooks/skill-tool-telemetry.sh`
156
- to `.claude/hooks/`
157
- 2. Add to your `.claude/settings.json`:
158
- ```json
159
- {
160
- "hooks": {
161
- "UserPromptSubmit": [{
162
- "matcher": "",
163
- "hooks": [{ "type": "command", "command": ".claude/hooks/skill-telemetry.sh" }]
164
- }],
165
- "PostToolUse": [{
166
- "matcher": "Skill",
167
- "hooks": [{ "type": "command", "command": ".claude/hooks/skill-tool-telemetry.sh" }]
168
- }]
169
- }
170
- }
171
- ```
172
- 3. Optionally set `TELEMETRY_DIR` to control where JSONL records are written
173
- (defaults to `~/.claude/telemetry/`)
174
-
175
- ### Adding cabinet members
176
-
177
- 1. Copy `skills/cabinet/` to `.claude/skills/cabinet/`
178
- 2. Create your own `_briefing.md` from `_briefing-template.md` — fill in
179
- your project's specifics (scan scopes, data store, entity types, etc.)
180
- 3. Wave 2 cabinet members reference `_briefing.md` sections by name — fill in
181
- the sections relevant to the cabinet members you adopt
182
- 4. Cabinet members are now available for your planning, execution, and audit
183
- skills to invoke
184
-
185
- ### Adding the validate skeleton
186
-
187
- 1. Copy `skills/validate/` (including `phases/`) to `.claude/skills/validate/`
188
- 2. Edit `phases/validators.md` — uncomment and adapt the example validators
189
- for your project's type checker, linter, build step, etc.
190
- 3. Run `/validate` to confirm your validators work
191
-
192
- This is the first skill using the `phases/` pattern. The skeleton defines
193
- the orchestration; you write your validators in the phase file.
194
-
195
- ### Guided onboarding (recommended)
196
-
197
- Instead of manually copying files, run `/onboard` after copying the
198
- onboard skill. It interviews you about your project, generates the
199
- context layer, wires the session loop, and presents opt-in modules.
200
- Re-run it as your project matures to refine what was generated.
201
-
202
- ### Adding the session loop (orient + debrief) — manual
203
-
204
- 1. Copy `skills/orient/` and `skills/debrief/` (including `phases/`)
205
- to `.claude/skills/orient/` and `.claude/skills/debrief/`
206
- 2. Edit the orient phase files:
207
- - `phases/context.md` — what files and state to read at session start
208
- - `phases/data-sync.md` — how to sync fresh data (skip if purely local)
209
- - `phases/work-scan.md` — what work items to check
210
- - Leave other phase files empty until you need them
211
- 3. Edit the debrief phase files:
212
- - `phases/close-work.md` — how to match and close work items
213
- - `phases/update-state.md` — what state files to update
214
- - `phases/record-lessons.md` — how to capture lessons
215
- - Leave other phase files empty until you need them
216
- 4. Add the stop hook (`hooks/stop-hook.md`) to verify debrief ran
217
-
218
- Start with context + work-scan + close-work + record-lessons. Add more
219
- phases as your project matures and you discover what decays without them.
220
-
221
- To add project-specific phases the skeleton doesn't define, create new
222
- files in `phases/` — each declares when it runs relative to the core
223
- phases. Claude discovers them at runtime.
224
-
225
- ### Adding the planning/execution workflow
226
-
227
- 1. Copy `skills/plan/` and `skills/execute/` (including `phases/`)
228
- to `.claude/skills/plan/` and `.claude/skills/execute/`
229
- 2. Edit the plan phase files:
230
- - `phases/overlap-check.md` — how to search for existing work (skip if
231
- no work tracker yet)
232
- - `phases/plan-template.md` — customize your plan sections (or leave
233
- empty for the default template)
234
- - `phases/work-tracker.md` — how to file work items
235
- 3. Edit the execute phase files:
236
- - `phases/load-plan.md` — where your plans live (or leave empty if
237
- plans are always in conversation)
238
- - `phases/commit-and-deploy.md` — your commit and deploy workflow
239
- - `phases/validators.md` — what validation to run
240
- - `phases/verification-tools.md` — tools for checking manual AC
241
- 4. Fill in the **Work Tracking** section of your `_briefing.md`
242
-
243
- Start with plan-template + work-tracker + commit-and-deploy. Other phase
244
- files have sensible defaults. To actively suppress a default phase, write
245
- `skip: true` in the file instead of leaving it empty.
246
-
247
- ### Adding the enforcement pipeline
248
-
249
- 1. Copy `rules/enforcement-pipeline.md` to `.claude/rules/`
250
- 2. Copy `memory/patterns/` to your memory directory
251
-
252
- 1. Copy `memory/patterns/` to your memory directory
253
- 2. Use `_pattern-template.md` as the format for capturing your own
254
- project's friction patterns
255
- 3. Over time, patterns accumulate and some get promoted to rules or hooks
256
-
257
- ### Adding the audit loop
258
-
259
- The audit loop has three skills (audit, pulse, triage-audit), a reference
260
- data layer, and supporting scripts. The design philosophy is "Claude
261
- Cabinet" — sensible defaults that work out of the box, easy to override
262
- when you outgrow them.
263
-
264
- 1. **Initialize the reference data layer:**
265
- ```bash
266
- cp process-in-a-box/scripts/pib-db*.* your-project/scripts/
267
- cd your-project && node scripts/pib-db.js init
268
- ```
269
- This creates a local SQLite database for work tracking and audit
270
- findings. The session loop skills (orient work-scan, debrief close-work,
271
- plan overlap-check and work-tracker) will use it automatically via
272
- their default behaviors.
273
-
274
- 2. **Copy audit skills:**
275
- ```bash
276
- cp -r process-in-a-box/skills/audit/ .claude/skills/audit/
277
- cp -r process-in-a-box/skills/pulse/ .claude/skills/pulse/
278
- cp -r process-in-a-box/skills/triage-audit/ .claude/skills/triage-audit/
279
- ```
280
-
281
- 3. **Copy cabinet member infrastructure:**
282
- ```bash
283
- cp process-in-a-box/skills/cabinet/output-contract.md .claude/skills/cabinet/
284
- cp process-in-a-box/skills/cabinet/committees.yaml .claude/skills/cabinet/
285
- cp process-in-a-box/skills/cabinet/_lifecycle.md .claude/skills/cabinet/
286
- ```
287
-
288
- 4. **Copy audit scripts:**
289
- ```bash
290
- cp process-in-a-box/scripts/merge-findings.js your-project/scripts/
291
- cp process-in-a-box/scripts/load-triage-history.js your-project/scripts/
292
- cp process-in-a-box/scripts/triage-server.mjs your-project/scripts/
293
- cp process-in-a-box/scripts/triage-ui.html your-project/scripts/
294
- cp process-in-a-box/scripts/finding-schema.json your-project/scripts/
295
- ```
296
-
297
- 5. **Customize committees** (optional):
298
- Create a `committees-project.yaml` in `.claude/cabinet/` to add custom
299
- members or committees. The upstream `committees.yaml` is installed
300
- automatically. Run `node scripts/resolve-committees.cjs` to see the
301
- merged result.
302
-
303
- 6. **Run your first audit:** `/audit` — it discovers cabinet members, runs
304
- them, and persists findings. Then `/triage-audit` to review results.
305
-
306
- The reference data layer is designed to be replaced. When your project
307
- outgrows local SQLite (needs a team dashboard, external API, deployed
308
- database), override the relevant phase files in each skill. The phase
309
- file protocol means you replace one piece at a time without touching
310
- the skill orchestration.
311
-
312
- ## What You and Claude Build Together
313
-
314
- The package provides skeletons and infrastructure. You and Claude fill
315
- in the project-specific parts together — Claude helps you write the
316
- phase files, configure cabinet members, and set up validators. This is
317
- the working relationship the methodology is built around: the human
318
- provides judgment and domain knowledge, Claude implements, evaluates,
319
- and proposes.
320
-
321
- These are the project-specific pieces to build as you adopt:
322
-
323
- - **`_briefing.md`** — Project-specific briefing that all cabinet members read.
324
- Start from `_briefing-template.md`. Claude helps you fill in the sections
325
- relevant to the cabinet members you adopt.
326
- - **Orient phase files** — Session startup specifics (what to read, what
327
- to sync, what work to scan). The skeletons have commented-out examples;
328
- Claude helps you adapt them for your project.
329
- - **Debrief phase files** — Session close specifics (how to close work,
330
- what state to update, how to capture lessons). Same pattern — skeletons
331
- guide, Claude helps implement.
332
- - **Validators** — Edit `skills/validate/phases/validators.md` with your
333
- project's specific checks. Claude can help identify what to validate.
334
- - **Plan phase files** — Planning specifics (how to check for existing work,
335
- your plan template, how to file work items). Skeletons have defaults for
336
- each phase; customize when your project needs something different.
337
- - **Execute phase files** — Execution specifics (where plans live, what
338
- verification tools to use, how to commit and deploy). Same pattern.
339
-
340
- - **Audit phase files** — Audit specifics (which cabinet members to run,
341
- fast structural checks, how to persist findings). Defaults use pib-db
342
- and the included scripts; customize when your project needs external
343
- storage or different workflows.
344
- - **Pulse checks** — What self-description accuracy to verify (counts,
345
- references, staleness). Start empty for defaults; add project-specific
346
- checks as you discover what drifts.
347
- - **Triage phase files** — Where findings come from, how to present them,
348
- how to apply verdicts. Defaults use the local triage UI and pib-db.
349
- - **Committees** — The upstream `committees.yaml` is installed automatically.
350
- Create `committees-project.yaml` to add custom members to upstream
351
- committees or define new project-specific committees.
352
-
353
- None of this requires working alone. Claude is the constant companion
354
- throughout — the package provides the structure, and you build the
355
- specifics together through use.
169
+ 2. Add the hook to `.claude/settings.json`
170
+ 3. Copy `skills/menu/` to `.claude/skills/menu/`
171
+
172
+ You now have git safety and skill discovery. Add more modules as needed:
173
+
174
+ - **Session loop:** `skills/orient/`, `skills/debrief/`, `hooks/stop-hook.md`
175
+ - **Planning:** `skills/plan/`, `skills/execute/`
176
+ - **Audit:** `skills/audit/`, `skills/pulse/`, `skills/triage-audit/`, plus `cabinet/` infrastructure and `scripts/`
177
+ - **Cabinet members:** Copy individual `skills/cabinet-*/` directories for the experts you want
356
178
 
357
179
  ## Configuration
358
180
 
359
- There is no `box.yaml` or template engine. Configuration uses two mechanisms:
360
-
361
- 1. **`_briefing.md`** — For cabinet members. Fill in the sections relevant to
362
- the cabinet members you adopt. Cabinet members reference sections by name
363
- (e.g., `_briefing.md § Data Store`).
364
-
365
- 2. **`phases/` directories** — For skills. Skeleton SKILL.md defines the
366
- generic workflow. You write your implementations in phase files. Claude
367
- reads whatever phase files exist at runtime. All skeleton skills use
368
- this pattern: validate, orient, debrief, plan, and execute.
369
-
370
- Phase files have **three states**:
371
- - **Absent or empty** → use the skeleton's default behavior
372
- - **Contains `skip: true`** → explicitly opt out, skip entirely
373
- - **Contains content** → custom behavior replaces the default
374
-
375
- This three-state protocol means a new project gets useful behavior
376
- out of the box, while mature projects can customize or suppress any
377
- phase. All skeleton skills use this pattern: validate, orient,
378
- debrief, plan, execute, audit, pulse, triage-audit, onboard, seed,
379
- and upgrade.
380
-
381
- 3. **Environment variables** — For hooks and scripts. Telemetry hooks read
382
- `TELEMETRY_DIR`, `TELEMETRY_FILE`, `DEBUG_LOG`, `SKILL_DIR`. Database
383
- scripts read `PIB_DB_PATH` (default: `./pib.db`), `REVIEWS_DIR`
384
- (default: `./reviews`). All have sensible defaults.
385
-
386
- ## What This Package Does NOT Include
387
-
388
- - **Flow-specific skills** — 15 skills deeply specific to Flow's
389
- architecture (inbox processing, voice capture, deploy verification,
390
- etc.). The generic patterns (orient, debrief, plan, execute, audit,
391
- pulse, triage-audit) are included as skeletons. See
392
- [EXTENSIONS.md](EXTENSIONS.md) for annotated descriptions of these
393
- skills and the reusable patterns they embody.
394
- - **Flow-specific cabinet members** — system-advocate, life-tracker,
395
- life-optimization, and 19 other cabinet members tied to Flow's domain
396
- (GTD expertise, Mantine quality, sync health, etc.). EXTENSIONS.md
397
- includes examples showing how to write your own domain cabinet members.
398
- - **Distribution mechanism** — No npm package, no installer. Copy files.
399
- The `/onboard` skill guides adoption. The `/cc-upgrade` skill handles updates.
400
-
401
- ## Relationship to Flow
402
-
403
- Flow is the reference implementation — the project these artifacts were
404
- extracted from. Flow continues using its own copies in `.claude/`. The
405
- package is a standalone extraction that proves these artifacts are
406
- cleanly separable. Flow's specific implementations serve as extension
407
- examples showing what a mature deployment looks like. See
408
- [EXTENSIONS.md](EXTENSIONS.md) for annotated examples of how Flow
409
- extends, overrides, and will adopt the package's skeletons.
410
-
411
- ## Waves
412
-
413
- This package includes all 7 waves of the extraction:
414
-
415
- 1. **Package generic artifacts** — done (17 artifacts)
416
- 2. **Parameterize paths** — done (14 artifacts: telemetry hooks, validate
417
- skeleton, investigate, prompt guide, 6 parameterized cabinet members,
418
- `_briefing.md` contract)
419
- 3. **Skeleton the session loop** — done (orient + debrief skeletons with
420
- 7 + 8 phase files, custom phase injection for project extensions)
421
- 4. **Skeleton the compliance stack** — done (enforcement pipeline rules,
422
- plan skeleton with 7 phases, execute skeleton with 5 phases, three-state
423
- phase protocol, `_briefing.md` Work Tracking section)
424
- 5. **Skeleton the audit loop** — done (audit + pulse + triage-audit
425
- skeletons with 5 + 3 + 3 phase files, reference data layer with SQLite
426
- for work tracking and audit findings, cabinet member infrastructure with
427
- output contract + committees + lifecycle, 7 scripts including triage UI,
428
- interaction boundary documentation, default phase content using pib-db)
429
- 6. **Document extension examples** — done (EXTENSIONS.md with annotated
430
- Flow phase file overrides, accidentally-generic scan documenting 8
431
- reusable patterns, cabinet member writing guide with 3 examples)
432
- 7. **Lifecycle layer** — done (onboard skeleton for project adoption with
433
- 3-mode re-runnability, seed skeleton for capability seeding from tech
434
- signals, upgrade skeleton for conversational box updates, cc-health
435
- cabinet member for adoption monitoring, pib-db enhancements: status
436
- tracking, tags, update-action command, migration logic)
181
+ No config files, no YAML DSL, no template engine. Configuration uses:
437
182
 
438
- ## Adopting Skeletons: Where Content Goes
183
+ 1. **Briefing files** Project context that cabinet members read. Fill in
184
+ from the templates. Members reference sections by name.
185
+
186
+ 2. **Phase files** — Project-specific behavior for skeleton skills. Three
187
+ states: absent (use default), `skip: true` (disable), or content
188
+ (override).
189
+
190
+ 3. **Committee overlays** — `committees-project.yaml` extends upstream
191
+ committee definitions. `directives-project.yaml` extends upstream
192
+ member mandates and directives.
193
+
194
+ 4. **Environment variables** — For hooks and scripts. Telemetry hooks read
195
+ `TELEMETRY_DIR`, `TELEMETRY_FILE`. Database scripts read `PIB_DB_PATH`
196
+ (default: `./pib.db`). All have sensible defaults.
197
+
198
+ ## Skill Index
439
199
 
440
- When you adopt a skeleton replacing a monolithic skill definition with
441
- the skeleton SKILL.md plus project-specific phase files use these
442
- placement rules.
200
+ The installer generates `.claude/skills/_index.json` at install time,
201
+ caching metadata for all skills: name, description, type (workflow vs
202
+ cabinet), standing mandates, scoped directives, and invocability flags.
203
+ Consumers (`/menu`, `/cabinet`, orient, debrief, plan, execute,
204
+ investigate, seed) read the index instead of scanning individual files.
205
+
206
+ ## Adopting Skeletons: Where Content Goes
443
207
 
444
208
  ### Skeleton SKILL.md (generic, lives in this package)
445
209
 
446
210
  - Orchestration (the sequence of phases and how they connect)
447
211
  - Phase protocol (the three-state table)
448
212
  - Identity (what the skill *is*)
449
- - Generic motivation (why this kind of skill exists — any project
450
- recognizes the problem)
451
- - Boundary tables (generic: how this skill relates to other skeleton skills)
452
- - Assessment Log section (empty placeholder for runtime accumulation)
213
+ - Generic motivation (why this kind of skill exists)
453
214
  - Calibration (without/with examples using generic scenarios)
454
- - Extending instructions (how to add phases, validators, checks)
455
215
 
456
216
  ### Phase files (project-specific)
457
217
 
458
218
  - Operational instructions (what to check, fix, report)
459
219
  - Specific commands (bash, file paths, API calls)
460
- - Specific file references (which files to count, verify, scan)
461
220
  - Domain logic (rotation tracking, drift detection, etc.)
462
- - Cadence and timing (when checks run relative to other steps)
463
-
464
- ### Your project's SKILL.md (starts as skeleton copy, then extends)
465
-
466
- - Project frontmatter (`standing-mandate`, project-specific `related`
467
- entries, `last-verified`)
468
- - Extended boundary tables: skeleton's generic rows PLUS rows for your
469
- project-specific skills
470
- - Project-specific context that helps Claude understand *your*
471
- deployment (but NOT operational instructions — those go in phases)
472
-
473
- ### What stays outside phase files
474
-
475
- - **Runtime state** (e.g., `pulse-state.json`) stays alongside the
476
- skill, not in `phases/`
477
- - **Contextual guidance** (boundary tables, identity) stays in SKILL.md
478
- - **Accumulation sections** (assessment logs) stay in SKILL.md
479
221
 
480
222
  ### The placement test
481
223
 
482
- 1. Would a different project need this? Skeleton SKILL.md
483
- 2. Does it reference specific files, commands, or APIs? Phase file
484
- 3. Does it help Claude understand the skill but isn't executable?
485
- Your SKILL.md
486
- 4. Does it accumulate over time? → SKILL.md section, not a phase
224
+ 1. Would a different project need this? -> Skeleton SKILL.md
225
+ 2. Does it reference specific files, commands, or APIs? -> Phase file
226
+ 3. Does it help Claude understand the skill but isn't executable? -> Your SKILL.md
227
+ 4. Does it accumulate over time? -> SKILL.md section, not a phase
@@ -74,19 +74,26 @@ Which cabinet members need which briefing files (identity is always loaded):
74
74
  | cc-health | | x | x | | |
75
75
  | data-integrity | x | x | | | x |
76
76
  | debugger | x | | | | |
77
- | record-keeper | | x | | | |
77
+ | framework-quality | | x | | | |
78
+ | goal-alignment | | | | | |
78
79
  | historian | x | | | | |
79
- | process-therapist | | x | x | | |
80
- | small-screen | | x | | | |
80
+ | information-design | | x | | | |
81
+ | mantine-quality | | x | | | |
81
82
  | organized-mind | x | | | | |
82
- | speed-freak | x | x | | | |
83
- | workflow-cop | | x | | | |
83
+ | process-therapist | | x | x | | |
84
84
  | qa | x | x | | | |
85
- | security | x | x | | | x |
85
+ | record-keeper | | x | | | |
86
86
  | roster-check | | | x | | |
87
- | system-advocate | | | x | | |
87
+ | security | x | x | | | x |
88
+ | small-screen | | x | | | |
89
+ | speed-freak | x | x | | | |
90
+ | system-advocate | | | x | | |
88
91
  | technical-debt | x | | | | |
92
+ | ui-experimentalist | | x | | | |
89
93
  | usability | | x | | | |
94
+ | user-advocate | | x | | | |
95
+ | vision | | | | | |
96
+ | workflow-cop | | x | | | |
90
97
 
91
98
  ## Domain Extension Files
92
99
 
@@ -0,0 +1,32 @@
1
+ # Project-specific directive overlay for cabinet members.
2
+ #
3
+ # This file is project-owned — it is NOT overwritten by the installer.
4
+ # Use it to extend upstream members with project-specific mandates and
5
+ # directives for project-specific skills (e.g., /publish, /deploy).
6
+ #
7
+ # Consumed by: generateSkillIndex() in lib/cli.js (merged at install time
8
+ # into _index.json alongside upstream frontmatter).
9
+ #
10
+ # Merge rules:
11
+ # - standing-mandate: APPENDED to upstream (union, no duplicates)
12
+ # - directives: MERGED with upstream (project wins on key conflict)
13
+ # - You cannot remove upstream mandates or directives from here
14
+ #
15
+ # Format:
16
+ #
17
+ # cabinet-record-keeper:
18
+ # standing-mandate: [publish]
19
+ # directives:
20
+ # publish: >
21
+ # Check all docs for staleness and missing additions
22
+ # before the version is published.
23
+ #
24
+ # cabinet-security:
25
+ # standing-mandate: [deploy]
26
+ # directives:
27
+ # deploy: >
28
+ # Review deployment config for exposed secrets and
29
+ # overly permissive access.
30
+ #
31
+ # The member name must match the directory name (e.g., cabinet-record-keeper).
32
+ # Only cabinet-* members can be extended — workflow skills use phase files.
@@ -220,6 +220,17 @@ Every cabinet member skill should have these sections:
220
220
  name: cabinet-{name}
221
221
  description: Rich 2-3 sentence description for ambient discovery
222
222
  user-invocable: false
223
+ standing-mandate: audit, plan
224
+ directives:
225
+ plan: >
226
+ One-sentence scoped task for this member during planning.
227
+ debrief: >
228
+ One-sentence scoped task for this member during debrief.
229
+ files:
230
+ - "glob/pattern/*.ext"
231
+ topics:
232
+ - keyword1
233
+ - keyword2
223
234
  ---
224
235
 
225
236
  # {Name}
@@ -229,9 +240,9 @@ What this expert thinks about. The analytical framework.
229
240
  What makes this cabinet member unique.
230
241
 
231
242
  ## Convening Criteria
232
- Files: glob patterns that trigger this cabinet member
233
- Topics: keywords that trigger this cabinet member
234
- Standing-mandate: which skill types always activate this cabinet member
243
+ Files: glob patterns that trigger this cabinet member (also in frontmatter `files`)
244
+ Topics: keywords that trigger this cabinet member (also in frontmatter `topics`)
245
+ Standing-mandate: which contexts always activate this cabinet member (frontmatter `standing-mandate`)
235
246
 
236
247
  ## Research Method
237
248
  Where to get information, how to investigate, what to examine.
@@ -13,8 +13,12 @@ briefing:
13
13
  standing-mandate: audit, debrief
14
14
  directives:
15
15
  debrief: >
16
- Review this session's changed files. Check if any CLAUDE.md,
17
- system-status, briefing, or memory files now contain stale claims.
16
+ Own all documentation state updates for this session. Two jobs:
17
+ (1) Staleness check if any CLAUDE.md, README, system-status,
18
+ briefing, or memory files now contain claims that became wrong.
19
+ (2) Additions — check if this session built, changed, or published
20
+ anything that should be recorded in those files but isn't yet
21
+ (new capabilities, version bumps, count changes, new conventions).
18
22
  Fix what you find — don't create findings.
19
23
  files:
20
24
  - CLAUDE.md
@@ -37,17 +41,22 @@ See `_briefing.md` for shared cabinet member context.
37
41
  ## Identity
38
42
 
39
43
  You verify that **every piece of documentation in this system accurately
40
- describes the current reality.** Stale docs are a force multiplier for
41
- confusion -- every Claude session starts by reading CLAUDE.md files and
42
- memory. If those are wrong, the session starts with wrong context, makes
43
- wrong assumptions, and compounds the drift.
44
-
45
- Documentation in this system isn't just for humans -- it's the operating
46
- system for AI sessions. CLAUDE.md files bootstrap understanding. Memory
47
- files persist context. Status docs track what's built. When any of these
48
- are wrong, the system's self-awareness degrades.
49
-
50
- There are two kinds of documentation problems:
44
+ describes the current reality AND effectively guides people to use it.**
45
+ Stale docs are a force multiplier for confusion -- every Claude session
46
+ starts by reading CLAUDE.md files and memory. If those are wrong, the
47
+ session starts with wrong context, makes wrong assumptions, and compounds
48
+ the drift.
49
+
50
+ Documentation in this system serves two audiences:
51
+ - **Claude** -- CLAUDE.md files, memory, status docs, skill SKILL.md
52
+ files. These bootstrap AI understanding. When they're wrong, the
53
+ system's self-awareness degrades.
54
+ - **Users** -- README, GETTING-STARTED, guides, inline help. These
55
+ teach people how to use the system. When they're unclear, incomplete,
56
+ or assume too much knowledge, people don't adopt features that exist
57
+ or use them wrong.
58
+
59
+ There are three kinds of documentation problems:
51
60
  1. **The docs are wrong** -- the code has changed but the docs haven't
52
61
  been updated. Fix: update the docs.
53
62
  2. **The code has drifted from documented conventions** -- the docs
@@ -55,6 +64,10 @@ There are two kinds of documentation problems:
55
64
  Fix: either update the code to match, or update the convention to match
56
65
  reality. **You don't decide which -- you flag the divergence and let
57
66
  the human decide the direction.**
67
+ 3. **The docs are accurate but insufficient** -- everything they say is
68
+ true, but they don't say enough. A new user can't figure out what to
69
+ do next. A capability exists but nothing explains when or why to use
70
+ it. The user journey has gaps. Fix: write what's missing.
58
71
 
59
72
  ## Convening Criteria
60
73
 
@@ -113,6 +126,25 @@ Read all files in the project's memory directory:
113
126
  - Type definitions (see `_briefing.md` § App Source) that don't match actual
114
127
  API contracts
115
128
 
129
+ ### User-Facing Documentation
130
+
131
+ User guides (README, GETTING-STARTED, workflow guides) serve a different
132
+ audience than CLAUDE.md files. Check for:
133
+
134
+ - **Journey completeness** -- can a new user go from install to
135
+ productive use without getting stuck? Is every phase of the user
136
+ journey documented: first install, first session, ongoing sessions,
137
+ when to use which skill, what the cabinet does for them?
138
+ - **Assumed knowledge** -- do the docs assume familiarity with concepts
139
+ they haven't explained? "Standing mandates," "phase files," "skeleton
140
+ skills" mean nothing to someone who just installed.
141
+ - **Feature discoverability** -- does every user-facing capability have
142
+ a path to being discovered? If a skill exists but no guide or menu
143
+ mentions it, it's invisible.
144
+ - **Confidence gaps** -- after reading the docs, does the user know
145
+ what to do next? Uncertainty about "am I doing this right?" is a doc
146
+ failure, not a user failure.
147
+
116
148
  ### Convention Compliance
117
149
 
118
150
  CLAUDE.md files describe conventions. Check whether the codebase follows them.
@@ -136,6 +168,7 @@ grep -oP '`[^`]+\.(sh|js|ts|tsx|md|yaml|json)`' CLAUDE.md | \
136
168
  - `CLAUDE.md` -- Root system guide (highest priority)
137
169
  - `**/CLAUDE.md` -- All nested CLAUDE.md files
138
170
  - `system-status.md` -- Build status claims (if present)
171
+ - `README.md`, `GETTING-STARTED.md`, workflow guides -- User-facing docs
139
172
  - The project's memory directory -- All memory files
140
173
  - Configuration files -- Entity type definitions, metadata files
141
174
  - See `_briefing.md § API / Server` -- Code comments, inline docs
@@ -166,7 +166,36 @@ When closing an item that has documented follow-on work (sub-phases,
166
166
  next steps, future enhancements), create new items for each NOW. Known
167
167
  work that lives only in completed items' notes will be forgotten.
168
168
 
169
- ### 3. Auto-Maintenance (core)
169
+ ### 3. Cabinet Consultations (core)
170
+
171
+ Spawn cabinet members whose `standing-mandate` includes `debrief`.
172
+ This runs early — right after inventory and work-item closing — so
173
+ members can do their work (update docs, check state, verify lessons)
174
+ before subsequent phases duplicate that effort.
175
+
176
+ **Discovery:** Read `.claude/skills/_index.json` and filter to entries
177
+ where `standingMandate` includes `"debrief"`. Each matching entry has
178
+ a `directives.debrief` field — this is the scoped task for that member.
179
+ If the index is missing, fall back to reading `cabinet-*/SKILL.md`
180
+ frontmatter for `standing-mandate` and `directives`.
181
+
182
+ **For each matching member**, spawn an agent with:
183
+ - The member's full SKILL.md (read from the `path` in the index)
184
+ - The session inventory from step 1 (what changed)
185
+ - The member's `directives.debrief` as the task
186
+
187
+ Spawn in parallel where possible. If a member has no directive for
188
+ `debrief`, skip it — a standing mandate without a directive is a data
189
+ error, not a reason to give the member an open-ended task.
190
+
191
+ **Cost control:** These are lightweight passes, not full audits. Each
192
+ agent should complete in under 2 minutes. If a member's directive
193
+ produces no findings or changes, it returns silently. Include their
194
+ results in the report only when they surfaced or changed something.
195
+
196
+ If no cabinet members match, skip silently and proceed.
197
+
198
+ ### 4. Auto-Maintenance (core)
170
199
 
171
200
  Read `phases/auto-maintenance.md` for recurring automated tasks that
172
201
  should run at session end. Same principle as orient's auto-maintenance:
@@ -174,15 +203,27 @@ operations that decay if left to human memory.
174
203
 
175
204
  **Skip (absent/empty).**
176
205
 
177
- ### 4. Update State (core)
206
+ ### 5. Update State (core)
178
207
 
179
208
  Read `phases/update-state.md` for what state files and documentation
180
209
  to update. This keeps the system's persistent state aligned with
181
210
  reality so the next orient reads accurate information.
182
211
 
183
- **Default (absent/empty):** Check whether `system-status.md`
184
- (or equivalent) needs updating to reflect what was built, fixed, or
185
- changed. Also check the user-level state below.
212
+ **Division of labor with cabinet consultations (step 3):** If a
213
+ record-keeper or similar doc-checking member ran in step 3, it owns
214
+ all documentation updates both staleness (wrong claims) and additions
215
+ (missing claims). This step handles only what isn't doc work:
216
+ - **User-level state** — preferences, registry entries (see below)
217
+ - **Project-specific non-doc state** — whatever `phases/update-state.md`
218
+ defines beyond documentation
219
+
220
+ If a record-keeper ran, don't duplicate its work on docs. If no
221
+ record-keeper ran (no cabinet members, or none with a debrief mandate),
222
+ fall back to the default below.
223
+
224
+ **Default (absent/empty, no record-keeper):** Check whether
225
+ `system-status.md` (or equivalent) needs updating to reflect what was
226
+ built, fixed, or changed. Also check the user-level state below.
186
227
 
187
228
  #### User-Level State
188
229
 
@@ -197,7 +238,7 @@ needs updating:
197
238
  description still match reality? If the project has evolved
198
239
  significantly, propose updating the registry entry.
199
240
 
200
- ### 5. Health Checks (core)
241
+ ### 6. Health Checks (core)
201
242
 
202
243
  Read `phases/health-checks.md` for end-of-session health checks. These
203
244
  verify that the session's work didn't break anything and that the system
@@ -205,7 +246,7 @@ is in a good state for next time.
205
246
 
206
247
  **Skip (absent/empty).**
207
248
 
208
- ### 6. Persist Work
249
+ ### 7. Persist Work
209
250
 
210
251
  Commit and push the session's changes. Work that's done but not
211
252
  committed is half-closed — it lives locally but isn't durable. Persist
@@ -215,7 +256,7 @@ while lessons go to memory (which may live outside the repo).
215
256
  Separate this session's changes from any pre-existing uncommitted work.
216
257
  Don't silently bundle unrelated changes.
217
258
 
218
- ### 7. Record Lessons (core)
259
+ ### 8. Record Lessons (core)
219
260
 
220
261
  Read `phases/record-lessons.md` for how to capture what was learned.
221
262
  This is the second irreducible purpose of debrief — the first is
@@ -255,7 +296,7 @@ in the debrief report:
255
296
  > different destinations (memory/feedback vs finding database). Both
256
297
  > feed the enforcement pipeline, but through different channels.
257
298
 
258
- ### 8. Upstream Feedback (core)
299
+ ### 9. Upstream Feedback (core)
259
300
 
260
301
  Read `phases/upstream-feedback.md`. This is an **instruction phase**
261
302
  shipped with CC — it tells Claude to reflect on whether the session
@@ -272,7 +313,7 @@ what was confusing, what needed a workaround.
272
313
 
273
314
  **This phase should not be skipped.** It's how CC learns from use.
274
315
 
275
- ### 9. Skill Discovery (core)
316
+ ### 10. Skill Discovery (core)
276
317
 
277
318
  Silently reflect: did this session involve a workflow the user is
278
319
  likely to repeat? Not every session produces one — most don't. But
@@ -303,7 +344,7 @@ generalizable pattern, cabinet member, or convention? If so, mention
303
344
  `/extract` as an option for proposing it upstream to CC. This is
304
345
  rarer than project-specific skills.
305
346
 
306
- ### 10. Cabinet Check (core)
347
+ ### 11. Cabinet Check (core)
307
348
 
308
349
  Silently reflect: is this project's expertise coverage still right
309
350
  for what it's actually doing?
@@ -368,7 +409,7 @@ If the user says no, move on. Don't re-suggest the same gap next
368
409
  session. Track declined suggestions in system-status.md or equivalent
369
410
  so you don't nag.
370
411
 
371
- ### 11. Capture Loose Ends (core)
412
+ ### 12. Capture Loose Ends (core)
372
413
 
373
414
  Read `phases/loose-ends.md` for non-project items and environmental
374
415
  concerns to capture before closing. Sessions generate non-project
@@ -377,30 +418,6 @@ these aren't captured somewhere, they rely on human memory.
377
418
 
378
419
  **Skip (absent/empty).**
379
420
 
380
- ### 12. Cabinet Consultations (core)
381
-
382
- Spawn cabinet members whose `standing-mandate` includes `debrief`.
383
-
384
- **Discovery:** Read `.claude/skills/_index.json` and filter to entries
385
- where `standingMandate` includes `"debrief"`. Each matching entry has
386
- a `directives.debrief` field — this is the scoped task for that member.
387
- If the index is missing, fall back to reading `cabinet-*/SKILL.md`
388
- frontmatter for `standing-mandate` and `directives`.
389
-
390
- **For each matching member**, spawn an agent with:
391
- - The member's full SKILL.md (read from the `path` in the index)
392
- - The session inventory from step 1 (what changed)
393
- - The member's `directives.debrief` as the task
394
-
395
- Spawn in parallel where possible. If a member has no directive for
396
- `debrief`, skip it — a standing mandate without a directive is a data
397
- error, not a reason to give the member an open-ended task.
398
-
399
- **Cost control:** These are lightweight passes, not full audits. Each
400
- agent should complete in under 2 minutes. If a member's directive
401
- produces no findings or changes, it returns silently. Include their
402
- results in the report only when they surfaced or changed something.
403
-
404
421
  ### 13. Discover Custom Phases
405
422
 
406
423
  After running the core phases above, check for any additional phase
@@ -438,10 +455,10 @@ Phases are either **core** (maintain system state) or **presentation**
438
455
  (surface information for the user). For lightweight session closes,
439
456
  skip presentation phases. Core phases always run.
440
457
 
441
- - **Core phases** (always run): inventory, close-work, auto-maintenance,
442
- update-state, health-checks, record-lessons, upstream-feedback,
443
- skill-discovery, cabinet-check, loose-ends, cabinet-consultations,
444
- persist work
458
+ - **Core phases** (always run): inventory, close-work,
459
+ cabinet-consultations, auto-maintenance, update-state, health-checks,
460
+ persist-work, record-lessons, upstream-feedback, skill-discovery,
461
+ cabinet-check, loose-ends
445
462
  - **Presentation phases** (skippable): report
446
463
 
447
464
  A project that wants a quick debrief variant skips the report and