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,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PRACTICE-harm-taxonomy
|
|
3
|
+
type: practice
|
|
4
|
+
owner: mentor-humane
|
|
5
|
+
status: active
|
|
6
|
+
host: stack-neutral
|
|
7
|
+
provenance: distilled via /vet RVW-045 from Anthropic's Unified Harm Framework (5 dimensions) + Ada Lovelace Institute's advanced-AI-assistant harms (4 relationship-harms). Re-homed from a BOSS-local agent edit into a shippable practice per the mentor-architect boundary verdict (2026-06-20) — the humane lens is cross-cutting, so it belongs in a practice every mentor + the conscience can cite, not inside one agent. BOSS v0.84.0.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Practice — Harm taxonomy (name the axis, don't improvise)
|
|
11
|
+
|
|
12
|
+
> **Where this sits.** The humane lens (Principle #6) is *cross-cutting* — it belongs inside every
|
|
13
|
+
> mentor, the conscience, and the canvas's Risks & Harms cell, not behind one agent's door. This is the
|
|
14
|
+
> shared vocabulary they all reason against, so "who could this harm?" gets a checklist instead of a
|
|
15
|
+
> vibe. Its product-design twin is the dark-pattern checklist in [`ai-ux-patterns.md`](ai-ux-patterns.md).
|
|
16
|
+
|
|
17
|
+
"Who could this harm?" is sharper reasoned against *named axes*. Two complementary lenses — run a choice
|
|
18
|
+
past both before you say "no harm":
|
|
19
|
+
|
|
20
|
+
## Five harm dimensions (Anthropic, Unified Harm Framework)
|
|
21
|
+
|
|
22
|
+
**physical · psychological · economic · societal · individual-autonomy** — each weighted by
|
|
23
|
+
*likelihood × scale*. "Individual autonomy" maps straight onto BOSS's attention/agency/dignity language.
|
|
24
|
+
|
|
25
|
+
## Four relationship-harms of personalized AI (Ada Lovelace)
|
|
26
|
+
|
|
27
|
+
**manipulation · emotional dependence · anthropomorphism · overreliance** — the diffuse,
|
|
28
|
+
relationship-level harms conventional product-safety thinking misses, and the ones most live for a
|
|
29
|
+
founder building a companion / affective AI product.
|
|
30
|
+
|
|
31
|
+
## How to use it
|
|
32
|
+
|
|
33
|
+
- **mentor-venture / `/canvas`:** at the Risks & Harms cell, walk both lists — name the *worst-served*
|
|
34
|
+
person, not an abstraction.
|
|
35
|
+
- **The conscience:** when a moment fires on a harm, name *which axis* it's on (specific beats "this
|
|
36
|
+
seems bad").
|
|
37
|
+
- **The founder's product:** pair with `ai-ux-patterns.md`'s dark-patterns + `/red-team --humane`.
|
|
38
|
+
- **Reflexively — BOSS's own voice:** anthropomorphism / overreliance discipline BOSS too. The "seasoned
|
|
39
|
+
hand who doesn't need the credit" resists para-social pull, performed warmth, and being leaned on as an
|
|
40
|
+
oracle.
|
|
41
|
+
|
|
42
|
+
## Altitude / JIT
|
|
43
|
+
|
|
44
|
+
Not a wall on a Quickstart. The conscience surfaces the relevant axis JIT; the full taxonomy is the
|
|
45
|
+
reasoning *behind* a humane nudge, not a checklist shoved at a day-one founder (Principle #2).
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PRACTICE-quality-ratchet
|
|
3
|
+
type: practice
|
|
4
|
+
owner: pm
|
|
5
|
+
status: active
|
|
6
|
+
host: stack-neutral
|
|
7
|
+
provenance: ported UP from the dhun dogfood (.ratchet/ + /code-health gate) via the 2026-06-20 method scan — BOSS v0.48.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Practice — The quality ratchet (a baseline that only moves the right way)
|
|
11
|
+
|
|
12
|
+
> **The problem this kills: silent backsliding.** A codebase accumulates the thing you're trying to
|
|
13
|
+
> reduce — `unwrap()`s, `any`s, TODOs, untyped boundaries, skipped tests, bundle bytes — one
|
|
14
|
+
> reasonable-looking change at a time. No single diff looks bad; the trend is the damage. A ratchet
|
|
15
|
+
> turns the trend into a gate: pick one number, write it down, and let it move only in the direction
|
|
16
|
+
> you want.
|
|
17
|
+
|
|
18
|
+
## The mechanism (deliberately minimal)
|
|
19
|
+
|
|
20
|
+
1. **Pick one metric** that proxies the quality you care about and can be counted mechanically
|
|
21
|
+
(a grep count, a coverage %, a bundle size, a lint-violation total).
|
|
22
|
+
2. **Baseline it.** Write the current number to one file (e.g. `.ratchet/<metric>.txt`). One number,
|
|
23
|
+
no ceremony.
|
|
24
|
+
3. **Gate regressions.** A check (CI, a hook, a `/smoke` step) recomputes the number; if it moved the
|
|
25
|
+
wrong way, the gate trips. Improving the number updates the baseline (the ratchet clicks tighter).
|
|
26
|
+
4. **Log the why, elsewhere.** When the baseline moves — especially if an override let it loosen — a
|
|
27
|
+
one-line note in a devlog/CHANGELOG records *why*. The ratchet file stays a bare number; the
|
|
28
|
+
reasoning lives where reasoning lives.
|
|
29
|
+
|
|
30
|
+
## Why one number, one direction
|
|
31
|
+
|
|
32
|
+
The power is in the constraint. A dashboard of twelve metrics gets ignored; one number with a hard
|
|
33
|
+
direction is a decision you can't accidentally skip. The ratchet doesn't ask you to fix everything —
|
|
34
|
+
it asks you to **never make it worse**, which is the achievable version of quality discipline on a
|
|
35
|
+
fast-moving build. (Principle #1: extract the reusable discipline, not a one-off cleanup.)
|
|
36
|
+
|
|
37
|
+
## When to reach for it vs. when not to
|
|
38
|
+
|
|
39
|
+
- **Reach for it** when something you care about degrades gradually and reversibly, and a single
|
|
40
|
+
countable proxy exists (error-handling debt, type coverage, test count, a11y violations).
|
|
41
|
+
- **Don't** ratchet a number that can't be gamed-proof or that punishes legitimate growth (raw LOC,
|
|
42
|
+
file count). A ratchet on the wrong metric just adds friction. And don't add the gate before the
|
|
43
|
+
metric has earned it — premature ceremony (Principle #2).
|
|
44
|
+
|
|
45
|
+
## Relationship to BOSS
|
|
46
|
+
|
|
47
|
+
A CLI `boss ratchet` is a *possible* DOWN later — but only once a metric earns it. For now this is the
|
|
48
|
+
named pattern a founder (or BOSS's own repo) can apply by hand or wire into `/smoke`. See `IDEA-027`.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PRACTICE-revalidation
|
|
3
|
+
type: practice
|
|
4
|
+
owner: pm
|
|
5
|
+
status: active
|
|
6
|
+
host: stack-neutral
|
|
7
|
+
provenance: ported UP from the dhun dogfood (docs/workflows/lifecycles/REVALIDATION.md) via the 2026-06-20 method scan — BOSS v0.48.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Practice — Revalidation (the 3-line gate before paused work re-enters build)
|
|
11
|
+
|
|
12
|
+
> **The problem this kills: zombie features.** Work gets deferred for a good reason — a blocker, a
|
|
13
|
+
> capacity call, a "not yet." Months later it gets picked back up *on momentum*, never re-checked
|
|
14
|
+
> against a world that moved. The result is building something the project no longer needs. The fix
|
|
15
|
+
> is a deliberately tiny gate: three questions, answerable in a minute, before any paused item
|
|
16
|
+
> re-enters the build.
|
|
17
|
+
|
|
18
|
+
## The gate
|
|
19
|
+
|
|
20
|
+
Before a `deferred`/`paused` idea or feature becomes active again, its owner answers three lines:
|
|
21
|
+
|
|
22
|
+
1. **Still relevant?** — Is the pain/opportunity it addresses still real and still felt?
|
|
23
|
+
2. **Still aligned?** — Does it still fit the current goal / canvas / roadmap, or did the direction move?
|
|
24
|
+
3. **Has anything changed the answer?** — New evidence, a shipped dependency, a host/model shift, a
|
|
25
|
+
competitor, a dead assumption?
|
|
26
|
+
|
|
27
|
+
## The outcome matrix
|
|
28
|
+
|
|
29
|
+
| Answers | Outcome |
|
|
30
|
+
|---|---|
|
|
31
|
+
| All three **yes** | **Revive.** Move to active; carry on. |
|
|
32
|
+
| Any **no** | **Rescope or kill.** Don't build it as-was. Either reshape it to the new reality or close it with a reason logged. |
|
|
33
|
+
| **Unclear** | **Re-pause** with a *new* `paused_reason` and a `next_review` date. Don't let it drift back in by default. |
|
|
34
|
+
|
|
35
|
+
## Why it's three lines, not a re-spec
|
|
36
|
+
|
|
37
|
+
The gate has to be *cheaper than the temptation to skip it*. A full re-spec is ceremony; people skip
|
|
38
|
+
ceremony and build the zombie. Three questions clear the bar of "I'll actually do this" — that's the
|
|
39
|
+
whole design. (Principle #2: just-in-time, never premature ceremony.)
|
|
40
|
+
|
|
41
|
+
## When it fires
|
|
42
|
+
|
|
43
|
+
- A board / RESUME item flagged **stale** (no movement past its `next_review`, or 14d+ untouched).
|
|
44
|
+
- Any time someone says "let's pick up X" about deferred work.
|
|
45
|
+
- Default review intervals when an item is paused: *blocked* → when the blocker ships + 1 week;
|
|
46
|
+
*capacity* → +90 days. Set `next_review` so the gate has a trigger.
|
|
47
|
+
|
|
48
|
+
## Frontmatter hooks (what makes it automatable)
|
|
49
|
+
|
|
50
|
+
The gate runs off metadata the doc already carries: `status: deferred`, `paused_at`, `paused_reason`,
|
|
51
|
+
`next_review`. A board can surface "time to revalidate" the moment `next_review` passes — the practice
|
|
52
|
+
and the metadata are two halves of one mechanism.
|
|
53
|
+
|
|
54
|
+
## BOSS's own dogfood
|
|
55
|
+
|
|
56
|
+
BOSS's `docs/RESUME.md` carries a long deferred list and a backlog catalog (IDEA-012). This practice
|
|
57
|
+
is what `/revalidate` runs against them — BOSS eats it first. See `IDEA-027`.
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PRACTICE-scalable-architecture
|
|
3
|
+
type: practice
|
|
4
|
+
owner: mentor-architect
|
|
5
|
+
status: active
|
|
6
|
+
host: stack-neutral
|
|
7
|
+
provenance: distilled from the 2026-06-20 founding-teams research (RESEARCH-COMPENDIUM-2026-06-20 Part B7 — technical scaffolding that survives the climb) — Fowler MonolithFirst, Shopify's 2.8M-line modular monolith [EVIDENCE], Bezos one-way/two-way doors, Factory.ai "documented conventions rot; enforced conventions compound", Notion's eslint ratchet — BOSS v0.89.0, FEAT-023 thread 2
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Practice — Architecture that survives the climb (defer the tax, enforce the conventions)
|
|
11
|
+
|
|
12
|
+
> **The spine.** The value is never the rule — it's the **enforcement loop**. A convention an agent (or
|
|
13
|
+
> the fiftieth hire) can't enforce against itself rots within a week. AI sharpens this to a point: an agent
|
|
14
|
+
> re-derives the codebase's conventions from scratch every session, so anything you only *wrote down*
|
|
15
|
+
> drifts, and anything you *encoded as a check* compounds. Factory.ai's line is the cleanest statement of
|
|
16
|
+
> it: **"documented conventions rot; enforced conventions compound."** This practice is two moves —
|
|
17
|
+
> **defer the architecture costs you can defer**, and **encode the conventions you can't afford to lose** —
|
|
18
|
+
> so a fast AI build doesn't dig a hole that's expensive to climb out of.
|
|
19
|
+
|
|
20
|
+
## Modular-monolith-first, extract when forced
|
|
21
|
+
|
|
22
|
+
Start with **one deployable**. Resist the pull to split into services before a real seam demands it
|
|
23
|
+
(Fowler's MonolithFirst; Shopify runs a **2.8M-line modular monolith** [EVIDENCE] — "microservice envy"
|
|
24
|
+
is on the *Hold* ring of the ThoughtWorks radar for a reason). The distributed-systems tax — network
|
|
25
|
+
calls, partial failure, deploy orchestration, eventual consistency — is real and you pay it forever once
|
|
26
|
+
you take it on. At n=1–5 with an AI writing most of the code, that tax buys you nothing and costs you
|
|
27
|
+
velocity.
|
|
28
|
+
|
|
29
|
+
- **The *modular* half is the part that's load-bearing.** A monolith isn't a license for a mud-ball.
|
|
30
|
+
Keep clear module boundaries *inside* the single deployable — each feature/domain owns its code, talks
|
|
31
|
+
to others through a named interface, doesn't reach into another's internals. That's what makes the
|
|
32
|
+
eventual extraction *cheap when forced*: you cut along a seam that already exists, instead of
|
|
33
|
+
untangling one that doesn't. A `FEAT` is a natural module.
|
|
34
|
+
- **"Extract when forced"** means the trigger is a real constraint — a scaling wall, a team that needs
|
|
35
|
+
independent deploys, a compliance boundary — not an aesthetic preference or a blog post. Until then,
|
|
36
|
+
the monolith is the right answer, not the embarrassing one.
|
|
37
|
+
|
|
38
|
+
## Spend the rigor on the one-way doors — and the schema is the one
|
|
39
|
+
|
|
40
|
+
Most architecture decisions are two-way doors (Bezos): reversible, so decide fast and cheap. **One is
|
|
41
|
+
not — the database schema.** Data outlives code; a bad migration on live data is the change you can't
|
|
42
|
+
take back. So that's where the ceremony goes, from the *first table*:
|
|
43
|
+
|
|
44
|
+
- **Migrations-as-code from day one.** Every schema change is a versioned, reviewed, replayable migration
|
|
45
|
+
file in the repo — never a hand-run `ALTER TABLE` on the database. This is the single thing that's
|
|
46
|
+
genuinely expensive to retrofit (evodb / evolutionary-database discipline), so it's the one piece of
|
|
47
|
+
upfront ceremony that pays for itself immediately.
|
|
48
|
+
- **The migration log *is* a guardrail against AI schema drift.** An agent generating schema changes
|
|
49
|
+
across sessions will happily diverge — add a column here, rename one there, no record of why. The
|
|
50
|
+
migrations directory turns that into a reviewable, ordered, ownable history: the same artifact that
|
|
51
|
+
lets you replay the schema also lets a human (and the next agent) see what changed and veto what
|
|
52
|
+
shouldn't have. Wire schema changes into the **high-risk review tier** (see
|
|
53
|
+
[`git-workflow.md`](git-workflow.md)).
|
|
54
|
+
|
|
55
|
+
## Conventions as code (enforced, not remembered)
|
|
56
|
+
|
|
57
|
+
A convention only counts if a machine enforces it — otherwise it's a suggestion an agent forgets.
|
|
58
|
+
|
|
59
|
+
- **Formatting is law, not taste.** Adopt a formatter and let it end the style debate permanently
|
|
60
|
+
(Prettier, or **Biome** — its single binary is genuinely agent-friendly for a new repo: one tool, no
|
|
61
|
+
config archaeology). No human and no agent argues about formatting again; the tool decides on save.
|
|
62
|
+
- **Boundaries as lint.** The module boundaries above are worth nothing if anyone can quietly cross them.
|
|
63
|
+
Encode them as lint rules / import boundaries / architectural fitness functions so a crossing *fails a
|
|
64
|
+
check*, not *gets noticed in review* (which it won't, at AI output speed). Start with the principle and
|
|
65
|
+
the lint rules you can write today; the heavier custom-plugin / fitness-function tooling is **NOT-YET**
|
|
66
|
+
until the surface area earns it (Principle #2).
|
|
67
|
+
- **Types at the boundary.** Where the stack has them, turn the strict knobs on early (`strict` mode,
|
|
68
|
+
no-implicit-any) — they're the cheapest enforced convention there is, and they're far more painful to
|
|
69
|
+
retrofit onto a large AI-generated codebase than to start with.
|
|
70
|
+
|
|
71
|
+
## The ratchet holds the line (extends `quality-ratchet`)
|
|
72
|
+
|
|
73
|
+
The mechanism for *keeping* any of this — module-boundary crossings, schema-drift, type violations,
|
|
74
|
+
skipped tests — is the [`quality-ratchet`](quality-ratchet.md) already in BOSS's library: pick one
|
|
75
|
+
countable number, baseline it, and let it move **only the right way**, gated in `/smoke`. The point of
|
|
76
|
+
naming it here is the architectural application: **the gate holds the line, not the reviewer.** At AI
|
|
77
|
+
output speed a human reviewer cannot be the thing standing between the codebase and a thousand small
|
|
78
|
+
regressions — a "no-new-violations" baseline (Notion's eslint-seatbelt pattern) can. Don't restate the
|
|
79
|
+
ratchet mechanics; reach for that practice and point it at an architecture metric.
|
|
80
|
+
|
|
81
|
+
## One canonical context file (don't re-derive the rules)
|
|
82
|
+
|
|
83
|
+
The conventions an agent *can't* lint — the why-we're-shaped-this-way, the domain language, the
|
|
84
|
+
landmines — belong in **one canonical, version-controlled context file** (CLAUDE.md / the AGENTS.md
|
|
85
|
+
standard), pruned ruthlessly. The 2026 finding is counterintuitive and worth holding: **the failure mode
|
|
86
|
+
is over-length, not under-spec** — a bloated context file gets *ignored* by the model, which is exactly
|
|
87
|
+
why BOSS keeps its wayfinding lean and JIT-loads the rest. This is [`context-discipline`](context-discipline.md)'s
|
|
88
|
+
territory; named here only because architecture-at-scale lives or dies on whether the next agent inherits
|
|
89
|
+
the decisions or re-invents them.
|
|
90
|
+
|
|
91
|
+
## Altitude / JIT (right rigor, right rung)
|
|
92
|
+
|
|
93
|
+
Not a Quickstart lecture, and not all at once. **Modular boundaries** matter from the first real build
|
|
94
|
+
(MVP — clear module seams as features accumulate). **Migrations-as-code** arrives at the *first table*,
|
|
95
|
+
not before — a prototype with mock data needs no migration log. **Conventions-as-code** earns its place
|
|
96
|
+
the moment a *second* author touches the repo — and a second *agent* counts, which is sooner than most
|
|
97
|
+
solo founders expect. The distributed-services question is a **V1→Scale** concern; bringing it up at MVP
|
|
98
|
+
is the premature-ceremony failure (Principle #2).
|
|
99
|
+
|
|
100
|
+
## Relationship to BOSS
|
|
101
|
+
|
|
102
|
+
This extends [`quality-ratchet`](quality-ratchet.md) (the enforcement mechanism) and sits alongside
|
|
103
|
+
[`git-workflow`](git-workflow.md) (the daily flow that merges these conventions safely),
|
|
104
|
+
[`context-discipline`](context-discipline.md) (the one context file), and
|
|
105
|
+
[`agent-security`](agent-security.md) (the human-gate on the irreversible — of which the schema migration
|
|
106
|
+
is the canonical case). A CLI `boss migrate` / a scaffolded migrations directory is a *possible* DOWN
|
|
107
|
+
later, once a real project hits its first table and the by-hand discipline has earned the machinery
|
|
108
|
+
(Principle #1). The `mentor-architect` agent is the natural place to surface this JIT to a founder; that
|
|
109
|
+
DOWN is **deferred** only to avoid a live edit collision, not on judgment. The org/scaling half of
|
|
110
|
+
"surviving the climb" — DRI, give-away-your-Legos, stage breakpoints — is FEAT-023 thread 3 (the
|
|
111
|
+
unauthored V1→Scale rung). See FEAT-023.
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: PRACTICE-ship-it-live
|
|
3
|
+
type: practice
|
|
4
|
+
owner: mentor-architect
|
|
5
|
+
status: active
|
|
6
|
+
host: stack-neutral
|
|
7
|
+
provenance: distilled from the 2026-06-21 CD/deploy deep-research pass (SESSION-2026-06-20-cd-deploy-research — 21 sources, 25 claims adversarially verified 3-vote, 22 confirmed / 3 killed) — DORA/Accelerate 2022-2024 [EVIDENCE], Fowler ParallelChange [EVIDENCE], Willison lethal-trifecta + OWASP LLM Top 10, CVE-2025-48757 (Lovable) + the MoltBook breach as the named vibe-coded incidents — BOSS v0.92.0, FEAT-024
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Practice — Ship it live (the CD half: localhost is not shipped)
|
|
11
|
+
|
|
12
|
+
> **The shape of the problem.** An app that only runs on `localhost` **is a pseudo app.** You cannot
|
|
13
|
+
> prove pain, workflow fit, or willingness-to-pay on a thing no real user can reach — the validation
|
|
14
|
+
> conscience ("what does this prove?") has no teeth if the artifact was never put where someone could
|
|
15
|
+
> prove it. `git-workflow` covered **CI** (is `main` green, can two humans stand behind the merge);
|
|
16
|
+
> this is **CD** — *is this where a real user can hit it, or just you?* The URL is the proof. Everything
|
|
17
|
+
> below is in service of getting that URL early, keeping the deploy reversible, and not leaking your
|
|
18
|
+
> users' data on the way out the door (which, in 2025-26, is exactly how the AI-built app fails).
|
|
19
|
+
|
|
20
|
+
## Deploy early, deploy cheap, deploy reversible
|
|
21
|
+
|
|
22
|
+
Get a real URL at **MVP**, not at launch. Pick the smallest viable host and pick
|
|
23
|
+
reversible-and-cheap over impressive (Principle #5 — optionality: a private URL on a free tier
|
|
24
|
+
preserves every later choice; a hand-rolled Kubernetes cluster forecloses them). The host is the
|
|
25
|
+
project's call and the project's stack decides it (Principle #4) — Vercel, Fly, Railway, Cloudflare,
|
|
26
|
+
Render, a $5 VPS — the *practice* carries the judgment, not the target.
|
|
27
|
+
|
|
28
|
+
The instinct to wait — "it's not ready, I'll deploy when it's polished" — does not survive scrutiny.
|
|
29
|
+
The "reliability investment is premature at MVP, just keep iterating locally" counter-argument was
|
|
30
|
+
**adversarially tested and failed (killed 0-3)**: there is no good evidence that staying on localhost
|
|
31
|
+
buys you anything. What it costs you is the only thing that matters this early — *contact with a real
|
|
32
|
+
user*. Deploy-day surprises (env that only existed on your laptop, a build step that only you can run,
|
|
33
|
+
a secret you hard-coded) are cheaper to find on day one with one user than at launch with a hundred.
|
|
34
|
+
|
|
35
|
+
> **localhost is not shipped.** Reachability is the gate between a pseudo app and a real one. Ship the
|
|
36
|
+
> ugly version to a real URL, then iterate *in the open*.
|
|
37
|
+
|
|
38
|
+
## Secrets & authz at the boundary — the leg with teeth
|
|
39
|
+
|
|
40
|
+
This is where the AI-built app actually fails in 2025-26, and it fails the same way every time: **the
|
|
41
|
+
agent ships a frontend that talks to the database with a public key, trusting a security rule it never
|
|
42
|
+
configured.** Read the bundle, get the key, read and write everything. The founder wrote no code, so
|
|
43
|
+
the founder never saw the hole.
|
|
44
|
+
|
|
45
|
+
This is not hypothetical — it's the best-evidenced finding in the whole research pass [EVIDENCE]:
|
|
46
|
+
|
|
47
|
+
- **CVE-2025-48757 (Lovable)** — AI-generated frontends made direct calls to the database via the
|
|
48
|
+
public anon key, relying solely on row-level security the AI never set up. **303 endpoints across
|
|
49
|
+
170+ apps (~10.3% of those scanned)** leaked PII and third-party API keys. (CVSS is disputed — 8.26
|
|
50
|
+
vs 9.3, supplier-contested — so trust the *mechanism*, not the score.)
|
|
51
|
+
- **MoltBook** — a hardcoded database key plus disabled row-level security leaked **1.5M API tokens and
|
|
52
|
+
35K emails**. The founder wrote no code at all.
|
|
53
|
+
|
|
54
|
+
A 1.5M-credential leak from a founder who couldn't grade what the AI shipped **is the pseudo→real
|
|
55
|
+
thesis made literal.** So the discipline is non-negotiable at the deploy boundary:
|
|
56
|
+
|
|
57
|
+
- **No secrets in the client.** API keys, tokens, service credentials live in server-side env, never in
|
|
58
|
+
the shipped bundle. A key in frontend JS is public the moment you deploy.
|
|
59
|
+
- **Enforce authz server-side *before* the first public URL.** If the app talks to a database with a
|
|
60
|
+
public/anon key, the row-level security or access rules are what stand between your users and the
|
|
61
|
+
internet — and the AI does **not** configure them by default. Verify they're on before you ship, not
|
|
62
|
+
after the breach.
|
|
63
|
+
- **A human security gate at first deploy.** For a non-technical founder this is the single highest-value
|
|
64
|
+
check, because they can't spot the vuln themselves. BOSS already owns this surface — **don't restate
|
|
65
|
+
it here, run it:** `/red-team`'s pre-ship app-security pass scans the build output + git history for
|
|
66
|
+
shipped secrets (the gap `secrets-guard` deliberately does *not* cover), and
|
|
67
|
+
[`agent-security.md`](agent-security.md) carries the lethal-trifecta / egress mechanics (Willison;
|
|
68
|
+
OWASP ranks prompt-injection #1 and notes it cannot be fully solved within current LLM architecture).
|
|
69
|
+
This practice's job is to make sure that pass *happens at deploy time* — the one moment it pays off.
|
|
70
|
+
|
|
71
|
+
## Rollback ≠ reversible: schema is the one-way door
|
|
72
|
+
|
|
73
|
+
"I can roll back" is half-true, and the half that's false is the one that hurts. **Instant rollback
|
|
74
|
+
restores only the application artifact** — it re-points the domain at a previous build. It does **not**
|
|
75
|
+
revert your database, and usually not your env either (Vercel documents this limitation against its own
|
|
76
|
+
rollback feature, which is why it's safe to trust). The code goes back; the migration that dropped a
|
|
77
|
+
column does not.
|
|
78
|
+
|
|
79
|
+
So shipping reversibly means two separate disciplines:
|
|
80
|
+
|
|
81
|
+
- **Name the revert path before you deploy.** A deploy you can't undo is a one-way door. Know the one
|
|
82
|
+
command (or one click) that puts the last-good build back, and that it doesn't depend on the deploy
|
|
83
|
+
that just broke.
|
|
84
|
+
- **Make schema changes backward-compatible — expand-migrate-contract** (Fowler, *ParallelChange*
|
|
85
|
+
[EVIDENCE]). Add the new column/table (expand), move code and data to it while both shapes work
|
|
86
|
+
(migrate), drop the old one only once nothing reads it (contract). Each phase is releasable and
|
|
87
|
+
rollback-safe on its own, so a code rollback never strands a database that already moved on. This is
|
|
88
|
+
[`scalable-architecture.md`](scalable-architecture.md)'s "schema = the one-way door" — **deploy is
|
|
89
|
+
*when* it pays off.** Cross-reference for the migration mechanics; the deploy-time teeth are here.
|
|
90
|
+
|
|
91
|
+
## The honesty anchor (don't sell yourself the safe deploy)
|
|
92
|
+
|
|
93
|
+
**DORA 2024 [EVIDENCE]: AI adoption correlated with *worse* software-delivery stability *and*
|
|
94
|
+
throughput** — driven by larger batches. This is the deploy-time twin of `git-workflow`'s METR anchor:
|
|
95
|
+
shipping faster with an agent does not make your deploys safer, and the felt speedup is not the
|
|
96
|
+
instrument. The instrument is **measured** — change-failure rate and time-to-restore (DORA's stability
|
|
97
|
+
metrics are first-class, not an afterthought to deploy-frequency).
|
|
98
|
+
|
|
99
|
+
One honesty caveat that cuts the other way: it is tempting to claim "but small batches offset the AI
|
|
100
|
+
penalty." The research **killed that inference (1-2)** — DORA does not conclude it. Keep batches small
|
|
101
|
+
because `git-workflow` already earns it (review capacity), not because it's a proven antidote to the
|
|
102
|
+
stability hit. State the finding; don't oversell the fix.
|
|
103
|
+
|
|
104
|
+
## Preview-per-branch — a judgment, not the review primitive
|
|
105
|
+
|
|
106
|
+
A preview URL per branch *can* be what the other human actually reviews, and several platforms make it
|
|
107
|
+
nearly free. But this is the one place to resist the vendor pitch: **the claim that preview-per-branch
|
|
108
|
+
tightens the review loop is platform-positioning, not independently proven** (it was the single counter-
|
|
109
|
+
argument that survived verification in the research pass). For a two-person team it is often
|
|
110
|
+
**over-ceremony** — the review capacity cap in `git-workflow` is the real constraint, and a preview env
|
|
111
|
+
doesn't raise it.
|
|
112
|
+
|
|
113
|
+
So: reach for preview environments when review *load* grows enough to earn them — multiple concurrent
|
|
114
|
+
branches, a reviewer who isn't the author, a stakeholder who needs to click before merge. Not as a
|
|
115
|
+
mandate at MVP. Right ceremony, right rung (Principle #2).
|
|
116
|
+
|
|
117
|
+
## Stack-neutral capture (feed the loop)
|
|
118
|
+
|
|
119
|
+
The host, the deploy command, the rollback path, the env-var boundary you settled on — that's a
|
|
120
|
+
**stack-profile output of the learning loop** (Principle #4). Capture it as a `PRAC-NNN` (via
|
|
121
|
+
`/practice`) or a stack profile so the *next* project of that kind starts from a known-good deploy
|
|
122
|
+
recipe instead of rediscovering it. BOSS assumes no deploy target; it *learns* yours and carries it UP.
|
|
123
|
+
|
|
124
|
+
## Altitude / JIT (don't front-load it)
|
|
125
|
+
|
|
126
|
+
This is **not** a Quickstart lecture. A founder dropping an idea into `/prototype` runs it locally and
|
|
127
|
+
that's correct — sketch freely, no deploy discipline. The reachability discipline earns its place at
|
|
128
|
+
**MVP**, when the work is building-for-real and validation needs an artifact a real user can reach. The
|
|
129
|
+
secrets-at-the-boundary check surfaces the first time the app talks to a database or holds a key; the
|
|
130
|
+
schema discipline surfaces at the first migration; preview environments surface only when review load
|
|
131
|
+
asks for them. Right ceremony, right rung (Principle #2).
|
|
132
|
+
|
|
133
|
+
## Relationship to BOSS
|
|
134
|
+
|
|
135
|
+
BOSS already ships the security *mechanism* this practice leans on — `/red-team`'s pre-ship pass (the
|
|
136
|
+
shipped-secret scan), [`agent-security.md`](agent-security.md) (the deny-list floor, `secrets-guard`,
|
|
137
|
+
the lethal-trifecta containment), and [`scalable-architecture.md`](scalable-architecture.md)
|
|
138
|
+
(migrations-as-code). This practice is the **operating discipline that fires them at deploy time**, plus
|
|
139
|
+
the deploy-specific judgment a pre-AI CD guide wouldn't have carried: the client-bundled-key trap as the
|
|
140
|
+
*signature* AI-built failure, and rollback-is-not-reversibility. The runner is **`/ship`** — the
|
|
141
|
+
deterministic "put it where a real user can hit it" verbs, with the secrets/authz pre-flight wired in as
|
|
142
|
+
a *check, not a gate* (conscience-not-censor).
|
|
143
|
+
|
|
144
|
+
**Reachable → discoverable.** Reachability is the *first* leg this practice closes; the next is the one the
|
|
145
|
+
conscience otherwise never voices — *will anyone find it?* `/ship` carries a single demand voicing at the
|
|
146
|
+
live moment (*"who's the first real user, and how do they hit this?"*), situation-not-person, pointing at
|
|
147
|
+
`mentor-gtm` for depth — never a marketing nag. That's the distribution-leg asymmetry (IDEA-041) closed at
|
|
148
|
+
the `/ship` moment rather than as an unprompted hook. See [`git-workflow.md`](git-workflow.md) (the CI half
|
|
149
|
+
this extends), and FEAT-024.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Practice: Skill authoring — write skills the model actually triggers and follows
|
|
2
|
+
|
|
3
|
+
> Adapted from Anthropic's own `skill-creator` skill via [RVW-013](../../docs/research/verdicts/RVW-013-skill-creator-authoring-discipline.md).
|
|
4
|
+
> The wisdom, not the harness: the with/without eval machinery is deferred (see *What's left out*).
|
|
5
|
+
> This is ground for anyone authoring a skill — BOSS authoring its own, and (UP candidate) a founder
|
|
6
|
+
> authoring one in their scaffolded project.
|
|
7
|
+
|
|
8
|
+
A skill is a behavior you're handing to a model, not a config file. It fails two ways: it never
|
|
9
|
+
fires when it should (under-triggering), or it fires and the model can't follow it (rigid or vague).
|
|
10
|
+
Three disciplines fix most of both.
|
|
11
|
+
|
|
12
|
+
## 1. Explanatory over prescriptive
|
|
13
|
+
|
|
14
|
+
Tell the model *why*, and it generalizes to the cases you didn't enumerate. Give it a wall of rules,
|
|
15
|
+
and it follows them literally past the point of sense — and rots the moment the model improves
|
|
16
|
+
underneath it (the IDEA-014 problem: frozen behavior fighting a better model).
|
|
17
|
+
|
|
18
|
+
> Yellow flag: if you're writing `ALWAYS` / `NEVER` in all caps, or nesting rigid step-structures,
|
|
19
|
+
> stop. That's usually fear talking, not clarity. State the reasoning and trust the model to apply it.
|
|
20
|
+
|
|
21
|
+
A handful of caps for genuine load-bearing invariants is fine. A skill *made of* them is a skill
|
|
22
|
+
that doesn't trust its reader — and BOSS's voice assumes intelligence. (Re-read your own draft: most
|
|
23
|
+
`ALWAYS` lines become a single "because" sentence.)
|
|
24
|
+
|
|
25
|
+
## 2. Progressive disclosure — three levels of loading
|
|
26
|
+
|
|
27
|
+
Context is a budget. Structure the skill so each level loads only when needed:
|
|
28
|
+
|
|
29
|
+
1. **Metadata (the `description`)** — always in context, ~100 words. This is what the model reads to
|
|
30
|
+
*decide whether to trigger*. It earns the most care (see #3).
|
|
31
|
+
2. **The SKILL.md body** — loaded only when the skill fires. Keep it tight (the source says <500
|
|
32
|
+
lines; most should be far shorter). This is the *how*.
|
|
33
|
+
3. **Bundled resources** — templates, examples, reference files — loaded on demand from the body,
|
|
34
|
+
never up front.
|
|
35
|
+
|
|
36
|
+
Don't pour the whole method into the description, and don't make the body re-explain what the
|
|
37
|
+
description said. Each level does its own job once.
|
|
38
|
+
|
|
39
|
+
## 3. Descriptions earn their triggers
|
|
40
|
+
|
|
41
|
+
Under-triggering is the common failure: a useful skill that never fires because its description is
|
|
42
|
+
shy. The fix is an *explicit*, specific description — name the trigger phrases, the situations, the
|
|
43
|
+
adjacent cases — so the model recognizes the moment. The source skill calls this writing "pushy"
|
|
44
|
+
descriptions.
|
|
45
|
+
|
|
46
|
+
**The BOSS adaptation:** pushy ≠ shouting. A description earns its triggers by being *concrete*
|
|
47
|
+
("when the user asks X, or is doing Y, or says any of …"), not by adding urgency words. List the
|
|
48
|
+
real trigger phrases; name what it is *not* for (the boundary is as load-bearing as the trigger).
|
|
49
|
+
Look at the existing skills — `/vet`, `/boss-learn`, `/consult` — for the pattern: a one-line *what*,
|
|
50
|
+
then a precise *when*, then the inverse it's distinct from.
|
|
51
|
+
|
|
52
|
+
## Self-check before shipping a skill
|
|
53
|
+
|
|
54
|
+
A short read, not a harness:
|
|
55
|
+
|
|
56
|
+
- **Trigger test:** read only the `description`. Would *you* know exactly when to fire it, and when
|
|
57
|
+
not to? If the boundary is fuzzy, the model's will be fuzzier.
|
|
58
|
+
- **Rigidity test:** count the `ALWAYS`/`NEVER`/caps. Each one — can it become a "because"?
|
|
59
|
+
- **Level test:** is anything in the body that belongs in a bundled resource? Anything in the
|
|
60
|
+
description that belongs in the body?
|
|
61
|
+
- **Voice test:** does it assume intelligence and never assume knowledge? (Hand to `voice-keeper` if
|
|
62
|
+
unsure.)
|
|
63
|
+
|
|
64
|
+
## What's left out (deliberately)
|
|
65
|
+
|
|
66
|
+
The source skill ships a **with-skill vs without-skill eval harness** (`workspace/iteration-N/eval-ID/`,
|
|
67
|
+
parallel runs, scored comparison). BOSS does **not** adopt that yet — it's real ceremony, and it
|
|
68
|
+
duplicates the question `/vet` and `conscience-evals/` already ask ("does this beat the baseline?").
|
|
69
|
+
**Re-open** when a shipped skill's value is genuinely disputed and a careful read can't settle it;
|
|
70
|
+
then a with/without comparison earns its weight. Logged in [IDEA-033](../../docs/ideas/IDEA-033-2026-rigor-and-bestpractice-gaps.md).
|
|
File without changes
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: boss-learn
|
|
3
|
+
description: Route a proven pattern two ways — UP into the BOSS library as a reusable superset practice, or DOWN into this app as hardened core functionality. The judgment layer over `boss learn`. Usage - /boss-learn [what to promote]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /boss-learn — the two-destination router
|
|
7
|
+
|
|
8
|
+
PRINCIPLES #1: BOSS is always scaffolding, but at every natural breakpoint (a mode transition, a
|
|
9
|
+
shipped feature, the third time the same work repeats) you **pause and sort the pattern two ways.**
|
|
10
|
+
This skill is that router. It is **not** a one-way "promote to BOSS" — deciding UP vs DOWN *is* the
|
|
11
|
+
work.
|
|
12
|
+
|
|
13
|
+
## 0. Orient (silent)
|
|
14
|
+
|
|
15
|
+
- Read `PRINCIPLES.md` (#1 especially) and `.boss/manifest.json` (which project/mode you're in).
|
|
16
|
+
- Identify the concrete pattern: the file(s), prompt, workflow, convention, or token set in question.
|
|
17
|
+
|
|
18
|
+
## 1. Decide the destination
|
|
19
|
+
|
|
20
|
+
Ask one question if it's genuinely unclear; otherwise call it and say why.
|
|
21
|
+
|
|
22
|
+
- **UP → BOSS library** when the pattern is *project-neutral and reusable*: a workflow, an agent or
|
|
23
|
+
skill shape, a hook, a best-practice doc, a memory seed. The test (PRINCIPLES #3): *could a sibling
|
|
24
|
+
project reuse this without copy-pasting code?* If yes, it's superset.
|
|
25
|
+
- **DOWN → app core** when the pattern is *this product's actual functionality* that happens to be
|
|
26
|
+
living as scaffold/ad-hoc. It belongs in the app's own modules, with the app's own tests — not in BOSS.
|
|
27
|
+
|
|
28
|
+
A pattern can route **both**: the generalized shape goes UP, the concrete implementation hardens DOWN.
|
|
29
|
+
|
|
30
|
+
## 2a. Route UP
|
|
31
|
+
|
|
32
|
+
1. **Generalize first.** Strip project specifics; replace them with `{{PLACEHOLDERS}}`. Domain logic
|
|
33
|
+
never lands in `library/` (PRINCIPLES: stack- and project-neutral only). Write/clean the file.
|
|
34
|
+
2. **Pick a category:** `agents` · `skills` · `hooks` · `practices` · `memory-seed`.
|
|
35
|
+
3. **Promote it:**
|
|
36
|
+
```
|
|
37
|
+
boss learn <path-to-generalized-file-or-dir> --as <category> --note "<one line: what & why>"
|
|
38
|
+
```
|
|
39
|
+
This copies it into `library/<category>/`, bumps `VERSION` + `package.json` (minor by default;
|
|
40
|
+
`--patch`/`--major`/`--version X.Y.Z` to override), and prepends a `registry/CHANGELOG.md` entry.
|
|
41
|
+
4. **Sharpen the CHANGELOG prose** by hand — the auto entry is a stub. The CHANGELOG is what every
|
|
42
|
+
project reads via `/boss-sync`, so make it say what's new and why it matters.
|
|
43
|
+
5. Tell the user: connected projects pull this via `boss sync` / `/boss-sync`.
|
|
44
|
+
|
|
45
|
+
## 2b. Route DOWN
|
|
46
|
+
|
|
47
|
+
No BOSS version change. This is product, not scaffold. Give concrete guidance (or do it, if asked):
|
|
48
|
+
- Move the pattern from ad-hoc/scaffold into a **named, owned module/config** in the app.
|
|
49
|
+
- Add the app's own tests around it; wire it into the app's real flow.
|
|
50
|
+
- If a *generalizable shape* remains, note it for a follow-up UP — don't lock value into code (PRINCIPLES #3).
|
|
51
|
+
|
|
52
|
+
## 3. Close the loop
|
|
53
|
+
|
|
54
|
+
- Update `docs/RESUME.md` if this was a breakpoint worth recording.
|
|
55
|
+
- One-line summary: what moved, which direction, the new BOSS version (if UP), the next step.
|
|
56
|
+
|
|
57
|
+
## Rules
|
|
58
|
+
|
|
59
|
+
- Deciding the direction is the point — never default to UP. Most app code routes DOWN.
|
|
60
|
+
- Never put domain specifics in `library/`. Generalize or don't promote.
|
|
61
|
+
- `boss learn` edits the BOSS **source** repo (found via the registry's self-hosted entry, or
|
|
62
|
+
`$BOSS_SRC`). Review its diff and commit deliberately — don't auto-commit BOSS.
|
|
63
|
+
- One pattern per run. If the user names several, take the clearest first.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: boss-sync
|
|
3
|
+
description: Pull current BOSS practices into this project — bring the installed modes' skills/agents up to the latest version as a reviewed, narrated diff, then bump the project's BOSS pin. The judgment layer over `boss sync`. Usage - /boss-sync
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /boss-sync — bring this project current
|
|
7
|
+
|
|
8
|
+
The distribution half of the learning loop (PRINCIPLES #1): improvements promoted UP into the BOSS
|
|
9
|
+
library flow back DOWN into every connected project. This skill brings *this* project's BOSS-managed
|
|
10
|
+
files (the skills + agents of its installed modes) up to the current version — reviewed, not blind.
|
|
11
|
+
|
|
12
|
+
## 0. Orient (silent)
|
|
13
|
+
|
|
14
|
+
- `boss status` — current mode, the project's BOSS pin, and whether newer practices exist.
|
|
15
|
+
- Read `registry/CHANGELOG.md` from the BOSS source repo for **what changed since this project's pin** —
|
|
16
|
+
this is the narration you'll give the user (not just a file list).
|
|
17
|
+
|
|
18
|
+
## 1. Preview
|
|
19
|
+
|
|
20
|
+
Run `boss sync` (no flags). It lists each BOSS-managed file as `new`, `changed (N lines)`, or up to date,
|
|
21
|
+
across all installed modes, and reconciles any stale mode label (e.g. an old `L0-sketch` pin → `L0-quickstart`).
|
|
22
|
+
|
|
23
|
+
## 2. Review (the judgment)
|
|
24
|
+
|
|
25
|
+
Before applying, for each **changed** file:
|
|
26
|
+
- Read the project's current copy and the incoming version. Summarize what actually changes.
|
|
27
|
+
- **Flag conflicts:** if the project edited a BOSS-managed file locally, a sync overwrites it. Call this
|
|
28
|
+
out by name and ask before clobbering. (v1 syncs BOSS-managed skills/agents only — see scope below.)
|
|
29
|
+
- Tie changes back to the CHANGELOG entries so the user understands *why*, not just *what*.
|
|
30
|
+
|
|
31
|
+
## 3. Apply
|
|
32
|
+
|
|
33
|
+
- `boss sync --apply` — writes the new/changed files and bumps the project's `.boss` pin to current.
|
|
34
|
+
- Then show `git diff` and let the user review and commit. The project is the source of truth for its
|
|
35
|
+
own history; BOSS just proposes the update.
|
|
36
|
+
|
|
37
|
+
## Scope (v1)
|
|
38
|
+
|
|
39
|
+
- Syncs only **BOSS-managed skills/agents** for installed modes.
|
|
40
|
+
- Does **not** auto-merge user-editable files (`CLAUDE.md`, `.claude/settings.json`). If the CHANGELOG
|
|
41
|
+
implies those should change, surface it and let the user merge by hand.
|
|
42
|
+
- New skills/agents added to a mode since the pin are pulled in; nothing is removed.
|
|
43
|
+
|
|
44
|
+
## Rules
|
|
45
|
+
|
|
46
|
+
- Review before `--apply`. Never overwrite a locally-edited managed file without flagging it first.
|
|
47
|
+
- Narrate from the CHANGELOG — the user should learn what's new, not just see files move.
|
|
48
|
+
- Don't commit for the user; hand them a clean `git diff` to review.
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "bossbuild",
|
|
3
|
+
"version": "0.97.0",
|
|
4
|
+
"description": "BOSS (Build Out Solid Stuff) — a just-in-time startup incubator that cold-starts projects at the right level of agentic ceremony, grows them through modes (Quickstart → MVP → V1 → Scale), and mentors the founder. Make it real.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"Agentic",
|
|
7
|
+
"framework",
|
|
8
|
+
"humanetech"
|
|
9
|
+
],
|
|
10
|
+
"homepage": "https://github.com/ajeshh/bossbuild#readme",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/ajeshh/bossbuild/issues"
|
|
13
|
+
},
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/ajeshh/bossbuild.git"
|
|
17
|
+
},
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"author": "Ajesh Shah",
|
|
20
|
+
"type": "module",
|
|
21
|
+
"bin": {
|
|
22
|
+
"boss": "bin/boss"
|
|
23
|
+
},
|
|
24
|
+
"directories": {
|
|
25
|
+
"doc": "docs"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"bin/",
|
|
29
|
+
"src/",
|
|
30
|
+
"stages/",
|
|
31
|
+
"library/",
|
|
32
|
+
"VERSION",
|
|
33
|
+
"PRINCIPLES.md",
|
|
34
|
+
"registry/CHANGELOG.md"
|
|
35
|
+
],
|
|
36
|
+
"scripts": {
|
|
37
|
+
"link": "npm install -g .",
|
|
38
|
+
"gen:docs": "node scripts/gen-docs.js",
|
|
39
|
+
"check:wayfinding": "node scripts/check-wayfinding-drift.js",
|
|
40
|
+
"pack:preview": "npm pack --dry-run",
|
|
41
|
+
"eval:gate": "node docs/architecture/conscience-evals/runner.js",
|
|
42
|
+
"eval:judgment": "node docs/architecture/conscience-evals/judgment/replay.js",
|
|
43
|
+
"eval": "npm run eval:gate && npm run eval:judgment",
|
|
44
|
+
"regrade": "node docs/architecture/conscience-evals/judgment/regrade.js"
|
|
45
|
+
},
|
|
46
|
+
"engines": {
|
|
47
|
+
"node": ">=18"
|
|
48
|
+
}
|
|
49
|
+
}
|