@ggdna/dna-design-layers 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) ggdna
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,35 @@
1
+ # dna_design_layers
2
+
3
+ DNA layer: the seven layers of product design — guides and `/layers-*`
4
+ skills.
5
+
6
+ ## What it ships
7
+
8
+ - `doc/guides/layers-guide.md` — the layer system, design as decision
9
+ making, how to use the skills, where results are recorded
10
+ - `doc/guides/layers/*-guide.md` — one short guide per layer plus the
11
+ orient audit
12
+ - `.claude/skills/layers-*` — nine skills that load the matching guide
13
+
14
+ The guides follow
15
+ [layers-skills](https://github.com/jamiemill/layers-skills) by Jamie Mill
16
+ (MIT). [dna_plan](https://github.com/ggdna/dna_plan) tells where the
17
+ results of a design session land in a project management repo.
18
+
19
+ ## Layers
20
+
21
+ Orthogonal: this layer carries only its own topic and is combined with the
22
+ other layers by [dna_ggdna](https://github.com/ggdna/dna_ggdna). It declares no
23
+ parent, and it must not — the umbrella lists every topic layer, so taking the
24
+ umbrella back would close a cycle, and a parent here would reach every consumer
25
+ of this topic whether that repo asked for it or not.
26
+
27
+ ## Variables
28
+
29
+ - `dnaCopyrightHolder` — the name in the license header of every file
30
+
31
+ ## Development
32
+
33
+ The `dna/` folder is hand-authored source and is never generated. The repo
34
+ instantiates its own DNA — run `dart test` after changes; commit first, a file
35
+ the DNA would overwrite must not carry uncommitted work.
package/dna/_dna.json ADDED
@@ -0,0 +1,11 @@
1
+ {
2
+ // This package is a DNA layer: dna/ is hand-authored source and is the
3
+ // last layer of its own instantiation.
4
+ "version": 1,
5
+
6
+ // No parent DNA. This layer is orthogonal: it carries only its own topic
7
+ // and is combined with the other layers by dna_ggdna. It stays parent-less
8
+ // on purpose — the umbrella lists this layer, so a parent here would close
9
+ // a cycle, and a parent would reach every consumer of this topic.
10
+ "layers": []
11
+ }
@@ -0,0 +1,101 @@
1
+ {
2
+ "version": 1,
3
+ "layers": [
4
+ {
5
+ "name": "base",
6
+ "package": "helix",
7
+ "ecosystem": null,
8
+ "resolvedVersion": "1.7.1",
9
+ "via": null,
10
+ "hash": "0x6883da335b415f9d"
11
+ },
12
+ {
13
+ "name": "self",
14
+ "package": null,
15
+ "ecosystem": null,
16
+ "resolvedVersion": null,
17
+ "via": null,
18
+ "hash": "0x299cd5817d7063f2"
19
+ }
20
+ ],
21
+ "claude": {
22
+ "claudeMdInclude": null,
23
+ "claudeMdFromDna": false
24
+ },
25
+ "baseVersion": "1.7.1",
26
+ "baseHash": "0x6883da335b415f9d",
27
+ "instances": [
28
+ {
29
+ "path": ".claude/skills/layers-conceptual-model/SKILL.md",
30
+ "hash": "0xda240030955579b8"
31
+ },
32
+ {
33
+ "path": ".claude/skills/layers-domain/SKILL.md",
34
+ "hash": "0xda08f4d45ff49767"
35
+ },
36
+ {
37
+ "path": ".claude/skills/layers-interaction-flow/SKILL.md",
38
+ "hash": "0x796a950f8a179288"
39
+ },
40
+ {
41
+ "path": ".claude/skills/layers-intro/SKILL.md",
42
+ "hash": "0x06c1d26e36f43472"
43
+ },
44
+ {
45
+ "path": ".claude/skills/layers-observed-behaviour/SKILL.md",
46
+ "hash": "0x4108cd91e4e773cd"
47
+ },
48
+ {
49
+ "path": ".claude/skills/layers-orient/SKILL.md",
50
+ "hash": "0xec099416bd393283"
51
+ },
52
+ {
53
+ "path": ".claude/skills/layers-product-strategy/SKILL.md",
54
+ "hash": "0xe88cb0659fdbafce"
55
+ },
56
+ {
57
+ "path": ".claude/skills/layers-surface/SKILL.md",
58
+ "hash": "0x3629176c7b400675"
59
+ },
60
+ {
61
+ "path": ".claude/skills/layers-user-needs/SKILL.md",
62
+ "hash": "0x78edeebd96aba9bc"
63
+ },
64
+ {
65
+ "path": "doc/guides/layers-guide.md",
66
+ "hash": "0x83e39ffe86369c5e"
67
+ },
68
+ {
69
+ "path": "doc/guides/layers/conceptual-model-guide.md",
70
+ "hash": "0x3c0656b53f857fb8"
71
+ },
72
+ {
73
+ "path": "doc/guides/layers/domain-guide.md",
74
+ "hash": "0x106bb263eb05982a"
75
+ },
76
+ {
77
+ "path": "doc/guides/layers/interaction-flow-guide.md",
78
+ "hash": "0xd5d3fb1b895d633c"
79
+ },
80
+ {
81
+ "path": "doc/guides/layers/observed-behaviour-guide.md",
82
+ "hash": "0x056a0821aa714763"
83
+ },
84
+ {
85
+ "path": "doc/guides/layers/orient-guide.md",
86
+ "hash": "0x8cb92c6b4f366acb"
87
+ },
88
+ {
89
+ "path": "doc/guides/layers/product-strategy-guide.md",
90
+ "hash": "0x299f8885030cfc02"
91
+ },
92
+ {
93
+ "path": "doc/guides/layers/surface-guide.md",
94
+ "hash": "0x9281d6ca67379aa9"
95
+ },
96
+ {
97
+ "path": "doc/guides/layers/user-needs-guide.md",
98
+ "hash": "0x90e00fcd4243afda"
99
+ }
100
+ ]
101
+ }
package/dna/_vars.json ADDED
@@ -0,0 +1,3 @@
1
+ {
2
+ "dnaCopyrightHolder": "ggdna"
3
+ }
@@ -0,0 +1,67 @@
1
+ <!--
2
+ @license
3
+ Copyright (c) dnaCopyrightHolder
4
+
5
+ Use of this source code is governed by terms that can be
6
+ found in the LICENSE file in the root of this package.
7
+ -->
8
+
9
+ # Conceptual model guide
10
+
11
+ Layer 5 of 7, solution space. Skill: `/layers-conceptual-model`.
12
+
13
+ ## Know what this layer is
14
+
15
+ - The objects the product recognises, their relations, states and
16
+ vocabulary — independent of any interface
17
+ - The most neglected load-bearing layer; give it more attention than feels
18
+ comfortable
19
+ - Not the users' mental model, not a database schema
20
+
21
+ ## Decide
22
+
23
+ - Which objects exist and where their boundaries are
24
+ - How objects relate: cardinality and named roles
25
+ - What a user can do with each object
26
+ - Which states and transitions matter
27
+ - One name per concept, one concept per name
28
+
29
+ ## Keep it honest
30
+
31
+ - Real objects only: instanceable, structured, useful; "CAC" is an
32
+ instance of Metric
33
+ - Model an attribute that names another object as a relationship
34
+ - No speculative additions; every element traces to a stated need
35
+ - Can-be-an-object is not should-be-first-class; justify persistence by a
36
+ concrete flow, mark bets as provisional
37
+ - Split generic verbs that hide different consequences: correct an address
38
+ vs register a move
39
+ - Redirect implementation talk to what the user can do
40
+
41
+ ## Pick a technique
42
+
43
+ | Situation | Technique |
44
+ | ------------------------------ | ------------------------------------- |
45
+ | Material to mine | Noun foraging, OOUX |
46
+ | One object unclear | Object definition |
47
+ | Objecthood uncertain | Sketch the flow first, then formalise |
48
+ | Relations to check | Relational object map (`erDiagram`) |
49
+ | Status changes what is allowed | State diagram (`stateDiagram-v2`) |
50
+ | Verbs inconsistent | Action inventory across all objects |
51
+ | Naming contested | Ubiquitous language list |
52
+ | Redesign | Walk the existing product |
53
+
54
+ Probe the temporal decisions: intermediate states, read lag, relationship
55
+ over time, deletion semantics, history.
56
+
57
+ ## Capture
58
+
59
+ - Settled object definitions, provisional ones marked
60
+ - Diagrams that encode a real relation or lifecycle
61
+ - Vocabulary decisions with rejected alternatives
62
+ - Open questions for engineering
63
+
64
+ ## Continue
65
+
66
+ When objects and actions are stable, design how users move through them:
67
+ [interaction flow](interaction-flow-guide.md).
@@ -0,0 +1,56 @@
1
+ <!--
2
+ @license
3
+ Copyright (c) dnaCopyrightHolder
4
+
5
+ Use of this source code is governed by terms that can be
6
+ found in the LICENSE file in the root of this package.
7
+ -->
8
+
9
+ # Domain guide
10
+
11
+ Layer 2 of 7, problem space. Skill: `/layers-domain`.
12
+
13
+ ## Know what this layer is
14
+
15
+ - What exists in the real world before any product: concepts, terms,
16
+ processes, mental models
17
+ - Observation, not design
18
+
19
+ ## Decide
20
+
21
+ - Which key concepts exist and how they relate
22
+ - Which words people use, and where they conflict
23
+ - Where the seams are: groups using the same word differently
24
+ - Which events and processes structure the domain over time
25
+
26
+ ## Keep it honest
27
+
28
+ - Record contradictions, do not resolve them; resolution belongs to the
29
+ conceptual model
30
+ - Stay in the real world; push back on product or interface talk
31
+ - Mark nouns as object / attribute / instance / unclear, filter little
32
+ - Say when you map team beliefs instead of researched fact
33
+
34
+ ## Pick a technique
35
+
36
+ | Situation | Technique |
37
+ | ------------------------------- | ------------------------------ |
38
+ | Relations unclear | Concept map (`graph TD`) |
39
+ | Language contested | Terminology audit |
40
+ | Groups diverge | Bounded-context mapping |
41
+ | Process-heavy domain | Domain event storming |
42
+ | Knowledge lives in people | Expert interviews, shadowing |
43
+ | Domain produces forms, invoices | Document and artefact analysis |
44
+ | Established market | Competitive analysis |
45
+
46
+ ## Capture
47
+
48
+ - Concept map, if it earned its place
49
+ - Terminology conflicts and bounded contexts
50
+ - Key events
51
+ - Noun harvest
52
+
53
+ ## Continue
54
+
55
+ The noun harvest is the raw material of the
56
+ [conceptual model](conceptual-model-guide.md).
@@ -0,0 +1,67 @@
1
+ <!--
2
+ @license
3
+ Copyright (c) dnaCopyrightHolder
4
+
5
+ Use of this source code is governed by terms that can be
6
+ found in the LICENSE file in the root of this package.
7
+ -->
8
+
9
+ # Interaction flow guide
10
+
11
+ Layer 6 of 7, solution space. Skill: `/layers-interaction-flow`.
12
+
13
+ ## Know what this layer is
14
+
15
+ - The places a user moves through, the affordances in each, the content
16
+ shown, the flow between states
17
+ - Above the model (what exists), below the surface (how it looks)
18
+ - Always for one user in one situation doing one job
19
+
20
+ ## Decide
21
+
22
+ - Which places the flow moves through
23
+ - What the user can do in each place, and where it leads
24
+ - What content each place shows
25
+ - What happens on failure, empty and edge cases
26
+ - Whether the flow is as simple as it can be
27
+
28
+ ## Keep it honest
29
+
30
+ - Every affordance has a named destination
31
+ - Edges are required steps: validation, server error, disconnect, timeout,
32
+ concurrent edit, empty, loading, post-action, cancel
33
+ - No broken objects: attributes and actions of an object stay together
34
+ - No isolated objects: every relation is navigable or deliberately not
35
+ - Vocabulary matches the ubiquitous language
36
+ - Name places for users; more than 5–6 places per job is a signal
37
+
38
+ ## Pick a technique
39
+
40
+ | Situation | Technique |
41
+ | ------------------------ | ------------------------- |
42
+ | Default | Breadboarding |
43
+ | Finding unmade decisions | Walk the flow as the user |
44
+ | Much to plan, many users | User story mapping |
45
+ | Redesign | Task analysis |
46
+ | Channels and backstage | Service blueprinting |
47
+ | Orientation only | Flow diagram (`graph LR`) |
48
+
49
+ Breadboard notation:
50
+
51
+ ```text
52
+ Place name
53
+ - affordance → destination place
54
+ [ content shown in this place ]
55
+ ```
56
+
57
+ ## Capture
58
+
59
+ - The breadboard: places, affordances, destinations, content, conditions
60
+ - A flow diagram, if it aids orientation
61
+ - Open decisions and unresolved edge cases
62
+ - Risks that depend on unsettled lower layers
63
+
64
+ ## Continue
65
+
66
+ Check that the [conceptual model](conceptual-model-guide.md) is stable,
67
+ then move to the [surface](surface-guide.md).
@@ -0,0 +1,52 @@
1
+ <!--
2
+ @license
3
+ Copyright (c) dnaCopyrightHolder
4
+
5
+ Use of this source code is governed by terms that can be
6
+ found in the LICENSE file in the root of this package.
7
+ -->
8
+
9
+ # Observed behaviour guide
10
+
11
+ Layer 1 of 7, problem space. Skill: `/layers-observed-behaviour`.
12
+
13
+ ## Know what this layer is
14
+
15
+ - What users actually do, said and did — not what the team believes
16
+ - The source of everything above; all other layers interpret it
17
+
18
+ ## Decide
19
+
20
+ - Which 2–3 questions about users need an answer
21
+ - Which evidence exists and how reliable it is
22
+ - How to gather what is missing
23
+ - Which patterns hold with confidence, which stay assumptions
24
+
25
+ ## Keep it honest
26
+
27
+ - Stay close to raw data: quotes, actions, feelings
28
+ - Mark every finding: observed / inferred / assumed
29
+ - Name research gaps instead of papering over them
30
+ - Treat workarounds as strong signal
31
+
32
+ ## Pick a technique
33
+
34
+ | Situation | Technique |
35
+ | -------------------------------- | -------------------------------------- |
36
+ | No research yet | Define the learning goal, then a study |
37
+ | Triggers and motivations unclear | JTBD interviews about a real past case |
38
+ | Saying differs from doing | Contextual inquiry, shadowing |
39
+ | Existing product | Support tickets, analytics, usability |
40
+ | Material exists | Extract observations, group patterns |
41
+
42
+ ## Capture
43
+
44
+ - Key raw observations with their source
45
+ - Patterns with supporting evidence
46
+ - Candidate job stories with confidence
47
+ - Named research gaps
48
+
49
+ ## Continue
50
+
51
+ Refine the candidate job stories in the [user needs](user-needs-guide.md)
52
+ layer; feed the nouns you heard into the [domain](domain-guide.md) layer.
@@ -0,0 +1,56 @@
1
+ <!--
2
+ @license
3
+ Copyright (c) dnaCopyrightHolder
4
+
5
+ Use of this source code is governed by terms that can be
6
+ found in the LICENSE file in the root of this package.
7
+ -->
8
+
9
+ # Orient guide
10
+
11
+ The front door of the layer system. Skill: `/layers-orient`.
12
+
13
+ ## Know what orient is
14
+
15
+ - A rapid audit across all seven layers, not a deep dive into one
16
+ - Answers one question: which layer needs attention most urgently?
17
+ - Output: a short audit table and one recommendation
18
+
19
+ ## Ask three questions
20
+
21
+ - Which product or feature is this about?
22
+ - Which design challenge prompted this?
23
+ - How far along is the work: early exploration, active design, fixing an
24
+ existing product?
25
+
26
+ ## Audit every layer
27
+
28
+ Ask one or two targeted questions per layer and rate it:
29
+ strong / partial / assumed / weak / not started / n/a.
30
+
31
+ | Layer | Ask |
32
+ | ------------------ | ---------------------------------------------------- |
33
+ | Observed behaviour | Research, analytics, or team belief? |
34
+ | Domain | How well is the space understood before the product? |
35
+ | User needs | Can you state the job and why it matters? |
36
+ | Product strategy | Which need, which business outcome, explicit? |
37
+ | Conceptual model | Clear, shared objects and vocabulary? |
38
+ | Interaction flow | Key journeys with places, steps, decision points? |
39
+ | Surface | Existing design system or visual language? |
40
+
41
+ ## Find the bottleneck
42
+
43
+ - The bottleneck is the lowest layer rated weak, assumed or not started
44
+ - Name it, the missing decisions, and the risk for the layers above
45
+ - Flag assumed layers separately: they look solid and hide the risk
46
+ - Acknowledge deadlines that change the calculus; name the trade-off
47
+
48
+ ## Recommend one next step
49
+
50
+ - Name the layer guide to work next and why
51
+ - Ask whether to run it now or to push back on the picture first
52
+
53
+ ## Capture
54
+
55
+ - The audit table
56
+ - The bottleneck and the recommendation, one line each
@@ -0,0 +1,60 @@
1
+ <!--
2
+ @license
3
+ Copyright (c) dnaCopyrightHolder
4
+
5
+ Use of this source code is governed by terms that can be
6
+ found in the LICENSE file in the root of this package.
7
+ -->
8
+
9
+ # Product strategy guide
10
+
11
+ Layer 4 of 7, first layer of the solution space. Skill:
12
+ `/layers-product-strategy`.
13
+
14
+ ## Know what this layer is
15
+
16
+ - Where understanding turns into choices: which needs to serve, which
17
+ business outcome to target
18
+ - Bets, not certainties
19
+
20
+ ## Decide
21
+
22
+ - The business outcome this work serves
23
+ - Which opportunities connect to that outcome
24
+ - Which solution bets to place on them
25
+ - How to test the riskiest assumption cheaply
26
+ - Which bets come first, and why
27
+
28
+ ## Keep it honest
29
+
30
+ - One measurable, bounded outcome per tree
31
+ - Opportunities are first-person needs anchored to a journey moment, not
32
+ features; apply the flip test
33
+ - Every opportunity connects to the outcome
34
+ - Every bet names its riskiest assumption; more than one bet per opportunity
35
+ - Every experiment is the cheapest test: days, not months
36
+
37
+ ## Pick a technique
38
+
39
+ | Situation | Technique |
40
+ | --------------------------- | -------------------------------------- |
41
+ | Default | Opportunity solution tree |
42
+ | Chosen opportunity | Solution bets plus experiments |
43
+ | Many candidate features | Kano analysis, jobs portfolio |
44
+ | Choosing the outcome metric | HEART, North Star |
45
+ | Shared timeline needed | Now / next / later roadmap |
46
+ | Positioning, build or buy | Wardley mapping, bundling / unbundling |
47
+ | Which flow first | Critical user journeys |
48
+
49
+ ## Capture
50
+
51
+ - The outcome
52
+ - The opportunity tree, grouped by journey moment
53
+ - The top 2–3 bets with their experiments
54
+ - Deferred bets and untested assumptions
55
+
56
+ ## Continue
57
+
58
+ The chosen bets define what to model next in the
59
+ [conceptual model](conceptual-model-guide.md). Goals of a quarter live in
60
+ `goals` of the PM repo.
@@ -0,0 +1,63 @@
1
+ <!--
2
+ @license
3
+ Copyright (c) dnaCopyrightHolder
4
+
5
+ Use of this source code is governed by terms that can be
6
+ found in the LICENSE file in the root of this package.
7
+ -->
8
+
9
+ # Surface guide
10
+
11
+ Layer 7 of 7, solution space. Skill: `/layers-surface`.
12
+
13
+ ## Know what this layer is
14
+
15
+ - Where everything below becomes what a person encounters: words, visuals,
16
+ motion, feedback
17
+ - Surface problems are often symptoms of deeper layers
18
+
19
+ ## Decide
20
+
21
+ - Whether the surface honours the model's vocabulary and objects
22
+ - Whether every affordance of the breadboard is present, and nothing exists
23
+ without a model behind it
24
+ - Whether the emotional register fits the users' jobs
25
+ - How users know what happened, is in progress, or failed
26
+ - What is most prominent, and whether it should be
27
+ - Whether everything is accessible to the users who need it
28
+
29
+ ## Keep it honest
30
+
31
+ - Tell surface fixes from deeper issues; route deeper ones back to their
32
+ layer
33
+ - Terms match the ubiquitous language
34
+ - No shapeshifters, no masked objects
35
+ - Errors diagnose, explain and offer recovery
36
+ - Prominence reflects importance
37
+ - Accessibility is decided, not defaulted
38
+
39
+ ## Pick a technique
40
+
41
+ | Situation | Technique |
42
+ | --------------------------- | -------------------------------------------- |
43
+ | Terms feel off | Vocabulary check |
44
+ | Same object looks different | Object-consistency check |
45
+ | Something missing or extra | Completeness check vs breadboard |
46
+ | Tone misaligned | Emotional-register check |
47
+ | Users unsure what happened | Feedback and error inventory |
48
+ | Too much competes | Hierarchy review |
49
+ | Left to defaults | Accessibility pass |
50
+ | Producing surface | Mockups, style tiles, prototypes, copy first |
51
+
52
+ ## Capture
53
+
54
+ - Findings, each tagged surface fix or deeper-layer issue
55
+ - Open surface decisions with options and constraints
56
+ - Cross-layer issues to resolve first
57
+ - What already works well
58
+
59
+ ## Continue
60
+
61
+ Revisit the surface after every significant change to the
62
+ [conceptual model](conceptual-model-guide.md) or
63
+ [interaction flow](interaction-flow-guide.md).
@@ -0,0 +1,55 @@
1
+ <!--
2
+ @license
3
+ Copyright (c) dnaCopyrightHolder
4
+
5
+ Use of this source code is governed by terms that can be
6
+ found in the LICENSE file in the root of this package.
7
+ -->
8
+
9
+ # User needs guide
10
+
11
+ Layer 3 of 7, problem space. Skill: `/layers-user-needs`.
12
+
13
+ ## Know what this layer is
14
+
15
+ - What users try to achieve, and why — an interpretation of observed
16
+ behaviour and domain knowledge
17
+ - Output: opportunities — needs, pains, desires
18
+
19
+ ## Decide
20
+
21
+ - Who exactly the users are, and in which situation
22
+ - Which jobs they do: functional, emotional, social
23
+ - Which needs are grounded, which are assumed
24
+ - Which needs matter most, and why
25
+
26
+ ## Keep it honest
27
+
28
+ - State the need, not the solution; push past "I want to export CSV"
29
+ - Strip the mechanism: the "when" must not name your current system
30
+ - Make the "when" picturable: an event, a feeling, a threshold
31
+ - Ask for emotional and social jobs explicitly
32
+ - Mark confidence: observed / inferred / assumed
33
+
34
+ ## Pick a technique
35
+
36
+ | Situation | Technique |
37
+ | --------------------- | ------------------------------------------ |
38
+ | Default | Job stories: when, I want, so I can |
39
+ | Team works role-based | User stories |
40
+ | Large user base | Top tasks analysis |
41
+ | Stakeholder alignment | Persona plus scenario |
42
+ | Measurability matters | ODI desired outcomes |
43
+ | Many needs | Prioritise: importance × how poorly served |
44
+
45
+ ## Capture
46
+
47
+ - Prioritised needs with confidence
48
+ - Surfaced but unprioritised needs
49
+ - Gaps and contradictions between user types
50
+
51
+ ## Continue
52
+
53
+ The needs are the opportunities of the
54
+ [product strategy](product-strategy-guide.md). If most are assumed, go back
55
+ to [observed behaviour](observed-behaviour-guide.md) first.
@@ -0,0 +1,65 @@
1
+ <!--
2
+ @license
3
+ Copyright (c) dnaCopyrightHolder
4
+
5
+ Use of this source code is governed by terms that can be
6
+ found in the LICENSE file in the root of this package.
7
+ -->
8
+
9
+ # Layers guide
10
+
11
+ ## Know the layer system
12
+
13
+ - "Layers of Product Design" splits design work into seven layers in
14
+ three zones; these guides follow
15
+ [layers-skills](https://github.com/jamiemill/layers-skills) by Jamie
16
+ Mill (MIT)
17
+ - Lower layers are foundations for upper ones; a weak lower layer creates
18
+ debt in every layer above
19
+ - Enter at any layer, but check the layers below before building upward
20
+
21
+ Problem space — knowledge gathered from reality:
22
+
23
+ - 1 [Observed behaviour](layers/observed-behaviour-guide.md) — what users
24
+ actually do
25
+ - 2 [Domain](layers/domain-guide.md) — what exists before our product
26
+ - 3 [User needs](layers/user-needs-guide.md) — what users try to achieve,
27
+ and why
28
+
29
+ Solution space — deliberate decisions about what to build:
30
+
31
+ - 4 [Product strategy](layers/product-strategy-guide.md) — which needs we
32
+ serve, for which outcome
33
+ - 5 [Conceptual model](layers/conceptual-model-guide.md) — which objects,
34
+ relations and words
35
+ - 6 [Interaction flow](layers/interaction-flow-guide.md) — which places,
36
+ actions and paths
37
+ - 7 [Surface](layers/surface-guide.md) — what users see, read and hear
38
+
39
+ ## Treat design as decision making
40
+
41
+ - Every layer makes decisions; artefacts only record them
42
+ - Four kinds of progress: make a decision, uncover an unmade one, evaluate
43
+ a risky one, prioritise
44
+ - Work one layer at a time; do not mix problem space and solution space
45
+ - Flag bad decisions, not only missing ones
46
+ - Capture decisions, not transcripts; keep the record short
47
+
48
+ ## Use the skills
49
+
50
+ - Load `/layers-intro` at the start of every design session
51
+ - Run `/layers-orient` when unsure which layer needs attention, see the
52
+ [orient guide](layers/orient-guide.md)
53
+ - Run the skill of the layer you work on: `/layers-observed-behaviour`,
54
+ `/layers-domain`, `/layers-user-needs`, `/layers-product-strategy`,
55
+ `/layers-conceptual-model`, `/layers-interaction-flow`, `/layers-surface`
56
+ - Each skill reads its guide; a guide is a library of techniques, not a
57
+ script: pick one technique for the live decision, work it, capture the
58
+ residue
59
+
60
+ ## Record the results
61
+
62
+ - Write the residue of a session into the project management repo, see the
63
+ [PM repo guide](pm-repo-guide.md#use-the-design-layers)
64
+ - One decision per file in `concepts/decisions`; everything else in the
65
+ topic, ux or goal file it belongs to
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: layers-conceptual-model
3
+ description: Define the product's objects, relationships, states and vocabulary independently of any interface
4
+ ---
5
+
6
+ # /layers-conceptual-model
7
+
8
+ Read
9
+ [conceptual-model-guide.md](../../../doc/guides/layers/conceptual-model-guide.md)
10
+ and work by it. Read
11
+ [layers-guide.md](../../../doc/guides/layers-guide.md) first if this is the
12
+ first layer skill in the session.
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: layers-domain
3
+ description: Map a domain's concepts, terminology conflicts and bounded contexts — the raw material of the conceptual model
4
+ ---
5
+
6
+ # /layers-domain
7
+
8
+ Read
9
+ [domain-guide.md](../../../doc/guides/layers/domain-guide.md)
10
+ and work by it. Read
11
+ [layers-guide.md](../../../doc/guides/layers-guide.md) first if this is the
12
+ first layer skill in the session.
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: layers-interaction-flow
3
+ description: Map places, affordances, edge cases and failure paths of a flow without committing to visual form
4
+ ---
5
+
6
+ # /layers-interaction-flow
7
+
8
+ Read
9
+ [interaction-flow-guide.md](../../../doc/guides/layers/interaction-flow-guide.md)
10
+ and work by it. Read
11
+ [layers-guide.md](../../../doc/guides/layers-guide.md) first if this is the
12
+ first layer skill in the session.
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: layers-intro
3
+ description: Framework orientation for Layers of Product Design — load this first; provides the context all other layers skills depend on
4
+ ---
5
+
6
+ # /layers-intro
7
+
8
+ Read [layers-guide.md](../../../doc/guides/layers-guide.md) and work by it
9
+ for the rest of the session.
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: layers-observed-behaviour
3
+ description: Plan user research and synthesise it into confidence-rated findings about what users actually do
4
+ ---
5
+
6
+ # /layers-observed-behaviour
7
+
8
+ Read
9
+ [observed-behaviour-guide.md](../../../doc/guides/layers/observed-behaviour-guide.md)
10
+ and work by it. Read
11
+ [layers-guide.md](../../../doc/guides/layers-guide.md) first if this is the
12
+ first layer skill in the session.
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: layers-orient
3
+ description: Diagnostic audit across all seven layers — identifies the bottleneck layer and recommends where to focus
4
+ ---
5
+
6
+ # /layers-orient
7
+
8
+ Read
9
+ [orient-guide.md](../../../doc/guides/layers/orient-guide.md)
10
+ and work by it. Read
11
+ [layers-guide.md](../../../doc/guides/layers-guide.md) first if this is the
12
+ first layer skill in the session.
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: layers-product-strategy
3
+ description: Connect user opportunities to business outcomes and solution bets, and test the riskiest assumptions cheaply
4
+ ---
5
+
6
+ # /layers-product-strategy
7
+
8
+ Read
9
+ [product-strategy-guide.md](../../../doc/guides/layers/product-strategy-guide.md)
10
+ and work by it. Read
11
+ [layers-guide.md](../../../doc/guides/layers-guide.md) first if this is the
12
+ first layer skill in the session.
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: layers-surface
3
+ description: Audit and decide the surface against the layers below — vocabulary, consistency, feedback, hierarchy, accessibility
4
+ ---
5
+
6
+ # /layers-surface
7
+
8
+ Read
9
+ [surface-guide.md](../../../doc/guides/layers/surface-guide.md)
10
+ and work by it. Read
11
+ [layers-guide.md](../../../doc/guides/layers-guide.md) first if this is the
12
+ first layer skill in the session.
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: layers-user-needs
3
+ description: Elicit and prioritise user needs, pains and desires — the opportunities that feed product strategy
4
+ ---
5
+
6
+ # /layers-user-needs
7
+
8
+ Read
9
+ [user-needs-guide.md](../../../doc/guides/layers/user-needs-guide.md)
10
+ and work by it. Read
11
+ [layers-guide.md](../../../doc/guides/layers-guide.md) first if this is the
12
+ first layer skill in the session.
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@ggdna/dna-design-layers",
3
+ "version": "0.1.0",
4
+ "description": "DNA layer: the seven layers of product design - guides and /layers-* skills",
5
+ "keywords": [
6
+ "dna",
7
+ "helix",
8
+ "conventions",
9
+ "scaffolding"
10
+ ],
11
+ "homepage": "https://github.com/ggdna/dna_design_layers",
12
+ "bugs": "https://github.com/ggdna/dna_design_layers/issues",
13
+ "license": "MIT",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/ggdna/dna_design_layers.git"
17
+ },
18
+ "type": "module",
19
+ "files": [
20
+ "dna",
21
+ "README.md",
22
+ "LICENSE"
23
+ ],
24
+ "engines": {
25
+ "node": ">=22"
26
+ },
27
+ "publishConfig": {
28
+ "access": "public"
29
+ },
30
+ "scripts": {
31
+ "test:dart": "dart test",
32
+ "test": "pnpm run test:dart",
33
+ "prepublishOnly": "pnpm run test",
34
+ "format": "prettier --write .",
35
+ "format:check": "prettier --check ."
36
+ },
37
+ "devDependencies": {
38
+ "@types/node": "^26.4.1",
39
+ "prettier": "^3.9.6"
40
+ }
41
+ }