@boopkit/cap-product-design 0.6.3 → 0.6.5
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/capability.json
CHANGED
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
"boop-product-design-feature-requirements",
|
|
12
12
|
"boop-product-design-reference-integration",
|
|
13
13
|
"boop-product-design-thought-partnership",
|
|
14
|
-
"boop-writing-technical-prose"
|
|
14
|
+
"boop-writing-technical-prose",
|
|
15
|
+
"boop-writing-documents"
|
|
15
16
|
],
|
|
16
17
|
"skill_migrations": {
|
|
17
18
|
"boop-product-design-engineering-design": "design.engineering-design.skill.md",
|
package/package.json
CHANGED
|
@@ -33,6 +33,7 @@ For UI features, the same principle applies one level deeper: the hardest part i
|
|
|
33
33
|
- **Non-Goals are as important as Goals** — they prevent scope creep and make trade-off reasoning explicit
|
|
34
34
|
- **Alternatives section earns trust** — showing what you rejected (and why) is what separates a design from a description
|
|
35
35
|
- **Details should be selective** — document the tricky parts and link to the rest; don't rewrite the code in prose
|
|
36
|
+
- **Prefer grounded terminology** — name things with generally-accepted software-engineering and product terms, and reuse the codebase's own names for things that already exist; avoid coined metaphors and vague shorthand ("the spine," "the gate," "the fix"). A design doc full of private labels costs every reader a translation pass. See `boop-writing-technical-prose` (anti-pattern 13).
|
|
36
37
|
- **Design docs live in `specs/`** — see [engineering-planning](./proj.engineering-planning.skill.md) for how designs become work plans
|
|
37
38
|
|
|
38
39
|
## For refactor specs: audit current state first
|
|
@@ -82,6 +83,21 @@ Refactor specs without a Current State section produce two failure modes that sh
|
|
|
82
83
|
|
|
83
84
|
The audit converts both failure modes from review-time surprises into draft-time inputs. The cost is reading the existing code before drafting; it is small, and far smaller than the operator review effort spent catching what the spec failed to document.
|
|
84
85
|
|
|
86
|
+
## State requirements as expectations, not as defects
|
|
87
|
+
|
|
88
|
+
Write what the design should *do*, not what today gets wrong. This holds even when the defects are real and freshly observed — especially then, because a concrete defect list is the most tempting thing to lead with.
|
|
89
|
+
|
|
90
|
+
A spec that opens with "the list shows only one owner, uses the wrong verb, and omits attribution" has three problems. The reader has to invert each item to work out what to build, which is work you could have done for them. The negatives become the thing they orient around, so the design converges on patching those three symptoms rather than serving the goal. And it under-specifies: "do not show only one owner" leaves open what *should* be shown, while "every owner appears, carrying its own state" answers it and covers the observed defect on the way past.
|
|
91
|
+
|
|
92
|
+
The positive form is also more durable. Defects get fixed and the prose goes stale; the expectation stays true.
|
|
93
|
+
|
|
94
|
+
- **Rewrite each defect as the expectation that supersedes it.** "The label says assigned when nothing is assigned" becomes "the wording matches what has actually happened."
|
|
95
|
+
- **Keep the current state, but neutral and brief.** A refactor spec still owes the reader a Current State section (above) so the design composes with what shipped. One factual sentence — "this surface was built when an item had a single owner" — grounds the reader without setting a negative frame. A bulleted defect list does not.
|
|
96
|
+
- **Put genuinely rejected approaches in Alternatives.** That is what the section is for, and it reads as judgement there rather than as grievance in the requirements.
|
|
97
|
+
- **Never describe a mechanism that does not exist.** Naming a component the reader will go looking for — a service, a helper, a "pipeline" that was never built — is worse than being vague. Vagueness makes them investigate; false precision makes them hunt, or build a wrapper to match your description. If you are unsure a thing exists, say what should be true instead of naming the thing.
|
|
98
|
+
|
|
99
|
+
This is a stronger form of the strawman rule: do not motivate a design against a wrong implementation, real or imagined. State the destination.
|
|
100
|
+
|
|
85
101
|
## Architecture Layering
|
|
86
102
|
|
|
87
103
|
Well-designed systems separate concerns into layers with clear responsibilities and one-directional dependencies. The exact layers vary by project type, but the principle is universal:
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: boop-writing-documents
|
|
3
|
+
description: "When you need to write a document someone will read cold and act on — a proposal, strategy memo, analysis, recommendation, or status write-up — and want the discipline of the Amazon six-pager: narrative prose, a declared length budget, claims that carry their evidence, and the hard questions answered inside the document."
|
|
4
|
+
metadata:
|
|
5
|
+
category: writing
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Writing Documents
|
|
9
|
+
|
|
10
|
+
When you need to write a document a colleague will read on their own and then act on, write it as narrative prose under a length limit you set before you start, using the discipline the Amazon six-page memo enforces — even when the six-pager's literal sections are the wrong shape for the job.
|
|
11
|
+
|
|
12
|
+
## Goal
|
|
13
|
+
|
|
14
|
+
**A document has to carry a reader from not knowing to being able to act, in one silent read, with the author unavailable to explain anything.** That is the standard the six-pager is built around: the meeting opens with everyone reading the memo in silence, so the document is the entire presentation. There is no narration holding it together and no chance to answer a question in the moment.
|
|
15
|
+
|
|
16
|
+
Two beliefs do most of the work, and both are about the writer rather than the reader.
|
|
17
|
+
|
|
18
|
+
**Prose in full sentences is a thinking instrument.** A bullet list lets you set two claims side by side without ever stating how the first supports the second. That relationship *is* the argument, and in a list nobody has to write it down — not the reader, and more importantly not the writer. A paragraph forces the connecting sentence to exist, and the moment you find you cannot write that sentence, you have discovered you do not yet have an argument. This is the facet of the six-pager most worth keeping everywhere. It is why the format bans slides, and it is why a good memo takes several drafts rather than one.
|
|
19
|
+
|
|
20
|
+
**A length budget is what makes a document say something.** Selection only happens against a constraint. With no limit, every true sentence survives and the reader receives a survey instead of a position. Six pages is Amazon's number and there is nothing special about six. Pick a number before you write — half a page, two pages, six — and treat it as fixed. When the material will not fit, cut content: decide what this reader does not need. Do not reclaim space by compressing paragraphs into bullets, which trades the argument for the appearance of one.
|
|
21
|
+
|
|
22
|
+
### Write so the reader needs no pre-existing context
|
|
23
|
+
|
|
24
|
+
**Write so a reader, whether a fresh agent or a human, can use the artifact without much pre-existing context.** The reader was not in the planning session and did not grow up with the project's internal vocabulary. They should be able to read the prose and understand it. When that constraint is met the writing is doing its job. When it is not — when the reader has to translate from shorthand into normal language before they can start — the writing is spending the reader's attention on decoding instead of on the work.
|
|
25
|
+
|
|
26
|
+
Two properties do most of that work:
|
|
27
|
+
|
|
28
|
+
- **Words both common and specific.** Use ordinary words for ordinary meaning and the real technical term when the subject is technical. These pull in the same direction: `column`, `foreign key`, `parameter`, `index` are common *and* exact, and a sentence built from them is readable and precise at once. The failure is a word that is neither — vague but technical-sounding, or coined on the spot. If a word feels precise but you cannot point to where the industry defined it, you have reached for the feeling of precision instead of the thing.
|
|
29
|
+
- **Context local to the paragraph.** Each paragraph carries what it needs to be understood on its own. Do not refer back to a label, abbreviation, or shorthand defined earlier and leave the reader to reassemble it. Restate the thing in a few words at the point of use, even when you defined it two paragraphs above: it costs a clause and saves a lookup. This matters most in summaries and conclusions, which is exactly where compression is most tempting, because by then the content feels settled to the writer and is still new to the reader.
|
|
30
|
+
|
|
31
|
+
Apply both hardest when summarizing, concluding, or recommending. Those are the passages a reader is most likely to read alone, out of order, or months later. For the full treatment of this, including the anti-patterns, see [`boop-writing-technical-prose`](../boop-writing-technical-prose/SKILL.md).
|
|
32
|
+
|
|
33
|
+
## What carries over from the six-pager
|
|
34
|
+
|
|
35
|
+
These apply to any document, whatever its sections.
|
|
36
|
+
|
|
37
|
+
1. **A purpose line at the top that names the reader and their job.** Not a line describing the document's subject. "For the engineer decomposing this into tasks: what changes, in what order, and which decisions are already settled" names a reader and a job. "What we need to build" only describes the document. That line is the only place where the question *who reads this, and what must they be able to do afterwards* leaves a visible trace, and once it exists everything below it has a standard to be judged against.
|
|
38
|
+
2. **Narrative prose in the body.** Tables and lists are fine where the content is genuinely tabular or is a genuine set of parallel items — five vendors, a schedule, a sequence of steps. The rule is against using list formatting to skip the reasoning, not against lists.
|
|
39
|
+
3. **Claims carry their evidence where they are made.** A number appears with where it came from. "Three of the eleven agents we interviewed" rather than "most agents." When you do not have the number, write the sentence without one and say what would have to be measured to get it. An invented figure fails worse than a missing one, because it survives into other people's decisions and cannot be traced back.
|
|
40
|
+
4. **What the record shows, kept separate from what you infer from it.** Mark the difference in the prose — this is what we observed, this is what we take it to mean, this is what we are assuming. A document that reads at a uniform level of confidence tells the reader that everything in it is equally sourced, and it never is.
|
|
41
|
+
5. **The questions that hurt, asked and answered in the document.** The six-pager's FAQ section exists so the author cannot choose which objections get raised. Write down the strongest thing an informed skeptic would say against the recommendation, and answer it — genuinely, or by conceding the point and saying what it costs. An FAQ made only of questions you are comfortable with is advertising.
|
|
42
|
+
6. **The body holds the argument, the appendix holds the detail.** Supporting data, derivations, transcripts, and full tables go behind the main text so the read stays continuous. No claim in the body may depend on the reader opening the appendix.
|
|
43
|
+
7. **Revision is mostly deletion, and delivering is a separate act from drafting.** The draft is where you work out what is true, in whatever shape that takes. Delivery is where you name the reader, read the draft back as that reader, and remove whatever does not serve their job however good it sounds. "Does this read well" is not a usable standard, because prose that argues a case or reaches for a vivid image is exactly what good writing feels like from the inside. "After reading this, can they do the thing?" is a question you can actually answer.
|
|
44
|
+
|
|
45
|
+
## Choosing the document's shape
|
|
46
|
+
|
|
47
|
+
The six-pager assumes a decision is being asked for. When the document is not asking for one, forcing its sections produces hollow headings — *Alternatives Considered* with nothing real under it, *The Ask* that asks for nothing — and a hollow section is worse than a missing one because it looks answered.
|
|
48
|
+
|
|
49
|
+
Match the spine to the job:
|
|
50
|
+
|
|
51
|
+
| The document's job | Spine |
|
|
52
|
+
| --- | --- |
|
|
53
|
+
| Get a decision made | Context, the problem, approaches considered, the recommendation, what it costs, what you need from the reader |
|
|
54
|
+
| Report an analysis or finding | The question, the answer, the evidence, what the evidence does not settle |
|
|
55
|
+
| Propose something to build | Working backwards: the customer, what changes for them once it exists, then the FAQ |
|
|
56
|
+
| Report status | What changed, what it means for the goal, what is stuck, what happens next |
|
|
57
|
+
| Record a decision already made | What was decided, what was true when we decided it, what would make us revisit |
|
|
58
|
+
|
|
59
|
+
In each of these the discipline above still applies in full. Only the section list changes.
|
|
60
|
+
|
|
61
|
+
## Before writing, three lines
|
|
62
|
+
|
|
63
|
+
Write these at the top of the draft:
|
|
64
|
+
|
|
65
|
+
- **Reader** — who specifically, and what they already know.
|
|
66
|
+
- **Their job** — what they must be able to do when they finish.
|
|
67
|
+
- **Budget** — the page or word count, fixed now.
|
|
68
|
+
|
|
69
|
+
The first two usually combine into the purpose line and stay. The budget line goes at delivery.
|
|
70
|
+
|
|
71
|
+
## Revision passes
|
|
72
|
+
|
|
73
|
+
Run these separately and name which one you are in. They substitute for each other otherwise: a reviewer who sets out to check the phrasing, finds four factual errors, and stops has run a content review while believing the writing was reviewed. In a phrasing pass, a factual error you happen to notice gets written down and set aside rather than reported as the outcome.
|
|
74
|
+
|
|
75
|
+
1. **Evidence.** Every number, quote, date, and attribution checked against its source. Downgrade anything that turns out to be inference rather than record.
|
|
76
|
+
2. **Objection.** Read it as the person with the most to lose if the recommendation is adopted. Whatever they would say first belongs in the document.
|
|
77
|
+
3. **Deletion.** Cut to the budget. Sentences that carry only emphasis or build-up go first.
|
|
78
|
+
4. **Phrasing.** Read each sentence as if explaining it to a colleague who was not in the planning session. Where they would stop and ask what a term means, rewrite.
|
|
79
|
+
|
|
80
|
+
When a reader points at one fault, treat it as an example rather than an inventory. Re-run the whole standard instead of sweeping only the class that was named — fixing every instance of the named pattern and stopping leaves everything else in place, and reads as thorough precisely because the named class is now clean.
|
|
81
|
+
|
|
82
|
+
## Failure modes
|
|
83
|
+
|
|
84
|
+
- **A grid of bullets that asserts without connecting.** Nested lists and three-column tables look organized and can contain no argument at all. If the reasoning between two items is never written, it was never done.
|
|
85
|
+
- **Symmetric coverage.** Every section the same length and every option given equal treatment, because balance resembles rigor. Real documents are lopsided: the thing that matters gets most of the pages.
|
|
86
|
+
- **Unsourced intensifiers.** "Significantly improves", "industry-leading", "most teams", "widely regarded". Each is a claim with the evidence removed. Either source it or drop the intensifier.
|
|
87
|
+
- **Fabricated specificity.** A percentage, a citation, or a dollar figure invented to satisfy the rule that claims carry evidence. The rule to attach evidence actively invites this, which is why it is named here: absence of a number is a reportable fact, and a wrong number is not.
|
|
88
|
+
- **The recommendation withheld.** Options laid out with studied neutrality so the author is never wrong. When the document is asked to recommend, it contains a recommendation, in one sentence, early.
|
|
89
|
+
- **Headings as empty containers.** *Background*, *Considerations*, *Next Steps* filled with whatever is generically true about the topic. A heading names something specific the section establishes.
|
|
90
|
+
- **An introduction that describes the document.** "This document explores the various factors involved in…" is throat-clearing. Start with the situation or the finding.
|
|
91
|
+
- **Length standing in for effort.** More pages read as more work and are usually less selection.
|
|
92
|
+
- **A conclusion that restates the headings.** The last section either says what to do or does not exist.
|
|
93
|
+
|
|
94
|
+
## Checklist
|
|
95
|
+
|
|
96
|
+
- Does the first line name a reader and what they will be able to do?
|
|
97
|
+
- Is it within the budget that was set before writing?
|
|
98
|
+
- Does the argument survive in prose, with the connections between claims actually written down?
|
|
99
|
+
- Does every number and quotation have a source, and is anything inferred marked as inferred?
|
|
100
|
+
- Is the strongest objection in the document, answered?
|
|
101
|
+
- If a recommendation was asked for, is it stated plainly and early?
|
|
102
|
+
- Would someone who cannot ask a question get what they need from one silent read?
|
|
103
|
+
|
|
104
|
+
## Related
|
|
105
|
+
|
|
106
|
+
- [`boop-writing-technical-prose`](../boop-writing-technical-prose/SKILL.md) — sentence-level standard and the full anti-pattern list; this skill inherits its goal.
|
|
107
|
+
- [`boop-product-design-feature-requirements`](../boop-product-design-feature-requirements/SKILL.md) — when the document is a feature spec or PRD.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: boop-writing-technical-prose
|
|
3
|
-
description: "When writing chat responses, bd issue bodies, or any artifact a fresh reader will pick up cold, write grammatical conversational English. Avoid the agent-shorthand patterns that compress meaning at the cost of legibility."
|
|
3
|
+
description: "When writing chat responses, summaries, bd issue bodies, specifications, specs, or any artifact a fresh reader will pick up cold, write grammatical conversational English. Avoid the agent-shorthand patterns that compress meaning at the cost of legibility."
|
|
4
4
|
metadata:
|
|
5
5
|
category: writing
|
|
6
6
|
---
|
|
@@ -22,7 +22,7 @@ When that constraint is met, the writing is doing its job. When it is not — wh
|
|
|
22
22
|
|
|
23
23
|
## When this skill does not apply
|
|
24
24
|
|
|
25
|
-
- **Specs:** spec
|
|
25
|
+
- **Specs:** spec *grammar* tends to be careful, because specs are written deliberately and read repeatedly. But coined-metaphor terminology (anti-pattern 13) creeps into specs readily — a spec can be grammatically clean and still make the reader decode a private vocabulary of "spine," "gate," and "holder." That pattern applies to specs in particular; the others less often.
|
|
26
26
|
- **Inline code comments:** comments live with the code and are read in that context, where the surrounding identifiers are visible.
|
|
27
27
|
- **Commit messages:** short by convention; the patterns below mostly do not apply at this length.
|
|
28
28
|
|
|
@@ -98,6 +98,12 @@ Saying "three directions named" or "surfaced this" or "captured as" treats writi
|
|
|
98
98
|
|
|
99
99
|
Sentences like "Looks reconciled, isn't." or "Mark blocked and stop." read as message-thread terseness rather than written prose. Use full sentences with subjects: "It looks reconciled but is not." "Mark the issue blocked and stop work on it."
|
|
100
100
|
|
|
101
|
+
### 13. Coined metaphors and vague shorthand for a concept that already has a grounded name
|
|
102
|
+
|
|
103
|
+
Reaching for an invented label — "the spine" for a workflow's ordered steps, "the gate" for an approval or acceptance step, "the holder" or "the latch" for a long-lived record or a one-time state change — or a vague pointer like "the fix" for a specific change, forces the reader to learn a private vocabulary for something that already has a generally-accepted software-engineering or product name. The coined term feels precise to the writer, who knows what it stands for; it reads as jargon to everyone else, and worst of all invents a synonym for a thing the codebase or the domain already names.
|
|
104
|
+
|
|
105
|
+
**Fix.** Use the established term, or describe the thing plainly. "The workflow's ordered task sequence," not "the spine." "The result-acceptance step," not "the gate." "A long-lived support record," not "the holder." "This change," or the specific behaviour it names, not "the fix." When a project-specific term is genuinely load-bearing — an entity name, a named phase — define it in plain words on first use, then use it consistently. If the concept already has a name in the codebase or the product domain, use that name rather than minting a metaphor for it.
|
|
106
|
+
|
|
101
107
|
## bd issue bodies specifically
|
|
102
108
|
|
|
103
109
|
bd issue bodies have a higher bar than chat responses because:
|