bossbuild 0.97.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/LICENSE +21 -0
  2. package/PRINCIPLES.md +70 -0
  3. package/README.md +213 -0
  4. package/VERSION +1 -0
  5. package/bin/boss +3 -0
  6. package/library/README.md +19 -0
  7. package/library/agents/.gitkeep +0 -0
  8. package/library/agents/mentor-venture.md +57 -0
  9. package/library/hooks/.gitkeep +0 -0
  10. package/library/hooks/auto-log.js +133 -0
  11. package/library/hooks/memory-cue.js +82 -0
  12. package/library/hooks/secrets-guard.js +87 -0
  13. package/library/memory-seed/README.md +29 -0
  14. package/library/memory-seed/durable-facts-example.md +16 -0
  15. package/library/practices/.gitkeep +0 -0
  16. package/library/practices/agent-security.md +111 -0
  17. package/library/practices/ai-adoption-culture.md +104 -0
  18. package/library/practices/ai-ux-patterns.md +246 -0
  19. package/library/practices/celebration-of-done.md +100 -0
  20. package/library/practices/conscience-voicing.md +121 -0
  21. package/library/practices/context-discipline.md +116 -0
  22. package/library/practices/design-system.md +152 -0
  23. package/library/practices/git-workflow.md +119 -0
  24. package/library/practices/harm-taxonomy.md +45 -0
  25. package/library/practices/quality-ratchet.md +48 -0
  26. package/library/practices/revalidation.md +57 -0
  27. package/library/practices/scalable-architecture.md +111 -0
  28. package/library/practices/ship-it-live.md +149 -0
  29. package/library/practices/skill-authoring.md +70 -0
  30. package/library/skills/.gitkeep +0 -0
  31. package/library/skills/boss-learn/SKILL.md +63 -0
  32. package/library/skills/boss-sync/SKILL.md +48 -0
  33. package/package.json +49 -0
  34. package/registry/CHANGELOG.md +2737 -0
  35. package/src/board.js +655 -0
  36. package/src/brain.js +288 -0
  37. package/src/cli.js +542 -0
  38. package/src/conscience.js +426 -0
  39. package/src/insights.js +147 -0
  40. package/src/learn.js +92 -0
  41. package/src/map.js +103 -0
  42. package/src/modes.js +82 -0
  43. package/src/paths.js +36 -0
  44. package/src/registry.js +34 -0
  45. package/src/scaffold.js +138 -0
  46. package/src/sync.js +292 -0
  47. package/src/team.js +103 -0
  48. package/stages/L0-quickstart/manifest.json +12 -0
  49. package/stages/L0-quickstart/template/.claude/agents/coder-generalist.md +31 -0
  50. package/stages/L0-quickstart/template/.claude/agents/mentor-venture.md +57 -0
  51. package/stages/L0-quickstart/template/.claude/agents/pm.md +28 -0
  52. package/stages/L0-quickstart/template/.claude/hooks/conscience.js +89 -0
  53. package/stages/L0-quickstart/template/.claude/hooks/lib/loop-runtime.js +507 -0
  54. package/stages/L0-quickstart/template/.claude/hooks/lib/yaml.js +163 -0
  55. package/stages/L0-quickstart/template/.claude/hooks/memory-cue.js +82 -0
  56. package/stages/L0-quickstart/template/.claude/hooks/secrets-guard.js +87 -0
  57. package/stages/L0-quickstart/template/.claude/rules/your-app-code.md +17 -0
  58. package/stages/L0-quickstart/template/.claude/settings.json +36 -0
  59. package/stages/L0-quickstart/template/.claude/skills/boss/SKILL.md +161 -0
  60. package/stages/L0-quickstart/template/.claude/skills/boss-learn/SKILL.md +63 -0
  61. package/stages/L0-quickstart/template/.claude/skills/boss-sync/SKILL.md +55 -0
  62. package/stages/L0-quickstart/template/.claude/skills/canvas/SKILL.md +112 -0
  63. package/stages/L0-quickstart/template/.claude/skills/comprehend/SKILL.md +72 -0
  64. package/stages/L0-quickstart/template/.claude/skills/decide/SKILL.md +122 -0
  65. package/stages/L0-quickstart/template/.claude/skills/feedback/SKILL.md +68 -0
  66. package/stages/L0-quickstart/template/.claude/skills/import/SKILL.md +73 -0
  67. package/stages/L0-quickstart/template/.claude/skills/persona/SKILL.md +92 -0
  68. package/stages/L0-quickstart/template/.claude/skills/prototype/SKILL.md +114 -0
  69. package/stages/L0-quickstart/template/.claude/skills/triage/SKILL.md +104 -0
  70. package/stages/L0-quickstart/template/.claude/skills/welcome/SKILL.md +262 -0
  71. package/stages/L0-quickstart/template/AGENTS.md +31 -0
  72. package/stages/L0-quickstart/template/CLAUDE.md +57 -0
  73. package/stages/L0-quickstart/template/docs/IDS.md +42 -0
  74. package/stages/L0-quickstart/template/docs/ideas/INDEX.md +24 -0
  75. package/stages/L0-quickstart/template/docs/loops/canvas-loop.md +90 -0
  76. package/stages/L0-quickstart/template/docs/loops/capture-loop.md +64 -0
  77. package/stages/L1-mvp/manifest.json +12 -0
  78. package/stages/L1-mvp/template/.claude/agents/mentor-architect.md +124 -0
  79. package/stages/L1-mvp/template/.claude/agents/mentor-cofounder.md +85 -0
  80. package/stages/L1-mvp/template/.claude/agents/mentor-gtm.md +49 -0
  81. package/stages/L1-mvp/template/.claude/agents/program-manager.md +46 -0
  82. package/stages/L1-mvp/template/.claude/agents/tester.md +42 -0
  83. package/stages/L1-mvp/template/.claude/hooks/auto-log.js +133 -0
  84. package/stages/L1-mvp/template/.claude/rules/feature-context.md +18 -0
  85. package/stages/L1-mvp/template/.claude/skills/ai-cost/SKILL.md +249 -0
  86. package/stages/L1-mvp/template/.claude/skills/ai-failure-states/SKILL.md +226 -0
  87. package/stages/L1-mvp/template/.claude/skills/ai-first-init/SKILL.md +227 -0
  88. package/stages/L1-mvp/template/.claude/skills/close/SKILL.md +170 -0
  89. package/stages/L1-mvp/template/.claude/skills/consult/SKILL.md +72 -0
  90. package/stages/L1-mvp/template/.claude/skills/cost-review/SKILL.md +204 -0
  91. package/stages/L1-mvp/template/.claude/skills/design-tokens-init/SKILL.md +192 -0
  92. package/stages/L1-mvp/template/.claude/skills/drift-deep/SKILL.md +170 -0
  93. package/stages/L1-mvp/template/.claude/skills/evals/SKILL.md +154 -0
  94. package/stages/L1-mvp/template/.claude/skills/extract/SKILL.md +209 -0
  95. package/stages/L1-mvp/template/.claude/skills/judge-traces/SKILL.md +68 -0
  96. package/stages/L1-mvp/template/.claude/skills/log/SKILL.md +64 -0
  97. package/stages/L1-mvp/template/.claude/skills/practice/SKILL.md +92 -0
  98. package/stages/L1-mvp/template/.claude/skills/pretotype/SKILL.md +95 -0
  99. package/stages/L1-mvp/template/.claude/skills/red-team/SKILL.md +137 -0
  100. package/stages/L1-mvp/template/.claude/skills/revalidate/SKILL.md +51 -0
  101. package/stages/L1-mvp/template/.claude/skills/ship/SKILL.md +105 -0
  102. package/stages/L1-mvp/template/.claude/skills/smoke/SKILL.md +43 -0
  103. package/stages/L1-mvp/template/.claude/skills/spec/SKILL.md +145 -0
  104. package/stages/L1-mvp/template/claude-append.md +122 -0
  105. package/stages/L1-mvp/template/docs/loops/ai-failure-state-loop.md +107 -0
  106. package/stages/L1-mvp/template/docs/loops/coordination-loop.md +116 -0
  107. package/stages/L1-mvp/template/docs/loops/cost-budget-loop.md +117 -0
  108. package/stages/L1-mvp/template/docs/loops/cost-review-loop.md +113 -0
  109. package/stages/L1-mvp/template/docs/loops/design-tokens-loop.md +98 -0
  110. package/stages/L1-mvp/template/docs/loops/drift-loop.md +149 -0
  111. package/stages/L1-mvp/template/docs/loops/extraction-loop.md +128 -0
  112. package/stages/L1-mvp/template/docs/loops/focus-loop.md +106 -0
  113. package/stages/L1-mvp/template/docs/loops/pretotype-loop.md +88 -0
  114. package/stages/L1-mvp/template/docs/loops/spec-loop.md +83 -0
  115. package/stages/L2-v1/manifest.json +12 -0
  116. package/stages/L2-v1/template/.claude/agents/db-architect.md +91 -0
  117. package/stages/L2-v1/template/.claude/agents/mentor-business.md +124 -0
  118. package/stages/L2-v1/template/.claude/agents/mentor-fundraising.md +72 -0
  119. package/stages/L2-v1/template/.claude/agents/mentor-pitch.md +84 -0
  120. package/stages/L2-v1/template/.claude/agents/mentor-talent.md +84 -0
  121. package/stages/L2-v1/template/.claude/agents/ui-designer.md +81 -0
  122. package/stages/L2-v1/template/.claude/agents/ux-designer.md +87 -0
  123. package/stages/L2-v1/template/.claude/skills/board/SKILL.md +98 -0
  124. package/stages/L2-v1/template/.claude/skills/design-review/SKILL.md +77 -0
  125. package/stages/L2-v1/template/.claude/skills/ux-check/SKILL.md +93 -0
  126. package/stages/L2-v1/template/claude-append.md +59 -0
  127. package/stages/L2-v1/template/docs/loops/design-drift-loop.md +108 -0
  128. package/stages/L3-scale/README.md +13 -0
