@thebassclef/lite 1.0.4 → 1.1.1

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 (275) hide show
  1. package/dist/cli.cjs +298 -55
  2. package/dist/cli.js +298 -55
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/lite/.claude/agents/architect.md +70 -0
  7. package/dist/lite/.claude/agents/builder.md +114 -0
  8. package/dist/lite/.claude/agents/designer.md +156 -0
  9. package/dist/lite/.claude/agents/reviewer.md +88 -0
  10. package/dist/lite/.claude/hooks/bassclef-sync.sh +85 -27
  11. package/dist/lite/.claude/hooks/longrun-prep-compounding-axis-check.sh +492 -0
  12. package/dist/lite/.claude/hooks/longrun-prep-render-check.sh +236 -0
  13. package/dist/lite/.claude/hooks/persona-name-scrub-check.sh +105 -0
  14. package/dist/lite/.claude/hooks/skill-step-list-check.sh +171 -0
  15. package/dist/lite/.claude/luminaries/alan-cooper.md +170 -0
  16. package/dist/lite/.claude/luminaries/alistair-cockburn.md +140 -0
  17. package/dist/lite/.claude/luminaries/amazon-pr-faq.md +34 -0
  18. package/dist/lite/.claude/luminaries/andreas-zeller.md +74 -0
  19. package/dist/lite/.claude/luminaries/ash-maurya.md +121 -0
  20. package/dist/lite/.claude/luminaries/bill-buxton.md +210 -0
  21. package/dist/lite/.claude/luminaries/charles-sanders-peirce.md +150 -0
  22. package/dist/lite/.claude/luminaries/david-ogilvy.md +192 -0
  23. package/dist/lite/.claude/luminaries/don-norman.md +173 -0
  24. package/dist/lite/.claude/luminaries/edward-tufte.md +179 -0
  25. package/dist/lite/.claude/luminaries/eric-evans.md +160 -0
  26. package/dist/lite/.claude/luminaries/frederick-brooks.md +50 -0
  27. package/dist/lite/.claude/luminaries/gang-of-four.md +157 -0
  28. package/dist/lite/.claude/luminaries/glenford-myers.md +230 -0
  29. package/dist/lite/.claude/luminaries/hunt-thomas.md +115 -0
  30. package/dist/lite/.claude/luminaries/hyrum-wright.md +94 -0
  31. package/dist/lite/.claude/luminaries/jason-fried-dhh.md +46 -0
  32. package/dist/lite/.claude/luminaries/jesse-james-garrett.md +154 -0
  33. package/dist/lite/.claude/luminaries/john-ousterhout.md +94 -0
  34. package/dist/lite/.claude/luminaries/karl-popper.md +132 -0
  35. package/dist/lite/.claude/luminaries/kent-beck.md +168 -0
  36. package/dist/lite/.claude/luminaries/linus-torvalds.md +218 -0
  37. package/dist/lite/.claude/luminaries/martin-fowler.md +164 -0
  38. package/dist/lite/.claude/luminaries/michael-feathers.md +125 -0
  39. package/dist/lite/.claude/luminaries/michael-nygard.md +118 -0
  40. package/dist/lite/.claude/luminaries/robert-c-martin.md +164 -0
  41. package/dist/lite/.claude/luminaries/saltzer-schroeder.md +194 -0
  42. package/dist/lite/.claude/luminaries/sophia-prater.md +193 -0
  43. package/dist/lite/.claude/luminaries/stephen-toulmin.md +131 -0
  44. package/dist/lite/.claude/luminaries/tony-hoare.md +170 -0
  45. package/dist/lite/.claude/luminaries/vaughn-vernon.md +50 -0
  46. package/dist/lite/.claude/luminaries/w-edwards-deming.md +158 -0
  47. package/dist/lite/.claude/rules/accessor-library-discipline.md +110 -0
  48. package/dist/lite/.claude/rules/adr-discipline.md +96 -0
  49. package/dist/lite/.claude/rules/api-conventions.md +115 -0
  50. package/dist/lite/.claude/rules/artifact-ingestion.md +137 -0
  51. package/dist/lite/.claude/rules/assert-only-after-verify.md +111 -0
  52. package/dist/lite/.claude/rules/blocked-items.md +139 -0
  53. package/dist/lite/.claude/rules/bootstrap-pair-discipline.md +106 -0
  54. package/dist/lite/.claude/rules/branching.md +28 -0
  55. package/dist/lite/.claude/rules/cold-adopter-harness-discipline.md +93 -0
  56. package/dist/lite/.claude/rules/commit-conventions.md +22 -0
  57. package/dist/lite/.claude/rules/compounding-axis-fresh-analysis.md +173 -0
  58. package/dist/lite/.claude/rules/compounding-sequence-fresh-analysis.md +173 -0
  59. package/dist/lite/.claude/rules/context-engineering.md +155 -0
  60. package/dist/lite/.claude/rules/context-management.md +85 -0
  61. package/dist/lite/.claude/rules/defensive-bash.md +52 -0
  62. package/dist/lite/.claude/rules/deferred-actions.md +233 -0
  63. package/dist/lite/.claude/rules/destructive-operations.md +69 -0
  64. package/dist/lite/.claude/rules/diagnosis.md +38 -0
  65. package/dist/lite/.claude/rules/github-issue-flash-tweet.md +114 -0
  66. package/dist/lite/.claude/rules/guardrails.md +73 -0
  67. package/dist/lite/.claude/rules/hook-wire-on-author.md +77 -0
  68. package/dist/lite/.claude/rules/identifier-leak-prevention.md +73 -0
  69. package/dist/lite/.claude/rules/iteration-bet-brief-completeness.md +43 -0
  70. package/dist/lite/.claude/rules/lite-manifest-schema-change-discipline.md +79 -0
  71. package/dist/lite/.claude/rules/longrun-prep-plan-doc-compression.md +77 -0
  72. package/dist/lite/.claude/rules/loop-discipline.md +71 -0
  73. package/dist/lite/.claude/rules/manual-prod-approval.md +100 -0
  74. package/dist/lite/.claude/rules/marker-enrichment-discipline.md +72 -0
  75. package/dist/lite/.claude/rules/mobile-ephemeral-session.md +109 -0
  76. package/dist/lite/.claude/rules/new-dependency-check.md +44 -0
  77. package/dist/lite/.claude/rules/oo-ad-entry-point.md +95 -0
  78. package/dist/lite/.claude/rules/operator-facing-prose.md +177 -0
  79. package/dist/lite/.claude/rules/option-label-discipline.md +82 -0
  80. package/dist/lite/.claude/rules/pattern-annotation.md +83 -0
  81. package/dist/lite/.claude/rules/persona-name-leak-scrub.md +90 -0
  82. package/dist/lite/.claude/rules/plain-english-discipline.md +132 -0
  83. package/dist/lite/.claude/rules/plan-enumeration-needs-value-props.md +177 -0
  84. package/dist/lite/.claude/rules/pr-body-shape.md +195 -0
  85. package/dist/lite/.claude/rules/pr-strategy.md +142 -0
  86. package/dist/lite/.claude/rules/pr-title-shape.md +90 -0
  87. package/dist/lite/.claude/rules/prototype-workflow.md +53 -0
  88. package/dist/lite/.claude/rules/reserved-skill-names.md +103 -0
  89. package/dist/lite/.claude/rules/schema-management.md +42 -0
  90. package/dist/lite/.claude/rules/sdlc-gates.md +149 -0
  91. package/dist/lite/.claude/rules/security.md +37 -0
  92. package/dist/lite/.claude/rules/session-artifacts.md +236 -0
  93. package/dist/lite/.claude/rules/skill-composition-declarations.md +105 -0
  94. package/dist/lite/.claude/rules/skill-description-clarity.md +196 -0
  95. package/dist/lite/.claude/rules/skill-procedure-step-list.md +119 -0
  96. package/dist/lite/.claude/rules/sprint-prep-preset-picker.md +76 -0
  97. package/dist/lite/.claude/rules/state-schema-validation.md +156 -0
  98. package/dist/lite/.claude/rules/stuck-signal-diagnostic.md +111 -0
  99. package/dist/lite/.claude/rules/substrate-config-schema.md +85 -0
  100. package/dist/lite/.claude/rules/test-list-discipline.md +129 -0
  101. package/dist/lite/.claude/rules/test-sufficiency.md +186 -0
  102. package/dist/lite/.claude/rules/testing-tier-config.md +125 -0
  103. package/dist/lite/.claude/rules/testing.md +38 -0
  104. package/dist/lite/.claude/rules/turn-estimate-grounding.md +82 -0
  105. package/dist/lite/.claude/rules/visual-hierarchy.md +427 -0
  106. package/dist/lite/.claude/rules/we-dont-break-adopters.md +103 -0
  107. package/dist/lite/.claude/rules/whereami-load-bearing.md +184 -0
  108. package/dist/lite/.claude/rules/writing-craft-discipline.md +72 -0
  109. package/dist/lite/.claude/rules/wu-sequencing-compounds.md +119 -0
  110. package/dist/lite/.claude/skills/build/SKILL.md +640 -0
  111. package/dist/lite/.claude/skills/chronicle/SKILL.md +55 -0
  112. package/dist/lite/.claude/skills/clean-artifacts/SKILL.md +249 -0
  113. package/dist/lite/.claude/skills/decompose/SKILL.md +280 -0
  114. package/dist/lite/.claude/skills/diagnose/SKILL.md +297 -0
  115. package/dist/lite/.claude/skills/feynman/SKILL.md +90 -0
  116. package/dist/lite/.claude/skills/howdoi/SKILL.md +105 -0
  117. package/dist/lite/.claude/skills/ia-model/SKILL.md +108 -0
  118. package/dist/lite/.claude/skills/interaction-design/SKILL.md +112 -0
  119. package/dist/lite/.claude/skills/interpret-input/SKILL.md +180 -0
  120. package/dist/lite/.claude/skills/journal/SKILL.md +209 -0
  121. package/dist/lite/.claude/skills/kiss/SKILL.md +449 -0
  122. package/dist/lite/.claude/skills/launch/SKILL.md +915 -0
  123. package/dist/lite/.claude/skills/lean-canvas/SKILL.md +332 -0
  124. package/dist/lite/.claude/skills/longrun/SKILL.md +512 -0
  125. package/dist/lite/.claude/skills/luminary/SKILL.md +481 -0
  126. package/dist/lite/.claude/skills/ogilvy-writing-audit/SKILL.md +177 -0
  127. package/dist/lite/.claude/skills/onboard-repo/SKILL.md +1640 -0
  128. package/dist/lite/.claude/skills/pattern-review/SKILL.md +99 -0
  129. package/dist/lite/.claude/skills/personas/SKILL.md +207 -0
  130. package/dist/lite/.claude/skills/promote/SKILL.md +283 -0
  131. package/dist/lite/.claude/skills/requirement/SKILL.md +98 -0
  132. package/dist/lite/.claude/skills/retro/SKILL.md +117 -0
  133. package/dist/lite/.claude/skills/riff/SKILL.md +114 -0
  134. package/dist/lite/.claude/skills/roadmap-reconcile/SKILL.md +163 -0
  135. package/dist/lite/.claude/skills/session-end/SKILL.md +309 -0
  136. package/dist/lite/.claude/skills/session-log/SKILL.md +299 -0
  137. package/dist/lite/.claude/skills/skills/SKILL.md +228 -0
  138. package/dist/lite/.claude/skills/spec/SKILL.md +105 -0
  139. package/dist/lite/.claude/skills/sprint/SKILL.md +418 -0
  140. package/dist/lite/.claude/skills/stage/SKILL.md +384 -0
  141. package/dist/lite/.claude/skills/state-a-problem/SKILL.md +185 -0
  142. package/dist/lite/.claude/skills/temperance/SKILL.md +108 -0
  143. package/dist/lite/.claude/skills/use-case/SKILL.md +417 -0
  144. package/dist/lite/.claude/skills/user-stories/SKILL.md +268 -0
  145. package/dist/lite/.claude/skills/value-prop/SKILL.md +251 -0
  146. package/dist/lite/.claude/skills/verify/SKILL.md +160 -0
  147. package/dist/lite/.claude/skills/visual-review/SKILL.md +503 -0
  148. package/dist/lite/.claude/skills/whats-the-plan/SKILL.md +202 -0
  149. package/dist/lite/.claude/skills/whereami/SKILL.md +307 -0
  150. package/dist/lite/AGENTS.md +79 -0
  151. package/dist/lite/CLAUDE-lite.md +85 -0
  152. package/dist/lite/CODE_OF_CONDUCT.md +28 -0
  153. package/dist/lite/CONTRIBUTING.md +177 -0
  154. package/dist/lite/README.md +173 -0
  155. package/dist/lite/SECURITY.md +19 -0
  156. package/dist/lite/architecture/decisions/ADR-029-release-pipeline.md +79 -0
  157. package/dist/lite/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +139 -0
  158. package/dist/lite/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +192 -0
  159. package/dist/lite/architecture/decisions/ADR-039-release-tagging-scheme.md +145 -0
  160. package/dist/lite/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +155 -0
  161. package/dist/lite/architecture/decisions/ADR-044-unified-skill-body-template.md +162 -0
  162. package/dist/lite/lib/clean-artifacts-sweep.sh +112 -0
  163. package/dist/lite/lib/code-comment-discipline.sh +144 -0
  164. package/dist/lite/lib/composer-preflight.sh +459 -0
  165. package/dist/lite/lib/deferred-actions.sh +146 -0
  166. package/dist/lite/lib/hook-header-parser.sh +61 -0
  167. package/dist/lite/lib/hook-heartbeat.sh +152 -0
  168. package/dist/lite/lib/hook-inject.sh +255 -0
  169. package/dist/lite/lib/hook-installer.sh +195 -0
  170. package/dist/lite/lib/luminary-pick.sh +96 -0
  171. package/dist/lite/lib/output-discipline.sh +143 -0
  172. package/dist/lite/lib/prose-scan-boundary.sh +171 -0
  173. package/dist/lite/lib/rewrite-check.sh +214 -0
  174. package/dist/lite/lib/session-rescue.sh +151 -0
  175. package/dist/lite/lib/source-graph-walker.sh +277 -0
  176. package/dist/lite/lib/state.sh +1372 -0
  177. package/dist/lite/lib/telemetry.sh +205 -0
  178. package/dist/lite/lib/tier-check.sh +187 -0
  179. package/dist/lite/lib/tier-dependency-audit.sh +1088 -0
  180. package/dist/lite/presence/install/bassclef-hook-connect.sh +178 -0
  181. package/dist/lite/presence/install/bassclef-sync.dispatcher.template.sh +841 -0
  182. package/dist/lite/presence/install/bassclef-sync.template.sh +2278 -0
  183. package/dist/lite/presence/install/schedule-auto-save.cron.sh +88 -0
  184. package/dist/lite/presence/install/schedule-auto-save.taskscheduler.md +122 -0
  185. package/dist/lite/scripts/aggregate-telemetry.sh +217 -0
  186. package/dist/lite/scripts/analyze-tier-dependencies.sh +239 -0
  187. package/dist/lite/scripts/generate-lite-manifest.sh +505 -0
  188. package/dist/lite/scripts/generate-tier-manifest.sh +28 -0
  189. package/dist/lite/scripts/intent-drift-check.sh +456 -0
  190. package/dist/lite/scripts/lite-manifest-drift-check.sh +146 -0
  191. package/dist/lite/scripts/render-lite-manifest-doc.sh +150 -0
  192. package/dist/lite/standards/adr-template.md +86 -0
  193. package/dist/lite/standards/api-conventions/nextjs.md +84 -0
  194. package/dist/lite/standards/artifact-composition.md +209 -0
  195. package/dist/lite/standards/bash-hook-safety.md +246 -0
  196. package/dist/lite/standards/bassclef-configs-schema.md +232 -0
  197. package/dist/lite/standards/bassclef-evolution.md +143 -0
  198. package/dist/lite/standards/bassclef-internal-jargon.md +244 -0
  199. package/dist/lite/standards/bassclef-managed-sentinel.md +96 -0
  200. package/dist/lite/standards/bassclef-source-config.md +228 -0
  201. package/dist/lite/standards/branch-stacking.md +408 -0
  202. package/dist/lite/standards/code-safety-principles.md +176 -0
  203. package/dist/lite/standards/composer-prerequisites.md +155 -0
  204. package/dist/lite/standards/deferred-actions-schema.md +204 -0
  205. package/dist/lite/standards/dependency-discipline/cargo.md +39 -0
  206. package/dist/lite/standards/dependency-discipline/gem.md +43 -0
  207. package/dist/lite/standards/dependency-discipline/go-mod.md +41 -0
  208. package/dist/lite/standards/dependency-discipline/npm.md +42 -0
  209. package/dist/lite/standards/dependency-discipline/pip.md +42 -0
  210. package/dist/lite/standards/deployment-topology/ec2-tailscale.md +225 -0
  211. package/dist/lite/standards/deployment-topology.md +69 -0
  212. package/dist/lite/standards/docs-sync-allowlist.md +76 -0
  213. package/dist/lite/standards/domain-and-dns.md +145 -0
  214. package/dist/lite/standards/frontend-stack.md +67 -0
  215. package/dist/lite/standards/frontmatter-schema.md +154 -0
  216. package/dist/lite/standards/graceful-exit.md +227 -0
  217. package/dist/lite/standards/hook-idempotency.md +102 -0
  218. package/dist/lite/standards/hook-injection-discipline.md +202 -0
  219. package/dist/lite/standards/hook-install-class.md +215 -0
  220. package/dist/lite/standards/input-handler-interface.md +152 -0
  221. package/dist/lite/standards/lite-manifest-schema-changes.md +180 -0
  222. package/dist/lite/standards/lite-manifest.json +2797 -0
  223. package/dist/lite/standards/luminary-matching.md +105 -0
  224. package/dist/lite/standards/luminary-problem-patterns.md +481 -0
  225. package/dist/lite/standards/migration-discipline/active-record.md +50 -0
  226. package/dist/lite/standards/migration-discipline/alembic.md +43 -0
  227. package/dist/lite/standards/migration-discipline/gorm.md +50 -0
  228. package/dist/lite/standards/migration-discipline/prisma.md +53 -0
  229. package/dist/lite/standards/migration-discipline/sqlalchemy.md +51 -0
  230. package/dist/lite/standards/mobile-ephemeral-session.md +167 -0
  231. package/dist/lite/standards/model-routing-discipline.md +160 -0
  232. package/dist/lite/standards/ogilvy-writing-rules.md +225 -0
  233. package/dist/lite/standards/opener-discipline.md +96 -0
  234. package/dist/lite/standards/operator-facing-prose-discipline.md +201 -0
  235. package/dist/lite/standards/persona-schema.md +229 -0
  236. package/dist/lite/standards/pluggable-luminaries.md +323 -0
  237. package/dist/lite/standards/pr-body-discipline.md +115 -0
  238. package/dist/lite/standards/preview-state-schema.md +189 -0
  239. package/dist/lite/standards/project-directory-layout.md +276 -0
  240. package/dist/lite/standards/release-tagging.md +137 -0
  241. package/dist/lite/standards/reserved-skill-names.md +120 -0
  242. package/dist/lite/standards/scannable-multi-option-output.md +265 -0
  243. package/dist/lite/standards/sdlc-compliance.md +286 -0
  244. package/dist/lite/standards/sdlc-gates/typescript.md +57 -0
  245. package/dist/lite/standards/secrets-lifecycle.md +210 -0
  246. package/dist/lite/standards/security-scanner-adapter.md +145 -0
  247. package/dist/lite/standards/session-board.md +256 -0
  248. package/dist/lite/standards/skill-output-discipline.md +121 -0
  249. package/dist/lite/standards/state-spine-contract.md +255 -0
  250. package/dist/lite/standards/state-spine.md +511 -0
  251. package/dist/lite/standards/steering-hints/kiss-words.md +11 -0
  252. package/dist/lite/standards/substrate-config-schema.md +267 -0
  253. package/dist/lite/standards/tech-stack-config.md +109 -0
  254. package/dist/lite/standards/tier-dependency-analysis.md +167 -0
  255. package/dist/lite/standards/tier-runtime-deps/lite.md +57 -0
  256. package/dist/lite/standards/tier-tag-schema.md +155 -0
  257. package/dist/lite/standards/two-layer-config.md +99 -0
  258. package/dist/lite/standards/use-case-format.md +292 -0
  259. package/dist/lite/standards/user-story-invest.md +268 -0
  260. package/dist/lite/standards/velocity-and-appetite.md +229 -0
  261. package/dist/lite/standards/voice-input-pattern.md +119 -0
  262. package/dist/lite/standards/whereami-schema.md +301 -0
  263. package/dist/lite/standards/worktree-management.md +211 -0
  264. package/dist/lite/standards/writing-guide.md +213 -0
  265. package/dist/lite/templates/chronicle-template.md +75 -0
  266. package/dist/lite/templates/deferred-action-template.md +45 -0
  267. package/dist/lite/templates/memory-proposal-template.md +77 -0
  268. package/dist/lite/templates/persona-template.md +200 -0
  269. package/dist/lite/templates/pr-faq.md +45 -0
  270. package/dist/lite/templates/secret-rotation-template.md +162 -0
  271. package/dist/lite/templates/spec-template.md +131 -0
  272. package/dist/lite/templates/use-case-template.md +194 -0
  273. package/dist/lite/templates/user-story-template.md +107 -0
  274. package/dist/lite/templates/whereami-template.md +101 -0
  275. package/package.json +12 -5
