linersh 0.5.7 → 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/README.md +84 -159
- package/bin/liner.js +89 -44
- package/cli-update-docs/README.md +6 -6
- package/cli-update-docs/SKILL.md +72 -37
- package/cli-update-docs/quality-check-tests.md +256 -8
- package/cli-update-docs/source-finding-tactics.md +140 -3
- package/cli-update-docs/source-quality-hierarchy.md +83 -0
- package/cli-update-docs/synthesis-guidance.md +19 -5
- package/dist/agents/artifact-validation.js +440 -0
- package/dist/agents/artifact-validation.js.map +1 -0
- package/dist/agents/candidate-longlist.js +100 -0
- package/dist/agents/candidate-longlist.js.map +1 -0
- package/dist/agents/detect.js +3 -2
- package/dist/agents/detect.js.map +1 -1
- package/dist/agents/evaluation-assembly.js +270 -0
- package/dist/agents/evaluation-assembly.js.map +1 -0
- package/dist/agents/headless-runner.js +227 -0
- package/dist/agents/headless-runner.js.map +1 -0
- package/dist/agents/jtbd-clarify.js +42 -41
- package/dist/agents/jtbd-clarify.js.map +1 -1
- package/dist/agents/models.js +6 -7
- package/dist/agents/models.js.map +1 -1
- package/dist/agents/prompts.js +220 -20
- package/dist/agents/prompts.js.map +1 -1
- package/dist/agents/runner.js +462 -21
- package/dist/agents/runner.js.map +1 -1
- package/dist/phases.js +13 -13
- package/dist/phases.js.map +1 -1
- package/dist/source-inbox.js +297 -0
- package/dist/source-inbox.js.map +1 -0
- package/dist/version.js +3 -9
- package/dist/version.js.map +1 -1
- package/dist/yaml-io.js +42 -11
- package/dist/yaml-io.js.map +1 -1
- package/package.json +26 -23
- package/cli-update-docs/ABOUT.md +0 -69
- package/cli-update-docs/AI-HANDOFF.md +0 -241
- package/cli-update-docs/CURATION.md +0 -261
- package/cli-update-docs/JOB-STORY-MIGRATION.md +0 -99
- package/cli-update-docs/JTBD-MASTER-PROMPT-ABOUT.md +0 -133
- package/cli-update-docs/JTBD-MASTER-PROMPT.md +0 -147
- package/cli-update-docs/LINER-MASTER.md +0 -546
- package/cli-update-docs/MIXTAPE-FORMAT.md +0 -398
- package/cli-update-docs/PLATFORM.md +0 -210
- package/cli-update-docs/TUI-BACKLOG.md +0 -155
- package/dist/App.js +0 -220
- package/dist/App.js.map +0 -1
- package/dist/colors.js +0 -132
- package/dist/colors.js.map +0 -1
- package/dist/components/Header.js +0 -15
- package/dist/components/Header.js.map +0 -1
- package/dist/components/KeyHints.js +0 -17
- package/dist/components/KeyHints.js.map +0 -1
- package/dist/components/LabeledBox.js +0 -53
- package/dist/components/LabeledBox.js.map +0 -1
- package/dist/components/NextSteps.js +0 -18
- package/dist/components/NextSteps.js.map +0 -1
- package/dist/index.js +0 -17
- package/dist/index.js.map +0 -1
- package/dist/screens/AgentSetup.js +0 -224
- package/dist/screens/AgentSetup.js.map +0 -1
- package/dist/screens/BootSplash.js +0 -163
- package/dist/screens/BootSplash.js.map +0 -1
- package/dist/screens/CompileView.js +0 -567
- package/dist/screens/CompileView.js.map +0 -1
- package/dist/screens/FramingConfirmReview.js +0 -197
- package/dist/screens/FramingConfirmReview.js.map +0 -1
- package/dist/screens/Gate1Review.js +0 -147
- package/dist/screens/Gate1Review.js.map +0 -1
- package/dist/screens/Gate2Review.js +0 -162
- package/dist/screens/Gate2Review.js.map +0 -1
- package/dist/screens/ImportPrompt.js +0 -173
- package/dist/screens/ImportPrompt.js.map +0 -1
- package/dist/screens/JsSetup.js +0 -77
- package/dist/screens/JsSetup.js.map +0 -1
- package/dist/screens/LocalFilePicker.js +0 -139
- package/dist/screens/LocalFilePicker.js.map +0 -1
- package/dist/screens/NewMixtapeWizard.js +0 -662
- package/dist/screens/NewMixtapeWizard.js.map +0 -1
- package/dist/screens/PhaseRunner.js +0 -1203
- package/dist/screens/PhaseRunner.js.map +0 -1
- package/dist/screens/ProcessManifest.js +0 -160
- package/dist/screens/ProcessManifest.js.map +0 -1
- package/dist/screens/ProjectHub.js +0 -557
- package/dist/screens/ProjectHub.js.map +0 -1
- package/dist/screens/SourceModal.js +0 -269
- package/dist/screens/SourceModal.js.map +0 -1
- package/dist/screens/TapeBrowser.js +0 -312
- package/dist/screens/TapeBrowser.js.map +0 -1
- package/dist/screens/TapeDraftReview.js +0 -444
- package/dist/screens/TapeDraftReview.js.map +0 -1
- package/dist/screens/TapeEditor.js +0 -310
- package/dist/screens/TapeEditor.js.map +0 -1
- package/dist/screens/cassette-art.js +0 -72
- package/dist/screens/cassette-art.js.map +0 -1
- package/dist/store.js +0 -10
- package/dist/store.js.map +0 -1
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
# Curating Mixtapes
|
|
2
|
-
|
|
3
|
-
A methodology for assembling AI-consumable context bundles that actually work.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## What this document is
|
|
8
|
-
|
|
9
|
-
A methodology for building mixtapes — curated bundles of sources designed to give an AI substantive context on a specific topic, so it can produce better answers, better drafts, and better judgments than it would from its training data alone.
|
|
10
|
-
|
|
11
|
-
This document is platform-agnostic. It describes *how to curate well*, not how any specific tool implements curation. Liner is one implementation; the methodology applies equally to mixtapes built with other tools or by hand.
|
|
12
|
-
|
|
13
|
-
The methodology has two intended audiences:
|
|
14
|
-
|
|
15
|
-
- **Tools running the methodology automatically** — like the Liner skill, which encodes this document as instructions for an AI executing the lifecycle on a curator's behalf.
|
|
16
|
-
- **Curators practicing the methodology themselves** — building library-quality mixtapes by engaging substantively at each step.
|
|
17
|
-
|
|
18
|
-
Most users will be in the first group. Their tool runs the methodology for them; they confirm or lightly edit. The second group is the minority that produces the best mixtapes — including everything in the Liner library. This document serves both.
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## The bar
|
|
23
|
-
|
|
24
|
-
A good mixtape demonstrably improves the AI's output on tasks within its domain. That's the only test that matters.
|
|
25
|
-
|
|
26
|
-
A bad mixtape is one of three things: a bookmark dump (no curation), a popular-content collection (no taste), or a topical Wikipedia-style overview (no specificity). All three are easy to produce. None of them help.
|
|
27
|
-
|
|
28
|
-
What makes a mixtape useful for an AI is different from what makes a reading list useful for a human. An AI doesn't need motivation, doesn't get bored, doesn't benefit from inspirational framing. What it does benefit from:
|
|
29
|
-
|
|
30
|
-
- **Primary sources over commentary.** The original specification beats someone explaining the specification.
|
|
31
|
-
- **Concrete over abstract.** "Touch targets should be 44pt minimum because..." beats "design with users in mind."
|
|
32
|
-
- **Specific over general.** A 20-minute deep dive on one pattern beats a 60-minute survey of ten.
|
|
33
|
-
- **Recent enough to be accurate, old enough to be durable.** The sweet spot for most topics is one to four years old for principles, very recent for platform specifics.
|
|
34
|
-
- **Diverse perspectives where the field is contested.** If experts disagree, include both sides. The AI synthesizes better from disagreement than from echo chambers.
|
|
35
|
-
|
|
36
|
-
A mixtape stuffed with motivational talks will produce worse AI output than a mixtape of three dense technical specifications. Counterintuitive but real.
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## The lifecycle
|
|
41
|
-
|
|
42
|
-
Every mixtape moves through the same phases. The phases are ordered because each one's output is the next one's input. Skipping phases or running them out of order produces lower-quality mixtapes — even if the result looks complete.
|
|
43
|
-
|
|
44
|
-
### Phase 1 — Framing
|
|
45
|
-
|
|
46
|
-
Define the job-to-be-done. Not the topic. The *use case*.
|
|
47
|
-
|
|
48
|
-
The JTBD is written as a Job Story: **"When [circumstance], I want [motivation], so I can [outcome]."** All three slots are required. The form is permissive on what fills them — a legal, clinical, or engineering Job Story share this shape but no vocabulary. What it guarantees is that no slot can be empty, which raises the floor on what counts as a JTBD before any qualitative judgment kicks in.
|
|
49
|
-
|
|
50
|
-
"Mobile design" is a topic. It is too vague to curate against. Three Job Stories in that same topic produce three different mixtapes:
|
|
51
|
-
|
|
52
|
-
- *When I'm designing the core UI of a consumer iOS app, I want to follow Apple's interaction conventions while choosing where to deviate visually, so I can ship something that feels native without looking generic.*
|
|
53
|
-
- *When I review mobile design portfolios as a senior IC hiring manager, I want to compare candidates against a consistent rubric of taste and decision-making, so I can decide who to advance with confidence.*
|
|
54
|
-
- *When I'm choosing a platform strategy for a new mobile product, I want to weigh native vs. cross-platform against the specific constraints of my team and timeline, so I can commit to one path without re-litigating the question every quarter.*
|
|
55
|
-
|
|
56
|
-
If the job-to-be-done can't be stated as a tight Job Story — single circumstance, single motivation, single outcome, no solutions named, no aspirational mush — the mixtape will be unfocused. This is the single most common failure mode. The [JTBD Master Prompt](JTBD-MASTER-PROMPT.md) is a drop-in interview that elicits one in a single human turn; use it (or have the AI use it) at the start of any new mixtape.
|
|
57
|
-
|
|
58
|
-
Sketch a knowledge map alongside the JTBD: the major areas of the domain, the sub-areas, the edge cases. For mobile design, that might be foundations, patterns, craft, process, edge cases. For another domain, the buckets are different. The map serves three purposes: it structures research, it surfaces gaps, and it becomes the section structure of the finished mixtape.
|
|
59
|
-
|
|
60
|
-
Treat the map as a hypothesis. It will get revised during research.
|
|
61
|
-
|
|
62
|
-
### Phase 2 — Candidate discovery
|
|
63
|
-
|
|
64
|
-
Generate a long list of candidate sources covering the knowledge map. Lots of them. This phase is about recall, not precision — gather more than you need; you'll cut later.
|
|
65
|
-
|
|
66
|
-
Methods that produce better candidates than generic search:
|
|
67
|
-
|
|
68
|
-
**Follow the citations.** Pick one excellent piece on the topic and find what *it* cites or links to. Then follow those sources' citations. Three or four hops in, you'll find the canonical sources nobody links to anymore because everyone assumes you've read them.
|
|
69
|
-
|
|
70
|
-
**Reverse-engineer experts' reading lists.** Many domain experts publish their own reading lists or syllabi. Constrain searches to platforms like Notion, GitHub, Are.na, or personal blogs. Are.na in particular is underused.
|
|
71
|
-
|
|
72
|
-
**Mine course syllabi.** University courses, bootcamp curricula, and serious online courses have already done curation work. `"<topic> syllabus" filetype:pdf` is a productive query.
|
|
73
|
-
|
|
74
|
-
**Find who experts cite.** Pick three to five acknowledged experts. Look at *their* references — bibliographies, acknowledgments, who they cite in their own writing. The overlap is your shortlist.
|
|
75
|
-
|
|
76
|
-
**Conference proceedings.** Going through three years of a specific conference is more efficient than searching for talks topic-by-topic.
|
|
77
|
-
|
|
78
|
-
**Ask the AI to find gaps, not sources.** Once you have a candidate list, ask: *what's missing from this collection for someone trying to [job-to-be-done]?* AI is bad at recall and good at critique. Use it for the right thing.
|
|
79
|
-
|
|
80
|
-
No fetching yet. This phase produces URLs and titles, not content.
|
|
81
|
-
|
|
82
|
-
### Phase 3 — Fetching
|
|
83
|
-
|
|
84
|
-
Pull content for every candidate into the cache. Transcripts, articles, metadata. This is the expensive phase — network calls, transcript scraping, content extraction.
|
|
85
|
-
|
|
86
|
-
Two things matter here. First, fetching is part of research, not a tail step. A source can't be honestly evaluated without reading it. Second, fetched content should be cached. The same source used in multiple mixtapes should be fetched once.
|
|
87
|
-
|
|
88
|
-
After fetching, every candidate has readable content available for evaluation.
|
|
89
|
-
|
|
90
|
-
### Phase 4 — Evaluation
|
|
91
|
-
|
|
92
|
-
Read the fetched content and rate each candidate against the job-to-be-done. This is where keep/trim/drop decisions actually happen.
|
|
93
|
-
|
|
94
|
-
Source quality, roughly in order of preference:
|
|
95
|
-
|
|
96
|
-
1. **Canonical references.** Apple HIG, Material Design docs, W3C specs, RFC documents, official platform documentation. Always include the primary source if one exists.
|
|
97
|
-
2. **Practitioner deep-dives from people who built things.** Engineers and designers at credible companies writing about specific decisions they made. Concrete and battle-tested.
|
|
98
|
-
3. **Conference talks from credible speakers.** Pre-filtered by the conference's curation. Better than random video search.
|
|
99
|
-
4. **Books, but chapters not whole books.** Link to a specific chapter or excerpt. A tape isn't a book club.
|
|
100
|
-
5. **Long-form interviews with practitioners.** Best when you cite a specific episode for a specific point.
|
|
101
|
-
6. **Academic papers when relevant.** Often underrepresented in design and engineering mixtapes.
|
|
102
|
-
|
|
103
|
-
What to avoid:
|
|
104
|
-
|
|
105
|
-
- Listicles ("10 tips for...")
|
|
106
|
-
- AI-generated content (now widespread, often subtly wrong)
|
|
107
|
-
- Twitter threads as primary sources
|
|
108
|
-
- Vendor blog posts with promotional angles
|
|
109
|
-
- Most TED-style talks — too much narrative, not enough density
|
|
110
|
-
- "Ultimate guides" — usually shallow despite the name
|
|
111
|
-
|
|
112
|
-
Evaluations should include a brief reason. "This source is canonical for the foundations section." "This source duplicates Source 4 — drop the weaker one." "This source has a strong perspective; useful but read alongside Source 7." These reasons go into the working notes.
|
|
113
|
-
|
|
114
|
-
### Phase 5 — Quality checks
|
|
115
|
-
|
|
116
|
-
Four tests every mixtape should pass. Run them deliberately.
|
|
117
|
-
|
|
118
|
-
**The redundancy test.** Read each source's role in the mixtape. Are any two sources making essentially the same point? If yes, keep the better one and cut the other. Mixtape volume is not a virtue. Five excellent sources beat fifteen good ones.
|
|
119
|
-
|
|
120
|
-
**The coverage test.** Walk through the knowledge map. Any bucket with zero sources? Either fill it or explicitly note that the mixtape doesn't cover that area. A mixtape that silently omits a major area is worse than one that says "this mixtape doesn't cover X — see [other mixtape] for that."
|
|
121
|
-
|
|
122
|
-
**The disagreement test.** Pick the strongest claim made by sources in the mixtape. Find someone credible who disagrees with it. Either include the disagreement or explicitly note that the mixtape takes a position. A mixtape that only includes one side of a contested question produces worse AI output, because the AI then can't see the contested-ness.
|
|
123
|
-
|
|
124
|
-
**The framing-gap test.** Step back and look at the whole mixtape. Is there a major perspective on this topic that's missing entirely — not just an individual source, but a whole way of thinking about the JTBD? If yes, the framing was too narrow. Expand the knowledge map and revisit Phase 2.
|
|
125
|
-
|
|
126
|
-
This last test is the one most curators skip. It's also the highest-leverage. Single-pass curation tends to produce mixtapes that are well-covered within one narrow framing. The framing-gap test catches this.
|
|
127
|
-
|
|
128
|
-
If a mixtape fails any of these tests, fix it before moving on.
|
|
129
|
-
|
|
130
|
-
### Phase 6 — Synthesis
|
|
131
|
-
|
|
132
|
-
Write the synthesis. This is the distilled understanding of the domain expressed in the curator's own voice — the principles, the contested questions, the framework distinctions, the recommended applications.
|
|
133
|
-
|
|
134
|
-
The synthesis lives at the top of the compiled mixtape. It's the first thing the consuming AI reads. Without a synthesis, the AI gets a list of sources and curator notes; with a synthesis, the AI gets the curator's framing of the entire domain. The difference in downstream AI output is substantial.
|
|
135
|
-
|
|
136
|
-
Length: 800–2000 words is typical. Shorter for narrow topics; longer for broader ones.
|
|
137
|
-
|
|
138
|
-
The synthesis is required, not optional. In automated curation, the AI drafts it. In methodology-mode curation, the curator writes or substantially edits it. Either way, every mixtape has one.
|
|
139
|
-
|
|
140
|
-
### Phase 7 — Final assembly
|
|
141
|
-
|
|
142
|
-
Compile the mixtape. The compile step:
|
|
143
|
-
|
|
144
|
-
- Reads the recipe and the synthesis
|
|
145
|
-
- Reads cached source content for every kept source
|
|
146
|
-
- Writes the master file (synthesis + how-to-use + source index)
|
|
147
|
-
- Writes individual source files referenced by the master file
|
|
148
|
-
|
|
149
|
-
The output is a self-contained mixtape folder ready to share, publish, or paste into an AI conversation.
|
|
150
|
-
|
|
151
|
-
### Phase 8 — Empirical test (optional but recommended)
|
|
152
|
-
|
|
153
|
-
Theory aside — here's how to know if the mixtape is actually working:
|
|
154
|
-
|
|
155
|
-
1. Compile the mixtape
|
|
156
|
-
2. Paste it into an AI conversation as context
|
|
157
|
-
3. Ask the AI a question that the mixtape's job-to-be-done should help with
|
|
158
|
-
4. Ask the same question without the mixtape in a separate conversation
|
|
159
|
-
5. Compare the answers honestly
|
|
160
|
-
|
|
161
|
-
If the answer with the mixtape is meaningfully better — more specific, more correct, more nuanced, less generic — the mixtape is working. If the answers are similar, the mixtape isn't earning its place. Either the sources are too generic, the synthesis isn't doing enough work, or the JTBD is too broad.
|
|
162
|
-
|
|
163
|
-
This empirical check is required for library contributions. Run it. Document the result.
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
## Curator notes
|
|
168
|
-
|
|
169
|
-
Every source in a mixtape has a curator note. The note tells the AI (and the human reading the mixtape) three things:
|
|
170
|
-
|
|
171
|
-
- *Why this source is in the mixtape.* Signals weight. "Watch first — this is the foundational piece" vs. "Skim if time permits — useful for context but not essential."
|
|
172
|
-
- *Where the high-value portion is.* "The first ten minutes are setup, the load-bearing content starts around 10:30."
|
|
173
|
-
- *What the source's limitations are.* "Dated on platform specifics, durable on principles."
|
|
174
|
-
|
|
175
|
-
Good notes are 15–40 words. Shorter is fine when the source is self-explanatory. Longer is usually a sign the source needs more framing — or that the note is doing work the synthesis should be doing.
|
|
176
|
-
|
|
177
|
-
In automated curation, the AI drafts notes during evaluation. In methodology-mode curation, the curator writes or substantially edits them. Notes are not optional.
|
|
178
|
-
|
|
179
|
-
---
|
|
180
|
-
|
|
181
|
-
## Personal sources
|
|
182
|
-
|
|
183
|
-
Not every source has a public URL. The strongest mixtapes often draw on material that isn't publicly available — book chapters, gated articles, course transcripts, personal notes. These are often the highest-density material in a mixtape and shouldn't be excluded just because they aren't on the public web.
|
|
184
|
-
|
|
185
|
-
Cite non-public sources clearly. Author, title, publication, date. The compiled mixtape uses these citations to signal what kind of source the AI is looking at, which matters for how it weights the content. A passage labeled as a 2019 book chapter gets read differently than one labeled as a recent newsletter post.
|
|
186
|
-
|
|
187
|
-
---
|
|
188
|
-
|
|
189
|
-
## Sharing mixtapes
|
|
190
|
-
|
|
191
|
-
Most mixtapes are personal — built for your own thinking, used by you, drawing on whatever you have legitimate access to. There's nothing to think hard about here.
|
|
192
|
-
|
|
193
|
-
Sharing is different. A mixtape passed to a colleague or posted publicly distributes its contents to people other than you. Sources that are fine for personal use may not be appropriate to redistribute. Use your own judgment.
|
|
194
|
-
|
|
195
|
-
When in doubt, share the recipe (the tape file) rather than the compiled mixtape. The recipe references sources; the compiled mixtape contains them. They have different properties when they leave your hands.
|
|
196
|
-
|
|
197
|
-
---
|
|
198
|
-
|
|
199
|
-
## The two modes
|
|
200
|
-
|
|
201
|
-
The methodology supports two intensities of engagement.
|
|
202
|
-
|
|
203
|
-
**Quick mode** runs the methodology automatically. The curator provides the JTBD and confirms the AI's proposals at each gate. The AI does the heavy lifting — generating candidates, evaluating, drafting curator notes, drafting the synthesis. The curator's job is to catch obvious errors and make final calls. A complete mixtape takes 15–30 minutes. Output is good enough for personal use.
|
|
204
|
-
|
|
205
|
-
**Methodology mode** treats the AI as a research assistant rather than the curator. The curator engages substantively at each gate — revises the knowledge map, reviews evaluation rationales, makes deliberate keep/drop decisions, writes their own synthesis. The AI accelerates the tedious work; the judgment stays human. A complete mixtape takes several hours. Output is library-eligible.
|
|
206
|
-
|
|
207
|
-
Both modes use the same lifecycle and produce the same artifact shape. They differ in how much human judgment shows up in the working notes and the synthesis. Quick mode mixtapes can be upgraded to methodology mode by going back and doing the substantive work; methodology mode mixtapes can be produced in one pass by curators who already know the domain.
|
|
208
|
-
|
|
209
|
-
The default is quick mode because that's what most users want. Methodology mode is the path for serious curation work, including all library contributions.
|
|
210
|
-
|
|
211
|
-
---
|
|
212
|
-
|
|
213
|
-
## Common failure modes
|
|
214
|
-
|
|
215
|
-
Patterns that produce bad mixtapes. Watch for them.
|
|
216
|
-
|
|
217
|
-
**The greatest-hits mixtape.** A list of the most famous resources on a topic. Looks impressive, adds little value because the AI already knows about famous resources from training. Curate for *non-obvious* sources, not popular ones.
|
|
218
|
-
|
|
219
|
-
**The unfocused mixtape.** No clear job-to-be-done; tries to cover the entire field. Result: shallow on everything, deep on nothing.
|
|
220
|
-
|
|
221
|
-
**The author-tribute mixtape.** Three of the five sources are by the same person, because the curator is a fan. This narrows perspective and reduces the AI's ability to synthesize across views.
|
|
222
|
-
|
|
223
|
-
**The transcript dump.** Many video transcripts, no articles, no specifications, no primary sources. Transcripts are useful but conversational and low-density. Mix sources.
|
|
224
|
-
|
|
225
|
-
**The noteless mixtape.** Sources without curator notes. Either the curator was lazy or didn't actually have a reason for each source. Both are problems. If a source's role can't be articulated, it doesn't belong.
|
|
226
|
-
|
|
227
|
-
**The aspirational mixtape.** Sources the curator thinks people *should* read, not sources that help with the actual job-to-be-done. Mixtapes are tools, not reading recommendations.
|
|
228
|
-
|
|
229
|
-
**The single-pass mixtape.** Curated without a framing-gap test. Well-covered within one narrow framing, blind to whole perspectives the curator didn't think to look for.
|
|
230
|
-
|
|
231
|
-
---
|
|
232
|
-
|
|
233
|
-
## A note on AI assistance
|
|
234
|
-
|
|
235
|
-
Most curators will use AI to help with research, source discovery, and drafting. This is fine and expected. The work goes better when the AI is treated as a collaborator with biases, not an oracle.
|
|
236
|
-
|
|
237
|
-
AI is especially prone to:
|
|
238
|
-
|
|
239
|
-
- Suggesting popular and recent sources at the expense of canonical or older ones
|
|
240
|
-
- Hallucinating sources that sound plausible but don't exist (always verify URLs)
|
|
241
|
-
- Producing generic curator notes that say "this is a useful resource" without specificity
|
|
242
|
-
- Missing primary documents (specs, papers) in favor of secondary commentary
|
|
243
|
-
- Failing the framing-gap test because it doesn't notice what it didn't search for
|
|
244
|
-
|
|
245
|
-
Compensate deliberately. Search for primary sources yourself even when AI doesn't surface them. Verify every URL. Treat AI-drafted notes as first drafts. Run the framing-gap test with intent.
|
|
246
|
-
|
|
247
|
-
The methodology assumes a human in the loop. Quick mode reduces what the human does; it doesn't eliminate it. The minimum is reviewing the AI's proposals at each gate. Anything less is automated source-listing, not curation.
|
|
248
|
-
|
|
249
|
-
---
|
|
250
|
-
|
|
251
|
-
## What this is not
|
|
252
|
-
|
|
253
|
-
Not a content recommendation system. Not a way to compile reading lists. Not optimized for human learning paths — those are different artifacts with different constraints.
|
|
254
|
-
|
|
255
|
-
This is a way of producing artifacts that make AI systems demonstrably more useful within a specific domain. Everything in this document serves that goal.
|
|
256
|
-
|
|
257
|
-
If decisions start prioritizing human readability or aesthetic completeness over AI utility, the methodology is drifting. Drift back.
|
|
258
|
-
|
|
259
|
-
---
|
|
260
|
-
|
|
261
|
-
*Current version: 2.0. Changes are tracked in the repository changelog.*
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
# Job Story Format Migration
|
|
2
|
-
|
|
3
|
-
The `jtbd:` field in every Liner `tape.yaml` is changing from the old "Help me [verb] [object] [scope]" house form to the Intercom Job Story format: "When [circumstance], I want [motivation], so I can [outcome]." This document is the full checklist for that change.
|
|
4
|
-
|
|
5
|
-
## The new canonical form
|
|
6
|
-
|
|
7
|
-
Spec: `When [circumstance], I want [motivation], so I can [outcome].`
|
|
8
|
-
|
|
9
|
-
All three slots required. Failure modes the validator (or rubric) should catch:
|
|
10
|
-
|
|
11
|
-
- Missing slot
|
|
12
|
-
- Solution in any slot (vendor, framework, library, methodology, or tool name)
|
|
13
|
-
- Two jobs joined by "and" / comma / slash within a single slot
|
|
14
|
-
- Aspirational mush ("be better at X," "succeed," "do it well")
|
|
15
|
-
- Topic-as-JTBD (bare noun phrase masquerading as a Job Story)
|
|
16
|
-
- Generic circumstance ("when I'm working") with no scoping
|
|
17
|
-
|
|
18
|
-
Until a real validator exists, the JTBD master prompt's internal rubric is the authoritative test.
|
|
19
|
-
|
|
20
|
-
## Files to update (known)
|
|
21
|
-
|
|
22
|
-
| File | What changes |
|
|
23
|
-
|------|-------------|
|
|
24
|
-
| `cli-update-docs/MIXTAPE-FORMAT.md` | Update the `jtbd:` field spec to require Job Story form. Add structural and qualitative checks. |
|
|
25
|
-
| `cli-update-docs/CURATION.md` | Phase 1 (Framing) references the house form throughout. Replace examples. Update the "single specific sentence" guidance to name the three required slots. |
|
|
26
|
-
| `cli-update-docs/SKILL.md` | The `curating-mixtapes` skill's Phase 1 paragraph defines what a tight JTBD looks like. Replace examples and any embedded house-form templates. |
|
|
27
|
-
| `cli-update-docs/JTBD-MASTER-PROMPT.md` | Drop in the revised version from the previous turn. |
|
|
28
|
-
| `cli-update-docs/JTBD-MASTER-PROMPT-ABOUT.md` | Substantial rewrite. The current doc explicitly defends choosing the house form over Job Story as a deliberate deviation from the mixtape's synthesis. The new framing inverts: "we initially diverged, then realigned." Update §"Where it came from," the Liner's-house-form choice in §"Design choices worth understanding," and any other instances. |
|
|
29
|
-
| `cli-update-docs/LINER-MASTER.md` | Project-level overview. Sweep for house-form references and example JTBDs. |
|
|
30
|
-
|
|
31
|
-
## Files to check (categories — likely exist, names not confirmed)
|
|
32
|
-
|
|
33
|
-
Worth grepping the repo for:
|
|
34
|
-
|
|
35
|
-
- `README.md` files at root and in subdirectories
|
|
36
|
-
- Any `tape.yaml.template` or scaffolding used by `liner init` (or equivalent)
|
|
37
|
-
- CLI help text — `liner --help`, `liner jtbd --help`, anywhere example JTBDs appear in user-facing strings
|
|
38
|
-
- Test fixtures and sample mixtapes used in automated tests
|
|
39
|
-
- Documentation site source if it lives separately from `docs/`
|
|
40
|
-
- Any top-level index or table of contents inside `cli-update-docs/`
|
|
41
|
-
|
|
42
|
-
Suggested sweep: `rg -l 'Help me ' --type md` and `rg -l 'jtbd:' --type yaml` should surface most of them.
|
|
43
|
-
|
|
44
|
-
## Existing mixtapes to migrate
|
|
45
|
-
|
|
46
|
-
Every existing mixtape's `tape.yaml` has a `jtbd:` in the old form (or, in one known case, no form at all — see Bootstrap below).
|
|
47
|
-
|
|
48
|
-
Two strategies:
|
|
49
|
-
|
|
50
|
-
**Option A — Migrate all at once.** Walk every `mixtapes/*/tape.yaml`, translate each JTBD to Job Story form (manually or with a one-shot prompt), commit together. Cleaner end state; no transition logic needed in code.
|
|
51
|
-
|
|
52
|
-
**Option B — Accept both forms during a transition window.** Validator warns on old-form JTBDs but doesn't reject. Migrate as you touch each mixtape. Lower upfront cost; longer drift window; risk that some mixtapes never get touched.
|
|
53
|
-
|
|
54
|
-
Recommendation: **Option A**, given the small corpus. Transition logic in a validator is permanent maintenance cost for what should be a one-time migration.
|
|
55
|
-
|
|
56
|
-
Known mixtapes:
|
|
57
|
-
|
|
58
|
-
- `examples/mobile-design-foundations/tape.yaml`
|
|
59
|
-
- `mixtapes/jtbd-master-prompt/tape.yaml` (see Bootstrap problem below)
|
|
60
|
-
|
|
61
|
-
## The bootstrap problem
|
|
62
|
-
|
|
63
|
-
The mixtape that informed the JTBD master prompt — `mixtapes/jtbd-master-prompt/` — has this as its own `jtbd:`:
|
|
64
|
-
|
|
65
|
-
> "A guide to help an AI agent create a master prompt that will be used to create a short Job To Be Done description about a hyper-specific task inside a project."
|
|
66
|
-
|
|
67
|
-
This is neither form. It starts with "A guide to..." — a noun phrase describing the artifact, not a Job Story. No circumstance, no motivation slot, no outcome slot.
|
|
68
|
-
|
|
69
|
-
Why it matters:
|
|
70
|
-
|
|
71
|
-
1. **Structural seed-corn problem.** The mixtape that taught the methodology has a JTBD that wouldn't pass the methodology's own rules. When validation goes live, this mixtape fails.
|
|
72
|
-
2. **Whitelisting is worse than fixing.** A permanent exception for the seed mixtape ships inconsistent rules on day one.
|
|
73
|
-
3. **Migrating is mildly retroactive.** The synthesis was generated against this loose JTBD; a stricter one might have produced a tighter synthesis. But the synthesis is good enough that this is a small effect, and the alternative is permanent technical debt.
|
|
74
|
-
|
|
75
|
-
Recommended action: migrate it. Proposed Job Story:
|
|
76
|
-
|
|
77
|
-
> "When I'm designing the master prompt an AI agent will use to elicit a Job Story from a Liner user, I want a curated bridge between JTBD theory and prompt engineering, so I can write a prompt that produces tight, hyper-specific Job Stories in a single human turn."
|
|
78
|
-
|
|
79
|
-
That passes the rubric. Tighten further if useful, but it's a defensible starting point.
|
|
80
|
-
|
|
81
|
-
## Transition strategy (recommended ordering)
|
|
82
|
-
|
|
83
|
-
The order matters because some changes invalidate others.
|
|
84
|
-
|
|
85
|
-
1. **Spec docs first** — `MIXTAPE-FORMAT.md`, `CURATION.md`, `SKILL.md`. Any new mixtape created from this point uses Job Story form.
|
|
86
|
-
2. **Drop in the revised JTBD master prompt** (`JTBD-MASTER-PROMPT.md`).
|
|
87
|
-
3. **Rewrite `JTBD-MASTER-PROMPT-ABOUT.md`** so the rationale matches the new reality.
|
|
88
|
-
4. **Migrate the two known mixtapes** (`examples/mobile-design-foundations/`, `mixtapes/jtbd-master-prompt/`).
|
|
89
|
-
5. **Grep for stragglers** (`rg 'Help me ' --type md`, `rg 'jtbd:' --type yaml`) and migrate anything found.
|
|
90
|
-
6. **Only then add a validator** — and start it in warn-only mode for one release cycle before rejecting.
|
|
91
|
-
|
|
92
|
-
Doing the spec docs and the prompt before the validator means new mixtapes are correct from the start. Doing the migration before the validator means you don't ship a validator that rejects your own seed mixtape on day one.
|
|
93
|
-
|
|
94
|
-
## What this doesn't cover
|
|
95
|
-
|
|
96
|
-
- **Format versioning.** Whether to support both forms long-term via a `format_version` field in `tape.yaml`. Probably not worth the complexity for a small corpus; flagged in case it becomes relevant.
|
|
97
|
-
- **Validator design.** The rubric in the JTBD master prompt is qualitative. An LLM-as-judge pattern (Promptfoo `llm-rubric`, Source 28 of the mixtape synthesis) is the natural implementation. A pure regex/parser check can only catch slot absence, not mush — necessary but insufficient.
|
|
98
|
-
- **Distribution backward compatibility.** If mixtapes are ever distributed via a package registry, users may hold old-form copies after a format change. If mixtapes only live in user repos, this isn't a concern.
|
|
99
|
-
- **The migration of any third-party or external mixtapes.** Scope this doc to your own repo; signal the format change to anyone downstream separately.
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
# About the JTBD Master Prompt
|
|
2
|
-
|
|
3
|
-
Companion document to [`JTBD-MASTER-PROMPT.md`](./JTBD-MASTER-PROMPT.md). Explains what the prompt is, why it exists, how it works, where it came from, and where it can still go wrong.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Why this exists
|
|
8
|
-
|
|
9
|
-
Liner's curation methodology has eight phases. Phase 1 — Framing — is the single highest-leverage step in the lifecycle. The job-to-be-done statement defined here drives every downstream decision: which sources land in the candidate longlist, how the knowledge map is sectioned, what gets cut at evaluation, how the synthesis is framed. A bad JTBD propagates through everything else and produces a mixtape that looks complete but doesn't measurably improve AI output. A good JTBD makes every downstream phase easier.
|
|
10
|
-
|
|
11
|
-
The methodology already knows what a tight JTBD looks like. `CURATION.md` says it must be a "single specific sentence." `SKILL.md` says the AI must "push back" if the user offers a topic. `MIXTAPE-FORMAT.md` documents the `jtbd:` field. But that guidance is spread across multiple docs and lives in the curator's head, not in a deployable prompt. The result, in practice: users land at "topic" level ("mobile design," "SEO content," "contract law") instead of "job" level. Once they do, the rest of curation drifts.
|
|
12
|
-
|
|
13
|
-
The JTBD Master Prompt fixes that gap. It's a single, drop-in prompt that takes a user from wherever they are — a vague topic, a folder of content, a half-formed idea — to one tight Job Story that passes a rubric. That Job Story is the input to the rest of Liner's pipeline. Everything else (knowledge map, candidate discovery, evaluation, synthesis) is already handled.
|
|
14
|
-
|
|
15
|
-
## What it is
|
|
16
|
-
|
|
17
|
-
A self-contained master prompt stored at `cli-update-docs/JTBD-MASTER-PROMPT.md`. The body sits between `---BEGIN---` and `---END---` markers and is meant to be copy-pasted into an AI conversation, embedded inside the `curating-mixtapes` skill, or spawned as a TUI subprocess.
|
|
18
|
-
|
|
19
|
-
The prompt's sole deliverable is a single sentence in the Intercom Job Story form: *"When [circumstance], I want [motivation], so I can [outcome]."* No rationale, no knowledge map, no commentary — those belong to later phases. One sentence on one line.
|
|
20
|
-
|
|
21
|
-
The prompt is interactive: it offers to read project material, conducts a small interview (capped at five questions, three typical), runs the draft through an internal rubric, and emits.
|
|
22
|
-
|
|
23
|
-
## How it works
|
|
24
|
-
|
|
25
|
-
Five moves, in order:
|
|
26
|
-
|
|
27
|
-
**Step 0 — Offer to read project material.** The agent's first message is a single short question: *"Do you have any documents or project material I should look at first?"* The user can drop files into the chat, point at a folder (if the agent has filesystem access), or say no and move straight into conversation. This question fires unconditionally and does not count against the question budget. The reason for asking rather than detecting: users frequently have load-bearing material they wouldn't think to share unprompted, and silent inference of context produces wrong JTBDs that propagate through every downstream phase.
|
|
28
|
-
|
|
29
|
-
**Step 1 — Read what the user shared, if any.** If the user shared material, the agent reads enough to confidently characterize the project — start with project-description files (`README`, `CLAUDE.md`, `synthesis.md`, `tape.yaml`), then any flagged content, then any additional material needed to name domain, audience, stage, and explicit goal. Token cost is not optimized; user-time is. If the agent has no file tools and the user pointed at a folder, it says so plainly and asks for files-in-chat or a description instead. It never invents file contents.
|
|
30
|
-
|
|
31
|
-
**Step 2 — Confirm what was inferred.** After reading, the agent's next message is a confirmation: *"I see your project is [X] for [Y], focused on [Z]. Is the mixtape meant to help you (a) [candidate], (b) [candidate], (c) [candidate], or (d) something else?"* One turn, one confirmation. Option (d) is required. The agent never bakes inferred context into the JTBD silently.
|
|
32
|
-
|
|
33
|
-
**Step 3 — Run a budgeted interview, if needed.** If the user shared no material, or if reading wasn't enough, the agent opens with a single batched message of two or three basic questions (domain, role, concrete activity), then descends the scope ladder one question at a time. Each follow-up walks the user from aspiration → big → little → micro. The agent stops asking when the next question wouldn't change the draft. Hard cap: five total questions, three typical.
|
|
34
|
-
|
|
35
|
-
**Step 4 — Draft, critique, refine, emit.** The agent drafts the Job Story silently. Before emitting, it runs the draft through a six-test rubric: structural (all three slots present and non-empty), solution-free (no vendor / framework / tool named), single-scope (one job per slot), specific (not generic or aspirational), externally readable (a stranger could understand it without context), and slot hygiene (audience clauses live in the circumstance, not the motivation). If a test fails, the agent fixes the draft and re-checks. The rubric is never shown to the user. Output is one line — the Job Story, no preamble, no commentary, no quote marks, no code fence. If the user pushes back, the agent doesn't defend; it takes the correction, re-runs the rubric, and emits a revised statement in the same format.
|
|
36
|
-
|
|
37
|
-
## Where it came from
|
|
38
|
-
|
|
39
|
-
The prompt is the engineering output of a mixtape compiled specifically for this question. The mixtape lives at:
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
mixtapes/jtbd-master-prompt/
|
|
43
|
-
├── MIXTAPE.md # compiled master file
|
|
44
|
-
├── tape.yaml # the recipe
|
|
45
|
-
├── synthesis.md # the curator's framing
|
|
46
|
-
├── sources/ # 32 extracted sources
|
|
47
|
-
└── working/ # the curation trace
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
**Curator:** cmdux. **Compiled:** 2026-05-27. **Mode:** quick.
|
|
51
|
-
|
|
52
|
-
Thirty-two sources span two literatures that don't usually meet: JTBD theory (Ulwick, Christensen, Klement, Kalbach, Moesta, the Intercom Job Story canon and its critics) and prompt engineering (Anthropic's prompting best practices, the meta-prompting literature, elicitation patterns for agentic AI, the evaluator-optimizer pattern, the persona-injection ablation studies). The synthesis bridges them: how do you design a system prompt that talks to a human and produces a tight JTBD sentence on demand?
|
|
53
|
-
|
|
54
|
-
Six generative rules from that synthesis show up directly in the prompt:
|
|
55
|
-
|
|
56
|
-
1. **Job Story format with three required slots.** The synthesis recommends the Intercom "When [circumstance], I want [motivation], so I can [outcome]" form over alternatives because the required slots fail structurally when missing — a sentence-shaped non-job ("Help me with healthcare marketing") can't survive the Job Story format's structural check, where it could survive a single-slot form.
|
|
57
|
-
2. **Solution-free, single-scope, specific, externally readable** as the spine of the tightness rubric — those tests come from Ulwick's outcome-statement grammar via the SIVO clarity rubric, adapted to the Job Story slots.
|
|
58
|
-
3. **The aspiration → big → little → micro scope ladder** as the structure of the descent interview — from User Interviews' UX field guide on hyper-specificity.
|
|
59
|
-
4. **Evaluator-optimizer loop (draft → critique → refine)** as the internal generation pattern — from Anthropic's "Building Effective Agents" pattern taxonomy and the LLM self-critique prompting literature.
|
|
60
|
-
5. **One question at a time, hard budget, stop when next question wouldn't change the draft** — from the active-questioning and elicitation literature on agentic AI.
|
|
61
|
-
6. **No persona in the prompt** — from the Zheng et al. 2023 ablation showing persona injection doesn't improve task accuracy and optimal-persona prediction is no better than random.
|
|
62
|
-
7. **Failure-mode-first engineering register** — from the Claude 4 system-prompt teardown and the prompt-engineering anti-patterns catalog. Production system prompts are lists of mistakes the model used to make; the JTBD prompt is shaped the same way.
|
|
63
|
-
|
|
64
|
-
A few choices in the prompt deliberately diverge from the mixtape's center of gravity, and they're worth naming:
|
|
65
|
-
|
|
66
|
-
- **No passing examples in the final prompt.** The synthesis recommends concrete examples as a teaching tool. We dropped them because passing examples carry an anchoring risk — the model copies surface features from the example domain. Failing examples teach a rule that generalizes; passing examples teach a style that doesn't. The rubric is doing the work passing examples normally would. The single passing example that does appear (the clinical Job Story for the diabetes case in the descent section) illustrates *the casual-language-to-Job-Story translation*, not the target shape itself.
|
|
67
|
-
- **Quality over token economy in the read step.** Early drafts capped reads at "two or three sampled files." That cap is gone. If the user shared material, the agent reads enough to confidently characterize the project. Stopping condition is *confidence*, not file count.
|
|
68
|
-
- **Single context-sharing question, not a multi-path router.** An earlier draft offered the user three explicit routing options (folder / files / skip) in a ~120-word message. That turned out to be friction solving for the wrong problem. The deployment scenario is narrower than the router assumed: this prompt is only ever used to create a fresh JTBD from scratch. Users don't paste pre-drafted JTBDs (the whole point is they don't have one), and the choice between "files" and "folder" is mechanical, not strategic. The single short question — *"Do you have any documents or project material I should look at first?"* — surfaces the affordance without forcing the user through a decision tree.
|
|
69
|
-
|
|
70
|
-
### Historical note: the house form
|
|
71
|
-
|
|
72
|
-
Earlier versions of Liner — and the first published version of this prompt — used a different JTBD form: *"Help me [verb] [object] [scope]."* That form matched the surface shape of every Liner artifact at the time (the methodology docs, the example mixtapes, the schema), so the prompt was designed to produce what Liner already consumed.
|
|
73
|
-
|
|
74
|
-
The trade-off became clear once the prompt was used in practice. The house form has no required slots: a sentence like "Help me with healthcare marketing" satisfies the form template but is not a JTBD. That meant the qualitative rubric had to do all the work of catching topic-shaped non-jobs — a soft check rather than a hard one. The Job Story format has the same forgivingness against mush in its individual slots but fails structurally when a slot is empty, which raises the floor before the rubric runs.
|
|
75
|
-
|
|
76
|
-
The format switch realigned the prompt with the original synthesis recommendation. The cost is a one-time migration of existing artifacts; the benefit is a structurally tighter floor on every future JTBD.
|
|
77
|
-
|
|
78
|
-
## How to use it
|
|
79
|
-
|
|
80
|
-
Three deployment paths, all using the same prompt:
|
|
81
|
-
|
|
82
|
-
**Pure-chat (Claude.ai, ChatGPT, Cowork web).** User pastes the prompt block into a fresh chat. When the context-sharing question fires, the user can drop files into the chat or say they have no material. Folder paths aren't viable in this environment; the prompt handles that case gracefully.
|
|
83
|
-
|
|
84
|
-
**Agent with filesystem access (Claude Code, Cowork desktop, Codex, the Liner TUI as a subprocess).** Both file attachments and folder paths are live. The user picks; the agent reads accordingly.
|
|
85
|
-
|
|
86
|
-
**Embedded inside the `curating-mixtapes` skill.** Drop the prompt block into `cli-update-docs/SKILL.md` as the body of Phase 1 — Framing, replacing the current "Ask the user for the JTBD" paragraph. The skill's outer context provides Liner framing; this prompt handles JTBD elicitation. Filesystem access is the default in the skill's runtime.
|
|
87
|
-
|
|
88
|
-
**As a TUI subprocess.** A future `liner jtbd <folder>` command could spawn this prompt with the folder path in context. The context-sharing question still fires — the user might want to add files or skip the folder — but the path is available if they want it.
|
|
89
|
-
|
|
90
|
-
## Design choices worth understanding
|
|
91
|
-
|
|
92
|
-
A few decisions in the prompt aren't obvious and have been pushed back on during design:
|
|
93
|
-
|
|
94
|
-
**Why fire the context-sharing question unconditionally?** Capability detection is brittle: file tools may be advertised but broken, sandboxed, or scoped to a different path than the user expects. Silent inference of context is worse than no context. Asking once is one extra turn; getting it wrong is a wrong JTBD that propagates through every downstream phase. Asking respects user agency and removes a class of silent-failure bugs. The question is short — three sentences — to keep the friction low.
|
|
95
|
-
|
|
96
|
-
**Why a hard question budget?** The most reliable failure mode for interview prompts is death by clarification — the model keeps asking because "one more question" feels safer than committing. A budget forces a draft. Five questions max, three typical. If the model finds itself drafting a fourth follow-up, the prompt instructs it to draft the JTBD instead.
|
|
97
|
-
|
|
98
|
-
**Why no persona block?** Empirically (Zheng et al., 2023, 162 personas × 2,410 questions) persona injection doesn't improve task accuracy and optimal-persona prediction is no better than random. "You are an expert JTBD practitioner with twenty years of experience" buys hedging language, not skill. The prompt names the task instead.
|
|
99
|
-
|
|
100
|
-
**Why failure modes before instructions?** Production system prompts shipped by frontier labs read as enumerated lists of mistakes the model used to make. That's the right register: the prompt prevents the five specific failures (solution baked in, conflated jobs, topic-as-JTBD, aspirational mush, death-by-questions) more than it teaches JTBD theory.
|
|
101
|
-
|
|
102
|
-
**Why no passing examples (mostly)?** Asymmetric example design — failing examples teach a generalizable rule, passing examples anchor on style and domain. The one passing example in the prompt (the clinical Job Story for the diabetes case) appears only to demonstrate the casual-language-to-Job-Story translation, not the shape of the target output. If users in adjacent fields start pattern-matching on it, swap or strip it.
|
|
103
|
-
|
|
104
|
-
**Why a slot hygiene check?** The first five rubric checks (structural, solution-free, single-scope, specific, externally readable) caught most failures in early use but consistently missed one: audience-scoping camped in the motivation slot. A draft like "I want to design a single-page site that explains the tool to people who already use AI" is technically one motivation, but the audience clause belongs in the circumstance. When audience drifts into the motivation, the circumstance reads thinner than the JTBD actually is, and the synthesis underneath misses signal it should have caught. Slot hygiene is the rule that promotes this from per-curator judgment to a generalizable check. It does not police mush, weak audience scoping, or product-positioning that doesn't earn its slot — those remain curator-level judgments and the qualitative rubric stays load-bearing.
|
|
105
|
-
|
|
106
|
-
## What this prompt does NOT do
|
|
107
|
-
|
|
108
|
-
- It does not produce a knowledge map. Phase 1 of curation wants both JTBD and knowledge map; this prompt produces only the JTBD. The knowledge map is the next move in the skill.
|
|
109
|
-
- It does not produce sources, citations, or curator notes. Those are Phase 2 and Phase 4.
|
|
110
|
-
- It does not produce a synthesis. Phase 6.
|
|
111
|
-
- It does not validate the JTBD against a real mixtape. The rubric is necessary but not sufficient. The empirical test (Phase 8) is the only real validation.
|
|
112
|
-
- It does not defend against adversarial users. Cooperative-user assumption is baked in. If the prompt ever ships in a context with hostile input (public web form, untrusted API), add a refusal clause.
|
|
113
|
-
- It does not accept a pre-drafted JTBD as input. The deployment scenario is fresh JTBD creation from scratch; users with an existing draft don't need this prompt.
|
|
114
|
-
|
|
115
|
-
## Known limits and watch items
|
|
116
|
-
|
|
117
|
-
- **Anchoring risk on the process examples.** The descent section contains examples from clinical, engineering, and creative domains. These illustrate *the scope-ladder shape*, not target output, so the anchoring risk is weaker than it would be for passing JTBD examples — but it's nonzero. If users in those fields consistently produce ladder-shaped artifacts that don't fit their actual work, swap or strip them.
|
|
118
|
-
- **The structural and slot-hygiene rubric checks are necessary, not sufficient.** Slot 1 catches *omitted* slots; slot 6 catches misplaced audience clauses. Neither catches mush, weak audience scoping, or product-positioning that doesn't earn its slot. A Job Story like "When I'm doing marketing, I want to do it well, so I can succeed" passes both structural checks and fails on the qualitative ones. The qualitative rubric stays load-bearing.
|
|
119
|
-
- **Soft dependency on user calibration.** The prompt assumes the user can identify their most relevant material. Almost always true for someone curating a mixtape; less true for a first-time user. If you observe weak JTBDs from less-experienced users, the fix is a checklist of *kinds* of content that tend to be load-bearing (project briefs, requirements docs, customer research, prior synthesis attempts), not more rules in the prompt.
|
|
120
|
-
- **Big-repo reads.** If a user points the agent at a very large folder, the "read enough to confidently characterize" rule may still under-sample the part of the repo that defines domain. The fix isn't a token cap; it's better signposting in the context-sharing question if you observe drift.
|
|
121
|
-
|
|
122
|
-
## Related files
|
|
123
|
-
|
|
124
|
-
- The prompt itself: [`JTBD-MASTER-PROMPT.md`](./JTBD-MASTER-PROMPT.md)
|
|
125
|
-
- The format migration plan: [`JOB-STORY-MIGRATION.md`](./JOB-STORY-MIGRATION.md)
|
|
126
|
-
- The source mixtape: [`mixtapes/jtbd-master-prompt/`](../mixtapes/jtbd-master-prompt/)
|
|
127
|
-
- Synthesis (the bridge between JTBD theory and prompt engineering): [`mixtapes/jtbd-master-prompt/synthesis.md`](../mixtapes/jtbd-master-prompt/synthesis.md)
|
|
128
|
-
- Tape recipe: [`mixtapes/jtbd-master-prompt/tape.yaml`](../mixtapes/jtbd-master-prompt/tape.yaml)
|
|
129
|
-
- 32 source extracts: [`mixtapes/jtbd-master-prompt/sources/`](../mixtapes/jtbd-master-prompt/sources/)
|
|
130
|
-
- The Liner curation methodology that places this work in Phase 1: [`cli-update-docs/CURATION.md`](./CURATION.md)
|
|
131
|
-
- The skill that will likely embed this prompt: [`cli-update-docs/SKILL.md`](./SKILL.md)
|
|
132
|
-
- The mixtape format spec defining the `jtbd:` field the prompt's output lands in: [`cli-update-docs/MIXTAPE-FORMAT.md`](./MIXTAPE-FORMAT.md)
|
|
133
|
-
- Project-level overview of Liner: [`LINER-MASTER.md`](./LINER-MASTER.md)
|