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.
- package/LICENSE +21 -0
- package/PRINCIPLES.md +70 -0
- package/README.md +213 -0
- package/VERSION +1 -0
- package/bin/boss +3 -0
- package/library/README.md +19 -0
- package/library/agents/.gitkeep +0 -0
- package/library/agents/mentor-venture.md +57 -0
- package/library/hooks/.gitkeep +0 -0
- package/library/hooks/auto-log.js +133 -0
- package/library/hooks/memory-cue.js +82 -0
- package/library/hooks/secrets-guard.js +87 -0
- package/library/memory-seed/README.md +29 -0
- package/library/memory-seed/durable-facts-example.md +16 -0
- package/library/practices/.gitkeep +0 -0
- package/library/practices/agent-security.md +111 -0
- package/library/practices/ai-adoption-culture.md +104 -0
- package/library/practices/ai-ux-patterns.md +246 -0
- package/library/practices/celebration-of-done.md +100 -0
- package/library/practices/conscience-voicing.md +121 -0
- package/library/practices/context-discipline.md +116 -0
- package/library/practices/design-system.md +152 -0
- package/library/practices/git-workflow.md +119 -0
- package/library/practices/harm-taxonomy.md +45 -0
- package/library/practices/quality-ratchet.md +48 -0
- package/library/practices/revalidation.md +57 -0
- package/library/practices/scalable-architecture.md +111 -0
- package/library/practices/ship-it-live.md +149 -0
- package/library/practices/skill-authoring.md +70 -0
- package/library/skills/.gitkeep +0 -0
- package/library/skills/boss-learn/SKILL.md +63 -0
- package/library/skills/boss-sync/SKILL.md +48 -0
- package/package.json +49 -0
- package/registry/CHANGELOG.md +2737 -0
- package/src/board.js +655 -0
- package/src/brain.js +288 -0
- package/src/cli.js +542 -0
- package/src/conscience.js +426 -0
- package/src/insights.js +147 -0
- package/src/learn.js +92 -0
- package/src/map.js +103 -0
- package/src/modes.js +82 -0
- package/src/paths.js +36 -0
- package/src/registry.js +34 -0
- package/src/scaffold.js +138 -0
- package/src/sync.js +292 -0
- package/src/team.js +103 -0
- package/stages/L0-quickstart/manifest.json +12 -0
- package/stages/L0-quickstart/template/.claude/agents/coder-generalist.md +31 -0
- package/stages/L0-quickstart/template/.claude/agents/mentor-venture.md +57 -0
- package/stages/L0-quickstart/template/.claude/agents/pm.md +28 -0
- package/stages/L0-quickstart/template/.claude/hooks/conscience.js +89 -0
- package/stages/L0-quickstart/template/.claude/hooks/lib/loop-runtime.js +507 -0
- package/stages/L0-quickstart/template/.claude/hooks/lib/yaml.js +163 -0
- package/stages/L0-quickstart/template/.claude/hooks/memory-cue.js +82 -0
- package/stages/L0-quickstart/template/.claude/hooks/secrets-guard.js +87 -0
- package/stages/L0-quickstart/template/.claude/rules/your-app-code.md +17 -0
- package/stages/L0-quickstart/template/.claude/settings.json +36 -0
- package/stages/L0-quickstart/template/.claude/skills/boss/SKILL.md +161 -0
- package/stages/L0-quickstart/template/.claude/skills/boss-learn/SKILL.md +63 -0
- package/stages/L0-quickstart/template/.claude/skills/boss-sync/SKILL.md +55 -0
- package/stages/L0-quickstart/template/.claude/skills/canvas/SKILL.md +112 -0
- package/stages/L0-quickstart/template/.claude/skills/comprehend/SKILL.md +72 -0
- package/stages/L0-quickstart/template/.claude/skills/decide/SKILL.md +122 -0
- package/stages/L0-quickstart/template/.claude/skills/feedback/SKILL.md +68 -0
- package/stages/L0-quickstart/template/.claude/skills/import/SKILL.md +73 -0
- package/stages/L0-quickstart/template/.claude/skills/persona/SKILL.md +92 -0
- package/stages/L0-quickstart/template/.claude/skills/prototype/SKILL.md +114 -0
- package/stages/L0-quickstart/template/.claude/skills/triage/SKILL.md +104 -0
- package/stages/L0-quickstart/template/.claude/skills/welcome/SKILL.md +262 -0
- package/stages/L0-quickstart/template/AGENTS.md +31 -0
- package/stages/L0-quickstart/template/CLAUDE.md +57 -0
- package/stages/L0-quickstart/template/docs/IDS.md +42 -0
- package/stages/L0-quickstart/template/docs/ideas/INDEX.md +24 -0
- package/stages/L0-quickstart/template/docs/loops/canvas-loop.md +90 -0
- package/stages/L0-quickstart/template/docs/loops/capture-loop.md +64 -0
- package/stages/L1-mvp/manifest.json +12 -0
- package/stages/L1-mvp/template/.claude/agents/mentor-architect.md +124 -0
- package/stages/L1-mvp/template/.claude/agents/mentor-cofounder.md +85 -0
- package/stages/L1-mvp/template/.claude/agents/mentor-gtm.md +49 -0
- package/stages/L1-mvp/template/.claude/agents/program-manager.md +46 -0
- package/stages/L1-mvp/template/.claude/agents/tester.md +42 -0
- package/stages/L1-mvp/template/.claude/hooks/auto-log.js +133 -0
- package/stages/L1-mvp/template/.claude/rules/feature-context.md +18 -0
- package/stages/L1-mvp/template/.claude/skills/ai-cost/SKILL.md +249 -0
- package/stages/L1-mvp/template/.claude/skills/ai-failure-states/SKILL.md +226 -0
- package/stages/L1-mvp/template/.claude/skills/ai-first-init/SKILL.md +227 -0
- package/stages/L1-mvp/template/.claude/skills/close/SKILL.md +170 -0
- package/stages/L1-mvp/template/.claude/skills/consult/SKILL.md +72 -0
- package/stages/L1-mvp/template/.claude/skills/cost-review/SKILL.md +204 -0
- package/stages/L1-mvp/template/.claude/skills/design-tokens-init/SKILL.md +192 -0
- package/stages/L1-mvp/template/.claude/skills/drift-deep/SKILL.md +170 -0
- package/stages/L1-mvp/template/.claude/skills/evals/SKILL.md +154 -0
- package/stages/L1-mvp/template/.claude/skills/extract/SKILL.md +209 -0
- package/stages/L1-mvp/template/.claude/skills/judge-traces/SKILL.md +68 -0
- package/stages/L1-mvp/template/.claude/skills/log/SKILL.md +64 -0
- package/stages/L1-mvp/template/.claude/skills/practice/SKILL.md +92 -0
- package/stages/L1-mvp/template/.claude/skills/pretotype/SKILL.md +95 -0
- package/stages/L1-mvp/template/.claude/skills/red-team/SKILL.md +137 -0
- package/stages/L1-mvp/template/.claude/skills/revalidate/SKILL.md +51 -0
- package/stages/L1-mvp/template/.claude/skills/ship/SKILL.md +105 -0
- package/stages/L1-mvp/template/.claude/skills/smoke/SKILL.md +43 -0
- package/stages/L1-mvp/template/.claude/skills/spec/SKILL.md +145 -0
- package/stages/L1-mvp/template/claude-append.md +122 -0
- package/stages/L1-mvp/template/docs/loops/ai-failure-state-loop.md +107 -0
- package/stages/L1-mvp/template/docs/loops/coordination-loop.md +116 -0
- package/stages/L1-mvp/template/docs/loops/cost-budget-loop.md +117 -0
- package/stages/L1-mvp/template/docs/loops/cost-review-loop.md +113 -0
- package/stages/L1-mvp/template/docs/loops/design-tokens-loop.md +98 -0
- package/stages/L1-mvp/template/docs/loops/drift-loop.md +149 -0
- package/stages/L1-mvp/template/docs/loops/extraction-loop.md +128 -0
- package/stages/L1-mvp/template/docs/loops/focus-loop.md +106 -0
- package/stages/L1-mvp/template/docs/loops/pretotype-loop.md +88 -0
- package/stages/L1-mvp/template/docs/loops/spec-loop.md +83 -0
- package/stages/L2-v1/manifest.json +12 -0
- package/stages/L2-v1/template/.claude/agents/db-architect.md +91 -0
- package/stages/L2-v1/template/.claude/agents/mentor-business.md +124 -0
- package/stages/L2-v1/template/.claude/agents/mentor-fundraising.md +72 -0
- package/stages/L2-v1/template/.claude/agents/mentor-pitch.md +84 -0
- package/stages/L2-v1/template/.claude/agents/mentor-talent.md +84 -0
- package/stages/L2-v1/template/.claude/agents/ui-designer.md +81 -0
- package/stages/L2-v1/template/.claude/agents/ux-designer.md +87 -0
- package/stages/L2-v1/template/.claude/skills/board/SKILL.md +98 -0
- package/stages/L2-v1/template/.claude/skills/design-review/SKILL.md +77 -0
- package/stages/L2-v1/template/.claude/skills/ux-check/SKILL.md +93 -0
- package/stages/L2-v1/template/claude-append.md +59 -0
- package/stages/L2-v1/template/docs/loops/design-drift-loop.md +108 -0
- 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.
|