@@ -0,0 +1,150 @@
1
+ ---
2
+ tier: lite
3
+ name: Charles Sanders Peirce
4
+ slug: charles-sanders-peirce
5
+ claimed_by: [architect, reviewer, closer]
6
+ referenced_by_skills: [diagnose, architect-review, promote, state-a-problem]
7
+ primary_domain: philosophy
8
+ depth: full
9
+ sources:
10
+ - type: paper
11
+ title: "Deduction, Induction, and Hypothesis"
12
+ authors: ["Charles Sanders Peirce"]
13
+ year: 1878
14
+ url: "https://en.wikisource.org/wiki/Popular_Science_Monthly/Volume_13/August_1878/Illustrations_of_the_Logic_of_Science_VI"
15
+ methodology_covered:
16
+ - "Three modes of reasoning — deduction, induction, abduction"
17
+ - "Abduction as inference to the best explanation"
18
+ - "The role of hypothesis in scientific reasoning"
19
+ - type: paper
20
+ title: "How to Make Our Ideas Clear"
21
+ authors: ["Charles Sanders Peirce"]
22
+ year: 1878
23
+ url: "https://en.wikisource.org/wiki/Popular_Science_Monthly/Volume_12/January_1878/Illustrations_of_the_Logic_of_Science_II"
24
+ methodology_covered:
25
+ - "The pragmatic maxim — meaning is the practical consequences of belief"
26
+ - "Clarity through operational testing, not verbal definition"
27
+ - "Truth as the limit of inquiry over indefinite time"
28
+ - type: book
29
+ title: "Collected Papers of Charles Sanders Peirce (8 volumes)"
30
+ authors: ["Charles Sanders Peirce", "Charles Hartshorne (editor)", "Paul Weiss (editor)"]
31
+ year: 1931
32
+ original_year: 1866
33
+ url: "https://www.hup.harvard.edu/catalog.php?isbn=9780674138001"
34
+ isbn: "9780674138001"
35
+ methodology_covered:
36
+ - "Semiotics — the theory of signs and their interpretation"
37
+ - "Pragmatism as a philosophical method"
38
+ - "Logic of inquiry across science, ethics, aesthetics"
39
+ verification_status: verified
40
+ description: "\"Keep inquiry open.\""
41
+ ---
42
+
43
+ # Charles Sanders Peirce
44
+
45
+ ## Signature
46
+
47
+ *"Keep inquiry open."*
48
+
49
+ American philosopher, logician, mathematician (1839-1914). Founder of pragmatism. Coined the term **abduction** — the mode of reasoning that names multiple hypotheses fitting the same evidence and then works to discriminate between them. The bassclef voice on alternative-consideration, root-cause diagnosis, and the discipline that one explanation for the data is rarely enough evidence.
50
+
51
+ ## Core methods
52
+
53
+ - **Three modes of reasoning** — deduction (from rule + case to result), induction (from case + result to rule), and abduction (from result + rule to case). Only abduction generates new hypotheses. The others test what abduction proposes.
54
+
55
+ INSTEAD of running deduction alone: fire abduction first to generate the candidate set, then use deduction and induction to test each candidate.
56
+
57
+ - **Abduction as inference to the best explanation** — when a surprising fact is observed, the abductive move is to ask "what would need to be true for this to be unsurprising?" Multiple candidates always fit.
58
+
59
+ INSTEAD of picking the first fit: name the candidates. Read source to discriminate.
60
+
61
+ - **The pragmatic maxim** — the meaning of any belief is the practical consequences that follow if the belief were true. Beliefs whose truth or falsity make no operational difference are noise.
62
+
63
+ INSTEAD of arguing about beliefs that make no operational difference: reroute to a claim that has practical consequences the reader can test.
64
+
65
+ - **Keep inquiry open** — the cardinal discipline in Peirce's epistemology. Any move that closes off alternative explanations before they have been tested is an inquiry-blocker. Confirmation bias is inquiry-blocking; committing to the first fit is inquiry-blocking.
66
+
67
+ INSTEAD of committing to the first fit: state the candidates, state the discrimination test, run the test.
68
+
69
+ - **Truth as the long run** — truth is the limit of what inquiry would arrive at given indefinite time and effort. Individual claims are provisional; the community and the method carry the discipline.
70
+
71
+ ## When to channel this luminary
72
+
73
+ When the primary risk is confirmation bias — committing to the first explanation that fits the data without considering alternatives. Peirce dominates for root-cause diagnosis, cure surface selection, audit method design, and any moment the agent surfaces "the cause is X" or "the cure is Y." Pair with Popper (Popper says which candidate survives severe testing; Peirce says name the candidates first) and Toulmin (Toulmin gives the argument shape; Peirce insists the claim cell name alternatives before committing).
74
+
75
+ Pass-through cases (Peirce adds no value):
76
+
77
+ - Single-choice technical decisions where only one option is technically feasible. INSTEAD of enumerating alternatives: preserve the one feasible option; abduction over a set of one is trivial.
78
+ - Operator preference calls. INSTEAD of enumerating alternatives: honor the preference; the operator has already made the discrimination.
79
+ - Trivial fixes where the failure message states the cause. INSTEAD of enumerating alternatives: preserve the stated cause; the compiler or test framework has already named the class.
80
+
81
+ ## Stack translation
82
+
83
+ In bassclef substrate work:
84
+
85
+ - **`/diagnose` root cause** → name 2-3 hypotheses that fit the repro. For each, name what would discriminate. Read source. Commit only to the one that survives.
86
+ - **Cure surface selection** → the operator says "the class is R8." Peirce asks: what other classes could the same instances belong to? Confirmation bias would pick R8 because it is named; Peirce checks the alternatives before committing.
87
+ - **Audit method** — the audit surfaces findings. Peirce asks: does the method's lens set exclude explanations by construction? A comprehension-side-only audit misses mechanism-fidelity findings because it lacks the lens. Naming the excluded class is Peirce's contribution.
88
+ - **Ticket filing** — when filing a substrate-defect ticket, Peirce asks: what other tickets already name this class? Confirmation bias files a duplicate; Peirce reads the umbrella first.
89
+ - **PR review** → for every "the cause is X" claim in the PR body, ask "what other causes would fit the same observation?" A PR that names only its own cause has skipped Peirce's discipline.
90
+
91
+ ## Anti-patterns it prevents
92
+
93
+ - **One explanation without alternatives** — "The bug is caused by Y." Might be. Might be Z. Might be W. Naming three and picking one is the discipline.
94
+
95
+ INSTEAD: name 2-3 hypotheses that fit the same data. State the discrimination test. Run it.
96
+
97
+ - **First-fit commitment** — the first hypothesis that fits gets the fix.
98
+
99
+ INSTEAD: test the second and third before shipping. The first fit is a candidate, not a conclusion.
100
+
101
+ - **Blocked inquiry** — closing off an alternative because it is inconvenient, unfashionable, or would require re-reading source the agent has already skimmed.
102
+
103
+ INSTEAD: read the source again. Blocking inquiry is the cardinal sin in Peirce's frame.
104
+
105
+ - **Inquiry theater** — naming three alternatives but designing the discrimination test to favor the preferred candidate.
106
+
107
+ INSTEAD: design the severe test (per Popper) and apply it to each alternative in turn.
108
+
109
+ - **Meaningless distinctions** — arguing about beliefs that make no operational difference.
110
+
111
+ INSTEAD: apply the pragmatic maxim; if the belief has no practical consequence, reroute to a claim that does.
112
+
113
+ ## Worked example
114
+
115
+ For a diagnostic surfaced during `/diagnose`:
116
+
117
+ Peirce's shape:
118
+
119
+ - **Surprising fact**: The kiss hook silent-fails under operator install.
120
+ - **Candidate hypotheses**:
121
+ 1. **H1**: The hook's path resolution uses SCRIPT_DIR/../../ which breaks under operator install layout.
122
+ 2. **H2**: The hook is missing from operator's `~/.claude/settings.json` UserPromptSubmit matcher.
123
+ 3. **H3**: The hook's install-class declaration is `project`, so it does not distribute to operator install.
124
+ - **Discrimination**:
125
+ - Test H1: check the SCRIPT_DIR path under operator layout. Result: SCRIPT_DIR resolves; standards/ does not exist at ../../standards. H1 partially confirmed.
126
+ - Test H2: read `~/.claude/settings.json`. Result: hook IS wired. H2 falsified.
127
+ - Test H3: read hook header. Result: install-class: dual. H3 falsified.
128
+ - **Conclusion**: H1 survives. Cure: use `resolve_standards_path` from `lib/hook-inject.sh` instead of SCRIPT_DIR/../../.
129
+ - **Inquiry open**: H2 and H3 were tested even though H1 was the first fit.
130
+
131
+ Without Peirce the diagnosis would read "the hook path is broken; fix the path." First-fit; the actual class (dual-install path resolution) stays hidden; the cure ships without the shared lib the class needs. INSTEAD: name three candidates, discriminate, ship the cure that survives.
132
+
133
+ ## Sources
134
+
135
+ - "Deduction, Induction, and Hypothesis" — Peirce, *Popular Science Monthly* Volume 13 (August 1878)
136
+ - "How to Make Our Ideas Clear" — Peirce, *Popular Science Monthly* Volume 12 (January 1878)
137
+ - *Collected Papers of Charles Sanders Peirce* — Hartshorne + Weiss (eds.), Harvard University Press (1931-1935, 8 volumes)
138
+ - *The Essential Peirce: Selected Philosophical Writings* — Nathan Houser + Christian Kloesel (eds.), Indiana University Press (Volume 1: 1867-1893; Volume 2: 1893-1913)
139
+ - Stanford Encyclopedia of Philosophy: entry on Peirce — plato.stanford.edu/entries/peirce/
140
+ - Stanford Encyclopedia of Philosophy: entry on abduction — plato.stanford.edu/entries/abduction/
141
+
142
+ ## Related luminaries
143
+
144
+ - **Stephen Toulmin** — Toulmin's claim cell holds one claim; Peirce insists the claim be selected from a named set of alternatives. Toulmin plus Peirce is the well-shaped argument. Both ship in bet 2026-07-01b WU-2.
145
+ - **Karl Popper** — Popper says test each hypothesis severely; Peirce says name the hypotheses to be tested. Without Peirce, Popper has nothing to falsify. Without Popper, Peirce's alternatives stay untested. Both ship in bet 2026-07-01b WU-2.
146
+ - **Kaoru Ishikawa** — Ishikawa's fishbone diagram is Peirce's abduction with a shape. The six bones (Method, Machine, Material, Man, Measurement, Environment) prompt the agent to name candidates for each root-cause dimension before committing.
147
+ - **Michael Feathers** — Feathers's characterization tests discriminate between hypotheses at the code layer. Peirce insists we name three; Feathers writes tests that show which one is right.
148
+ - **W. Edwards Deming** — Deming's Act phase asks whether the intervention actually removed the defect; if not, the wrong hypothesis was the root cause. Peirce's abduction produces the candidates Deming's Act discriminates between.
149
+
150
+ Anchors `.claude/rules/assert-only-after-verify.md` alongside Toulmin + Popper. Primary luminary for `/diagnose` skill in candidate-hypothesis enumeration.
@@ -0,0 +1,192 @@
1
+ ---
2
+ tier: lite
3
+ name: David Ogilvy
4
+ slug: david-ogilvy
5
+ claimed_by: [designer, product-manager, creative-director, reviewer]
6
+ referenced_by_skills: [ogilvy-writing-audit, kiss, journal, session-log]
7
+ primary_domain: writing
8
+ depth: full
9
+ solves_problems_brownfield:
10
+ - "Prose reads dense or bureaucratic; readers bounce"
11
+ - "Memo asks for action but the ask is unclear"
12
+ - "Numbers and facts are dropped into the text without saying why they matter"
13
+ - "Bad news is buried in softening language; the reader has to decode"
14
+ - "Sentences run so long the reader loses the thread"
15
+ solves_problems_greenfield:
16
+ - "Setting the writing voice for a new product surface"
17
+ - "Establishing a house style for chronicles, journal entries, or PR bodies"
18
+ - "Onboarding new writers to a plain-language discipline"
19
+ - "Drafting the first version of an ad, memo, or landing page"
20
+ anti_patterns:
21
+ - "Corporate throat-clearing openers — 'Please be advised that,' 'It has come to my attention'"
22
+ - "Jargon used to sound important rather than to be precise"
23
+ - "Euphemisms that soften bad news into gibberish"
24
+ - "Facts presented alone with no interpretation"
25
+ sources:
26
+ - type: archive
27
+ title: "David Ogilvy — 'How to Write' internal memo"
28
+ authors: ["David Ogilvy"]
29
+ year: 1982
30
+ url: "https://www.themarginalian.org/2012/02/07/david-ogilvy-on-writing/"
31
+ methodology_covered:
32
+ - "10 writing rules circulated to Ogilvy and Mather management"
33
+ - "Natural voice, short units, no jargon, verify quotations, read-aloud test, clear ask"
34
+ - type: book
35
+ title: "Writing That Works — How to Communicate Effectively in Business"
36
+ authors: ["Kenneth Roman", "Joel Raphaelson"]
37
+ year: 1981
38
+ url: ""
39
+ methodology_covered:
40
+ - "Comprehension — 'People seldom act on what they cannot understand'"
41
+ - "Completeness — 'When you say something, make sure you have said it'"
42
+ - "Honesty — no hedging, no euphemisms, straight talk on bad news"
43
+ - "Facts with context — no 'unstrung gems'"
44
+ - type: book
45
+ title: "Ogilvy on Advertising"
46
+ authors: ["David Ogilvy"]
47
+ year: 1983
48
+ url: ""
49
+ methodology_covered:
50
+ - "Copy discipline for headlines and body text"
51
+ - "Test-driven refinement of what actually sells"
52
+ verification_status: verified
53
+ description: "\"Write the way you talk. Naturally.\""
54
+ ---
55
+
56
+ # David Ogilvy
57
+
58
+ ## Signature
59
+
60
+ *"Write the way you talk. Naturally."*
61
+
62
+ David Ogilvy (1911-1999) founded Ogilvy and Mather in 1948 and built the modern discipline of writing that persuades without pretense. His 1982 internal memo "How to Write" — ten rules circulated to Ogilvy and Mather management — remains the shortest useful writing style guide in publication. He paired it with a book he insisted every employee read three times: Kenneth Roman and Joel Raphaelson's *Writing That Works* (1981).
63
+
64
+ ## Core principle
65
+
66
+ Prose is craft. Brevity, natural voice, and a clear ask beat every other lever. The reader is busy. The writer's job is to make the point easy to find and easy to act on.
67
+
68
+ Three operational stances flow from this:
69
+
70
+ 1. **Write the way you talk.** Not casual. Not slang. Your natural voice speaking to a respected peer. Corporate throat-clearing ("Please be advised that") betrays the reader.
71
+ 2. **Every fact needs a reason it matters.** Numbers alone are unstrung gems. String them into an argument or drop them.
72
+ 3. **Bad news is not made better by burying it.** Honesty first. Sympathy second. Euphemisms make bad news worse by adding confusion.
73
+
74
+ ## What this looks like in Ogilvy and Mather
75
+
76
+ - **Client memos read like conversation** — "I need a decision by Friday on whether to prioritize A or B" beats "It would be great if someone could weigh in on the priority question at their convenience"
77
+ - **Ad headlines carry the whole ask** — the reader gets it from the headline; body text supports
78
+ - **Facts always carry an "and therefore"** — a survey stat rides an interpretation
79
+ - **Bad news arrives first** — "We're not going ahead with the campaign. Here's why"
80
+ - **Read-aloud test before send** — if it stumbles in your mouth, it stumbles in the reader's
81
+
82
+ ## Core methods
83
+
84
+ Six methods an agent can invoke by name during writing or review:
85
+
86
+ - **Natural voice test** — Read the sentence aloud. Would a real person say it that way to a respected peer? INSTEAD of "Pursuant to our earlier discussion": "As we discussed."
87
+
88
+ - **Short units test** — If a sentence runs past 25 words, split it. If a paragraph runs past 6 sentences, split it. Look for shorter words that mean the same thing: "utilize" becomes "use"; "commence" becomes "start."
89
+
90
+ - **Read-aloud test** — Read the passage in your head. If it stumbles — tongue-twisters, awkward rhythms, no comma rest in a long line — rewrite until it flows.
91
+
92
+ - **Completeness test** — Ask yourself: what is the ONE thing the reader needs to take from this? Is that thing actually written down, in plain language, somewhere the reader will see it? Roman and Raphaelson's warning: "When you say something, make sure you have said it. The chances of your having said it are only fair."
93
+
94
+ - **Honesty test** — Are you saying what you mean or hiding behind softening language? Weasel words ("arguably," "somewhat," "perhaps"), euphemisms ("right-sizing," "we're going in a different direction"), passive voice hiding the actor ("mistakes were made") all fail.
95
+
96
+ - **Facts-with-context test** — For every number, fact, or data point: does the reader know why it matters? Is it connected to a point? Roman and Raphaelson's metaphor: "Facts are building materials. Readers are not impressed by a pile of bricks. They want to see the building."
97
+
98
+ ## When to channel this luminary
99
+
100
+ When the primary risk is **prose that fails to persuade or act on**. Ogilvy dominates any surface where an operator or adopter reads for a decision:
101
+
102
+ - Chronicles and session logs — narrative record must land clearly
103
+ - PR body Summary and Test plan sections — reviewers need the ask fast
104
+ - Ticket bodies — Problem section must state user pain, not solution abstraction
105
+ - Journal entries — external audience; Roman-and-Raphaelson completeness test essential
106
+ - Turn prose in agent responses — operator scans on mobile; Ogilvy is exactly the frame
107
+ - Marketing copy, landing pages, onboarding docs — the original domain
108
+
109
+ Pair with **Rich Hickey** (simple vs easy at the writing shape layer — matches Ogilvy's short-units principle), **Stephen Toulmin** (argument shape underneath the words — Ogilvy's facts-with-context is Toulmin's warrant restated as writing craft), and **Kent Beck** (composition rhythm — Ogilvy's read-aloud test is TDD's red-green-refactor for prose).
110
+
111
+ INSTEAD of channeling Ogilvy for pure technical documentation where precision beats natural voice (API contracts, schema shapes, error code tables): route to the surface's own discipline. Ogilvy applies to persuasive and narrative writing. Reference material has its own rules.
112
+
113
+ ## Stack translation
114
+
115
+ Bassclef ships to operators and adopters. Both audiences read on mobile. Both bounce on friction. Ogilvy's discipline maps directly:
116
+
117
+ | Ogilvy and Mather ad copy | Bassclef substrate output |
118
+ |---|---|
119
+ | Client memo asking for approval | PR body asking for review |
120
+ | Ad headline that carries the whole ask | Ticket title + Problem section |
121
+ | Body copy that supports the headline | Chronicle body + PR body Summary |
122
+ | Bad news memo | Failed CI + incident report |
123
+ | Read-aloud test before send | `/kiss words --grade10` + `/ogilvy-writing-audit` before commit |
124
+ | Roman-and-Raphaelson three-times reading | `.claude/rules/writing-craft-discipline.md` auto-loaded every session |
125
+
126
+ ## Anti-patterns Ogilvy prevents
127
+
128
+ - **Corporate throat-clearing openers.** "Please be advised that" adds distance. INSTEAD: state the point.
129
+ - **Jargon to sound important.** "Leverage synergies across verticals" is worse than "get the teams talking." INSTEAD: use the plain word if it carries the same meaning.
130
+ - **Bad news buried in sympathy.** "After careful consideration of a number of factors..." delays the point. INSTEAD: state the decision first, then the reason.
131
+ - **Facts as unstrung gems.** "Revenue was 4.2M" without context does not persuade. INSTEAD: "Revenue was 4.2M, up 30 percent year over year — best quarter yet."
132
+ - **Long sentences with no comma rest.** A 35-word sentence is physically hard to read aloud. INSTEAD: split at the natural clause boundary.
133
+
134
+ ## Worked example
135
+
136
+ **Scenario.** Agent drafts a PR body Summary for a substrate change:
137
+
138
+ **Before (fails Ogilvy — jargon + long sentences + buried ask):**
139
+
140
+ > "Pursuant to the operationalized discussion of the load-bearing shape of the auto-save primitive, this PR introduces a cross-cutting refactor that leverages the SESSION_LOCK guard to obviate mid-session state pollution across a heterogeneous set of adopter operating environments."
141
+
142
+ **After (passes Ogilvy — natural voice + short units + clear ask):**
143
+
144
+ > "Bet 27a diagnose found that session-end.sh commits mid-session, polluting feature branches. This PR adds a SESSION_LOCK check before the commit. When an autonomous session is running, session-end.sh skips the commit. Existing tests stay green; three new cases cover the check. Reviewer confirms the Guard 0 block reads clearly."
145
+
146
+ The second version reads at grade 7. Every sentence has a clear subject. Each idea gets its own sentence. The reader knows what the PR does and what to check.
147
+
148
+ ## How to apply
149
+
150
+ When drafting operator-facing prose or reviewing draft output:
151
+
152
+ 1. **Ask: would a real person say this?** If not, rewrite in natural voice.
153
+ 2. **Ask: what is the ONE thing the reader needs to take from this?** Confirm it is actually written down in plain language.
154
+ 3. **Ask: for every fact or number, did I say why it matters?** If not, add the interpretation or drop the fact.
155
+ 4. **Read it aloud.** If it stumbles, rewrite.
156
+ 5. **Look for weasel words and euphemisms.** Swap for straight talk.
157
+ 6. **Check sentence length.** If any runs past 25 words, split.
158
+
159
+ ## How bassclef channels Ogilvy
160
+
161
+ The discipline lives in:
162
+
163
+ - `.claude/rules/writing-craft-discipline.md` — auto-loaded rule; adds Ogilvy tests as first-person composition checks
164
+ - `standards/ogilvy-writing-rules.md` — reference standard with the 10 rules and violation patterns
165
+ - `.claude/skills/ogilvy-writing-audit/SKILL.md` — operator-invocable audit skill; produces severity-tagged violations with specific fixes
166
+ - `standards/bassclef-internal-jargon.md` — extended with Ogilvy business-jargon terms
167
+ - `.claude/skills/kiss/SKILL.md` — cross-referenced; `/kiss words` composes with `/ogilvy-writing-audit` (audit diagnoses; kiss fixes)
168
+ - `standards/skill-output-discipline.md` — extended to reference Ogilvy writing rules as the craft anchor
169
+
170
+ ## Related luminaries
171
+
172
+ - **Rich Hickey** — simple vs easy at the writing shape layer. Ogilvy's short-units test is Hickey's discipline applied to sentences.
173
+ - **Stephen Toulmin** — argument shape under the words. Ogilvy's facts-with-context is Toulmin's warrant restated as writing craft. The two pair naturally.
174
+ - **Kent Beck** — composition rhythm. Ogilvy's read-aloud test is Beck's red-green-refactor for prose — write, read aloud, revise.
175
+ - **Kenneth Roman and Joel Raphaelson** — Ogilvy insisted every Ogilvy and Mather employee read *Writing That Works* three times. R&R supply rules 7-10 (comprehension, completeness, honesty, facts-with-context) that Ogilvy's memo did not spell out. They stay paired throughout `standards/ogilvy-writing-rules.md`.
176
+ - **Frederick Brooks** — conceptual integrity applies to prose voice. Ogilvy's discipline is one operator holding a coherent voice across every surface.
177
+
178
+ ## Sources
179
+
180
+ - David Ogilvy — "How to Write" internal memo, September 7, 1982 (ten rules to Ogilvy and Mather management; still in wide circulation)
181
+ - Kenneth Roman and Joel Raphaelson — *Writing That Works* (Harper and Row, 1981; Ogilvy insisted every employee read three times)
182
+ - David Ogilvy — *Ogilvy on Advertising* (Crown, 1983)
183
+
184
+ ## Refs
185
+
186
+ - Ticket #934 — this luminary's filing (Ogilvy skill + luminary + rule + standard)
187
+ - Session 2026-07-27a chronicle — the operator + agent discussion that surfaced the fit
188
+ - Sister rule `.claude/rules/plain-english-discipline.md` — bassclef's own grade-level rule that composes with Ogilvy's discipline
189
+
190
+ ## Retirement condition
191
+
192
+ This luminary retires only if bassclef stops shipping operator-facing prose. Until then, Ogilvy is the writing-craft anchor for every surface where a human reads for a decision or a story.
@@ -0,0 +1,173 @@
1
+ ---
2
+ tier: lite
3
+ name: Don Norman
4
+ slug: don-norman
5
+ claimed_by: [designer]
6
+ referenced_by_skills: [prototype-variants, interaction-design, visual-review]
7
+ primary_domain: ux
8
+ depth: full
9
+ sources:
10
+ - type: book
11
+ title: "The Design of Everyday Things (revised and expanded edition)"
12
+ authors: ["Don Norman"]
13
+ year: 2013
14
+ url: "https://www.basicbooks.com/titles/don-norman/the-design-of-everyday-things/9780465050659/"
15
+ isbn: "9780465050659"
16
+ methodology_covered:
17
+ - "Affordances — what a thing tells you about how to use it"
18
+ - "Signifiers — perceivable signals of action possibilities"
19
+ - "Mapping — relationship between controls and their effects"
20
+ - "Feedback — communication of action results back to the user"
21
+ - "Conceptual models + mental models + system models"
22
+ - "Seven stages of action — bridge gulfs of execution and evaluation"
23
+ - type: book
24
+ title: "Emotional Design: Why We Love (or Hate) Everyday Things"
25
+ authors: ["Don Norman"]
26
+ year: 2004
27
+ url: "https://www.basicbooks.com/titles/donald-a-norman/emotional-design/9780465051366/"
28
+ isbn: "9780465051366"
29
+ methodology_covered:
30
+ - "Three levels of design — visceral + behavioral + reflective"
31
+ - "Emotion as integral to design quality, not decoration"
32
+ - type: book
33
+ title: "Living with Complexity"
34
+ authors: ["Don Norman"]
35
+ year: 2010
36
+ url: "https://mitpress.mit.edu/9780262528948/living-with-complexity/"
37
+ isbn: "9780262528948"
38
+ methodology_covered:
39
+ - "Complexity is necessary; complication is what we design against"
40
+ - "Signifiers carry the discipline that lets complex systems feel usable"
41
+ verification_status: verified
42
+ solves_problems_brownfield:
43
+ - "Users keep clicking the wrong thing or missing a button; affordances are unclear"
44
+ - "Interface error messages punish the user rather than help them recover"
45
+ - "Mental model and system model have diverged — users predict wrong outcomes"
46
+ - "Mode visibility is missing; users don't know what state they're in"
47
+ solves_problems_greenfield:
48
+ - "Designing a new control surface where affordance language must be self-evident from first encounter"
49
+ - "Building a tool whose error model should help users recover, not punish"
50
+ - "Planning a product where mappings between control and effect must feel natural from day one"
51
+ - "Designing a system where visibility of state is a first-class concern"
52
+ anti_patterns:
53
+ - "Designs whose primary value is delight or emotional resonance — Norman optimizes for clarity, not joy"
54
+ - "Highly abstract or conceptual UIs where direct manipulation isn't the model"
55
+ description: "\"Good design makes the right action obvious."
56
+ ---
57
+
58
+ # Don Norman
59
+
60
+ ## Signature
61
+
62
+ *"Good design makes the right action obvious. The wrong action should be difficult, or at least conspicuously wrong."*
63
+
64
+ Coined **user experience**; co-founder of Nielsen Norman Group; author of
65
+ **The Design of Everyday Things** and **Emotional Design**. The bassclef
66
+ voice on how physical and digital objects communicate their use through
67
+ perceived properties.
68
+
69
+ ## Core methods
70
+
71
+ - **Affordances** — What an object invites a user to do with it, based on
72
+ its physical/visual properties. A button affords pressing; a handle
73
+ affords pulling. The mismatch between real and perceived affordance is
74
+ a design failure.
75
+ - **Signifiers** — Explicit clues that communicate what action is
76
+ possible. Where affordances are inherent, signifiers are designed.
77
+ Arrows, labels, shadows, highlights — all signifiers.
78
+ - **Mapping** — The correspondence between controls and their effects.
79
+ A stove-top dial that controls the front-left burner should be
80
+ spatially closer to that burner than any other.
81
+ - **Feedback loops** — Every action needs immediate, meaningful feedback
82
+ confirming what happened. Silent actions produce anxious users; long
83
+ delays produce retries and duplicate submissions.
84
+ - **Constraints** — Physical, logical, semantic, cultural limits that
85
+ prevent wrong actions. A form field that rejects invalid characters
86
+ is a constraint; a confirmation dialog is not — it's a warning.
87
+ - **Emotional design three-levels** — Visceral (initial impression),
88
+ behavioral (usability in use), reflective (meaning after use). All
89
+ three contribute to product success; missing any degrades the whole.
90
+
91
+ ## When to channel this luminary
92
+
93
+ When the biggest risk is that users won't know how to use the thing —
94
+ or will use it wrong. Norman dominates affordance-forward design:
95
+ products where discoverability and error prevention at the interaction
96
+ level are critical. Think: operator tools used daily, forms with
97
+ financial or legal consequences, controls for complex processes where
98
+ mistakes are expensive.
99
+
100
+ Do NOT channel Norman as a primary for: content-heavy sites where
101
+ structure dominates (use Prater or Morville), pure data visualization
102
+ (Tufte), or identity work (Scher/Vignelli).
103
+
104
+ ## Stack translation
105
+
106
+ In React + Tailwind + shadcn/ui:
107
+
108
+ - **Affordances** → button components that look clickable (shadow,
109
+ hover state, cursor:pointer). Card components that don't look
110
+ clickable shouldn't be clickable.
111
+ - **Signifiers** → explicit labels + icons + helper text. A disabled
112
+ button should show WHY it's disabled, not just dim.
113
+ - **Mapping** → form layouts where the submit button is near the last
114
+ field, not floating in a sidebar. Navigation where the section you're
115
+ in is visually connected to its content.
116
+ - **Feedback** → toast notifications, loading states, optimistic UI
117
+ updates. Every server action needs a returned state.
118
+ - **Constraints** → form validation at field level (not just submit),
119
+ disabled states when actions are invalid, type="email" / type="number".
120
+
121
+ ## Anti-patterns it prevents
122
+
123
+ - **Mystery meat navigation** — icons without labels; users guess what
124
+ each does. Norman's signifier principle demands explicit labeling.
125
+ - **Hidden state actions** — buttons that do different things in
126
+ different states without signaling the change. Violates feedback
127
+ principle.
128
+ - **Silent errors** — form submission that fails without communicating
129
+ why. Every error needs clear, actionable feedback at the point of
130
+ failure.
131
+ - **Mode confusion** — UI that behaves differently in different modes
132
+ without clear mode indicators. The user doesn't know which mode
133
+ they're in.
134
+ - **Ornamental affordance** — cards that look clickable but aren't;
135
+ elements styled like buttons but that are decorative. Betrays the
136
+ user's learned affordance expectations.
137
+
138
+ ## Worked example
139
+
140
+ For a deal-stage transition control in POA:
141
+
142
+ Norman would design it as: a clearly labeled button ("Advance to LOI"),
143
+ visually grouped with the current stage display, disabled with
144
+ explanation when the deal is missing required fields ("Missing: Offer
145
+ Price, Buyer Contact"). On click: immediate loading state, optimistic
146
+ UI showing the new stage, toast confirmation on server success, error
147
+ banner with specific reason on failure ("Cannot advance: Seller hasn't
148
+ signed NDA").
149
+
150
+ What Norman would NOT produce: a stage dropdown with no explanation
151
+ for why some options are grayed out; a silent state change where the
152
+ deal advances without confirmation; a generic "Error" toast that
153
+ doesn't explain what went wrong.
154
+
155
+ ## Sources
156
+
157
+ - *The Design of Everyday Things* — Norman, Basic Books (1988, rev. 2013)
158
+ - *Emotional Design: Why We Love (or Hate) Everyday Things* — Norman (2003)
159
+ - *Living with Complexity* — Norman (2010)
160
+ - jnd.org — Norman's primary site
161
+ - Nielsen Norman Group — nngroup.com (co-founded)
162
+
163
+ ## Related luminaries
164
+
165
+ - **Sophia Prater** — Prater works at the structural layer above Norman's
166
+ interaction layer. Use both: Prater for IA, Norman for the interactions
167
+ within each screen.
168
+ - **Jenifer Tidwell** — Pattern library operationalizes Norman's
169
+ principles into reusable UI vocabulary.
170
+ - **Jakob Nielsen** — NN/g co-founder; heuristics are Nielsen's
171
+ operationalization of Norman-adjacent principles.
172
+ - **Aarron Walter** — Emotional design hierarchy builds on Norman's
173
+ three-level model.