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,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: board
|
|
3
|
+
description: The cross-FEAT sequencing surface for {{PROJECT_NAME}}. Reads INDEX + FEAT frontmatter + smoke state + evals state + override entries to produce a live board view — what's open, what's blocked, what's next, what's parallelizable. Owned by `program-manager` (the *when*; distinct from `pm`'s *what*). Usage - /board (or /board --next, /board --blocked, /board --by-cohort)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /board — the cross-FEAT sequencing surface
|
|
7
|
+
|
|
8
|
+
At MVP the queue was small; `program-manager`'s next-up list lived in conversation. At V1
|
|
9
|
+
there are usually 5+ FEATs in flight, real dependencies between them, real blockers, and a
|
|
10
|
+
real need to surface *what is the project actually working on right now.* `/board` is that
|
|
11
|
+
view.
|
|
12
|
+
|
|
13
|
+
It's a *live read*, not a maintained document. The skill computes it from the frontmatter +
|
|
14
|
+
state of the actual FEAT files. If you want to change the board, change the FEATs — don't
|
|
15
|
+
edit the board view.
|
|
16
|
+
|
|
17
|
+
## What the board shows
|
|
18
|
+
|
|
19
|
+
By default (`/board` with no flags):
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
{{PROJECT_NAME}} — board
|
|
23
|
+
mode: {{MODE}}
|
|
24
|
+
smoke: ✓ green (last run: <when>)
|
|
25
|
+
evals: 12 / 14 cases passing across 3 FEATs (2 failing in FEAT-007)
|
|
26
|
+
|
|
27
|
+
In flight (3):
|
|
28
|
+
⊙ FEAT-005 user-onboarding-flow acceptance: 3/5 smoke: ✓ evals: n/a
|
|
29
|
+
⊙ FEAT-007 AI-summarization-prompt acceptance: 1/4 smoke: ✓ evals: 4/6 ⚠
|
|
30
|
+
⊙ FEAT-008 schema-migration-v2 acceptance: 0/3 smoke: ✗ blocked: db-architect review
|
|
31
|
+
|
|
32
|
+
Next-up (2, ordered):
|
|
33
|
+
◯ FEAT-009 empty-state-illustrations deps: FEAT-005 done
|
|
34
|
+
◯ FEAT-010 hover-state-microinteractions deps: design-tokens-loop closed
|
|
35
|
+
|
|
36
|
+
Blocked (1):
|
|
37
|
+
▣ FEAT-006 team-permissions blocked: needs mentor-business call (pricing tier shape)
|
|
38
|
+
|
|
39
|
+
Deferred (1):
|
|
40
|
+
⌀ FEAT-011 ai-suggest-completion override: skipped — rationale: re-open after FEAT-007 evals stabilize
|
|
41
|
+
|
|
42
|
+
Recently shipped (3, last 14 days):
|
|
43
|
+
✓ FEAT-002 ✓ FEAT-003 ✓ FEAT-004
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## How to run it
|
|
47
|
+
|
|
48
|
+
1. **Walk `docs/ideas/FEAT-*.md`** to enumerate every FEAT. Read each one's frontmatter
|
|
49
|
+
(`status`), acceptance-criteria checklist progress, smoke field, evals field.
|
|
50
|
+
2. **Walk `docs/devlog.md`** for override entries naming FEATs. Filter recent ones.
|
|
51
|
+
3. **Walk `docs/loops/*.md` state** (use the same logic `boss status --conscience` uses) to
|
|
52
|
+
identify loops that gate any FEATs (e.g., a FEAT depends on `design-tokens-loop` being
|
|
53
|
+
closed).
|
|
54
|
+
4. **Compute the board.** Group FEATs by status:
|
|
55
|
+
- **In flight** — `status: building`; show acceptance progress + smoke + evals state
|
|
56
|
+
- **Next-up** — `status: ready` (specced, not yet started); show dependencies + suggested order
|
|
57
|
+
- **Blocked** — `status: building` AND smoke is red, or a dep is unclosed, or an override
|
|
58
|
+
was recorded
|
|
59
|
+
- **Deferred** — `status: deferred` or an override entry naming this FEAT exists
|
|
60
|
+
- **Recently shipped** — `status: shipped` within last 14 days (cap at 5)
|
|
61
|
+
5. **Output the board** in a readable Markdown-friendly text format.
|
|
62
|
+
|
|
63
|
+
## Flags
|
|
64
|
+
|
|
65
|
+
- `--next` — show only Next-up, ordered with rationale
|
|
66
|
+
- `--blocked` — show only Blocked, with the specific blocker for each
|
|
67
|
+
- `--by-cohort` — group by which persona-cohort the FEAT primarily serves (reads
|
|
68
|
+
`.boss/config.json` cohort + FEAT frontmatter `serves_cohort` if present)
|
|
69
|
+
- `--deferred` — show only Deferred + the re-open conditions from each override
|
|
70
|
+
- `--evals` — show evals state across FEATs; highlight FEATs with failing cases
|
|
71
|
+
|
|
72
|
+
## How the board interacts with the conscience
|
|
73
|
+
|
|
74
|
+
The board is `program-manager`'s view; the conscience's loops are independent. But they
|
|
75
|
+
intersect at the boundaries:
|
|
76
|
+
- A FEAT in *Next-up* whose `spec-loop`'s entry isn't satisfied (canvas-loop not closed) is
|
|
77
|
+
arguably premature; flag with `⚠` and a one-liner.
|
|
78
|
+
- A FEAT in *Blocked* on `design-tokens-loop` is signal that `/design-tokens-init` should run.
|
|
79
|
+
- Multiple FEATs *Deferred* with overrides pointing at the same upstream concern is signal
|
|
80
|
+
for `pm` or `mentor-venture` — there's a real bottleneck, not just incidental skips.
|
|
81
|
+
|
|
82
|
+
## What this skill does NOT do
|
|
83
|
+
|
|
84
|
+
- Doesn't edit FEAT files. View-only. To change priority, change the FEAT's frontmatter or
|
|
85
|
+
acceptance state.
|
|
86
|
+
- Doesn't run smoke / evals. It reports their *last known result* per FEAT. To get fresh
|
|
87
|
+
state, run `/smoke` or `/evals` first.
|
|
88
|
+
- Doesn't track dependencies that aren't declared. If `FEAT-008` actually depends on `FEAT-005`
|
|
89
|
+
but the FEAT files don't say so, the board can't show it. Declaring deps in FEAT frontmatter
|
|
90
|
+
(`requires: [FEAT-005]`) is the discipline that makes the board honest.
|
|
91
|
+
|
|
92
|
+
## Rules
|
|
93
|
+
|
|
94
|
+
- **Live read, not maintained doc.** Don't write a `docs/board.md`. The view IS the board.
|
|
95
|
+
- **Frontmatter is truth.** If the board is wrong, fix the source FEAT file, not the board view.
|
|
96
|
+
- **Brief.** A board view longer than one screen is failing — group, summarize, link to detail.
|
|
97
|
+
- **`program-manager`-owned.** This skill is the program-manager agent's primary surface; when
|
|
98
|
+
ambiguity about priority emerges, route to `program-manager`.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-review
|
|
3
|
+
description: Before-code design review for {{PROJECT_NAME}}. Runs the proposed UI through `ui-designer` (token + visual authority) and `ux-designer` (flows + 5-state requirement) in sequence. Reads `docs/design/DESIGN_TOKENS.md` + `docs/design/STYLE_GUIDE.md` + the relevant FEAT spec. Outputs concrete diffs or numbered issues. Catches token violations + missing states + brand drift BEFORE code commits. Pairs with `/ux-check` (after-code review). Usage - /design-review [FEAT-NNN | path-to-component-spec]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /design-review — before-code design review
|
|
7
|
+
|
|
8
|
+
Catch design failures *before* they're in production code, where they're cheapest to fix. Most
|
|
9
|
+
of the AI-generated-UI failure modes from IDEA-010 (the 47 blues, pattern reinvention, billion-
|
|
10
|
+
line drift, missing states, brand-default) are catchable at this stage with a structured
|
|
11
|
+
review. After-code review (`/ux-check`) is the second gate; this is the first.
|
|
12
|
+
|
|
13
|
+
## When to run it
|
|
14
|
+
|
|
15
|
+
- A FEAT introduces or significantly modifies UI — *before* `coder-generalist` writes the code.
|
|
16
|
+
- A new component is being added — *before* the file lands.
|
|
17
|
+
- The founder wants a second look on a design decision they made — anytime.
|
|
18
|
+
|
|
19
|
+
## How to run it
|
|
20
|
+
|
|
21
|
+
1. **Read the spec.** The FEAT being reviewed, the proposed component (sketch / mockup /
|
|
22
|
+
description), and the relevant section of any design brief.
|
|
23
|
+
2. **Read the system.** `docs/design/DESIGN_TOKENS.md` (authoritative tokens), `docs/design/
|
|
24
|
+
STYLE_GUIDE.md` (how tokens compose into patterns), `docs/ideas/CANVAS.md` (Promises cell —
|
|
25
|
+
the brand anchor).
|
|
26
|
+
3. **Run `ui-designer` first** — pass the spec + the design system; ask for review against:
|
|
27
|
+
- Token compliance (no raw hex; no raw spacing; no font-family inlined)
|
|
28
|
+
- Three-layer architecture preserved (semantic tokens used, not primitives)
|
|
29
|
+
- Brand-anchored choices (matches canvas Promises voice, not internet-default)
|
|
30
|
+
- Reuse-before-creation: does a similar pattern exist in `src/components/`?
|
|
31
|
+
4. **Run `ux-designer` next** — pass the spec + ui-designer's notes; ask for review against:
|
|
32
|
+
- All 5 states named (default / hover / active / disabled / empty) — plus loading + error
|
|
33
|
+
for async / interactive elements
|
|
34
|
+
- Affordances clear (Norman's lens — the user can tell what's interactive)
|
|
35
|
+
- Nielsen heuristics (visibility, recognition, error prevention, recovery)
|
|
36
|
+
- Accessibility floor: keyboard nav, focus visibility, screen reader output, color-isn't-
|
|
37
|
+
the-only-signal, WCAG 2 AA contrast
|
|
38
|
+
- AI-specific UX (if applicable): options-not-truth, visible confidence, undo/edit/regenerate,
|
|
39
|
+
deliberate failure states
|
|
40
|
+
5. **Synthesize.** Output:
|
|
41
|
+
- **Token violations** — list each; propose the right token; flag if a new token is
|
|
42
|
+
legitimately needed and which layer
|
|
43
|
+
- **Missing states** — list each missing state; propose what each should be
|
|
44
|
+
- **Brand drift** — flag any visual choices that contradict the canvas Promises voice
|
|
45
|
+
- **Accessibility issues** — listed by WCAG / Nielsen heuristic violated
|
|
46
|
+
- **AI-UX issues** (where applicable) — listed
|
|
47
|
+
6. **Capture the review** in `docs/design/reviews/<feat-nnn-or-date>.md`. The review is a
|
|
48
|
+
diff against the proposed design, not a critique-only doc — propose every change concretely.
|
|
49
|
+
|
|
50
|
+
## What this skill does NOT do
|
|
51
|
+
|
|
52
|
+
- Doesn't write the implementation. After review passes, `coder-generalist` writes the code.
|
|
53
|
+
- Doesn't run on existing shipped code. That's `/ux-check`'s job.
|
|
54
|
+
- Doesn't approve when an override is recorded. The founder can override a finding (record in
|
|
55
|
+
the review doc with substantive rationale); the review respects.
|
|
56
|
+
|
|
57
|
+
## Cohort-aware delivery
|
|
58
|
+
|
|
59
|
+
Per `.boss/config.json` cohort declaration (v0.20+):
|
|
60
|
+
- `vibe-coder-newbie` / `first-product`: explain *why* each token-compliance / state-coverage
|
|
61
|
+
point matters; this cohort is most likely to find design discipline foreign
|
|
62
|
+
- `eng-builder` / `returning-founder`: terse list of violations; assume context
|
|
63
|
+
- `vibe-virtuoso`: lean into the architecture (atomic discipline, token layer-cake); skip the
|
|
64
|
+
101 explanations
|
|
65
|
+
- `non-tech-founder` / `domain-expert`: plain language; emphasize the user-facing consequences
|
|
66
|
+
of each issue
|
|
67
|
+
- `indie-hacker`: right-sized — avoid suggesting heavier discipline than the project earns
|
|
68
|
+
|
|
69
|
+
## Rules
|
|
70
|
+
|
|
71
|
+
- **Before code.** This review is BEFORE the implementation. If you're reviewing shipped code,
|
|
72
|
+
you're running the wrong skill — use `/ux-check`.
|
|
73
|
+
- **Propose, don't just critique.** Every finding includes a specific change suggestion.
|
|
74
|
+
- **Reuse first.** The first question on every new component: *does a similar pattern exist?*
|
|
75
|
+
- **Cite the practitioner / heuristic.** "Violates Nielsen #4 — consistency and standards"
|
|
76
|
+
beats "this is inconsistent."
|
|
77
|
+
- **Capture the review.** Without `docs/design/reviews/`, the discipline doesn't compound.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ux-check
|
|
3
|
+
description: After-code UX review for {{PROJECT_NAME}}. Run against shipped UI to catch what slipped through `/design-review` or accumulated as drift. Walks the actual user journey (not the spec), checks the 5 states are real (not just designed), runs accessibility heuristics, applies AI-specific UX where relevant. Pairs with `/design-review` (before-code) — same lens, different timing. Usage - /ux-check [route-or-component-path | FEAT-NNN]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /ux-check — after-code UX review
|
|
7
|
+
|
|
8
|
+
The before-code review catches design-spec failures; this skill catches *implementation*
|
|
9
|
+
failures — the gap between what was specced and what shipped. Most production UX failures
|
|
10
|
+
live in this gap: the empty state was designed but never built; the loading state defaults to
|
|
11
|
+
a spinner instead of the designed skeleton; the error state shows raw stack traces because
|
|
12
|
+
the recovery path was an afterthought.
|
|
13
|
+
|
|
14
|
+
This is also where AI-generated drift becomes visible. Even with `/design-review` upstream, the
|
|
15
|
+
`coder-generalist` (or AI doing the same role) sometimes ships a slight variant that
|
|
16
|
+
accumulates. `/ux-check` catches that.
|
|
17
|
+
|
|
18
|
+
## When to run it
|
|
19
|
+
|
|
20
|
+
- A FEAT just landed and is functionally working — *before* it's considered "shipped."
|
|
21
|
+
- A user reported a UX issue — start `/ux-check` here, walk to where the issue surfaces.
|
|
22
|
+
- Routine audit — run against the most-recently-shipped FEATs every 1-2 weeks.
|
|
23
|
+
- A new persona-reaction (v0.19) surfaced a UX concern — `/ux-check` validates whether the
|
|
24
|
+
persona's read matches the shipped reality.
|
|
25
|
+
|
|
26
|
+
## How to run it
|
|
27
|
+
|
|
28
|
+
1. **Pick the surface.** A specific route, a component, or the FEAT-NNN whose UI is being
|
|
29
|
+
reviewed.
|
|
30
|
+
2. **Walk the actual flow.** Not the spec — the SHIPPED experience. Open the page; click
|
|
31
|
+
through; trigger every state.
|
|
32
|
+
3. **Check the 5 states are real:**
|
|
33
|
+
- Default — does it look like the design?
|
|
34
|
+
- Hover — feedback visible?
|
|
35
|
+
- Active — feedback during the action?
|
|
36
|
+
- Disabled — *and the reason for disabled* (so the user can act on it)?
|
|
37
|
+
- Empty — designed copy + visual, not "no results"
|
|
38
|
+
- Loading — skeleton (almost always) not spinner
|
|
39
|
+
- Error — recovery path, not just error text
|
|
40
|
+
4. **Accessibility heuristics:**
|
|
41
|
+
- Tab through every interactive element; focus visible at each step?
|
|
42
|
+
- Read with screen reader (or use semantic HTML inspection); does the announced output
|
|
43
|
+
make sense in isolation?
|
|
44
|
+
- Color isn't the only signal (red alone for error, green alone for success — fail)
|
|
45
|
+
- Contrast ratios meet WCAG 2 AA
|
|
46
|
+
- Touch targets ≥ 44×44 px on mobile / responsive
|
|
47
|
+
5. **Nielsen heuristics walk:**
|
|
48
|
+
- **#1 Visibility of system status** — does the user always know what's happening?
|
|
49
|
+
- **#3 User control and freedom** — is undo / cancel / back available where consequential?
|
|
50
|
+
- **#5 Error prevention** — does the design avoid errors rather than just handle them?
|
|
51
|
+
- **#9 Help users recognize/diagnose/recover from errors** — error states with recovery
|
|
52
|
+
paths?
|
|
53
|
+
6. **AI-specific UX (where applicable):**
|
|
54
|
+
- AI as **options**, not truth — visible confidence; multiple plausible answers where
|
|
55
|
+
uncertainty exists
|
|
56
|
+
- **Human-in-the-loop** on consequential actions (no auto-apply on irreversible)
|
|
57
|
+
- **Undo / edit / regenerate** on AI outputs
|
|
58
|
+
- **Deliberate failure states** — what does the user get when the AI is unavailable / wrong /
|
|
59
|
+
slow?
|
|
60
|
+
7. **Capture findings** in `docs/design/ux-check-<feat-or-date>.md`. Each issue: severity
|
|
61
|
+
(blocking / serious / minor / nit), the specific scene, the proposed fix.
|
|
62
|
+
|
|
63
|
+
## What this skill does NOT do
|
|
64
|
+
|
|
65
|
+
- Doesn't fix the code. Findings route to `coder-generalist` (or stack-specific coder) for
|
|
66
|
+
fixes.
|
|
67
|
+
- Doesn't replace usability testing with real users (Erika Hall's discipline — *Just Enough
|
|
68
|
+
Research*). Heuristic walkthroughs catch a lot but miss what real users do.
|
|
69
|
+
- Doesn't approve when issues are recorded as overrides. Same override discipline as
|
|
70
|
+
everywhere else: skip with substantive rationale + re-open conditions.
|
|
71
|
+
|
|
72
|
+
## How findings feed back
|
|
73
|
+
|
|
74
|
+
- **Token violations** (raw hex in shipped code) → `design-drift-loop` is detecting this; this
|
|
75
|
+
skill cross-confirms
|
|
76
|
+
- **Pattern reinvention** (new component that duplicates existing) → flag the duplicate;
|
|
77
|
+
propose consolidation
|
|
78
|
+
- **Missing states** → these are the most common shipped-UX failures; track them as a category
|
|
79
|
+
in `docs/design/ux-check-summary.md` so you can see if a particular state-category is your
|
|
80
|
+
pattern weakness
|
|
81
|
+
- **AI-UX issues** → may surface needs for the v0.20 cohort-aware-conscience design (the
|
|
82
|
+
conscience speaks differently per cohort about how to fix AI-UX)
|
|
83
|
+
|
|
84
|
+
## Rules
|
|
85
|
+
|
|
86
|
+
- **Walk the actual flow.** The spec might say the empty state is designed; the shipped
|
|
87
|
+
reality might say "No results." Trust the experience, not the spec.
|
|
88
|
+
- **Severity matters.** A blocking accessibility issue is not the same as a polish issue;
|
|
89
|
+
don't flatten the list.
|
|
90
|
+
- **Capture every check.** Without `docs/design/ux-check-*.md` files, the discipline doesn't
|
|
91
|
+
compound.
|
|
92
|
+
- **Pair with personas (v0.19) where relevant.** A persona's reaction to a flow can surface
|
|
93
|
+
cohort-specific UX failures that the heuristic walk misses.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
## V1 working rules (added on `boss unlock v1`)
|
|
2
|
+
|
|
3
|
+
> {{MODE}} mode is *ready for a real, shippable release*. The design layer turns on, the second
|
|
4
|
+
> tier of mentors arrives, and discipline tightens on the parts that matter when real users meet
|
|
5
|
+
> the product. Same JIT principle — nothing imposed until earned — but the V1-stage ceremonies
|
|
6
|
+
> are now earned.
|
|
7
|
+
|
|
8
|
+
1. **Design tokens are authoritative.** Every style value comes from `docs/design/DESIGN_TOKENS.md`
|
|
9
|
+
+ the corresponding code file. The `design-drift-loop` watches for drift — raw hex codes,
|
|
10
|
+
near-duplicate components, tokens-file-untouched-while-components-grow. New colors are added
|
|
11
|
+
to the tokens, never inline. (Future: PostToolUse hook for hardcoded-style detection lands in
|
|
12
|
+
v0.23.)
|
|
13
|
+
2. **`/design-review` before code; `/ux-check` after.** Design choices that touch user-facing
|
|
14
|
+
surfaces run through both. Review by `ui-designer` (token + visual authority) and `ux-designer`
|
|
15
|
+
(flows + states). The 5-state requirement is non-optional: every interactive element specifies
|
|
16
|
+
default / hover / active / disabled / empty (and loading where relevant).
|
|
17
|
+
3. **`/board` is the sequencing surface.** Cross-FEAT prioritization. Read by `program-manager`
|
|
18
|
+
(the *when*, not the *what*). What's blocked, what's parallelizable, what's next.
|
|
19
|
+
4. **Data shape is a decision, not an accident.** `db-architect` reviews schema before code, even
|
|
20
|
+
in solo-builder mode. Schema migrations are first-class; ad-hoc column adds are flagged.
|
|
21
|
+
5. **The mentor board has full V1 quorum.** `mentor-business` (model + pricing — Patrick Campbell,
|
|
22
|
+
Madhavan Ramanujam, the right-sized voices). `mentor-fundraising` (Janz, Skok — defaulting to
|
|
23
|
+
"don't raise" unless earned). `mentor-pitch` (Raskin spine, Miller story-driven, Neumeier
|
|
24
|
+
simplicity). `mentor-talent` (Hughes Johnson, the right-sized team voices). All advisory; never
|
|
25
|
+
binding legal/financial/medical.
|
|
26
|
+
6. **The conscience still runs.** Every prior moment (caution, Done, restraint, coherence) keeps
|
|
27
|
+
firing — V1 doesn't replace earlier discipline, it adds the V1-specific surface.
|
|
28
|
+
|
|
29
|
+
## What V1 adds (alongside MVP)
|
|
30
|
+
|
|
31
|
+
- **Skills:**
|
|
32
|
+
- `/board` — cross-FEAT sequencing surface (`program-manager`'s authoritative view)
|
|
33
|
+
- `/design-review` — before-code design review against tokens + brand + 5 states
|
|
34
|
+
- `/ux-check` — after-code review of flows, interaction patterns, Nielsen heuristics
|
|
35
|
+
- **Builder agents:**
|
|
36
|
+
- `ui-designer` — token + visual authority. Cites Brad Frost (Atomic Design), Nathan Curtis
|
|
37
|
+
(layer-cake tokens), Jina Anne (W3C DTCG). Refuses raw hex unless overridden; pairs with
|
|
38
|
+
`voice-keeper` (BOSS-internal) when copy is involved.
|
|
39
|
+
- `ux-designer` — flows + states + interactions. Cites Don Norman (affordances), Jakob
|
|
40
|
+
Nielsen (10 heuristics), Steve Krug (clarity), Luke Wroblewski (forms/mobile).
|
|
41
|
+
- `db-architect` — schema design, indexes, query patterns. Cites the AI-native data voices
|
|
42
|
+
(Liu on structured outputs) + classical (Stonebraker, Date, Codd).
|
|
43
|
+
- **Mentor agents** (promoted from BOSS-local in v0.15 to template here):
|
|
44
|
+
- `mentor-business` — model, pricing, packaging, willingness-to-pay
|
|
45
|
+
- `mentor-fundraising` — whether / when / how to raise; defaults to *don't*
|
|
46
|
+
- `mentor-pitch` — story + deck + 60-second-version + demo arc
|
|
47
|
+
- `mentor-talent` — first hires, contractor vs employee, operating cadence
|
|
48
|
+
- **Loops:**
|
|
49
|
+
- `design-drift-loop` — V1-stage; emits the `coherence` moment when system-vs-code drift
|
|
50
|
+
exceeds threshold (raw hex codes appearing, near-duplicate components, tokens file
|
|
51
|
+
stale while components grow)
|
|
52
|
+
- **Conventions:**
|
|
53
|
+
- `docs/design/DESIGN_TOKENS.md` is authoritative (created at MVP via `/design-tokens-init`;
|
|
54
|
+
enforced at V1)
|
|
55
|
+
- `docs/design/STYLE_GUIDE.md` documents how tokens compose into patterns
|
|
56
|
+
- `docs/architecture/` carries db-architect's schema decisions
|
|
57
|
+
- `docs/board.md` (or live-state computed from FEAT frontmatter) drives `/board`
|
|
58
|
+
- **Graduation:** when the team grows, the org gets real, and a product council needs to be a
|
|
59
|
+
thing — `boss unlock scale`.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: design-drift-loop
|
|
3
|
+
type: loop
|
|
4
|
+
stage: L2-v1
|
|
5
|
+
runner_type: hook
|
|
6
|
+
attributed_to: [Brad Frost, Nathan Curtis, Diana Mounter]
|
|
7
|
+
also_relevant: [Dan Mall, Jina Anne, Ajesh Shah]
|
|
8
|
+
entry:
|
|
9
|
+
- exists: { path: docs/design/DESIGN_TOKENS.md }
|
|
10
|
+
exit:
|
|
11
|
+
- count_at_least:
|
|
12
|
+
path_glob: src/**
|
|
13
|
+
pattern: '#[0-9a-fA-F]{3,8}\b'
|
|
14
|
+
min: 1
|
|
15
|
+
exclude_files_matching: '\.tokens?\.|\.theme\.|DESIGN_TOKENS'
|
|
16
|
+
drift_moment: coherence
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Loop: design-drift (V1)
|
|
20
|
+
|
|
21
|
+
The V1-stage counterpart to `design-tokens-loop` (MVP). MVP-stage gates *whether the tokens
|
|
22
|
+
exist*; V1-stage gates *whether the tokens are still authoritative.* The drift signal: raw hex
|
|
23
|
+
codes appearing in source files, near-duplicate components multiplying, the tokens file going
|
|
24
|
+
stale while components grow. The IDEA-010 failure mode catalog (47 blues, pattern
|
|
25
|
+
reinvention, billion-line drift) materializing despite the MVP-stage discipline.
|
|
26
|
+
|
|
27
|
+
`runner_type: hook` — the conscience hook evaluates this on every UserPromptSubmit at V1. The
|
|
28
|
+
entry predicate (tokens file exists) is met for any project that has unlocked V1 with the
|
|
29
|
+
MVP-stage `/design-tokens-init` having been run. The exit predicate is **inverted** — when the
|
|
30
|
+
exit predicate *fires* (≥1 raw hex code in code, excluding the tokens-file itself), the loop
|
|
31
|
+
is "stalled" and the conscience emits `coherence`.
|
|
32
|
+
|
|
33
|
+
This is a subtle pattern worth naming: most loops have *positive* exit predicates ("the
|
|
34
|
+
artifact exists"). This loop's exit predicate is *the bad signal* — "raw hex codes exist" —
|
|
35
|
+
and the loop is "drift-emitting" when that bad-signal is present. The IDEA-008 primitive
|
|
36
|
+
supports this without modification (predicate ok-ness is just boolean state).
|
|
37
|
+
|
|
38
|
+
## Entry artifact
|
|
39
|
+
|
|
40
|
+
`docs/design/DESIGN_TOKENS.md` exists. Set during MVP-stage via `/design-tokens-init`. If a
|
|
41
|
+
project is in V1 mode without this file, design-tokens-loop should re-open (founder skipped
|
|
42
|
+
it at MVP).
|
|
43
|
+
|
|
44
|
+
## Purpose
|
|
45
|
+
|
|
46
|
+
Catch design-system drift early. When a raw hex code lands in committed source code, the
|
|
47
|
+
conscience surfaces a `coherence` nudge — "you shipped `#FF6B35` directly in
|
|
48
|
+
`src/components/<X>`; should this be a new token in the system (and then referenced by
|
|
49
|
+
name)?" The founder either:
|
|
50
|
+
- Routes the value through the token system (the fix)
|
|
51
|
+
- Records an override (legitimate when the value is genuinely one-off / debug / non-shipping)
|
|
52
|
+
|
|
53
|
+
## Exit artifact
|
|
54
|
+
|
|
55
|
+
This loop is "closed" when **no raw hex codes** exist in source code (excluding the tokens
|
|
56
|
+
file itself and any `*.tokens.*` / `*.theme.*` config files where raw values legitimately
|
|
57
|
+
live).
|
|
58
|
+
|
|
59
|
+
## Drift
|
|
60
|
+
|
|
61
|
+
`entry: satisfied` (tokens file exists) AND `exit: not satisfied` (raw hex codes exist) →
|
|
62
|
+
loop open → conscience emits `coherence`.
|
|
63
|
+
|
|
64
|
+
Confidence scales with the count of raw hex codes:
|
|
65
|
+
- 1-3: low (might be transient — feature in flight)
|
|
66
|
+
- 4-10: medium (real accumulation)
|
|
67
|
+
- 11+: high (the 47-blues failure mode is in progress)
|
|
68
|
+
|
|
69
|
+
The voice (cohort-aware per v0.20):
|
|
70
|
+
- `vibe-coder-newbie` / `first-product`: explain *why* this matters; route to the token
|
|
71
|
+
- `eng-builder` / `returning-founder`: terse — list the files, propose the consolidation
|
|
72
|
+
- `vibe-virtuoso`: lean into the architecture — "your component pattern's drifting; want me
|
|
73
|
+
to consolidate to the token?"
|
|
74
|
+
- `non-tech-founder` / `domain-expert`: plain language — "the visual system is drifting; the
|
|
75
|
+
AI will compound this if we don't fix it now"
|
|
76
|
+
- `indie-hacker`: right-sized — "if this is throwaway, override; if it's keeping, consolidate"
|
|
77
|
+
|
|
78
|
+
## How to remix
|
|
79
|
+
|
|
80
|
+
- **Skip:** legitimate when the UI is genuinely one-off (a debug page, an internal admin
|
|
81
|
+
tool, a transient feature). Override grammar:
|
|
82
|
+
```
|
|
83
|
+
- **OVERRIDE:** proceeded with raw hex in `src/<file>` — rationale: <one-off /
|
|
84
|
+
debug / not-user-facing>; expires <date or never>.
|
|
85
|
+
```
|
|
86
|
+
- **Swap predicate scope:** add `not_path_glob` filters to exclude specific directories
|
|
87
|
+
(e.g., `src/admin/**`) if a whole directory legitimately operates outside the design system.
|
|
88
|
+
Edit this loop spec's frontmatter; record the rationale in `docs/devlog.md`.
|
|
89
|
+
- **Tighten predicate:** add detection for near-duplicate components (similar file sizes,
|
|
90
|
+
similar import patterns) — V1+ heuristic. Author the predicate; consider promoting via
|
|
91
|
+
`/boss-learn` if it generalizes.
|
|
92
|
+
|
|
93
|
+
## When this loop re-opens
|
|
94
|
+
|
|
95
|
+
- A raw hex code is added to a source file
|
|
96
|
+
- The tokens file is renamed or deleted (entry fails — re-open as unopenable; route to
|
|
97
|
+
`/design-tokens-init` to re-establish)
|
|
98
|
+
- A new stack is introduced where the predicate's regex doesn't match — update the spec
|
|
99
|
+
with the new stack's pattern
|
|
100
|
+
|
|
101
|
+
## Future v0.23+: PostToolUse hook
|
|
102
|
+
|
|
103
|
+
A PostToolUse hook (fires *after* Edit/Write tool calls) can catch raw style values *at
|
|
104
|
+
write-time* — before they're committed. The hook would flag the value, propose the token,
|
|
105
|
+
and let the founder accept/override. Deferred from v0.22 because PostToolUse is a different
|
|
106
|
+
hook surface than UserPromptSubmit (BOSS's only hook type today). The pre-commit drift
|
|
107
|
+
detection (this loop) is the v0.22 substitute; the at-write-time detection is the
|
|
108
|
+
v0.23+ upgrade.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# L3 · Scale — NOT YET AUTHORED
|
|
2
|
+
|
|
3
|
+
The full agentic-org mode — "a fully blown-out, complex app." Planned contents (generalized from dhun):
|
|
4
|
+
|
|
5
|
+
- PM org: Chief of Staff (`pm`) + Principal-PM pattern, `/pm`, `/pm-roundup`, `/product-council`
|
|
6
|
+
- lab governance tiers (3-tier change control for algorithm-like subsystems)
|
|
7
|
+
- `/refactor-wave` (Saaf/Dabba wave decomposition) + rollback
|
|
8
|
+
- `/code-health`, `/perf-check`
|
|
9
|
+
- `/saturday` cadence chain, `/reflect`
|
|
10
|
+
- full IDS: `RFC-NNN`, `DEC-...`, `EXP-NNN`, `AUDIT-NNN`
|
|
11
|
+
- agents: `historian`, `code-health-lead`, `release-manager`, Principal PMs
|
|
12
|
+
|
|
13
|
+
To author: add `manifest.json` + `template/` here.
|