@thebassclef/lite 0.1.3 → 1.0.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.
- package/dist/cli.cjs +431 -135
- package/dist/cli.js +433 -137
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lite/.bassclef-source.json +10 -0
- package/{substrate → dist/lite}/.claude/hooks/artifact-ingestion-gate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/assert-verify-steering.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/bassclef-source-config-validate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/bassclef-sync.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/compound-noun-scrub.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/kiss-expansion-inject.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/longrun-prep-compounding-sequence-check.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/plain-english-steering.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/post-skill-friction-check.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/post-skill-telemetry.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/pre-build-gate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/pre-commit-gate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/session-end.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/session-reflection.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/skill-body-grade-gate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/skill-body-intent-drift.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/state-validate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/substrate-clarity-gate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/temperance-gate.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/testing-tier-enforce.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/turn-prose-grade-measure.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/turn-prose-kiss-check.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/vocabulary-migration-check.sh +0 -0
- package/{substrate → dist/lite}/.claude/hooks/whereami-utc-gate.sh +0 -0
- package/dist/lite/.claude/settings.json +212 -0
- package/dist/lite/CLAUDE.md +41 -0
- package/dist/lite/gitignore +58 -0
- package/dist/lite/standards/bassclef-wiring-manifest.json +497 -0
- package/dist/lite/whereami.md +24 -0
- package/package.json +8 -2
- package/substrate/.bassclef/lite-manifest.json +0 -2701
- package/substrate/.claude/agents/architect.md +0 -70
- package/substrate/.claude/agents/builder.md +0 -114
- package/substrate/.claude/agents/designer.md +0 -156
- package/substrate/.claude/agents/reviewer.md +0 -88
- package/substrate/.claude/hooks/longrun-prep-compounding-axis-check.sh +0 -492
- package/substrate/.claude/hooks/skill-step-list-check.sh +0 -171
- package/substrate/.claude/luminaries/alan-cooper.md +0 -170
- package/substrate/.claude/luminaries/alistair-cockburn.md +0 -140
- package/substrate/.claude/luminaries/amazon-pr-faq.md +0 -34
- package/substrate/.claude/luminaries/ash-maurya.md +0 -121
- package/substrate/.claude/luminaries/bill-buxton.md +0 -210
- package/substrate/.claude/luminaries/charles-sanders-peirce.md +0 -150
- package/substrate/.claude/luminaries/david-ogilvy.md +0 -192
- package/substrate/.claude/luminaries/don-norman.md +0 -173
- package/substrate/.claude/luminaries/edward-tufte.md +0 -179
- package/substrate/.claude/luminaries/eric-evans.md +0 -160
- package/substrate/.claude/luminaries/frederick-brooks.md +0 -50
- package/substrate/.claude/luminaries/gang-of-four.md +0 -157
- package/substrate/.claude/luminaries/glenford-myers.md +0 -230
- package/substrate/.claude/luminaries/hunt-thomas.md +0 -115
- package/substrate/.claude/luminaries/hyrum-wright.md +0 -94
- package/substrate/.claude/luminaries/jason-fried-dhh.md +0 -46
- package/substrate/.claude/luminaries/jesse-james-garrett.md +0 -154
- package/substrate/.claude/luminaries/john-ousterhout.md +0 -94
- package/substrate/.claude/luminaries/karl-popper.md +0 -132
- package/substrate/.claude/luminaries/kent-beck.md +0 -168
- package/substrate/.claude/luminaries/linus-torvalds.md +0 -218
- package/substrate/.claude/luminaries/martin-fowler.md +0 -164
- package/substrate/.claude/luminaries/michael-feathers.md +0 -125
- package/substrate/.claude/luminaries/michael-nygard.md +0 -118
- package/substrate/.claude/luminaries/robert-c-martin.md +0 -164
- package/substrate/.claude/luminaries/saltzer-schroeder.md +0 -194
- package/substrate/.claude/luminaries/sophia-prater.md +0 -193
- package/substrate/.claude/luminaries/stephen-toulmin.md +0 -131
- package/substrate/.claude/luminaries/tony-hoare.md +0 -170
- package/substrate/.claude/luminaries/vaughn-vernon.md +0 -50
- package/substrate/.claude/luminaries/w-edwards-deming.md +0 -158
- package/substrate/.claude/rules/accessor-library-discipline.md +0 -138
- package/substrate/.claude/rules/adr-discipline.md +0 -120
- package/substrate/.claude/rules/api-conventions.md +0 -125
- package/substrate/.claude/rules/artifact-ingestion.md +0 -179
- package/substrate/.claude/rules/assert-only-after-verify.md +0 -137
- package/substrate/.claude/rules/blocked-items.md +0 -146
- package/substrate/.claude/rules/bootstrap-pair-discipline.md +0 -141
- package/substrate/.claude/rules/branching.md +0 -28
- package/substrate/.claude/rules/cold-adopter-harness-discipline.md +0 -129
- package/substrate/.claude/rules/commit-conventions.md +0 -22
- package/substrate/.claude/rules/compounding-axis-fresh-analysis.md +0 -188
- package/substrate/.claude/rules/compounding-sequence-fresh-analysis.md +0 -188
- package/substrate/.claude/rules/context-engineering.md +0 -202
- package/substrate/.claude/rules/context-management.md +0 -85
- package/substrate/.claude/rules/defensive-bash.md +0 -68
- package/substrate/.claude/rules/deferred-actions.md +0 -233
- package/substrate/.claude/rules/destructive-operations.md +0 -69
- package/substrate/.claude/rules/diagnosis.md +0 -38
- package/substrate/.claude/rules/github-issue-flash-tweet.md +0 -156
- package/substrate/.claude/rules/guardrails.md +0 -73
- package/substrate/.claude/rules/hook-wire-on-author.md +0 -103
- package/substrate/.claude/rules/identifier-leak-prevention.md +0 -104
- package/substrate/.claude/rules/iteration-bet-brief-completeness.md +0 -54
- package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +0 -98
- package/substrate/.claude/rules/longrun-prep-plan-doc-compression.md +0 -89
- package/substrate/.claude/rules/loop-discipline.md +0 -81
- package/substrate/.claude/rules/manual-prod-approval.md +0 -100
- package/substrate/.claude/rules/marker-enrichment-discipline.md +0 -99
- package/substrate/.claude/rules/mobile-ephemeral-session.md +0 -109
- package/substrate/.claude/rules/new-dependency-check.md +0 -51
- package/substrate/.claude/rules/oo-ad-entry-point.md +0 -117
- package/substrate/.claude/rules/operator-facing-prose.md +0 -196
- package/substrate/.claude/rules/option-label-discipline.md +0 -108
- package/substrate/.claude/rules/pattern-annotation.md +0 -100
- package/substrate/.claude/rules/plain-english-discipline.md +0 -156
- package/substrate/.claude/rules/plan-enumeration-needs-value-props.md +0 -211
- package/substrate/.claude/rules/pr-body-shape.md +0 -317
- package/substrate/.claude/rules/pr-strategy.md +0 -167
- package/substrate/.claude/rules/pr-title-shape.md +0 -161
- package/substrate/.claude/rules/prototype-workflow.md +0 -65
- package/substrate/.claude/rules/reserved-skill-names.md +0 -123
- package/substrate/.claude/rules/schema-management.md +0 -49
- package/substrate/.claude/rules/sdlc-gates.md +0 -149
- package/substrate/.claude/rules/security.md +0 -37
- package/substrate/.claude/rules/session-artifacts.md +0 -236
- package/substrate/.claude/rules/skill-composition-declarations.md +0 -124
- package/substrate/.claude/rules/skill-description-clarity.md +0 -247
- package/substrate/.claude/rules/skill-procedure-step-list.md +0 -137
- package/substrate/.claude/rules/state-schema-validation.md +0 -162
- package/substrate/.claude/rules/stuck-signal-diagnostic.md +0 -140
- package/substrate/.claude/rules/substrate-config-schema.md +0 -98
- package/substrate/.claude/rules/test-list-discipline.md +0 -175
- package/substrate/.claude/rules/test-sufficiency.md +0 -210
- package/substrate/.claude/rules/testing-tier-config.md +0 -145
- package/substrate/.claude/rules/testing.md +0 -38
- package/substrate/.claude/rules/turn-estimate-grounding.md +0 -134
- package/substrate/.claude/rules/visual-hierarchy.md +0 -437
- package/substrate/.claude/rules/we-dont-break-adopters.md +0 -126
- package/substrate/.claude/rules/whereami-load-bearing.md +0 -202
- package/substrate/.claude/rules/writing-craft-discipline.md +0 -92
- package/substrate/.claude/rules/wu-sequencing-compounds.md +0 -145
- package/substrate/.claude/skills/build/SKILL.md +0 -640
- package/substrate/.claude/skills/chronicle/SKILL.md +0 -55
- package/substrate/.claude/skills/clean-artifacts/SKILL.md +0 -249
- package/substrate/.claude/skills/decompose/SKILL.md +0 -280
- package/substrate/.claude/skills/diagnose/SKILL.md +0 -297
- package/substrate/.claude/skills/feynman/SKILL.md +0 -90
- package/substrate/.claude/skills/howdoi/SKILL.md +0 -105
- package/substrate/.claude/skills/ia-model/SKILL.md +0 -108
- package/substrate/.claude/skills/interaction-design/SKILL.md +0 -112
- package/substrate/.claude/skills/interpret-input/SKILL.md +0 -180
- package/substrate/.claude/skills/journal/SKILL.md +0 -209
- package/substrate/.claude/skills/kiss/SKILL.md +0 -449
- package/substrate/.claude/skills/launch/SKILL.md +0 -915
- package/substrate/.claude/skills/lean-canvas/SKILL.md +0 -332
- package/substrate/.claude/skills/longrun/SKILL.md +0 -463
- package/substrate/.claude/skills/luminary/SKILL.md +0 -481
- package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +0 -177
- package/substrate/.claude/skills/onboard-repo/SKILL.md +0 -1624
- package/substrate/.claude/skills/pattern-review/SKILL.md +0 -99
- package/substrate/.claude/skills/personas/SKILL.md +0 -207
- package/substrate/.claude/skills/promote/SKILL.md +0 -283
- package/substrate/.claude/skills/requirement/SKILL.md +0 -98
- package/substrate/.claude/skills/retro/SKILL.md +0 -117
- package/substrate/.claude/skills/riff/SKILL.md +0 -114
- package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +0 -163
- package/substrate/.claude/skills/session-end/SKILL.md +0 -309
- package/substrate/.claude/skills/session-log/SKILL.md +0 -299
- package/substrate/.claude/skills/skills/SKILL.md +0 -228
- package/substrate/.claude/skills/spec/SKILL.md +0 -105
- package/substrate/.claude/skills/sprint/SKILL.md +0 -392
- package/substrate/.claude/skills/stage/SKILL.md +0 -384
- package/substrate/.claude/skills/state-a-problem/SKILL.md +0 -185
- package/substrate/.claude/skills/temperance/SKILL.md +0 -108
- package/substrate/.claude/skills/use-case/SKILL.md +0 -417
- package/substrate/.claude/skills/user-stories/SKILL.md +0 -268
- package/substrate/.claude/skills/value-prop/SKILL.md +0 -251
- package/substrate/.claude/skills/verify/SKILL.md +0 -160
- package/substrate/.claude/skills/visual-review/SKILL.md +0 -503
- package/substrate/.claude/skills/whats-the-plan/SKILL.md +0 -202
- package/substrate/.claude/skills/whereami/SKILL.md +0 -307
- package/substrate/AGENTS.md +0 -79
- package/substrate/CLAUDE-lite.md +0 -85
- package/substrate/CODE_OF_CONDUCT.md +0 -28
- package/substrate/CONTRIBUTING.md +0 -177
- package/substrate/README.md +0 -173
- package/substrate/SECURITY.md +0 -19
- package/substrate/architecture/decisions/ADR-029-release-pipeline.md +0 -79
- package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +0 -139
- package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +0 -192
- package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +0 -145
- package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +0 -155
- package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +0 -162
- package/substrate/lib/clean-artifacts-sweep.sh +0 -112
- package/substrate/lib/code-comment-discipline.sh +0 -144
- package/substrate/lib/composer-preflight.sh +0 -459
- package/substrate/lib/hook-inject.sh +0 -255
- package/substrate/lib/luminary-pick.sh +0 -96
- package/substrate/lib/output-discipline.sh +0 -143
- package/substrate/lib/prose-scan-boundary.sh +0 -171
- package/substrate/lib/rewrite-check.sh +0 -214
- package/substrate/lib/state.sh +0 -1372
- package/substrate/lib/telemetry.sh +0 -205
- package/substrate/lib/tier-check.sh +0 -187
- package/substrate/lib/tier-dependency-audit.sh +0 -1088
- package/substrate/presence/install/bassclef-hook-connect.sh +0 -178
- package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +0 -841
- package/substrate/presence/install/bassclef-sync.template.sh +0 -2076
- package/substrate/presence/install/schedule-auto-save.cron.sh +0 -88
- package/substrate/presence/install/schedule-auto-save.taskscheduler.md +0 -122
- package/substrate/scripts/aggregate-telemetry.sh +0 -217
- package/substrate/scripts/analyze-tier-dependencies.sh +0 -239
- package/substrate/scripts/generate-lite-manifest.sh +0 -505
- package/substrate/scripts/generate-tier-manifest.sh +0 -28
- package/substrate/scripts/intent-drift-check.sh +0 -456
- package/substrate/scripts/lite-manifest-drift-check.sh +0 -146
- package/substrate/scripts/render-lite-manifest-doc.sh +0 -150
- package/substrate/standards/adr-template.md +0 -86
- package/substrate/standards/api-conventions/nextjs.md +0 -84
- package/substrate/standards/artifact-composition.md +0 -209
- package/substrate/standards/bash-hook-safety.md +0 -246
- package/substrate/standards/bassclef-configs-schema.md +0 -232
- package/substrate/standards/bassclef-evolution.md +0 -143
- package/substrate/standards/bassclef-internal-jargon.md +0 -244
- package/substrate/standards/bassclef-managed-sentinel.md +0 -96
- package/substrate/standards/bassclef-source-config.md +0 -228
- package/substrate/standards/branch-stacking.md +0 -408
- package/substrate/standards/code-safety-principles.md +0 -176
- package/substrate/standards/composer-prerequisites.md +0 -155
- package/substrate/standards/deferred-actions-schema.md +0 -204
- package/substrate/standards/dependency-discipline/cargo.md +0 -39
- package/substrate/standards/dependency-discipline/gem.md +0 -43
- package/substrate/standards/dependency-discipline/go-mod.md +0 -41
- package/substrate/standards/dependency-discipline/npm.md +0 -42
- package/substrate/standards/dependency-discipline/pip.md +0 -42
- package/substrate/standards/deployment-topology/ec2-tailscale.md +0 -225
- package/substrate/standards/deployment-topology.md +0 -69
- package/substrate/standards/docs-sync-allowlist.md +0 -76
- package/substrate/standards/domain-and-dns.md +0 -145
- package/substrate/standards/frontend-stack.md +0 -67
- package/substrate/standards/frontmatter-schema.md +0 -154
- package/substrate/standards/graceful-exit.md +0 -227
- package/substrate/standards/hook-idempotency.md +0 -102
- package/substrate/standards/hook-injection-discipline.md +0 -202
- package/substrate/standards/hook-install-class.md +0 -215
- package/substrate/standards/input-handler-interface.md +0 -152
- package/substrate/standards/lite-manifest-schema-changes.md +0 -135
- package/substrate/standards/luminary-matching.md +0 -105
- package/substrate/standards/luminary-problem-patterns.md +0 -481
- package/substrate/standards/migration-discipline/active-record.md +0 -50
- package/substrate/standards/migration-discipline/alembic.md +0 -43
- package/substrate/standards/migration-discipline/gorm.md +0 -50
- package/substrate/standards/migration-discipline/prisma.md +0 -53
- package/substrate/standards/migration-discipline/sqlalchemy.md +0 -51
- package/substrate/standards/mobile-ephemeral-session.md +0 -167
- package/substrate/standards/model-routing-discipline.md +0 -160
- package/substrate/standards/ogilvy-writing-rules.md +0 -225
- package/substrate/standards/opener-discipline.md +0 -96
- package/substrate/standards/operator-facing-prose-discipline.md +0 -201
- package/substrate/standards/persona-schema.md +0 -229
- package/substrate/standards/pluggable-luminaries.md +0 -323
- package/substrate/standards/pr-body-discipline.md +0 -115
- package/substrate/standards/preview-state-schema.md +0 -189
- package/substrate/standards/project-directory-layout.md +0 -276
- package/substrate/standards/release-tagging.md +0 -137
- package/substrate/standards/reserved-skill-names.md +0 -120
- package/substrate/standards/scannable-multi-option-output.md +0 -261
- package/substrate/standards/sdlc-compliance.md +0 -286
- package/substrate/standards/sdlc-gates/typescript.md +0 -57
- package/substrate/standards/secrets-lifecycle.md +0 -210
- package/substrate/standards/security-scanner-adapter.md +0 -145
- package/substrate/standards/session-board.md +0 -256
- package/substrate/standards/skill-output-discipline.md +0 -90
- package/substrate/standards/state-spine-contract.md +0 -255
- package/substrate/standards/state-spine.md +0 -511
- package/substrate/standards/steering-hints/kiss-words.md +0 -11
- package/substrate/standards/substrate-config-schema.md +0 -267
- package/substrate/standards/tech-stack-config.md +0 -109
- package/substrate/standards/tier-dependency-analysis.md +0 -167
- package/substrate/standards/tier-runtime-deps/lite.md +0 -57
- package/substrate/standards/tier-tag-schema.md +0 -155
- package/substrate/standards/two-layer-config.md +0 -99
- package/substrate/standards/use-case-format.md +0 -292
- package/substrate/standards/user-story-invest.md +0 -268
- package/substrate/standards/velocity-and-appetite.md +0 -229
- package/substrate/standards/voice-input-pattern.md +0 -119
- package/substrate/standards/whereami-schema.md +0 -301
- package/substrate/standards/worktree-management.md +0 -211
- package/substrate/standards/writing-guide.md +0 -213
- package/substrate/templates/chronicle-template.md +0 -75
- package/substrate/templates/deferred-action-template.md +0 -45
- package/substrate/templates/memory-proposal-template.md +0 -77
- package/substrate/templates/persona-template.md +0 -200
- package/substrate/templates/pr-faq.md +0 -45
- package/substrate/templates/secret-rotation-template.md +0 -162
- package/substrate/templates/spec-template.md +0 -131
- package/substrate/templates/use-case-template.md +0 -194
- package/substrate/templates/user-story-template.md +0 -107
- package/substrate/templates/whereami-template.md +0 -101
|
@@ -1,173 +0,0 @@
|
|
|
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.
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
name: Edward Tufte
|
|
4
|
-
slug: edward-tufte
|
|
5
|
-
claimed_by: [creative-director, designer]
|
|
6
|
-
referenced_by_skills: [frontend-design, visual-review, prototype-variants]
|
|
7
|
-
primary_domain: visual
|
|
8
|
-
depth: full
|
|
9
|
-
sources:
|
|
10
|
-
- type: book
|
|
11
|
-
title: "The Visual Display of Quantitative Information (2nd edition)"
|
|
12
|
-
authors: ["Edward Tufte"]
|
|
13
|
-
year: 2001
|
|
14
|
-
url: "https://www.edwardtufte.com/tufte/books_vdqi"
|
|
15
|
-
isbn: "9781930824133"
|
|
16
|
-
methodology_covered:
|
|
17
|
-
- "Data-ink ratio — maximize the ink that represents data; minimize non-data ink"
|
|
18
|
-
- "Chartjunk — non-data ink that obscures rather than clarifies"
|
|
19
|
-
- "Lie factor — visual representation should match the underlying data scale"
|
|
20
|
-
- "Small multiples — series of small similar graphs for comparison"
|
|
21
|
-
- type: book
|
|
22
|
-
title: "Envisioning Information"
|
|
23
|
-
authors: ["Edward Tufte"]
|
|
24
|
-
year: 1990
|
|
25
|
-
url: "https://www.edwardtufte.com/tufte/books_ei"
|
|
26
|
-
isbn: "9780961392116"
|
|
27
|
-
methodology_covered:
|
|
28
|
-
- "Escaping flatland — representing multiple dimensions in two-dimensional space"
|
|
29
|
-
- "Color as data + micro-macro readings + layering and separation"
|
|
30
|
-
- type: book
|
|
31
|
-
title: "Visual Explanations: Images and Quantities, Evidence and Narrative"
|
|
32
|
-
authors: ["Edward Tufte"]
|
|
33
|
-
year: 1997
|
|
34
|
-
url: "https://www.edwardtufte.com/tufte/books_visex"
|
|
35
|
-
isbn: "9780961392123"
|
|
36
|
-
methodology_covered:
|
|
37
|
-
- "Visualizing causality and change over time"
|
|
38
|
-
- "Smallest effective difference — use the minimum visual difference that conveys the distinction"
|
|
39
|
-
- type: book
|
|
40
|
-
title: "Beautiful Evidence"
|
|
41
|
-
authors: ["Edward Tufte"]
|
|
42
|
-
year: 2006
|
|
43
|
-
url: "https://www.edwardtufte.com/tufte/books_be"
|
|
44
|
-
isbn: "9780961392178"
|
|
45
|
-
methodology_covered:
|
|
46
|
-
- "Sparklines — word-sized graphics embedded in running text"
|
|
47
|
-
- "Evidence presentation principles for analytical writing"
|
|
48
|
-
verification_status: verified
|
|
49
|
-
solves_problems_brownfield:
|
|
50
|
-
- "UI shows many numbers or trends in compressed space and legibility is breaking down"
|
|
51
|
-
- "Dashboard has accumulated decoration and chart-junk; signal is buried"
|
|
52
|
-
- "Multi-dimensional data displays are letting one dimension drown out others"
|
|
53
|
-
- "Users decode the chart before understanding the message"
|
|
54
|
-
solves_problems_greenfield:
|
|
55
|
-
- "Planning a dashboard, financial report, or analytics UI that must show dense data clearly from day one"
|
|
56
|
-
- "Designing a surface where multiple quantitative dimensions need to coexist without one drowning the others"
|
|
57
|
-
- "Building a tool for domain experts who read data faster than narrative"
|
|
58
|
-
- "Need small multiples or sparklines as the main display element in the new design"
|
|
59
|
-
anti_patterns:
|
|
60
|
-
- "Sparse, narrative-heavy surfaces — Tufte over-compresses"
|
|
61
|
-
- "Consumer-emotional or marketing surfaces — Tufte reads as cold"
|
|
62
|
-
- "First-time onboarding flows — density assumes domain familiarity"
|
|
63
|
-
description: "\"Above all else, show the data. Maximize the data-ink ratio; every pixel that doesn't represent information is a candidate for removal.\""
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
# Edward Tufte
|
|
67
|
-
|
|
68
|
-
## Signature
|
|
69
|
-
|
|
70
|
-
*"Above all else, show the data. Maximize the data-ink ratio; every pixel that doesn't represent information is a candidate for removal."*
|
|
71
|
-
|
|
72
|
-
Yale statistician and visual communication theorist; author of **The
|
|
73
|
-
Visual Display of Quantitative Information** (1983). The bassclef
|
|
74
|
-
voice on data visualization — the standard against which all chart,
|
|
75
|
-
dashboard, and data-dense UI work is measured.
|
|
76
|
-
|
|
77
|
-
## Core methods
|
|
78
|
-
|
|
79
|
-
- **Data-ink ratio** — The ratio of "ink" (visual weight) representing
|
|
80
|
-
actual data to total ink on the page. Maximize it. Every gridline,
|
|
81
|
-
axis label, border, or color swatch that doesn't represent data is a
|
|
82
|
-
candidate for removal.
|
|
83
|
-
- **Small multiples** — Many small versions of the same chart, aligned
|
|
84
|
-
in a grid, enable comparison at a glance. A single complex chart
|
|
85
|
-
often reads better as 12 small simple ones.
|
|
86
|
-
- **Sparklines** — Word-sized, intense, simple graphics embedded in
|
|
87
|
-
prose or tables. Show trend without dominating layout.
|
|
88
|
-
- **Chartjunk elimination** — Cross-hatching, 3D effects, decorative
|
|
89
|
-
borders, grid backgrounds, redundant legends. All candidates for
|
|
90
|
-
removal. Most "business graphics" are majority chartjunk.
|
|
91
|
-
- **Layering + separation** — Show multiple dimensions in the same
|
|
92
|
-
visualization through layers (color, line weight, opacity) that
|
|
93
|
-
separate clearly rather than blend into noise.
|
|
94
|
-
- **Graphical integrity** — No distortion through truncated axes,
|
|
95
|
-
misleading scales, decoration that implies precision where none
|
|
96
|
-
exists. Graphics should reveal truth, not obscure it.
|
|
97
|
-
|
|
98
|
-
## When to channel this luminary
|
|
99
|
-
|
|
100
|
-
When the product is data-dense and the primary risk is that information
|
|
101
|
-
will be decoration rather than communication. Tufte dominates for
|
|
102
|
-
dashboards, analytics surfaces, financial tables, comparison views,
|
|
103
|
-
time-series data, geographic data. Pair with Lupton for the typographic
|
|
104
|
-
layer of the same dense surfaces.
|
|
105
|
-
|
|
106
|
-
Do NOT channel Tufte for: brand-forward surfaces where information
|
|
107
|
-
density is secondary (use Scher, Ive, Rams), narrative or editorial
|
|
108
|
-
content (Lupton, Bierut), or playful/delightful experiences (Walter,
|
|
109
|
-
Walsh).
|
|
110
|
-
|
|
111
|
-
## Stack translation
|
|
112
|
-
|
|
113
|
-
In React with chart libraries (Recharts, Visx, D3):
|
|
114
|
-
|
|
115
|
-
- **Data-ink** → strip default gridlines, axis decorations, plot
|
|
116
|
-
borders. Add back only what's needed.
|
|
117
|
-
- **Small multiples** → CSS grid of many small charts, shared axis,
|
|
118
|
-
consistent scale. `grid-cols-4` of 12 charts beats one giant chart.
|
|
119
|
-
- **Sparklines** → inline SVG components in table cells; no axis,
|
|
120
|
-
minimal color, 40-80px wide by 20px tall.
|
|
121
|
-
- **No chartjunk** → remove Recharts/Chart.js defaults (legends,
|
|
122
|
-
gridlines, tooltips) and add back only what's essential.
|
|
123
|
-
- **Integrity** → axis starts at zero for magnitude charts; don't
|
|
124
|
-
truncate. Use log scale explicitly and label it. Never stack areas
|
|
125
|
-
to imply a total that isn't.
|
|
126
|
-
|
|
127
|
-
## Anti-patterns it prevents
|
|
128
|
-
|
|
129
|
-
- **3D charts** — three-dimensional representation of 2D data. Adds
|
|
130
|
-
nothing; distorts everything.
|
|
131
|
-
- **Pie charts with many slices** — humans compare bar lengths better
|
|
132
|
-
than angles. Convert to horizontal bar chart.
|
|
133
|
-
- **Decorative dashboards** — dashboards that prioritize visual
|
|
134
|
-
impressiveness over information density. Colors without meaning,
|
|
135
|
-
gauges without data, sparklines as ornament.
|
|
136
|
-
- **Too many axes** — dual-axis charts overlaid without clear
|
|
137
|
-
separation. Viewer can't parse which line belongs to which axis.
|
|
138
|
-
- **Chart redundancy** — the same number shown as a card, in a chart,
|
|
139
|
-
and in a table on the same screen. Pick one.
|
|
140
|
-
- **Default library output** — shipping a Recharts chart without
|
|
141
|
-
styling it. Defaults are chartjunk; strip them.
|
|
142
|
-
|
|
143
|
-
## Worked example
|
|
144
|
-
|
|
145
|
-
For POA's deal-pipeline dashboard:
|
|
146
|
-
|
|
147
|
-
Tufte's approach:
|
|
148
|
-
- **Summary metrics**: large numbers in typographic weight, no
|
|
149
|
-
background cards, minimal chrome. "42 deals / $18M pipeline /
|
|
150
|
-
Q2 close rate 34%."
|
|
151
|
-
- **Stage progression**: small-multiples of each stage's deal count
|
|
152
|
-
over time (6 small line charts in a row, shared time axis).
|
|
153
|
-
- **Deal table**: dense, many rows visible, sparklines in the "age"
|
|
154
|
-
column showing days-in-current-stage.
|
|
155
|
-
- **Colors**: only where they encode data (stage color, alert state).
|
|
156
|
-
No decorative colors.
|
|
157
|
-
|
|
158
|
-
What Tufte would NOT produce: a dashboard with 3D bar charts, gauge
|
|
159
|
-
widgets, "funnel" visualizations with decorative gradients, animated
|
|
160
|
-
transitions that slow comprehension, or sidebars of big colored cards
|
|
161
|
-
that display single numbers with excessive chrome.
|
|
162
|
-
|
|
163
|
-
## Sources
|
|
164
|
-
|
|
165
|
-
- *The Visual Display of Quantitative Information* — Tufte, Graphics
|
|
166
|
-
Press (1983, rev. 2001) — foundational text
|
|
167
|
-
- *Envisioning Information* — Tufte (1990)
|
|
168
|
-
- *Visual Explanations* — Tufte (1997)
|
|
169
|
-
- *Beautiful Evidence* — Tufte (2006)
|
|
170
|
-
- edwardtufte.com — primary site
|
|
171
|
-
|
|
172
|
-
## Related luminaries
|
|
173
|
-
|
|
174
|
-
- **Ellen Lupton** — Lupton + Tufte pair for data-dense typographic
|
|
175
|
-
surfaces. Tufte's data-ink, Lupton's type hierarchy.
|
|
176
|
-
- **Dieter Rams** — Shared restraint philosophy; Rams in physical
|
|
177
|
-
objects, Tufte in information displays.
|
|
178
|
-
- **Jony Ive** — Shared obsessive precision; Tufte at the data layer,
|
|
179
|
-
Ive at the material layer.
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
name: Eric Evans
|
|
4
|
-
slug: eric-evans
|
|
5
|
-
claimed_by: [architect]
|
|
6
|
-
referenced_by_skills: [architect-review, decompose, ia-model]
|
|
7
|
-
primary_domain: architecture
|
|
8
|
-
depth: full
|
|
9
|
-
sources:
|
|
10
|
-
- type: book
|
|
11
|
-
title: "Domain-Driven Design: Tackling Complexity in the Heart of Software"
|
|
12
|
-
authors: ["Eric Evans"]
|
|
13
|
-
year: 2003
|
|
14
|
-
url: "https://www.domainlanguage.com/ddd/"
|
|
15
|
-
isbn: "9780321125217"
|
|
16
|
-
methodology_covered:
|
|
17
|
-
- "Ubiquitous Language — single language shared by domain experts and developers"
|
|
18
|
-
- "Bounded Contexts — explicit boundaries within which a particular model is defined and applicable"
|
|
19
|
-
- "Aggregates + Aggregate Roots — clusters of associated objects treated as a unit for data changes"
|
|
20
|
-
- "Domain Events + Domain Services + Repositories + Factories"
|
|
21
|
-
- "Strategic Design — Context Mapping + relationships between bounded contexts"
|
|
22
|
-
- type: paper
|
|
23
|
-
title: "Domain-Driven Design Reference (definitions and pattern summaries)"
|
|
24
|
-
authors: ["Eric Evans"]
|
|
25
|
-
year: 2015
|
|
26
|
-
url: "https://www.domainlanguage.com/ddd/reference/"
|
|
27
|
-
methodology_covered:
|
|
28
|
-
- "Free reference document — distilled DDD patterns and definitions"
|
|
29
|
-
- "Quick-lookup vocabulary for ubiquitous-language conversations"
|
|
30
|
-
verification_status: verified
|
|
31
|
-
description: "\"The model is the backbone of the design."
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
# Eric Evans
|
|
35
|
-
|
|
36
|
-
## Signature
|
|
37
|
-
|
|
38
|
-
*"The model is the backbone of the design. Bounded contexts let multiple models coexist without collapsing into mud."*
|
|
39
|
-
|
|
40
|
-
Author of **Domain-Driven Design** (the "blue book," 2003). The
|
|
41
|
-
foundational voice on DDD — modeling complex domains through
|
|
42
|
-
ubiquitous language, bounded contexts, and strategic design.
|
|
43
|
-
|
|
44
|
-
## Core methods
|
|
45
|
-
|
|
46
|
-
- **Ubiquitous Language** — the same vocabulary used by domain experts,
|
|
47
|
-
designers, and developers. Code names match business terms. "Deal"
|
|
48
|
-
in the model IS "Deal" in the code, not "Transaction" or "Record".
|
|
49
|
-
- **Bounded Context** — an explicit boundary within which a particular
|
|
50
|
-
model applies. Multiple models can coexist (e.g., "Deal" in Acquisition
|
|
51
|
-
context vs "Deal" in Finance context) with documented translation
|
|
52
|
-
between them.
|
|
53
|
-
- **Context Map** — the strategic view of how bounded contexts relate
|
|
54
|
-
(Partnership, Shared Kernel, Customer/Supplier, Conformist, Anticorruption
|
|
55
|
-
Layer, Published Language, etc.).
|
|
56
|
-
- **Aggregates + Aggregate Roots** — cluster of domain objects treated
|
|
57
|
-
as a single unit for consistency. Root controls access; small
|
|
58
|
-
aggregates with references by ID between them.
|
|
59
|
-
- **Entities vs Value Objects** — entities have identity that persists
|
|
60
|
-
across state changes; value objects are immutable and defined by
|
|
61
|
-
their attributes (Money, DateRange, Address).
|
|
62
|
-
- **Domain Events** — things that happened in the domain worth
|
|
63
|
-
remembering (DealAdvanced, BrokerAssigned). Captured explicitly,
|
|
64
|
-
often drive integration between bounded contexts.
|
|
65
|
-
|
|
66
|
-
## When to channel this luminary
|
|
67
|
-
|
|
68
|
-
When the primary risk is domain complexity — multiple stakeholder
|
|
69
|
-
viewpoints, technical jargon that hides business meaning, or
|
|
70
|
-
schema-mirror code that ignores how the business thinks. Evans
|
|
71
|
-
dominates for B2B products with specialist users, regulated domains,
|
|
72
|
-
and enterprise integration work. Pair with Vernon (Implementing DDD —
|
|
73
|
-
operational methods) always.
|
|
74
|
-
|
|
75
|
-
Do NOT channel Evans for: CRUD apps with trivial domain logic,
|
|
76
|
-
consumer products where user is not a specialist, or single-bounded-
|
|
77
|
-
context systems small enough to model as one coherent whole.
|
|
78
|
-
|
|
79
|
-
## Stack translation
|
|
80
|
-
|
|
81
|
-
In Next.js + Prisma + TypeScript:
|
|
82
|
-
|
|
83
|
-
- **Ubiquitous Language** → Prisma model names, TypeScript types, React
|
|
84
|
-
component names, URL paths all use the same domain vocabulary as the
|
|
85
|
-
business. No translation layer needed.
|
|
86
|
-
- **Bounded Contexts** → separate domain directories under `lib/` per
|
|
87
|
-
bounded context (`lib/acquisition/`, `lib/finance/`), with explicit
|
|
88
|
-
mapping types at the boundary.
|
|
89
|
-
- **Aggregates** → Prisma's nested transaction boundaries align with
|
|
90
|
-
aggregate roots. A single `prisma.$transaction` should map to one
|
|
91
|
-
aggregate's invariants, not cross aggregates.
|
|
92
|
-
- **Value Objects** → TypeScript branded types for domain concepts
|
|
93
|
-
(`type DealId = string & { __brand: 'DealId' }`) prevent mixing.
|
|
94
|
-
- **Domain Events** → Prisma middleware hooks or explicit event-dispatch
|
|
95
|
-
in services; events drive downstream integration.
|
|
96
|
-
- **Anticorruption Layer** → adapters wrapping external APIs (enrichment
|
|
97
|
-
providers, email services) translate between their model and ours.
|
|
98
|
-
|
|
99
|
-
## Anti-patterns it prevents
|
|
100
|
-
|
|
101
|
-
- **Schema-mirror code** — code vocabulary that matches the database
|
|
102
|
-
table structure instead of the business domain. "UserDealJunction"
|
|
103
|
-
instead of "DealOwnership."
|
|
104
|
-
- **Anemic Domain Model** — objects that hold data without behavior;
|
|
105
|
-
business logic scattered across services. Evans prefers rich
|
|
106
|
-
domain objects with behavior co-located with state.
|
|
107
|
-
- **Big Ball of Mud** — one bounded context that tries to serve
|
|
108
|
-
every viewpoint. Acquisition logic mixed with reporting with
|
|
109
|
-
notifications all in one model.
|
|
110
|
-
- **Transaction Script for non-trivial domains** — procedural code
|
|
111
|
-
orchestrating DB calls; fine for simple CRUD, breaks under
|
|
112
|
-
complex business rules.
|
|
113
|
-
- **Linguistic leakage** — technical terms bleeding into business
|
|
114
|
-
communication ("let's persist the entity"). Ubiquitous Language
|
|
115
|
-
demands business vocabulary in both directions.
|
|
116
|
-
|
|
117
|
-
## Worked example
|
|
118
|
-
|
|
119
|
-
For POA's cross-module work (Acquisition + Communications + Reporting):
|
|
120
|
-
|
|
121
|
-
Evans's approach:
|
|
122
|
-
- **Three bounded contexts**, each with its own model:
|
|
123
|
-
- Acquisition: Deal, Seller, Buyer, Stage, Offer
|
|
124
|
-
- Communications: Thread, Message, Broker, Participant
|
|
125
|
-
- Reporting: DealSnapshot, StageAggregate, SourceMetrics
|
|
126
|
-
- **Context Map** showing relationships:
|
|
127
|
-
- Acquisition → Communications: Customer/Supplier (Communications
|
|
128
|
-
consumes Deal events from Acquisition)
|
|
129
|
-
- Acquisition → Reporting: Published Language (Reporting reads
|
|
130
|
-
read-only snapshots, never mutates Acquisition)
|
|
131
|
-
- **Ubiquitous Language per context** — a "Deal" in Acquisition is not
|
|
132
|
-
the same shape as a "DealSnapshot" in Reporting, and that's correct.
|
|
133
|
-
- **Aggregates**: Deal is aggregate root in Acquisition; Thread is
|
|
134
|
-
aggregate root in Communications. They reference each other by ID.
|
|
135
|
-
- **Domain Events**: `DealAdvanced` event fires from Acquisition, is
|
|
136
|
-
consumed by Communications (sends notifications) and Reporting
|
|
137
|
-
(updates aggregates).
|
|
138
|
-
|
|
139
|
-
What Evans would NOT produce: one Prisma schema where User, Deal,
|
|
140
|
-
Thread, and Report all share tables with "status" columns meaning
|
|
141
|
-
different things in different views. That's the ball of mud he's
|
|
142
|
-
explicitly preventing.
|
|
143
|
-
|
|
144
|
-
## Sources
|
|
145
|
-
|
|
146
|
-
- *Domain-Driven Design: Tackling Complexity in the Heart of Software* —
|
|
147
|
-
Evans, Addison-Wesley (2003) — THE foundational text
|
|
148
|
-
- *Domain-Driven Design Reference* — Evans (2015, free PDF at domainlanguage.com)
|
|
149
|
-
- domainlanguage.com — primary site
|
|
150
|
-
|
|
151
|
-
## Related luminaries
|
|
152
|
-
|
|
153
|
-
- **Vaughn Vernon** — Implementing DDD. Vernon operationalizes Evans
|
|
154
|
-
for teams new to DDD. Pair always.
|
|
155
|
-
- **Martin Fowler** — Patterns of Enterprise Application Architecture
|
|
156
|
-
provides implementation vocabulary for DDD's strategic concepts.
|
|
157
|
-
- **Alistair Cockburn** — Hexagonal Architecture contains bounded
|
|
158
|
-
contexts naturally; aggregates live inside hexagons.
|
|
159
|
-
- **Gregor Hohpe** — EIP's integration patterns operate across
|
|
160
|
-
Evans's context map relationships.
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
tier: lite
|
|
3
|
-
name: Frederick P. Brooks Jr.
|
|
4
|
-
slug: frederick-brooks
|
|
5
|
-
claimed_by: [orchestrator, architect]
|
|
6
|
-
referenced_by_skills: [sprint, architect-review]
|
|
7
|
-
primary_domain: orchestration
|
|
8
|
-
depth: stub
|
|
9
|
-
description: "\"Adding manpower to a late software project makes it later.\""
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Frederick P. Brooks Jr.
|
|
13
|
-
|
|
14
|
-
## Signature
|
|
15
|
-
|
|
16
|
-
*"Adding manpower to a late software project makes it later."*
|
|
17
|
-
|
|
18
|
-
Author of **The Mythical Man-Month** (1975, 1995). Canonical voice on
|
|
19
|
-
**coordination costs, communication overhead, and why software projects
|
|
20
|
-
fail at scale**. We invoke Brooks whenever the temptation is "throw more
|
|
21
|
-
agents at it."
|
|
22
|
-
|
|
23
|
-
## Core methods
|
|
24
|
-
|
|
25
|
-
- **Brooks's Law** — Adding people to a late project makes it later.
|
|
26
|
-
Onboarding cost + communication overhead > productive output of new
|
|
27
|
-
hires for the duration of the delay.
|
|
28
|
-
- **Communication overhead formula** — n people have n(n-1)/2
|
|
29
|
-
communication pathways. Coordination cost grows quadratically with team
|
|
30
|
-
size.
|
|
31
|
-
- **No silver bullet** — No single development advance will improve
|
|
32
|
-
software productivity by an order of magnitude. Beware grand claims.
|
|
33
|
-
- **Conceptual integrity over democratic design** — A single architect's
|
|
34
|
-
coherent vision beats a committee's compromise. Applies directly to
|
|
35
|
-
multi-agent orchestration: one coordinator, many executors.
|
|
36
|
-
|
|
37
|
-
## Sources
|
|
38
|
-
|
|
39
|
-
- *The Mythical Man-Month: Essays on Software Engineering* — Brooks,
|
|
40
|
-
Addison-Wesley (1975, 20th anniversary ed 1995)
|
|
41
|
-
- *"No Silver Bullet — Essence and Accident in Software Engineering"* —
|
|
42
|
-
Brooks (1986)
|
|
43
|
-
- Turing Award Lecture (1999)
|
|
44
|
-
|
|
45
|
-
## Related luminaries
|
|
46
|
-
|
|
47
|
-
- **Melvin Conway** — Conway's Law and Brooks's Law operate in the same
|
|
48
|
-
domain: organizational structure determines system structure and cost.
|
|
49
|
-
- **Catherine Wu (Anthropic)** — "Underfund on purpose" is Brooks's
|
|
50
|
-
insight applied to agent orchestration: fewer agents, tighter scope.
|