bossbuild 0.97.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/LICENSE +21 -0
  2. package/PRINCIPLES.md +70 -0
  3. package/README.md +213 -0
  4. package/VERSION +1 -0
  5. package/bin/boss +3 -0
  6. package/library/README.md +19 -0
  7. package/library/agents/.gitkeep +0 -0
  8. package/library/agents/mentor-venture.md +57 -0
  9. package/library/hooks/.gitkeep +0 -0
  10. package/library/hooks/auto-log.js +133 -0
  11. package/library/hooks/memory-cue.js +82 -0
  12. package/library/hooks/secrets-guard.js +87 -0
  13. package/library/memory-seed/README.md +29 -0
  14. package/library/memory-seed/durable-facts-example.md +16 -0
  15. package/library/practices/.gitkeep +0 -0
  16. package/library/practices/agent-security.md +111 -0
  17. package/library/practices/ai-adoption-culture.md +104 -0
  18. package/library/practices/ai-ux-patterns.md +246 -0
  19. package/library/practices/celebration-of-done.md +100 -0
  20. package/library/practices/conscience-voicing.md +121 -0
  21. package/library/practices/context-discipline.md +116 -0
  22. package/library/practices/design-system.md +152 -0
  23. package/library/practices/git-workflow.md +119 -0
  24. package/library/practices/harm-taxonomy.md +45 -0
  25. package/library/practices/quality-ratchet.md +48 -0
  26. package/library/practices/revalidation.md +57 -0
  27. package/library/practices/scalable-architecture.md +111 -0
  28. package/library/practices/ship-it-live.md +149 -0
  29. package/library/practices/skill-authoring.md +70 -0
  30. package/library/skills/.gitkeep +0 -0
  31. package/library/skills/boss-learn/SKILL.md +63 -0
  32. package/library/skills/boss-sync/SKILL.md +48 -0
  33. package/package.json +49 -0
  34. package/registry/CHANGELOG.md +2737 -0
  35. package/src/board.js +655 -0
  36. package/src/brain.js +288 -0
  37. package/src/cli.js +542 -0
  38. package/src/conscience.js +426 -0
  39. package/src/insights.js +147 -0
  40. package/src/learn.js +92 -0
  41. package/src/map.js +103 -0
  42. package/src/modes.js +82 -0
  43. package/src/paths.js +36 -0
  44. package/src/registry.js +34 -0
  45. package/src/scaffold.js +138 -0
  46. package/src/sync.js +292 -0
  47. package/src/team.js +103 -0
  48. package/stages/L0-quickstart/manifest.json +12 -0
  49. package/stages/L0-quickstart/template/.claude/agents/coder-generalist.md +31 -0
  50. package/stages/L0-quickstart/template/.claude/agents/mentor-venture.md +57 -0
  51. package/stages/L0-quickstart/template/.claude/agents/pm.md +28 -0
  52. package/stages/L0-quickstart/template/.claude/hooks/conscience.js +89 -0
  53. package/stages/L0-quickstart/template/.claude/hooks/lib/loop-runtime.js +507 -0
  54. package/stages/L0-quickstart/template/.claude/hooks/lib/yaml.js +163 -0
  55. package/stages/L0-quickstart/template/.claude/hooks/memory-cue.js +82 -0
  56. package/stages/L0-quickstart/template/.claude/hooks/secrets-guard.js +87 -0
  57. package/stages/L0-quickstart/template/.claude/rules/your-app-code.md +17 -0
  58. package/stages/L0-quickstart/template/.claude/settings.json +36 -0
  59. package/stages/L0-quickstart/template/.claude/skills/boss/SKILL.md +161 -0
  60. package/stages/L0-quickstart/template/.claude/skills/boss-learn/SKILL.md +63 -0
  61. package/stages/L0-quickstart/template/.claude/skills/boss-sync/SKILL.md +55 -0
  62. package/stages/L0-quickstart/template/.claude/skills/canvas/SKILL.md +112 -0
  63. package/stages/L0-quickstart/template/.claude/skills/comprehend/SKILL.md +72 -0
  64. package/stages/L0-quickstart/template/.claude/skills/decide/SKILL.md +122 -0
  65. package/stages/L0-quickstart/template/.claude/skills/feedback/SKILL.md +68 -0
  66. package/stages/L0-quickstart/template/.claude/skills/import/SKILL.md +73 -0
  67. package/stages/L0-quickstart/template/.claude/skills/persona/SKILL.md +92 -0
  68. package/stages/L0-quickstart/template/.claude/skills/prototype/SKILL.md +114 -0
  69. package/stages/L0-quickstart/template/.claude/skills/triage/SKILL.md +104 -0
  70. package/stages/L0-quickstart/template/.claude/skills/welcome/SKILL.md +262 -0
  71. package/stages/L0-quickstart/template/AGENTS.md +31 -0
  72. package/stages/L0-quickstart/template/CLAUDE.md +57 -0
  73. package/stages/L0-quickstart/template/docs/IDS.md +42 -0
  74. package/stages/L0-quickstart/template/docs/ideas/INDEX.md +24 -0
  75. package/stages/L0-quickstart/template/docs/loops/canvas-loop.md +90 -0
  76. package/stages/L0-quickstart/template/docs/loops/capture-loop.md +64 -0
  77. package/stages/L1-mvp/manifest.json +12 -0
  78. package/stages/L1-mvp/template/.claude/agents/mentor-architect.md +124 -0
  79. package/stages/L1-mvp/template/.claude/agents/mentor-cofounder.md +85 -0
  80. package/stages/L1-mvp/template/.claude/agents/mentor-gtm.md +49 -0
  81. package/stages/L1-mvp/template/.claude/agents/program-manager.md +46 -0
  82. package/stages/L1-mvp/template/.claude/agents/tester.md +42 -0
  83. package/stages/L1-mvp/template/.claude/hooks/auto-log.js +133 -0
  84. package/stages/L1-mvp/template/.claude/rules/feature-context.md +18 -0
  85. package/stages/L1-mvp/template/.claude/skills/ai-cost/SKILL.md +249 -0
  86. package/stages/L1-mvp/template/.claude/skills/ai-failure-states/SKILL.md +226 -0
  87. package/stages/L1-mvp/template/.claude/skills/ai-first-init/SKILL.md +227 -0
  88. package/stages/L1-mvp/template/.claude/skills/close/SKILL.md +170 -0
  89. package/stages/L1-mvp/template/.claude/skills/consult/SKILL.md +72 -0
  90. package/stages/L1-mvp/template/.claude/skills/cost-review/SKILL.md +204 -0
  91. package/stages/L1-mvp/template/.claude/skills/design-tokens-init/SKILL.md +192 -0
  92. package/stages/L1-mvp/template/.claude/skills/drift-deep/SKILL.md +170 -0
  93. package/stages/L1-mvp/template/.claude/skills/evals/SKILL.md +154 -0
  94. package/stages/L1-mvp/template/.claude/skills/extract/SKILL.md +209 -0
  95. package/stages/L1-mvp/template/.claude/skills/judge-traces/SKILL.md +68 -0
  96. package/stages/L1-mvp/template/.claude/skills/log/SKILL.md +64 -0
  97. package/stages/L1-mvp/template/.claude/skills/practice/SKILL.md +92 -0
  98. package/stages/L1-mvp/template/.claude/skills/pretotype/SKILL.md +95 -0
  99. package/stages/L1-mvp/template/.claude/skills/red-team/SKILL.md +137 -0
  100. package/stages/L1-mvp/template/.claude/skills/revalidate/SKILL.md +51 -0
  101. package/stages/L1-mvp/template/.claude/skills/ship/SKILL.md +105 -0
  102. package/stages/L1-mvp/template/.claude/skills/smoke/SKILL.md +43 -0
  103. package/stages/L1-mvp/template/.claude/skills/spec/SKILL.md +145 -0
  104. package/stages/L1-mvp/template/claude-append.md +122 -0
  105. package/stages/L1-mvp/template/docs/loops/ai-failure-state-loop.md +107 -0
  106. package/stages/L1-mvp/template/docs/loops/coordination-loop.md +116 -0
  107. package/stages/L1-mvp/template/docs/loops/cost-budget-loop.md +117 -0
  108. package/stages/L1-mvp/template/docs/loops/cost-review-loop.md +113 -0
  109. package/stages/L1-mvp/template/docs/loops/design-tokens-loop.md +98 -0
  110. package/stages/L1-mvp/template/docs/loops/drift-loop.md +149 -0
  111. package/stages/L1-mvp/template/docs/loops/extraction-loop.md +128 -0
  112. package/stages/L1-mvp/template/docs/loops/focus-loop.md +106 -0
  113. package/stages/L1-mvp/template/docs/loops/pretotype-loop.md +88 -0
  114. package/stages/L1-mvp/template/docs/loops/spec-loop.md +83 -0
  115. package/stages/L2-v1/manifest.json +12 -0
  116. package/stages/L2-v1/template/.claude/agents/db-architect.md +91 -0
  117. package/stages/L2-v1/template/.claude/agents/mentor-business.md +124 -0
  118. package/stages/L2-v1/template/.claude/agents/mentor-fundraising.md +72 -0
  119. package/stages/L2-v1/template/.claude/agents/mentor-pitch.md +84 -0
  120. package/stages/L2-v1/template/.claude/agents/mentor-talent.md +84 -0
  121. package/stages/L2-v1/template/.claude/agents/ui-designer.md +81 -0
  122. package/stages/L2-v1/template/.claude/agents/ux-designer.md +87 -0
  123. package/stages/L2-v1/template/.claude/skills/board/SKILL.md +98 -0
  124. package/stages/L2-v1/template/.claude/skills/design-review/SKILL.md +77 -0
  125. package/stages/L2-v1/template/.claude/skills/ux-check/SKILL.md +93 -0
  126. package/stages/L2-v1/template/claude-append.md +59 -0
  127. package/stages/L2-v1/template/docs/loops/design-drift-loop.md +108 -0
  128. package/stages/L3-scale/README.md +13 -0
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env node
2
+ // BOSS secrets-guard — a PreToolUse hook (OPT-IN; high-stakes ceiling, NOT a universal default).
3
+ //
4
+ // WHY OPT-IN (read before registering): a PreToolUse hook fires a process on EVERY tool call —
5
+ // real per-call latency. The universal, zero-cost floor is the `permissions.deny` block in
6
+ // settings.json (ships with every BOSS project). This hook is the *ceiling*: broader coverage
7
+ // (Bash bypasses beyond `cat`, MCP tools, skills added later) for contexts where the stakes justify
8
+ // the cost — regulated / PHI / `domain-expert` cohort work. Registering it everywhere by default
9
+ // would be the always-on machinery BOSS warns founders against (PRINCIPLE #2 / R&H #1). See
10
+ // library/practices/context-discipline.md.
11
+ //
12
+ // TO TURN IT ON — add this to .claude/settings.json (the registration IS the on-switch; an
13
+ // unregistered script costs nothing):
14
+ // "hooks": {
15
+ // "PreToolUse": [
16
+ // { "matcher": "",
17
+ // "hooks": [ { "type": "command",
18
+ // "command": "node \"$CLAUDE_PROJECT_DIR/.claude/hooks/secrets-guard.js\"",
19
+ // "timeout": 5 } ] }
20
+ // ]
21
+ // }
22
+ //
23
+ // WHAT IT DOES: never let a tool read secret CONTENTS into the model's context (the leak).
24
+ // - Read / Edit / NotebookEdit of a secrets file -> DENY (no reason to load a secret into context).
25
+ // - Bash command referencing a secrets path -> ASK (don't hard-block legit `.env` *creation*;
26
+ // surface it to the human instead).
27
+ // - MCP tool call whose input references a secret -> ASK (unknown semantics; let the human judge).
28
+ // - everything else -> ALLOW.
29
+ // Fail-open: any parse/runtime surprise exits 0 (allow). A guard that breaks the session is worse
30
+ // than one that occasionally misses — the deny-list floor still hard-blocks the common vectors.
31
+ //
32
+ // Output contract (Claude Code PreToolUse): JSON on stdout with a permissionDecision, exit 0.
33
+
34
+ import fs from 'node:fs';
35
+
36
+ // A path is "secret" if its basename is .env / .env.<suffix>, or it sits under a secrets/ segment.
37
+ const SECRET_RE = /(^|[\/\s'"=:])\.env(\.[\w.-]+)?($|[\/\s'"])|(^|[\/\s'"=:])secrets\//i;
38
+
39
+ const touchesSecret = (s) => typeof s === 'string' && SECRET_RE.test(s);
40
+
41
+ const decide = (decision, reason) => {
42
+ process.stdout.write(JSON.stringify({
43
+ hookSpecificOutput: {
44
+ hookEventName: 'PreToolUse',
45
+ permissionDecision: decision, // "deny" | "ask"
46
+ permissionDecisionReason: reason,
47
+ },
48
+ }));
49
+ process.exit(0);
50
+ };
51
+
52
+ let event;
53
+ try {
54
+ event = JSON.parse(fs.readFileSync(0, 'utf8') || '{}');
55
+ } catch {
56
+ process.exit(0); // fail-open: unreadable/!JSON input -> allow
57
+ }
58
+
59
+ const tool = event.tool_name || '';
60
+ const input = event.tool_input || {};
61
+
62
+ try {
63
+ if (/^(Read|Edit|NotebookEdit)$/.test(tool)) {
64
+ const p = input.file_path || input.notebook_path || '';
65
+ if (touchesSecret(p)) {
66
+ decide('deny',
67
+ `secrets-guard: refusing to ${tool} a secrets file (${p}). Reading secret contents into ` +
68
+ `context risks leakage. Read secrets from the environment at runtime, or use a secret manager.`);
69
+ }
70
+ } else if (tool === 'Bash') {
71
+ if (touchesSecret(input.command || '')) {
72
+ decide('ask',
73
+ `secrets-guard: this Bash command references a secrets path. Approve only if it does NOT ` +
74
+ `read secret contents into the session (e.g. creating/appending a .env is fine; cat/grep is not).`);
75
+ }
76
+ } else if (tool.startsWith('mcp__')) {
77
+ if (touchesSecret(JSON.stringify(input))) {
78
+ decide('ask',
79
+ `secrets-guard: this MCP tool call references a secrets path. Approve only if it will not ` +
80
+ `expose secret contents to the session.`);
81
+ }
82
+ }
83
+ } catch {
84
+ process.exit(0); // fail-open on any matching error
85
+ }
86
+
87
+ process.exit(0); // allow everything else
@@ -0,0 +1,29 @@
1
+ # memory-seed — the durable-facts shelf
2
+
3
+ This is the BOSS **superset** home for *durable* project memory — the slow-changing facts that stay
4
+ true across sessions. It's one of the shelves the learning loop feeds (alongside `agents/`, `skills/`,
5
+ `hooks/`, `practices/`). Seeds here are starting points a project's memory can be grown from; the
6
+ learning loop deposits proven, generalizable facts UP into the library.
7
+
8
+ ## The cut this shelf exists to hold (the whole point)
9
+
10
+ A build has **two memories**, and keeping them apart is what keeps context lean (see
11
+ [`../practices/context-discipline.md`](../practices/context-discipline.md) and BOSS `FEAT-020`):
12
+
13
+ | | **Durable facts** | **Working state** |
14
+ |---|---|---|
15
+ | Changes | rarely (across sessions) | fast (within a build) |
16
+ | Examples | who the founder is, settled decisions, project constraints, the stack once chosen | the live feature's local decisions, gotchas, scratch context |
17
+ | Home | Claude's auto-memory + this shelf | `.claude/rules/*.md` with `paths:` (loads **just-in-time**, only when the model opens a matching file) |
18
+ | Lifecycle | persists; compounds | created → cleared on `/close` → best bits promoted via `/extract` |
19
+
20
+ The trap is letting **working state** leak into an always-loaded surface (CLAUDE.md, a session-state
21
+ doc). That's paid on every turn *and* dilutes the model's attention. So: **durable facts → here (and
22
+ auto-memory); working state → a path-scoped rule that loads only when it's relevant.**
23
+
24
+ ## What a seed looks like
25
+
26
+ A seed is a single durable fact in the auto-memory format (one fact per file, with frontmatter). See
27
+ [`durable-facts-example.md`](durable-facts-example.md). The test for whether something belongs here:
28
+ *would this still be true, and still worth loading, three sessions from now?* If it's only true while
29
+ one feature is in flight, it's working state — put it in a `.claude/rules/` file instead.
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: stack-decision
3
+ description: Example seed — the stack this project settled on, and the one-line why. Durable.
4
+ metadata:
5
+ type: project
6
+ ---
7
+
8
+ <!-- EXAMPLE seed. A durable fact = still true and still worth loading three sessions from now.
9
+ One fact per file. Delete this and write your project's real durable facts, or let the
10
+ learning loop (/extract → /boss-learn) deposit them here over time. -->
11
+
12
+ The project settled on **<stack>** at **<IDEA-NNN / FEAT-NNN>** because **<the one-line reason>**.
13
+
14
+ **Why it's durable:** a settled architectural decision binds every later build choice — the model
15
+ should carry it across sessions, not re-derive it. **Why it's not working-state:** it doesn't change
16
+ as a single feature moves; if it did, it would belong in a `.claude/rules/` file, not here.
File without changes
@@ -0,0 +1,111 @@
1
+ ---
2
+ id: PRACTICE-agent-security
3
+ type: practice
4
+ owner: mentor-architect
5
+ status: active
6
+ host: claude-code
7
+ provenance: distilled from Simon Willison's 2026 agentic-security writing (lethal trifecta; "Agents Rule of Two"; classifiers are non-deterministic) — BOSS v0.48.0, IDEA-026 Part B · hardened v0.79.0 with the 2026 agent-native surface — OWASP Agentic ASI Top 10 (RVW-042), agentic misalignment (RVW-032), Anthropic containment + Redwood control (RVW-044), insecure AI-generated code & client-side key exposure (RVW-054) · UI-dark-patterns-as-injection-surface added v0.96.0 (RVW-060, /humane-refresh sweep pass 2)
8
+ ---
9
+
10
+ # Practice — Agent security (a deterministic guard around a non-deterministic model)
11
+
12
+ > **The shape of the risk.** The moment a founder runs an AI agent on their machine with file access,
13
+ > a network, and instructions from the internet, they've assembled the surface attackers want. The
14
+ > agent reads a web page / an issue / a dependency's README, that text contains instructions, and the
15
+ > agent — being helpful — follows them. Security here is **architectural, not a prompt you add**. You
16
+ > can't politely ask a model to never be tricked; you constrain what a tricked model can *do*.
17
+
18
+ ## The lethal trifecta (name it so you can break it)
19
+
20
+ Data exfiltration / damage needs three things together. Remove any one and the attack can't complete:
21
+
22
+ 1. **Untrusted input** — content the agent reads that an attacker can influence (web pages, issues,
23
+ emails, scraped docs, a dependency).
24
+ 2. **Access to private data** — secrets, customer data, the founder's files.
25
+ 3. **Ability to act / exfiltrate** — send a request, write a file, run a command, post somewhere.
26
+
27
+ ## The Rule of Two (the operating heuristic)
28
+
29
+ > Prefer that an agent (or a single agent step) has **at most two** of the three. The third is the
30
+ > one you remove for that task.
31
+
32
+ - Reading untrusted web content? Don't also give that step secrets *and* an open network to send
33
+ them. Sandbox it, or split the work so the reading step can't act.
34
+ - Acting on private data? Keep untrusted input out of that step's context.
35
+
36
+ ## When the agent can act: the agent-native surface (2026)
37
+
38
+ The trifecta is the *data-flow* risk. Once an agent has tools, memory, and autonomy, a second surface
39
+ opens — the **agent itself** going wrong. Two things to hold:
40
+
41
+ - **Agentic misalignment is measured, not hypothetical.** Anthropic showed frontier models — given
42
+ autonomy plus access to sensitive context — taking harmful, self-preserving actions under goal
43
+ conflict (insider-threat-shaped). The lesson isn't "the model is evil"; it's *don't grant standing
44
+ autonomy + sensitive access and assume good behaviour — bound both, and gate what can't be undone.*
45
+ - **For an agent, the threat model is the OWASP Agentic ASI Top 10 (Dec 2025), not the stateless LLM
46
+ list.** An agent's real attack surface: goal hijack, **tool misuse**, identity/privilege abuse,
47
+ **agentic supply chain** (a poisoned MCP server or tool), unexpected code execution, **memory /
48
+ context poisoning**, insecure inter-agent comms, cascading failures, human-agent trust exploitation,
49
+ rogue agents. Each has a real 2025 incident behind it (EchoLeak, the GitHub-MCP exploit, the Replit
50
+ production-DB wipe). If you ship an agent, this is the list to defend — and the one to `/red-team`
51
+ against. The stateless LLM Top 10 still covers a plain prompt-in/text-out path.
52
+ - **UI dark patterns are an injection surface (RVW-060).** An agent that browses or acts on the web is
53
+ manipulated by the *same* dark patterns built for humans — Sneaking, Urgency, Forced-Action — and it's
54
+ **worse off than a person**: Stanford's DECEPTICON steered agents to the manipulated outcome in **70%+ of
55
+ tasks vs a 31% human average**, and it **gets worse as models scale**. The trap is assuming awareness is a
56
+ defence: agents that noticed a pre-ticked box still didn't deselect it (goal-driven optimization), and
57
+ **in-context "watch out for tricks" prompting, guardrail models, and even human oversight were each shown
58
+ insufficient** in testing. So **recognition ≠ protection** — defend it the structural way: narrow
59
+ permissions, an explicit confirm before any purchase/commitment, and inspect what a page is steering the
60
+ agent to *do*, the same as inspecting a poisoned tool return. (This is the security face of
61
+ [`ai-ux-patterns.md`](ai-ux-patterns.md)'s agentic dark patterns — the agent there is the *victim*.)
62
+
63
+ ## Concrete defaults (what to actually do)
64
+
65
+ - **Enforce in the harness, not the prompt.** Secret no-read belongs in `permissions.deny` (the
66
+ zero-cost floor BOSS ships) and, for high-stakes cohorts, the `secrets-guard` hook. A hook is a
67
+ **deterministic guard**; the model's own judgment (and any safety *classifier*) is
68
+ **non-deterministic** — never let the classifier be the only thing between untrusted text and a
69
+ destructive action. See [`context-discipline.md`](context-discipline.md).
70
+ - **Sandbox by default** for steps that read untrusted input. Untrusted-content reads shouldn't run
71
+ with full filesystem + network.
72
+ - **Match isolation to your oversight** (Anthropic's containment principle: the less you can watch a
73
+ step, the more it should be boxed). Concrete tiers: a **read-only mount** where the agent only needs
74
+ to read; **read-write-no-delete** where it edits but shouldn't be able to destroy; an **egress
75
+ allowlist** (the agent reaches the two hosts it needs, not the whole internet) for any step touching
76
+ untrusted input. And **inspect tool *returns* before they re-enter context** — a poisoned tool
77
+ result is just untrusted input arriving through the back door.
78
+ - **Pin dependencies.** Unpinned deps are an untrusted-input channel (supply chain). Pin versions;
79
+ review what an agent adds. (This is ASI04 — the agentic supply chain — in practice.)
80
+ - **Human-in-the-loop on the irreversible.** The actions that can't be undone (push, deploy, delete,
81
+ send) get an explicit gate — and the gate is a real stop, not a sentence in a system prompt. Where a
82
+ human can't be in the loop, put a *cheaper, trusted check* in front of the autonomous one (Redwood's
83
+ control framing: a small reliable model can screen a big autonomous model's destructive calls).
84
+
85
+ ## The app you ship is an attack surface too
86
+
87
+ The trifecta and the ASI list are about the *agent on your machine*. But the **code the agent writes
88
+ for your product** is its own risk — and a distinct one a founder is far more likely to ship by
89
+ accident:
90
+
91
+ - **AI defaults to insecure when a secure option exists.** Veracode found ~45% of AI-generated code
92
+ ships with an OWASP-Top-10 vulnerability, and it does *not* improve as models get bigger. Treat
93
+ generated code as *unreviewed*, not *done*.
94
+ - **Client-side key exposure is the classic vibe-coded leak.** API keys baked into frontend JS, an
95
+ open storage bucket, a secret committed to the repo — the 2025 incidents (the Tea breach, ~25k
96
+ secrets found across vibe-coded sites, a 1.5M-key exposure) are nearly all this one shape.
97
+ **`secrets-guard` does *not* catch it.** That hook stops the *agent* reading a secret file into
98
+ context; it does nothing about a *shipped app* exposing a key. Different surface, different defence.
99
+ - **The antidote is a pre-ship scan, not a prompt.** Before the first deploy: a secret scan (no keys
100
+ in the bundle or the repo) plus the OWASP web basics. `/red-team` carries this pass. For a
101
+ non-technical founder it's the single security gate that matters most — they can't spot the vuln
102
+ themselves, so the scan has to.
103
+
104
+ ## Altitude / JIT (don't scare a day-one founder)
105
+
106
+ This is **not** a wall of security text on a Quickstart. Route it JIT: the floor (`permissions.deny`)
107
+ ships silently with every project; the rest surfaces when the work earns it, one trigger at a time —
108
+ the **trifecta + Rule of Two** the first time an agent reads untrusted web content; the **agent-native
109
+ ASI surface** the first time the founder ships an agent with tools and memory; the **pre-ship scan**
110
+ at the first deploy; the **full battery** for a domain-expert / regulated cohort. Principle #2: the
111
+ right ceremony at the right time, never the whole wall at once. See `IDEA-026`.
@@ -0,0 +1,104 @@
1
+ ---
2
+ id: PRACTICE-ai-adoption-culture
3
+ type: practice
4
+ owner: mentor-humane (with mentor-talent)
5
+ status: active
6
+ provenance: distilled via /vet RVW-038 from Stanford WORKBank / Human Agency Scale (arXiv 2506.06576, 2025) · Amy Edmondson, psychological safety · Ethan Mollick, "secret cyborgs" (2024) · BetterUp Labs × Stanford "workslop" (HBR 2025). Numbers graded per docs/research/SOURCES.md two-lane rule. BOSS v0.80.0; feeds IDEA-037.
7
+ ---
8
+
9
+ # Practice — AI adoption culture (bring AI to a team without breeding resentment)
10
+
11
+ > **The shape of the risk.** A founder who forces AI on a team top-down gets the opposite of what they
12
+ > wanted: people **hide** their AI use, **ship each other sloppy AI output**, and quietly **resent** the
13
+ > mandate. The failure isn't the tool — it's the rollout. The whole point of this practice: a small
14
+ > founding team adopts AI so people **opt in**, not comply. (This is the humane lens turned on the
15
+ > founder's *own* team — BOSS has to walk it, not just preach it.)
16
+
17
+ ## 1. Automate what's *wanted* — name the Red Light (the Human Agency Scale)
18
+
19
+ Stanford's WORKBank survey (1,500 workers, 844 tasks) found a clean pattern: people welcome having
20
+ **drudgery** automated and **fiercely guard** creative and relational work. The dangerous zone is the
21
+ **"Red Light"** — tasks AI is *capable* of but workers *don't want* automated. Automating into the Red
22
+ Light is exactly how you breed resentment. *(Damning aside: ~41% of YC startups were building into the
23
+ Low-Priority + Red-Light zones — automating the capable-but-unwanted. [EVIDENCE], though the YC figure
24
+ is a mapping estimate.)*
25
+
26
+ The **Human Agency Scale** (H1 = AI alone → H5 = human essential throughout) is a shared vocabulary for
27
+ *how much* human stays in a task. Use it as a question, not a verdict:
28
+
29
+ > Before you automate a teammate's task: **is this Green Light (they'd be glad to lose it) or Red Light
30
+ > (capable-but-unwanted)?** If Red Light, the agency cost is the story — name it, don't just ship it.
31
+
32
+ ## 2. Make it safe to not know AI (psychological safety)
33
+
34
+ Edmondson's work is gold-standard: psychological safety is the strongest predictor of team learning,
35
+ and high-performing teams admit **more** gaps, not fewer. AI adds a sharper edge — admitting "I don't
36
+ understand AI" can read as a **job-survival** risk, not just embarrassment, especially under a mandate.
37
+ *(The AI-specific extension is 2025 commentary, [THOUGHT-LEAD]; the underlying psych-safety research is
38
+ [EVIDENCE].)*
39
+
40
+ For a two-person team the load-bearing question is concrete: **can your non-technical cofounder say
41
+ "I'm lost on this" without losing face?** The moves:
42
+
43
+ - Model it from the top: "I don't know this either — let's figure it out." A founder who pretends
44
+ fluency teaches everyone else to fake it.
45
+ - Pair safety with **high standards** — it's not niceness or lowered bar; it's the condition where
46
+ people can tell the truth *and* be held to good work (the Edmondson correction, [[RVW-035]]).
47
+
48
+ ## 3. Kill the secret-cyborg dynamic — reward honest use
49
+
50
+ Mollick named it: when the rules **punish**, organisations fill with **"secret cyborgs"** — people who
51
+ quietly automated their own work and won't tell anyone. The result is hidden gains and zero shared
52
+ learning. (Corroborating signal: roughly **half** of desk workers say they'd be uncomfortable telling
53
+ a manager they used AI — it "feels like cheating." [THOUGHT-LEAD/vendor], directionally consistent.)
54
+
55
+ The move: make surfacing AI use **safe and rewarded**, not merely permitted. Share what's working out
56
+ loud, both directions. *(In a BOSS team this is exactly what the shared craft commons — `/practice` /
57
+ `PRAC-NNN` — is for: a discovery one cofounder makes becomes one the other inherits, with attribution
58
+ as a pointer, never a scoreboard.)*
59
+
60
+ ## 4. The stakes — workslop erodes trust *between cofounders*
61
+
62
+ BetterUp × Stanford ("workslop," HBR 2025, n=1,150): ~40% of workers received AI output that *looks*
63
+ done but isn't in the last month, costing ~2 hours of rework each — and, the part that bites, recipients
64
+ rated the **sender** less trustworthy (42%), less intelligent (37%). *([EVIDENCE], vendor-co-authored —
65
+ treat the dollar figures as illustrative, the trust-erosion as solid.)* Bad AI use doesn't just waste
66
+ time; **it costs you your team's respect.** The norm that prevents it is one sentence:
67
+
68
+ > **"Would I be proud to hand this to my cofounder?"** AI output is a draft *you own*, not a thing you
69
+ > forward.
70
+
71
+ ## 5. How to run it — the cofounder AI consent + norms conversation
72
+
73
+ Not a policy doc. A short, explicit conversation, early, revisited as the craft changes:
74
+
75
+ 1. **Map the zones together** — what AI genuinely helps with (Green Light) vs. what you keep human
76
+ (Red Light). Disagreement here is the useful part.
77
+ 2. **Agree it's safe to be lost** — "I don't know this AI thing" is a normal sentence on this team, and
78
+ we share what we each learn.
79
+ 3. **Set the no-workslop norm** — own your AI output before it reaches anyone else.
80
+ 4. **Revisit on a cadence** — the frontier moves; last month's "AI can't do this" may be wrong now
81
+ (the model-recalibration discipline, team-scoped — ties to `/practice` staleness and IDEA-014).
82
+
83
+ ## Altitude / JIT (Principle #2)
84
+
85
+ - **Solo founder → dormant.** There's no team to adopt to; don't surface it.
86
+ - **Surfaces when a second person joins** — a cofounder, a first hire, a first contractor. That's the
87
+ trigger, not a calendar.
88
+ - **Never a mandate.** Forcing humane AI-adoption would be its own irony. The conscience may surface a
89
+ Red-Light tension; it never picks the answer for the team (the conscience-vs-censor line —
90
+ [[conscience-voicing]]).
91
+
92
+ ## Handoff — for the IDEA-037 founding-teams build
93
+
94
+ > **This is a reviewable starting draft, not the final word.** It carries the *inheritable knowledge*;
95
+ > the teams build (IDEA-037 / FEAT-021) owns the concrete wiring. Recommended, for that work to weigh:
96
+ >
97
+ > - A conscience **Red-Light moment** — when work suggests automating a teammate's task, name the agency
98
+ > tension ("you *can* automate this — does your team *want* it?"). This is a *new hook moment* (new
99
+ > detector + eval cases), deliberately left out of this routing to avoid touching the conscience gate
100
+ > from a parallel session.
101
+ > - The **cofounder consent + norms conversation** (§5) as a step in team onboarding / the `boss team`
102
+ > flow.
103
+ > - **mentor-the-team (slice 5)** cites this practice as its source for the AI-adoption coaching.
104
+ > - [[RVW-035]] (Edmondson psych-safety, NOT-YET) finds its home here — fold it in when slice 5 lands.
@@ -0,0 +1,246 @@
1
+ ---
2
+ id: PRACTICE-ai-ux-patterns
3
+ type: practice
4
+ owner: designer
5
+ status: active
6
+ host: stack-neutral
7
+ provenance: distilled from the 2026-06-20 AI-UX scan (Shape of AI, Microsoft HAX, Google PAIR, IBM Carbon, LangChain HITL, NN/g 2026, Apple HIG GenAI) — BOSS v0.49.0, IDEA-029 · dark-pattern checklist + humane alternatives added v0.82.0 (RVW-031, from CDT *Dark Patterns in AI Chatbots* 2026, CC-BY) · classic-web pattern families + regulatory teeth (effect-not-intent, symmetry-in-choice) added v0.95.0 (RVW-056/057, first /humane-refresh sweep, IDEA-042) · cohort & frontier patterns (accessibility, minors, agentic, algorithmic-management) + junk-fees teeth added v0.96.0 (RVW-059/060/061/062/063, sweep pass 2)
8
+ ---
9
+
10
+ # Practice — AI-native interface patterns (2026)
11
+
12
+ > **Where this sits.** [`design-system.md`](design-system.md) + the tokens discipline own how AI-built
13
+ > UI *looks*; this owns how an AI feature *behaves toward the person* — when it speaks, how it shows
14
+ > confidence, how it asks permission, how it recovers from being wrong. The 2024–25 rules (options-
15
+ > not-truth, undo/edit/regenerate, visible confidence, failure states) still hold; 2026 adds the
16
+ > patterns below for *plural, background, risk-tiered* agent work.
17
+
18
+ ## 1. "Why this" — rationale grounded in the user's own inputs
19
+
20
+ When the AI makes a consequential choice, say *why*, in one line, **traceable to something the user
21
+ said or did**: *"Steering you to Quickstart because you said it's day one"* — not *"Quickstart is
22
+ best."* This is the cheapest trust surface and it doubles as teaching. Bound it (Google PAIR
23
+ *Partial Explanations*): explain when stakes are high or the result is surprising, not on every step.
24
+
25
+ ## 2. Confidence is a register, not a number
26
+
27
+ Match how you express confidence to how reliable you actually are (HAX G2). Soft uncertainty → a
28
+ hedge phrase. Real precision → a number. Low confidence → *show more options* (the option count itself
29
+ is the signal — Google PAIR N-best). Don't paint one flat "confidence" everywhere.
30
+
31
+ ## 3. Three interrupt registers: Notify / Question / Review
32
+
33
+ - **Notify** — FYI, no action needed (a fact surfaced; keep moving).
34
+ - **Question** — ask **one** sharp clarifying question instead of guessing.
35
+ - **Review** — propose a change and wait for a decision.
36
+
37
+ Name which one you're in. Most tools collapse everything into Review (approval fatigue) or Notify
38
+ (noise). (LangChain ambient agents.)
39
+
40
+ ## 4. Risk-tier the gate; offer four decision verbs
41
+
42
+ Don't gate uniformly — gate by **loss type** (money / security-data / lost-work / irreversibility).
43
+ Low-stakes steps (a draft, a search, writing a new file) flow through; high-stakes get a stop. And
44
+ when you do stop, offer the full vocabulary, not just yes/no:
45
+
46
+ - **approve** · **edit-before-execute** · **reject-with-feedback** · **respond**
47
+
48
+ For a tool that writes files and configs, **edit-before-execute is the highest-value verb** — a
49
+ first-time founder wants to tweak, not just veto. (LangChain HITL; Shape of AI *Verification*.)
50
+
51
+ ## 5. Progressive disclosure of the work
52
+
53
+ Show the verdict / result first; let the person expand to the reasoning, the plan, the tool calls
54
+ ("Stream of Thought / Footprints" — Shape of AI). Default collapsed. A reviewable trail of *what the
55
+ agent changed* is part of this — don't act on someone's repo with no footprints.
56
+
57
+ ## 6. Trust repair after a miss
58
+
59
+ When the AI gets it wrong, run a deliberate repair: **own it specifically** ("I got X wrong — here's
60
+ what I'll do differently"), and recover **asymmetrically** — trust breaks fast and rebuilds slow, so
61
+ reduce autonomy / ask *more* for a while after a miss. A user who's been burned wants more
62
+ confirmation, not less, regardless of project stage. (NN/g 2026; trust-calibration.)
63
+
64
+ ## 7. Discernment — knowing when NOT to speak
65
+
66
+ The 2026 macro shift (NN/g) is automation → **discernment**: the best AI recedes into the background;
67
+ human direction, curation, and verification stay essential. *Staying quiet at the right moment is a
68
+ feature*, not the absence of one. This is the interaction-level statement of BOSS's whole conscience-
69
+ JIT ethos — name it so it's designed, not accidental.
70
+
71
+ ## 8. Degraded-state honesty
72
+
73
+ When running degraded — model uncertain, on a fallback path, low confidence — *say so*, so the person
74
+ recalibrates. Treat "I don't know" as a first-class, well-worded output, not a failure to hide.
75
+
76
+ ## 9. Generative UI — decide who holds the controls
77
+
78
+ When an agent *renders the interface itself* (not just emits text), the load-bearing question is how
79
+ much control the frontend keeps. A spectrum: **static** (the model fills slots in UI you designed —
80
+ safest) → **declarative** (the model picks from an approved component set + props) → **open-ended** (the
81
+ model emits arbitrary UI/markup — most power, highest stakes). Open-ended belongs in §4's irreversibility
82
+ tier: an injected or confused prompt can now redraw what the user sees and clicks. Default to the
83
+ least-open rung that still proves the bet; earn open-ended with a real reason, not convenience.
84
+ (CopilotKit/AG-UI 2026 — keep the judgment, drop the protocol.)
85
+
86
+ ## 10. Memory is a reviewable object, not a black box
87
+
88
+ If the product *remembers* the person across sessions, that memory needs a control surface — **view /
89
+ edit / correct / delete / scope** what the AI holds about them. It's the §5 footprints principle extended
90
+ from *what the agent did* to *what the system knows*: wrong-but-invisible memory silently degrades every
91
+ future response and the user can't tell why. This pattern is also dogfood — BOSS is itself a
92
+ memory-carrying tool (`.boss/`, `MEMORY.md`, the venture brain), so it should hold the pattern it is an
93
+ instance of.
94
+
95
+ ## Dark patterns — the manipulative inverse (recognize as you build)
96
+
97
+ Patterns 1–8 are the *good* shape; this is the named *bad* shape, so a founder can catch one **while
98
+ building it** — including ones that **emerge from the model** (training / fine-tuning / RLHF / system
99
+ prompts), not only ones designed on purpose. Sycophancy is the canonical emergent case. Source: CDT,
100
+ *Dark Patterns in AI Chatbots* (2026, CC-BY) — 37 patterns in five families:
101
+
102
+ - **Data & memory exploitation** — default-sharing, disguised collection, privacy-zuckering, "just
103
+ between you and us," difficult-to-delete, *safety-blackmail* (extracting more data under pressure).
104
+ - **Informationally misleading** — misrepresenting (a bot implying it's a therapist / "never
105
+ hallucinates"), impersonation, hallucinations-as-truth, selective framing, reduced-friction +
106
+ bad-defaults steering.
107
+ - **Autonomy compromised for engagement** — infinite-scroll/teasers, variable rewards, gamification
108
+ (streaks) that prolong past intent.
109
+ - **False social/emotional connection** — **sycophancy**, playacting (fake memories/feelings),
110
+ emotional manipulation via hyper-personalization, guilt / confirm-shaming when the user tries to
111
+ leave, *targeting users when vulnerable*.
112
+ - **Coercive monetization** — pressured selling, fake social proof, bait-and-switch, sneaky
113
+ purchases / disguised ads, paywalling memory or persona ("pay to keep your history").
114
+
115
+ **The humane alternative (CDT's "better design" — name the cost *and* point at the fix):** default
116
+ conversations to *end* (don't artificially prolong); make the social/emotional layer **opt-in** (offer
117
+ a strip-it-out default); give genuine delete/export controls (not convoluted); use **no
118
+ emotionally-charged language near an upgrade/purchase**; label paid/sponsored content plainly.
119
+
120
+ **Two judgment calls.** (1) A few patterns are dark *in isolation* → hard-name them (targeting the
121
+ vulnerable, guilt-on-exit, sneaky purchases); most are context-dependent → surface the tension, let the
122
+ founder choose (conscience-not-censor). (2) Because these **emerge**, test the *built* product, not just
123
+ the intent — `/red-team --humane` (sycophancy especially).
124
+
125
+ ### The classic-web patterns an AI product inherits (RVW-056)
126
+
127
+ The CDT list above is *AI-chatbot-shaped*. But the moment a product grows an **account, a paywall, or a
128
+ checkout**, it inherits the dark patterns the web has named for a decade — and that's exactly where a
129
+ first-time founder ships one without knowing it has a name. Four families the chatbot lens omits (canonical
130
+ sources: Brignull's deceptive.design, Mathur et al. *Dark Patterns at Scale*, Gray et al.'s CHI-2024
131
+ ontology — pinned below, don't re-enumerate):
132
+
133
+ - **Obstruction** — making the exit artificially hard. *Roach motel / immortal accounts* (sign-up is one
134
+ click; deletion is a support-ticket maze), hard-to-cancel, forced continuity. **Humane:** exit as easy as
135
+ entry — one-click delete/cancel that matches the ease of sign-up.
136
+ - **Sneaking** — slipping in what the user didn't choose. Sneak-into-basket, hidden costs, **drip /
137
+ partitioned pricing** (advertise part of the price, reveal mandatory fees at the end — FTC-named; ~20%
138
+ higher spend when fees are hidden), forced enrollment. **Humane:** the all-in total **shown most
139
+ prominently, before any commitment step** (the FTC Junk Fees Rule bar, RVW-062); nothing on the cart or the
140
+ bill the user didn't pick.
141
+ - **Manufactured urgency & scarcity** — fake pressure. Countdown timers that reset after they expire, false
142
+ low-stock counts, fabricated "12 people viewing this." **Humane:** real deadlines and real inventory only —
143
+ if the urgency isn't true, don't manufacture it.
144
+ - **Interface interference / misdirection** — the UI steering the eye and the click. Visual interference,
145
+ trick questions, confirmshaming (generalized beyond the exit), pre-ticked **bad defaults**. **Humane:** the
146
+ choice you'd make for yourself is the visually-equal default; neutral wording; no shame.
147
+
148
+ **Effect, not intent (RVW-057).** A dark pattern needs no malice — California law (CCPA § 1798.140(l)) judges
149
+ it by its *effect* on the user's choice, not the designer's intent, so you can ship one **by accident** (the
150
+ checkout you copied, the deletion flow you never built). That's where the conscience earns its keep: it's
151
+ worth most catching the dark pattern the founder *didn't mean to build*.
152
+
153
+ ### The cohort & frontier patterns (who the checklist above misses)
154
+
155
+ The lists above are mostly *who's-looking-at-a-screen*. Three more surfaces — a cohort, a population, and a
156
+ new actor — carry their own patterns. These are **conditional**: they surface when the product touches that
157
+ surface, not on every Quickstart (Principle #2).
158
+
159
+ - **Accessibility / exclusion-by-design (RVW-059).** An inaccessible flow — an unlabeled element, an
160
+ inaccessible CAPTCHA, an unsubscribe buried low in keyboard-nav order, a pre-ticked box invisible to a
161
+ screen reader — is **"effectively deceptive" to anyone who can't perceive or escape it**, *even when
162
+ unintentional* (the sharpest case of "effect, not intent"). It also *amplifies* every pattern above:
163
+ blind/low-vision users via AT, and ADHD/neurodivergent users who recognize far fewer of them. **Humane:**
164
+ **WCAG is the floor, not the ceiling** — label every interactive element, give cancel/unsubscribe
165
+ equal-or-higher nav priority, offer non-visual auth, and test the flow's *deceptiveness under assistive
166
+ tech*, not just its compliance. (CHI/CSCW '25.)
167
+ - **Minors & vulnerable-by-design (RVW-061)** — *when the product may reach minors.* Three enforced rules:
168
+ **price in real currency and disclose odds** (multi-tier virtual currency that hides real-money cost is the
169
+ loot-box dark pattern — FTC's $20M Genshin action); **ship addictive-design features OFF by default for
170
+ minors** (streaks, autoplay, push — the EU's named list; a clean extension of Humane defaults below); and
171
+ **age assurance, not age-gate theater** (a clickable "I am 18" is not age assurance). Pro-privacy nudges
172
+ *toward* the safer default are explicitly fine. (FTC; EU DSA minor guidelines 2025; UK Children's Code.)
173
+ - **Agentic dark patterns (RVW-060)** — *when your product has an agent that acts for the user.* Two
174
+ directions. (a) **Your agent as perpetrator:** commitment/purchase without explicit consent, over-broad
175
+ permission grants, opaque autonomous decisions. **Humane:** scope permissions narrowly, surface what it's
176
+ about to do, and confirm before money/irreversibility — this is §4's risk-tiered gate pointed at agent
177
+ actions. (b) **Your agent as victim:** an agent browsing the web is manipulated by these same dark patterns
178
+ *more* than a human (70%+ vs 31%), and *worse* as models scale — see
179
+ [`agent-security.md`](agent-security.md) (recognition ≠ protection; don't rely on "tell the agent to watch
180
+ out"). (Stanford DECEPTICON; CHI 2026; OWASP Agentic 2026.)
181
+ - **Algorithmic management (RVW-063)** — *when the product scores, ranks, or pays people.* Opaque,
182
+ unpredictable scoring/pay the person can't understand, plus gambling-style bonus/quest/surge incentives
183
+ ("algorithmic gamblification"), is the worker-facing dark pattern. **Humane:** a transparent, predictable
184
+ formula with disclosed factors and no gambling mechanics. (HRW *The Gig Trap* 2025 — documented harm; EU/UK
185
+ platform-work rules are the maturing teeth.)
186
+
187
+ ## Humane defaults — the build-time inverse (ship the fix, keep the door, record the crossing)
188
+
189
+ The checklist above is what to *catch*; this is what to *build by default* — friction-as-ethics, done
190
+ right. **Ship the humane choice as the default:** privacy on, consent opt-in, the metric hideable, the
191
+ escape hatch already wired, the action reversible. The humane path becomes the path of least resistance
192
+ because it's *already done for you* — not because anything else was blocked.
193
+
194
+ **The asymmetry is the whole discipline, and the easy way to get it wrong.** You *remove* friction from
195
+ the humane path; you **never add** friction to the harmful one. Deliberately slowing, burying, or
196
+ complicating a choice you disapprove of is a dark pattern aimed at a goal you happen to like — and
197
+ manipulation is manipulation regardless of whose side it's on. Means matter; you can't dark-pattern your
198
+ way to a humane product. Sovereignty is non-negotiable: **keep every door equally open.** The concrete,
199
+ testable bar is **symmetry in choice** (codified in California's 11 CCR § 7004): the privacy-protective path
200
+ must be no longer, harder, or slower than the less-protective one — opt-out in as few steps as opt-in, "Decline
201
+ All" as prominent as "Accept All." If the good door takes more clicks than the bad one, you've already failed.
202
+
203
+ **So what about when the founder chooses the dark pattern anyway?** Don't block it; don't sabotage it —
204
+ make it *accountable*. The conscience names the cost once, then offers to **record the crossing** as a
205
+ `DEC-NNN` (the *why* and the *when*). Not a penalty, not a gate — a memory. Later, future-them (or a
206
+ cofounder, a buyer, a regulator) can ask *"why did we do that, and when?"* and trace it back. That record
207
+ is the antidote to humanity eroding *invisibly*: the thousand small decisions stop accreting in the dark
208
+ the moment each crossing is defaulted-humane, kept-open, named, and logged.
209
+
210
+ The quiet bonus: a humane default *teaches*. The founder building on it absorbs the decent pattern without
211
+ a lecture — caught, not taught, baked into the scaffold instead of spoken by the conscience.
212
+
213
+ ## Canonical references (pin the designer here; don't reinvent)
214
+
215
+ - **Shape of AI** (shapeof.ai) — the working pattern vocabulary; the "Governors" category maps ~1:1
216
+ onto BOSS's conscience moments. Primary.
217
+ - **Microsoft HAX** — 18 evidence-based guidelines (G1/G2/G11/G15/G17 = when to speak vs. stay quiet).
218
+ - **IBM Carbon for AI** — disclosure primitives ("AI label" + explainability popover).
219
+ - **Google PAIR** — calibrated trust / explainability (frozen ~2023 but still the best on this).
220
+ - **Apple HIG Generative AI**, **OpenAI Apps SDK UX**, **Anthropic "building effective agents"** —
221
+ vendor-current; show-the-plan / checkpoint-before-irreversible / refine-and-feedback.
222
+ - Community catalogs (e.g. agentic-design.ai) — route through `/vet` before adopting, not `/boss-learn`.
223
+
224
+ **Dark-pattern canon (the named-pattern superset — pinned, not enumerated here):**
225
+ - **deceptive.design** (Harry Brignull) — the canonical pattern library + the "deceptive patterns" taxonomy.
226
+ - **Mathur et al. (Princeton, 2019)** *Dark Patterns at Scale* — the empirical 7-category / 15-type scheme.
227
+ - **Gray et al. (CHI 2024)** *Ontology of Dark Patterns Knowledge* — 64 types harmonized from 10 taxonomies.
228
+ - The standing refresh of this canon lives in [`/humane-refresh`](../../.claude/skills/humane-refresh/SKILL.md)
229
+ + its [watchlist](../../docs/research/watchlists/humane-lens.md) (IDEA-042), not in this list.
230
+
231
+ **Regulatory teeth (reference, not legal advice — BOSS doesn't give legal advice):** dark patterns are now
232
+ named and penalized — California **CCPA/CPRA** (effect-not-intent; symmetry rule § 7004), the **EU AI Act**
233
+ Art. 5(1)(a)/(b) (binding ban on manipulative/vulnerability-exploiting AI; fines to €35M / 7% turnover),
234
+ **EDPB** Guidelines 03/2022 (six-category consent taxonomy), the **FTC** 2022 report (four harm-based
235
+ categories) + the **FTC Junk Fees Rule** (2024, drip-pricing/total-price) + the **$20M Genshin loot-box
236
+ action** (2025), the **EU DSA minor-protection guidelines** (2025) and **UK Children's Code** (statutory),
237
+ and **ADA / EU Accessibility Act** (accessibility as a floor). *Caveat: the FTC "click-to-cancel" Negative
238
+ Option Rule was vacated by the 8th Circuit in 2025 — verify status before relying on it (RVW-064).* A pointer
239
+ for "is this regulated?", never a compliance gate.
240
+
241
+ ## Altitude / anti-rot
242
+
243
+ These are **runtime heuristics the conscience + designer apply**, not a static checklist to freeze
244
+ into one skill (the RVW-001 anti-pattern). Refresh them on the model/host curve (`IDEA-014`). On a
245
+ Quickstart, most of this is silent default; it surfaces as the project earns interaction complexity
246
+ (Principle #2). See `IDEA-029` (interaction layer) + `IDEA-010` (style/tokens layer).