@@ -0,0 +1,227 @@
1
+ ---
2
+ name: ai-first-init
3
+ description: Bake the AI-first discipline into {{PROJECT_NAME}} from day one. Conductor skill — walks the founder through declaring what's AI-mediated (docs/ai-first.md), seeding structured outputs (Liu — docs/schemas/), running the eval set early (Husain — /evals), declaring the cost budget upfront (/ai-cost), and designing failure states before they happen (/ai-failure-states). The "from day one" sequence. Cohort-aware. Run during MVP unlock for AI-native projects, or any time the project becomes AI-mediated. Usage - /ai-first-init
4
+ ---
5
+
6
+ # /ai-first-init — bake the AI-first discipline upfront
7
+
8
+ Most AI-mediated apps bolt on discipline after a surprise. Cost budget after the bill. Eval
9
+ set after the bug report. Failure-states after the production incident. Structured outputs
10
+ after the third schema-violation bug. This skill is the upfront sequence: declare the
11
+ discipline *before* shipping the first user-visible LLM call, so the next FEAT inherits a
12
+ spine instead of inventing one under pressure.
13
+
14
+ It's the move that earns BOSS its name. Cursor + a folder is "AI-native." BOSS + this skill
15
+ is *"AI-first with discipline from day one."*
16
+
17
+ ## What "AI-first" means here
18
+
19
+ A project is **AI-first** when the model is *load-bearing* — the product doesn't work without
20
+ it. Not "we have a chat feature." Not "we use Claude to summarize." AI-first means:
21
+
22
+ - The core value proposition depends on the model behaving correctly.
23
+ - Failure modes (garbage / refusal / hallucination / timeout / cost-spike) are user-visible.
24
+ - Unit economics live or die on token math.
25
+ - The "engineering" task is half prompt design, half eval design, half schema discipline.
26
+ (Yes, that's 1.5 — the AI part *crowds out* deterministic work.)
27
+
28
+ If you're using AI as a feature inside a non-AI app, you may not need this whole sequence —
29
+ run pieces (`/ai-cost` for sure; `/evals` for any LLM in control flow). If you're building
30
+ something the model can't be removed from, run this whole skill.
31
+
32
+ ## The five-step AI-first sequence
33
+
34
+ This skill is the **conductor**. Each step calls a sub-skill or writes a doc. The founder
35
+ runs them in order; the skill keeps state in `docs/ai-first.md`.
36
+
37
+ ### Step 1 — Declare what's AI-mediated
38
+
39
+ Write `docs/ai-first.md` with the founder's answer to four questions:
40
+ - **What's AI-mediated?** Which features depend on the model.
41
+ - **What's deterministic?** Which features explicitly DON'T touch the model (and why —
42
+ keeping a deterministic core is usually correct).
43
+ - **What's the load-bearing model decision?** Which model, which version, what would change
44
+ if it got swapped.
45
+ - **What's the cost shape?** Order-of-magnitude tokens per user-action; whether this is
46
+ a per-user-day or per-action cost model.
47
+
48
+ Template:
49
+
50
+ ```markdown
51
+ ---
52
+ id: ai-first
53
+ type: declaration
54
+ owner: pm
55
+ status: declared
56
+ updated: {{DATE}}
57
+ ---
58
+
59
+ # AI-first declaration — {{PROJECT_NAME}}
60
+
61
+ ## What's AI-mediated
62
+ - <feature 1> — uses <model> for <purpose>; the output drives <user-visible behavior>.
63
+ - <feature 2> — ...
64
+
65
+ ## What's deterministic (and stays deterministic)
66
+ - <feature> — no LLM. Reason: <correctness requires it / cost-prohibitive at scale / etc.>
67
+
68
+ ## Load-bearing model decisions
69
+ - **Primary model:** <e.g., claude-sonnet-4-6>
70
+ - **Why this one:** <quality / speed / cost rationale>
71
+ - **Pinned version:** <yes/no — pin during MVP; unpin when evals cover regressions>
72
+ - **Fallback model (when primary fails):** <e.g., claude-haiku-4-5; deterministic only>
73
+
74
+ ## Cost shape (order-of-magnitude)
75
+ - Per user-action: ~<N> input tokens, ~<M> output tokens
76
+ - Per user-day: ~<N> actions → ~$<X>/user/day (matches docs/ai-cost-budget.md)
77
+
78
+ ## The five failure states (cross-references docs/ai-failure-states.md)
79
+ - Designed: <yes/no — set to yes when /ai-failure-states has run>
80
+
81
+ ## Eval discipline (cross-references docs/evals/)
82
+ - Eval set exists: <yes/no — set to yes when /evals has seeded the first set>
83
+ - Categorization: <yes/no — Husain failure-mode categorization in place>
84
+
85
+ ## Structured outputs (Liu)
86
+ - Schemas declared: <yes/no — set to yes when docs/schemas/ has stubs>
87
+ - Schema enforcement: <none / runtime validation / both>
88
+ ```
89
+
90
+ ### Step 2 — Seed structured outputs (Liu)
91
+
92
+ Free-form prose is for human eyeballs only. If the LLM output drives subsequent code (control
93
+ flow, data routing, decisions), **schema it**. Pydantic-first / Zod-first / any-structured-
94
+ output. Single practice that eliminates ~80% of LLM-pipeline brittleness.
95
+
96
+ Create `docs/schemas/` with one starter file per AI-mediated feature:
97
+
98
+ ```typescript
99
+ // docs/schemas/feature-name.schema.ts (or .py for Pydantic)
100
+ import { z } from 'zod';
101
+
102
+ export const FeatureOutputSchema = z.object({
103
+ // Define the strict shape the model is expected to return.
104
+ // Validation at runtime; tests against this schema in evals.
105
+ result: z.string(),
106
+ confidence: z.number().min(0).max(1),
107
+ // ...
108
+ });
109
+
110
+ export type FeatureOutput = z.infer<typeof FeatureOutputSchema>;
111
+ ```
112
+
113
+ The schema becomes the **contract** between the model and the rest of the code. Evals assert
114
+ on the schema; failure-state handler #1 (garbage) IS schema-validation-failure.
115
+
116
+ ### Step 3 — Seed the eval set early (Husain)
117
+
118
+ Don't wait for production. Run `/evals --new <feature-name>` (creates `docs/evals/FEAT-NNN.yml`)
119
+ for each AI-mediated feature in step 1. Even 5 cases per feature beats 0. Categorize:
120
+ should-pass / should-fail-by-mode (hallucinates / refuses-wrongly / format-violation / over-
121
+ applies / etc.).
122
+
123
+ Set the eval as a **gate before shipping the FEAT**, not retrofitted after. The MVP rule:
124
+ *"20 examples beats 0."*
125
+
126
+ ### Step 4 — Declare the cost budget (`/ai-cost`)
127
+
128
+ Run `/ai-cost`. It walks the founder through `docs/ai-cost-budget.md` — per-user/day budget
129
+ (cohort-aware default), per-call model rationale, the cost-logger wrapper, the review
130
+ cadence. Cross-reference the cost shape from step 1.
131
+
132
+ This step is non-negotiable for AI-first projects. The bill IS the design constraint; you
133
+ cannot design around something you haven't named.
134
+
135
+ ### Step 5 — Design failure states (`/ai-failure-states`)
136
+
137
+ Run `/ai-failure-states`. It walks the founder through the five failure modes (garbage /
138
+ refusal / hallucination / timeout / cost-spike), each with a project-specific declared
139
+ response, and writes stub handlers in code so the discipline is wired before the first user
140
+ sees a failure.
141
+
142
+ This step closes `ai-failure-state-loop` and finalizes the AI-first declaration.
143
+
144
+ ### Step 5.5 — Name the security surface (the lethal trifecta)
145
+
146
+ The moment an AI feature reads untrusted input (a web page, a user's pasted text, an email, a
147
+ dependency), takes consequential action, *and* can reach private data, you've assembled the
148
+ attacker's ideal surface. Security here is **architectural, not a prompt** — you can't ask a model
149
+ to never be tricked, only constrain what a tricked model can *do*. Name it once now:
150
+
151
+ - **Lethal trifecta** — danger needs all three together: *untrusted input* + *access to private
152
+ data* + *ability to act/exfiltrate*. Remove any one for a given step and the attack can't complete.
153
+ - **Rule of Two** — prefer that any single step has at most two of the three. Reading untrusted web
154
+ content? Don't also hand that step secrets and an open network.
155
+ - **Enforce in the harness, not the prose** — the `permissions.deny` floor ships with every BOSS
156
+ project; high-stakes/regulated cohorts add the `secrets-guard` hook (a *deterministic* guard;
157
+ never trust a non-deterministic safety classifier alone). Sandbox untrusted-input steps; pin deps;
158
+ put a real stop on the irreversible (push / deploy / delete / send).
159
+
160
+ Full practice: `library/practices/agent-security.md` (Willison 2026). For a day-one Quickstart this
161
+ is one sentence; it earns more ceremony as the app reads untrusted input or handles regulated data.
162
+
163
+ ### Step 6 — Update `docs/ai-first.md` cross-reference fields
164
+
165
+ After the sub-skills run, return to `docs/ai-first.md` and flip the cross-reference fields:
166
+ - Failure states designed: **yes**
167
+ - Eval set exists: **yes**
168
+ - Categorization: **yes**
169
+ - Schemas declared: **yes** / **partial**
170
+
171
+ The doc becomes the **AI-first checklist** for this project. Future-you reads it before
172
+ starting work; new contributors read it to onboard.
173
+
174
+ ## Cohort-aware delivery
175
+
176
+ | Cohort | Posture |
177
+ |---|---|
178
+ | `first-product` | Walk through each step as a teaching moment. Name what the discipline is *for* (not just what to do). Show the failure-mode-that-this-prevents in each step. |
179
+ | `vibe-coder-newbie` | Show + do. Don't lecture. After step 1 they may want to skip to building; gently insist on cost + failure-states upfront (those bite hardest). |
180
+ | `non-tech-founder` | Plain-language framing. Each step described as *"the answer to a question the model will ask you later when it breaks."* They likely don't need to write schemas themselves; they need to know they exist + delegate. |
181
+ | `eng-builder` | Terse. Hand them the checklist; they'll execute. The discipline names + citations matter to them (Liu, Husain). Skip the patter. |
182
+ | `vibe-virtuoso` | They've shipped a lot. They likely *skipped* the discipline last time. *Don't coach the discipline they've read books about.* Ask sharper: "which of these did the last project burn you on? Start there." |
183
+ | `indie-hacker` | Calm-company framing. The discipline IS the calm; each declared response is a non-panic posture. Frame cost as % of revenue. |
184
+ | `returning-founder` | Skip the 101. *"Which of these is non-obvious for THIS project?"* Likely they want to focus on one or two steps; let them. |
185
+ | `domain-expert` | **Stakes are real.** Hallucination handling defaults to **human-in-the-loop**; cost budget is privacy-first; failure states cite the regulatory frame. Take the full sequence seriously; this is the cohort where AI-first discipline most reduces real harm. |
186
+
187
+ ## When to run it
188
+
189
+ - During `boss unlock mvp` when the project is AI-native — the `/boss` skill should have
190
+ recommended it during spin-up.
191
+ - When a Quickstart project pivots to AI-mediated (e.g., the founder runs `/canvas` and the
192
+ Promises cell becomes "the model writes the answer").
193
+ - After a real-production AI-failure surprise — re-run to extend the doc with the new mode.
194
+
195
+ ## Connection to other loops + skills
196
+
197
+ - **Subroutines:** `/evals`, `/ai-cost`, `/ai-failure-states`.
198
+ - **Upstream:** `canvas-loop` closed (riskiest assumption named — the model is the bet).
199
+ - **Downstream:** future FEAT specs reference `docs/ai-first.md`; future `/spec` runs include
200
+ the failure-states field; the conscience surfaces `cost` and `failure-mode` moments when
201
+ drift accumulates against the declarations.
202
+ - **Adjacent:** `/spec` — for AI-mediated FEATs, the spec template includes failure-states
203
+ field (v0.26.0+); `/evals` — eval set sits alongside the failure-state design.
204
+
205
+ ## What this skill is NOT
206
+
207
+ - **Not a code generator.** It walks the founder through *declarations*; it stubs handlers
208
+ but doesn't implement them. The founder owns the implementation.
209
+ - **Not a one-time ritual.** Re-run when the AI-mediated surface changes substantially.
210
+ - **Not for AI-as-a-feature apps.** If the model is bolted onto a deterministic core, run
211
+ pieces (`/ai-cost`, maybe `/ai-failure-states` for the AI-touching code paths) but skip
212
+ the conductor.
213
+
214
+ ## Rules
215
+
216
+ - **Day one means day one.** This skill runs *before* the first AI-mediated FEAT ships. Not
217
+ after the first user. Not after the first bill. Not after the first hallucination report.
218
+ - **The doc IS the contract.** Future FEATs read `docs/ai-first.md`; if it says
219
+ "deterministic" for a feature and a PR puts an LLM call in there, that's a real change
220
+ worth a re-spec.
221
+ - **Override grammar applies (IDEA-008).** Skipping a step is legitimate when the founder
222
+ has a real reason; record it in devlog. Skipping silently is the failure mode.
223
+ - **Domain-expert cohort doesn't skip.** In high-stakes domains, every step matters
224
+ disproportionately. The hour spent here saves harm later.
225
+ - **Cite the lineage.** When you author this skill in real practice, cite the spine: Husain
226
+ (evals + failure-mode categorization), Liu (structured outputs), Karpathy/Willison (the
227
+ failure surface IS the design surface), Mollick (cost as design input).
@@ -0,0 +1,170 @@
1
+ ---
2
+ name: close
3
+ description: Session-end ritual — update docs/RESUME.md (state + next tasks + open decisions), append a /log entry, and let the conscience update its read on the venture (.boss/brain/). Run this before stepping away so the next session starts with full context. Usage - /close
4
+ ---
5
+
6
+ # /close — leave the project ready for next session
7
+
8
+ A session that ends without `/close` costs the next session 20 minutes of *what was I doing*. `/close`
9
+ is the small ritual that prevents that: it writes the current state to `docs/RESUME.md`, captures
10
+ what landed in the devlog (via `/log`), and leaves the working tree in a state your future self can
11
+ walk back into cold.
12
+
13
+ It's the counterpart to *read `docs/RESUME.md` first thing*.
14
+
15
+ ## Before the housekeeping: mark what was crossed
16
+
17
+ `/close` is also the natural moment to *register a threshold* — because the relentless build never makes
18
+ room for it, and a builder who only ever measures what's left slowly forgets that anything was achieved
19
+ (see the `celebration-of-done` practice). If this session genuinely crossed one — a FEAT closed, the
20
+ first live URL, a mode graduation, the riskiest assumption finally tested — pause and mark it **before**
21
+ the forward-looking housekeeping below. The order matters: look back at what you crossed before you look
22
+ ahead to what's next.
23
+
24
+ - **Name what's real, specifically** — not "great session," but *what* got done and *what it now unlocks*.
25
+ - **Re-anchor on the why and the who** — reconnect the thing you crossed to the bet (why it mattered) and
26
+ the person you built it for. The build pulls you into the *how*; this pulls you back to the *why*.
27
+ - **Let it turn into curiosity** — *"does this land for them now?"* is the honest next feeling, and it's
28
+ the bridge back to the real user. A well-marked threshold makes the founder *want* to go find out — the
29
+ validation instinct, arriving through satisfaction instead of obligation.
30
+ - **Proportional, no performed warmth, no streak.** Real thresholds only; most sessions cross none, and
31
+ silence is correct. This is the conscience's restraint with the polarity flipped — never "🎉 great job!"
32
+ (the exact flattery the brain-read step below forbids). Emotional acknowledgement is *making space for
33
+ the founder to feel it*, not BOSS emoting at them.
34
+
35
+ ## How to run it
36
+
37
+ 1. **Append a devlog entry** by running the `/log` flow (FEAT, landed, next, surprises). If `/log`
38
+ already ran this session, skip — don't duplicate.
39
+
40
+ 2. **Update `docs/RESUME.md`** (create if missing — template below). Rewrite, don't append:
41
+ - **State (current):** the one paragraph someone re-entering the project needs. What's true *now*.
42
+ - **Next tasks (in order):** the 1–3 concrete things to pick up. Concrete = "wire `/foo` to call
43
+ bar()", not "improve the feature."
44
+ - **Open decisions:** things waiting on a call (yours or someone else's). Each with a tentative
45
+ direction so you don't re-litigate from scratch.
46
+ - **Prompt for the next session:** keep it **evergreen** — a pointer + procedure, never a
47
+ status report. *State* and *Next tasks* already carry the current-state surface; restating
48
+ them here just doubles the drift surface. Save kickoff prompts somewhere stable (a shell
49
+ alias, a snippets app, the `Prompt for the next session` block) so they don't bit-rot
50
+ against the actual RESUME. If you find yourself writing *"we're at v0.X"* or *"X just
51
+ shipped"* in this block, delete it — that's what *State* is for.
52
+
53
+ 3. **Update the venture brain** (`.boss/brain/read.md`) — *the conscience's read on this venture,
54
+ not the task state*. This is the one thing in `/close` that isn't a status report: it's the
55
+ conscience forming a point of view it will *remember next session*. That continuity is what makes
56
+ the conscience feel like its own mind instead of a hook that forgets you. See the discipline below
57
+ — it is strict on purpose. Skip this step entirely if the session didn't reveal anything about the
58
+ *shape of the venture or how the founder is working* (a pure mechanical session has nothing to read).
59
+
60
+ - **Append, don't rewrite.** Add a dated `## YYYY-MM-DD` section to `.boss/brain/read.md` (create
61
+ the file if absent). The brain is append-mostly — history is the point.
62
+ - **The brain evolves; it doesn't just accrete (staleness is a write-side job).** Before you append,
63
+ re-read the standing summary at the top: has the work *overtaken* any claim in it? A riskiest
64
+ assumption that shifted, a pivot that happened, a "they keep doing X" that's no longer true — a
65
+ once-accurate read becomes *confidently wrong* the moment the venture moves past it. **Revise or
66
+ retire stale lines** in the standing summary as you write the new dated block. The most dangerous
67
+ brain isn't the empty one — it's the one citing yesterday's truth with today's confidence.
68
+ - **Living memory, not infinite memory — compress when the read gets long.** If `boss brain` flags
69
+ that the read spans many sessions (the recency-window nudge), fold the *oldest* dated reads' lasting
70
+ conclusions into the standing summary at the **top** of `read.md` (the preamble, above the first
71
+ dated header), then drop those verbatim old blocks. Keep the recent ~8 dated reads as-is. Compression
72
+ is the model's job (you can summarize meaning); the founder can also evict directly with
73
+ `boss brain forget --before <date>`. The standing summary is what survives; the dated blocks are the
74
+ working history that ages out.
75
+ - **First-person, from the conscience.** "I'm noticing…", "Three sessions in, the pattern is…".
76
+ It's a read, not a log.
77
+ - **Interpretation across time, never facts or claims.** Facts live in the canvas/RESUME/devlog. The
78
+ brain holds *only* what those can't: "they keep rebuilding onboarding instead of talking to a
79
+ user," "conviction on the wedge is hardening, not drifting," "last session they pushed back on the
80
+ drift nudge — and they were right." If a sentence could be a canvas edit or a RESUME task, it
81
+ belongs there, not here.
82
+ - **The must-nots (this is the trust line):** no flattery ("great work!"), no diagnosing the
83
+ founder, no certainty the sessions don't support. If you're not sure, say less. A wrong, confident
84
+ read about a *person* is the one mistake that makes BOSS feel creepy instead of alive.
85
+ - **Ground every claim.** Name what in the actual work supports the read (a FEAT, a devlog pattern,
86
+ a repeated capture). No claim the artifacts can't back. This groundedness is exactly what makes the
87
+ read land as "how did it know that" rather than a fortune cookie.
88
+ - **Honest when thin.** One session in, you don't have a read yet — write that, or write nothing.
89
+ Don't manufacture depth.
90
+ - **Confirmable.** Show the founder the section you're about to write and let them correct it before
91
+ it lands. It's an opinion *about them* — they get the edit. (This stays confirmable until the
92
+ brain-write eval proves the reads are trustworthy; then it can graduate to silent-but-inspectable.)
93
+ - **Stamp the index** after the prose lands: `boss brain record --headline "<one-line of the read>"`
94
+ so `boss brain` / `boss brain --diff` stay truthful without parsing the prose.
95
+ - The founder owns it: it's plain markdown they can read with `boss brain` and correct by editing
96
+ `.boss/brain/read.md` directly.
97
+
98
+ 3b. **Update the relationship log** (`.boss/brain/relationship.md`) — *only if the conscience actually
99
+ said something this session.* This is the loop the frequency ledger only *counts*: did the nudge
100
+ **land**? Append a dated `## YYYY-MM-DD` entry recording, honestly and briefly:
101
+ - **What the conscience flagged** (which moment, in one line — "drift: named retention as the bet but
102
+ built onboarding").
103
+ - **What the founder did with it** — and tag the outcome plainly: *landed* (acted on it), *ignored*
104
+ (moved past without engaging), *overrode* (declined with a stated reason — note the reason; a good
105
+ override is data, not a failure), or *pushed back and was right* (the nudge was wrong — the most
106
+ valuable entry; it's how the conscience learns to fire better).
107
+ - **The must-nots carry over:** no scoring the founder, no "you should have listened." This is the
108
+ conscience being honest about *its own* hit rate, not grading the person.
109
+ - If the conscience stayed silent all session (nothing fired), write nothing here — an empty
110
+ relationship log is the honest state, not a gap to fill.
111
+ - **Stamp it:** `boss brain record --kind relationship --headline "<flagged X → they did Y>"`. The
112
+ conscience reads this next session (bounded) to *calibrate* — it won't re-nag a point you've
113
+ already answered, and it can build on a nudge that landed. View it: `boss brain --relationship`.
114
+
115
+ 4. **Check the working tree.** If there are uncommitted changes the user wants to keep but isn't
116
+ committing now, mention them in RESUME's *State* so next-you isn't surprised. Don't auto-commit.
117
+
118
+ 5. **Report what you wrote.** One line: "RESUME updated · devlog entry added · brain read appended ·
119
+ N uncommitted change(s) noted." Then stop — don't summarize the session further; the artifacts are
120
+ the summary.
121
+
122
+ ## The RESUME template (used when none exists yet)
123
+
124
+ ```markdown
125
+ ---
126
+ id: RESUME
127
+ type: resume
128
+ owner: pm
129
+ status: active
130
+ updated: {{today}}
131
+ ---
132
+
133
+ # RESUME — {{PROJECT_NAME}}
134
+
135
+ **Read this first each session.** State + next tasks + open decisions.
136
+
137
+ ## What this project is
138
+ _One paragraph. The current articulation — sharpen as the project sharpens._
139
+
140
+ ## State (current)
141
+ - _What's real right now: shipped FEATs, the smoke command, the stack._
142
+ - _Anything uncommitted worth knowing about._
143
+
144
+ ## Next tasks (in order)
145
+ 1. _Concrete. Single-session-shaped if possible._
146
+ 2. …
147
+
148
+ ## Open decisions
149
+ - _Question — tentative lean — what would close it._
150
+
151
+ ## Prompt for the next session
152
+ > _**Keep this evergreen** — a pointer + procedure, never a status report._
153
+ >
154
+ > Continue {{PROJECT_NAME}}. Read `docs/RESUME.md` (this file — *State* + *Next tasks* +
155
+ > *Open decisions*), `CLAUDE.md`, then `VERSION` + `CHANGELOG`. Cross-check `git log -3`
156
+ > against what RESUME claims — if they disagree, RESUME is stale; re-establish ground truth
157
+ > first. Then pick up *Next tasks* top down.
158
+
159
+ ## Working reminders
160
+ - _Commands, env vars, things easy to forget._
161
+ ```
162
+
163
+ ## Rules
164
+
165
+ - RESUME is rewritten, devlog is appended. The devlog is history; RESUME is the current pointer.
166
+ - Keep RESUME short — under a page. If it grows past that, you're putting reference material in the
167
+ wrong file; move it to its own doc and link.
168
+ - Don't run `/close` if the session was a one-line conversation; reserve it for sessions that moved the project.
169
+ - If there's *real* unfinished work (a half-applied refactor), call it out in **State** in plain language.
170
+ Surprises in the next session are the failure mode this skill exists to prevent.
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: consult
3
+ description: Convene the mentor board on a cross-cutting question — route it to the mentors who actually have a stake, get each one's take in their own lens, and synthesize the answer with the disagreements kept visible (not averaged away). The humane lens can override. Advisory only — the mentors inform; you decide. Usage - /consult <question>
4
+ ---
5
+
6
+ # /consult — convene the board on a real question
7
+
8
+ Some questions don't belong to one mentor. *"Should I raise now, or grow to profitability first?"*
9
+ touches fundraising, business model, GTM, and the humane lens at once. `/consult` puts the question in
10
+ front of the mentors who actually have a stake, gets each one's honest take **in their own lens**, and
11
+ hands you a synthesis that **keeps the disagreement visible** — because where seasoned advisors
12
+ disagree is exactly where the real decision lives.
13
+
14
+ It's the orchestration layer over the individual `mentor-*` agents: instead of asking them one at a
15
+ time and holding the threads in your head, `/consult` runs the panel and composes the result.
16
+
17
+ ## When to run it
18
+
19
+ - A decision spans more than one domain (raise vs. bootstrap, pricing vs. positioning, hire vs.
20
+ contract, ship-fast vs. get-it-right).
21
+ - You're about to make a call you can't easily reverse and want the board's read first.
22
+ - A single mentor gave advice and you want to pressure-test it against the others' lenses.
23
+
24
+ ## How to run it
25
+
26
+ **1. Read the question.** If none given, ask for it in one line. Note what's really being decided.
27
+
28
+ **2. Pick the mentors who have a stake** — only the relevant ones, not the whole roster (convening
29
+ mentors who have nothing to add is noise). Read which mentors are installed (`.boss/manifest.json`
30
+ `agents`, the `mentor-*` ones) — the board grows by mode, so consult what's seated:
31
+ - MVP seats `mentor-architect` + `mentor-gtm`; V1+ adds `mentor-business`, `mentor-fundraising`,
32
+ `mentor-talent`; `mentor-humane` + `mentor-venture` are seated early and **always** get a voice on a
33
+ real decision.
34
+ - Map the question to lenses: a raise question → fundraising + business + venture (+ humane); a
35
+ build-speed question → architect + venture (+ humane); a pricing question → business + gtm.
36
+
37
+ **3. Get each mentor's take in their own voice.** Consult each relevant mentor (their agent), with the
38
+ *same* question + enough context (read the canvas / RESUME / the relevant FEAT so they're grounded).
39
+ Each returns their honest read — including pushback. Don't homogenize; a mentor's job is their lens,
40
+ not consensus.
41
+
42
+ **4. Synthesize — keep the disagreement visible.** Compose the panel's answer:
43
+ - **Where they converge** — the points all (or most) lenses agree on. Usually the safe ground.
44
+ - **Where they diverge** — name it plainly: *"fundraising says raise now to fund the GTM motion;
45
+ business says your unit economics aren't ready and a raise just buys time you'll burn."* The
46
+ divergence is the actual decision — don't paper over it with an average.
47
+ - **The humane override** — `mentor-humane` has explicit override authority. If it flags a real
48
+ agency/dignity/attention harm, that lens wins regardless of the viability case, and say so.
49
+ - **The riskiest assumption** — tie the decision back to the canvas's named bet where relevant.
50
+
51
+ **5. Hand the decision back.** End with the call that's *yours* to make, framed: *"the board's split is
52
+ real; the question under the question is <X> — which way you lean depends on <the thing only you
53
+ know>."* Mentors are advisory. They inform; you decide. Record the call (and which lens you followed,
54
+ and why) in `docs/devlog.md` so future-you sees the reasoning, not just the outcome.
55
+
56
+ ## If a venture brain exists
57
+ If `.boss/brain/` is present (the conscience's persistent read on this venture — IDEA-022), read it
58
+ for context before convening, and append a one-line note on what was decided after. The board's reads
59
+ sharpen the brain; the brain grounds the board. (Skip silently if it isn't there.)
60
+
61
+ ## Rules
62
+
63
+ - **Relevant mentors only.** Convening a mentor with no stake is noise. Pick the lenses that bear on
64
+ *this* question.
65
+ - **Disagreement is the product.** Never average seasoned advisors into mush. The split is where the
66
+ decision is — surface it.
67
+ - **Humane can override.** A real humane concern outranks the viability case (mentor-humane's standing
68
+ authority). Say when it's been invoked.
69
+ - **Advisory, never a gate.** `/consult` informs; it never blocks or decides. The founder decides and
70
+ records the call.
71
+ - **Ground them.** Mentors reading nothing give generic advice. Feed each the canvas + relevant
72
+ context so the read is about *this* venture, not ventures-in-general.