linersh 1.1.2 → 1.2.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.
Files changed (62) hide show
  1. package/README.md +12 -58
  2. package/bin/liner.js +62 -14
  3. package/package.json +10 -17
  4. package/cli-update-docs/README.md +0 -129
  5. package/cli-update-docs/SKILL.md +0 -294
  6. package/cli-update-docs/curator-notes.md +0 -85
  7. package/cli-update-docs/quality-check-tests.md +0 -435
  8. package/cli-update-docs/source-finding-tactics.md +0 -224
  9. package/cli-update-docs/source-quality-hierarchy.md +0 -209
  10. package/cli-update-docs/synthesis-guidance.md +0 -151
  11. package/dist/agents/artifact-validation.js +0 -567
  12. package/dist/agents/artifact-validation.js.map +0 -1
  13. package/dist/agents/candidate-longlist.js +0 -116
  14. package/dist/agents/candidate-longlist.js.map +0 -1
  15. package/dist/agents/detect.js +0 -169
  16. package/dist/agents/detect.js.map +0 -1
  17. package/dist/agents/evaluation-assembly.js +0 -270
  18. package/dist/agents/evaluation-assembly.js.map +0 -1
  19. package/dist/agents/events.js +0 -8
  20. package/dist/agents/events.js.map +0 -1
  21. package/dist/agents/headless-runner.js +0 -432
  22. package/dist/agents/headless-runner.js.map +0 -1
  23. package/dist/agents/jtbd-clarify.js +0 -169
  24. package/dist/agents/jtbd-clarify.js.map +0 -1
  25. package/dist/agents/models.js +0 -98
  26. package/dist/agents/models.js.map +0 -1
  27. package/dist/agents/parsers.js +0 -316
  28. package/dist/agents/parsers.js.map +0 -1
  29. package/dist/agents/prompts.js +0 -522
  30. package/dist/agents/prompts.js.map +0 -1
  31. package/dist/agents/run-log.js +0 -71
  32. package/dist/agents/run-log.js.map +0 -1
  33. package/dist/agents/runner.js +0 -906
  34. package/dist/agents/runner.js.map +0 -1
  35. package/dist/agents/types.js +0 -2
  36. package/dist/agents/types.js.map +0 -1
  37. package/dist/bin-resolver.js +0 -92
  38. package/dist/bin-resolver.js.map +0 -1
  39. package/dist/config.js +0 -282
  40. package/dist/config.js.map +0 -1
  41. package/dist/editor.js +0 -40
  42. package/dist/editor.js.map +0 -1
  43. package/dist/gates.js +0 -121
  44. package/dist/gates.js.map +0 -1
  45. package/dist/ipc.js +0 -145
  46. package/dist/ipc.js.map +0 -1
  47. package/dist/open-folder.js +0 -28
  48. package/dist/open-folder.js.map +0 -1
  49. package/dist/phases.js +0 -346
  50. package/dist/phases.js.map +0 -1
  51. package/dist/progress.js +0 -184
  52. package/dist/progress.js.map +0 -1
  53. package/dist/source-inbox.js +0 -297
  54. package/dist/source-inbox.js.map +0 -1
  55. package/dist/types.js +0 -3
  56. package/dist/types.js.map +0 -1
  57. package/dist/version.js +0 -18
  58. package/dist/version.js.map +0 -1
  59. package/dist/yaml-io.js +0 -376
  60. package/dist/yaml-io.js.map +0 -1
  61. package/maintenance-skill/SKILL.md +0 -18
  62. package/maintenance-skill/agents/openai.yaml +0 -4
@@ -1,224 +0,0 @@
1
- # Source-finding tactics
2
-
3
- Loaded by the `curating-mixtapes` skill at the start of Phase 2 (Candidate discovery).
4
-
5
- This file describes tactics that produce better candidates than generic search. When you reach Phase 2, work through the relevant tactics — not all of them for every mixtape, but enough that the candidate pool covers the knowledge map and required source roles from multiple angles.
6
-
7
- The goal of Phase 2 is recall, not precision. You're producing roughly two to four times the eventual kept count, but the real stop condition is coverage of the required source roles and capability-pattern lanes. You will cut in Phase 4. Casting wide here is the methodology working as designed.
8
-
9
- ---
10
-
11
- ## 1. Follow the citations
12
-
13
- Pick one excellent source you already have. Find what *it* cites — the references, the linked sources, the "see also" pointers. Then open one of those and find what *it* cites. Three or four hops in, you'll find the canonical sources nobody links to anymore because everyone assumes you've read them.
14
-
15
- This tactic is the single highest-leverage move for discovering primary documents. It works against your popularity bias: cited-by-the-canon sources don't surface in keyword search, but they're what serious work in the field rests on.
16
-
17
- **How to apply:** Open the most credible source you have. Scan the references, footnotes, or "further reading" section. Note every source that's cited *and* recurs in another credible source's references. Recurrence across multiple credible sources is the signal — it's how you find the references nobody links anymore.
18
-
19
- ---
20
-
21
- ## 2. Reverse-engineer experts' reading lists
22
-
23
- Many domain experts publish their own reading lists or syllabi. These already encode someone else's curation work. Use them.
24
-
25
- **Where to look:** Notion (search "site:notion.so reading list <topic>"), GitHub (`awesome-<topic>` repositories, individual `README.md` files in personal repos), Are.na (channels — Are.na in particular is underused for this), personal blogs, course-instructor pages.
26
-
27
- Are.na deserves a specific note: it's a network designed for visual and textual reference-collecting. Practitioners use it to curate the kind of sources that don't make it into mainstream publications. Constrain a search with "site:are.na <topic>" and look for channels related to your JTBD.
28
-
29
- **How to apply:** Find three to five experts in the domain. Search each one's name plus "reading list" or "syllabus" or "references." Catalog what they recommend. Cross-reference with the candidates already on your long-list — overlaps are strong signal; uniques are leads.
30
-
31
- ---
32
-
33
- ## 3. Mine course syllabi
34
-
35
- University courses, bootcamp curricula, and serious online courses have already done curation work for their domain. A well-designed syllabus is a curated reading list optimized for learning. Use them.
36
-
37
- **Productive queries:**
38
-
39
- - `"<topic> syllabus" filetype:pdf`
40
- - `"course readings" <topic>`
41
- - `<topic> "required reading"`
42
- - University course catalogs for the relevant department
43
-
44
- **How to apply:** Find two to three syllabi on your topic. Note the readings that appear across multiple syllabi — those are the canonical pieces. Note the readings that appear once but are written by people you recognize — those are the practitioner-credible additions.
45
-
46
- Course syllabi skew toward foundations. They're best for the early-section knowledge-map buckets. Recent practitioner work is rarely on them.
47
-
48
- ---
49
-
50
- ## 4. Find who experts cite
51
-
52
- Pick three to five acknowledged practitioners in your domain. Look at *their* references — bibliographies, acknowledgments, who they cite in their own writing. The overlap across these experts is your shortlist.
53
-
54
- This tactic is structurally similar to citation-chasing (#1), but starts from people rather than from sources. Use it when you have a clear sense of who the credible practitioners are but no clear sense of which of their works is canonical.
55
-
56
- **How to apply:** Identify three to five practitioners credible in the domain. Open their most recent significant work. Note the sources they cite. Open the sources cited by two or more practitioners. Those are your high-priority candidates.
57
-
58
- ---
59
-
60
- ## 5. Conference proceedings
61
-
62
- Going through three years of a specific conference is more efficient than topic-by-topic search. The conference's curation has already filtered for credibility and substance.
63
-
64
- **How to apply:** Identify one or two conferences serious in the domain. Open their proceedings, talk lists, or YouTube channels for the last three years. Skim titles and abstracts. Flag any talk whose abstract addresses a knowledge-map section.
65
-
66
- Conference talks vary widely in density. The same talk reposted across multiple conferences is one signal of substance. Talks from speakers who are also cited by other practitioners (tactic #4) are another.
67
-
68
- ---
69
-
70
- ## 6. Ask the AI to find gaps, not sources
71
-
72
- Once you have a candidate list, stop searching and ask: *what's missing from this collection for someone trying to [JTBD]?*
73
-
74
- AI is bad at recall — at remembering and surfacing sources you don't know about. AI is good at critique — at looking at a list and noticing structural gaps. Use it for the right thing.
75
-
76
- **How to apply:** Show the candidate list (titles and one-line rationales) along with the JTBD and knowledge map. Ask explicitly: "What perspective is missing? What discipline is underrepresented? What kind of source is this list short on?" Then go find sources to fill the gaps named.
77
-
78
- This tactic is structurally related to the framing-gap test in Phase 5, but earlier and lower-stakes. Doing it in Phase 2 is cheaper than discovering the gap in Phase 5 and having to backtrack.
79
-
80
- ---
81
-
82
- ## 7. Search for the core action and the curator anchors
83
-
84
- A good candidate list is not just "sources about the topic." It must contain
85
- sources that help the consuming AI do the job.
86
-
87
- Start by extracting the JTBD's core action. Examples:
88
-
89
- - "translate moodboards into UI"
90
- - "turn bug reports into reproduction steps"
91
- - "write grant narratives from research evidence"
92
-
93
- Then search for candidate URLs that might directly teach, demonstrate, or argue
94
- for that action. Bridge candidates are allowed, but they cannot carry the corpus
95
- by themselves. For a moodboard-to-interface mixtape, CSS layout, design tokens,
96
- and design systems are bridge leads: useful after a direction exists, but not
97
- enough to teach how to read images, extract mood, or create a new interface
98
- artifact. The keep/drop decision still happens only after the content is fetched
99
- and read.
100
-
101
- When the curator names a person, studio, product, software tool, YouTube
102
- channel, or site they like, deepen the anchor. Search for their case studies,
103
- interviews, talks, process notes, docs, essays, videos, and worked examples.
104
- Do not stop at the homepage, gallery index, or crawler metadata unless that is
105
- the only readable evidence available. If it is only a pointer, say so in the
106
- candidate reason.
107
-
108
- For visual-output jobs, deliberately search for visual and worked-example
109
- evidence: image-heavy case studies, moodboard breakdowns, design rationale,
110
- portfolio projects with process, talks, and videos. A source list made mostly
111
- of UX primers, CSS references, and design-system docs is probably under-serving
112
- the job even if every knowledge-map section has a source.
113
-
114
- ---
115
-
116
- ## 8. Fill required source roles, not just sections
117
-
118
- The Capability Brief should name **Required source roles**: the jobs the corpus
119
- needs sources to perform for the future AI. These are not the same as source
120
- `kind` (`reference / principle / prescription / example`) and not the same as
121
- knowledge-map sections.
122
-
123
- Examples:
124
-
125
- - "core-action method" — sources that teach the exact action the agent must do
126
- - "worked examples / case studies" — sources that show good output, process, or taste
127
- - "domain authority" — primary/official sources the agent can cite for accuracy
128
- - "implementation constraints" — specs, APIs, platform docs, safety limits, or production rules
129
- - "critique / validation" — sources that help judge whether output is good
130
- - "dissent / alternate stance" — sources that prevent one-frame bias
131
- - "domain data" — keyword data, epidemiology, market signals, legal text, or other evidence specific to the niche
132
-
133
- When you build the long-list, make sure every required role has candidates. A
134
- populated section is not enough if a required role is thin. For a visual-output
135
- mixtape, two dozen UX/design-system articles do not substitute for worked
136
- visual/craft examples with rationale. For a medical SEO mixtape, SEO practice
137
- articles do not substitute for authoritative medical sources and domain-specific
138
- keyword or patient-language evidence.
139
-
140
- **How to apply:** For each required source role, search until you have 3–6
141
- plausible candidates or until it is clear public sources are thin. In the
142
- candidate reason, name the role the source might satisfy. If you cannot find
143
- credible candidates for a required role, write a "Role gaps" note in
144
- `working/02-candidate-longlist.md` so Quality can recommend a focused
145
- improvement pass instead of quietly accepting weak coverage.
146
-
147
- Candidate count should fall out of the role plan:
148
-
149
- - Narrow, single-domain projects may need fewer than 20 candidates.
150
- - Ordinary projects usually land around 20–35 candidates.
151
- - Broad, multi-domain, or `reference-translation` projects may need 40–60
152
- candidates because each source domain and translation lane needs its own
153
- candidate pool.
154
-
155
- Do not pad the list to hit a number. Do not stop at a number when a material
156
- role is still empty. Stop when every required role has credible candidates, the
157
- knowledge map is covered, and any capability-pattern lanes named in Phase 1 have
158
- enough evidence to evaluate.
159
-
160
- Good candidate notes should say which role the source might serve:
161
-
162
- - `source role: canonical method` — teaches the process the AI should follow
163
- - `source role: domain authority` — grounds claims in a credible source
164
- - `source role: applied example` — shows what good looks like in context
165
- - `source role: boundary / risk` — prevents harmful or misleading output
166
-
167
- ---
168
-
169
- ## 9. Build a source ecology for reference-translation jobs
170
-
171
- Some mixtapes are not just about a topic. They ask a future agent to read inputs
172
- from one world and turn them into outputs in another. Common examples:
173
-
174
- - images, moodboards, art direction, visual references, or style examples into a
175
- product/interface brief
176
- - screenshots, bug reports, logs, or user complaints into engineering actions
177
- - research evidence, interview notes, or case studies into a narrative or plan
178
-
179
- These are **reference-translation** capabilities. Their candidate pool needs a
180
- source ecology, not a stack of sources from the final output medium.
181
-
182
- For visual/reference work, search at least these lanes:
183
-
184
- - **Input/reference-domain interpretation:** how practitioners read the source
185
- worlds themselves, such as art, photography, architecture, interiors, posters,
186
- editorial design, fashion, packaging, sports/media identity, film, or product
187
- imagery.
188
- - **Translation methods:** sources that show how observed qualities become new
189
- decisions: design-language extraction, style tiles, creative direction,
190
- case-study rationale, annotated redesigns, or critique.
191
- - **Target-output constraints:** the platform/output realities that the final
192
- work must survive, such as web responsiveness, accessibility, motion safety,
193
- design systems, typography, or implementation mechanics.
194
- - **Caller handoff language:** brief formats, vocabulary, do/don't lists,
195
- validation checks, and clarification patterns that make the result executable
196
- by another designer, engineer, or AI agent.
197
-
198
- For an art-direction-to-web mixtape, CSS references, design-token specs, and
199
- accessibility docs are valuable bridge sources. They are not substitutes for
200
- visual-culture sources that teach the agent how to look, compare, interpret, and
201
- translate. A candidate list made mostly of web-craft sources should include a
202
- "Role gaps" note and keep searching for the missing input/reference domains.
203
-
204
- **How to apply:** Before writing `working/02-candidate-longlist.md`, add a short
205
- "Reference-translation source ecology" note to your own scratchpad or the
206
- long-list: target output medium, input/reference domains represented, translation
207
- method candidates, handoff candidates, and bridge/constraint candidates. If the
208
- input/reference domains are thin, search those domains directly instead of doing
209
- another generic target-output search. Do not stop at the ordinary 20–35 candidate
210
- range if the ecology is still missing a source world the future agent must learn
211
- to interpret.
212
-
213
- ---
214
-
215
- ## What not to do
216
-
217
- - **Don't rely on generic search alone.** The first page of search results is what your audience could also find. The point of curation is to surface what they couldn't.
218
- - **Don't accept candidates without verifying URLs.** AI hallucinates plausible-looking URLs. Web-fetch every URL before it goes on the long-list. A 404 candidate is worse than a missing one.
219
- - **Don't filter at Phase 2.** That's Phase 4's job. If a source might be useful, it goes on the long-list. Quality decisions come after fetching and reading. A URL is a lead, not evidence that the content is any good.
220
- - **Don't over-research one section while leaving others empty.** Walk the knowledge map. Each section should have a reasonable candidate pool before you go deep on any one section.
221
- - **Don't let adjacency satisfy the JTBD.** A CSS reference is not an art-direction source just because the final artifact is HTML. A process article is not a writing source just because the writer needs a process. Label these as bridge candidates unless they directly teach the core action.
222
- - **Don't collapse reference-translation work into the output medium.** If the future agent must translate paintings, photos, architecture, sports identity, or moodboards into a product direction, the candidate pool needs sources from those source worlds and from the translation move. Output-medium craft docs are necessary constraints, not the whole corpus.
223
- - **Don't let "not absent" pass a required role.** If a required role is material to the future AI's job, thin coverage should trigger backfill or an improvement-pass recommendation.
224
- - **Don't treat source roles as decorative.** A section can look populated while a required evidence role is absent. That is still a corpus gap.
@@ -1,209 +0,0 @@
1
- # Source-quality hierarchy
2
-
3
- Loaded by the `curating-mixtapes` skill at the start of Phase 4 (Evaluation).
4
-
5
- This file describes how to rank sources, what to avoid, and the patterns to watch for when deciding keep / trim / drop. Apply it after you've fetched every candidate in Phase 3 and before you write `working/03-evaluation.yaml`.
6
-
7
- The goal of Phase 4 is honest assessment against the JTBD. Not breadth. Not completeness. Not even fairness to every source. *Does this source help the consuming AI do the JTBD better?* If yes, keep it. If partially, trim it. If no, drop it.
8
-
9
- A URL is only a lead. The source is the readable content. Do not keep or trim a candidate from its URL, title, search snippet, crawler metadata, or your memory of the source. Keep/trim decisions require source evidence.
10
-
11
- ---
12
-
13
- ## Source-quality hierarchy
14
-
15
- Roughly in order of preference. This is not a strict ranking — context matters — but it's the order to default to when comparing sources of similar topical relevance.
16
-
17
- ### 1. Canonical references
18
-
19
- Specs, standards, official platform docs, RFC documents. The primary source for whatever the topic is.
20
-
21
- Examples by domain: Apple Human Interface Guidelines, Material Design specs, W3C standards, IETF RFCs, language specifications, official API documentation, government regulatory documents.
22
-
23
- **Always include the primary source if one exists.** No piece of commentary on a spec is a substitute for the spec itself. The AI synthesizes better from the primary document than from anyone's interpretation of it.
24
-
25
- ### 2. Practitioner deep-dives from people who built things
26
-
27
- Engineers, designers, and operators at credible companies writing about specific decisions they made. Concrete, battle-tested, often with consequences described honestly. The opposite of motivational content.
28
-
29
- Hallmarks: a specific decision is named, the trade-offs are named, the outcome is described (including when the outcome was bad). The post-mortem genre is the canonical form.
30
-
31
- ### 3. Conference talks from credible speakers
32
-
33
- Pre-filtered by the conference's curation. A talk that made it onto a credible conference's main track has already passed at least one quality gate. Better baseline than random video search.
34
-
35
- Two notes: (a) talk transcripts are lower-density than articles — assume more skim, less detail. (b) Same talk reposted at multiple conferences indicates substance; keep the longest cut and drop the duplicates.
36
-
37
- ### 4. Book chapters
38
-
39
- Specific chapters or excerpts, not whole books. A mixtape isn't a book club — the consuming AI doesn't need 300 pages on a topic when 30 will do. Link to the chapter or include the excerpt.
40
-
41
- Books are particularly valuable for foundational concepts and frameworks that take a chapter to develop. They're less valuable for recent specifics, which change faster than books update.
42
-
43
- ### 5. Long-form interviews with practitioners
44
-
45
- Useful when you can cite a specific episode for a specific point — "Episode 47, the section on incident response, 18 minutes in." Less useful as a general "this practitioner is interesting" reference.
46
-
47
- Interview transcripts are conversational and lower-density than written work. They earn their place when the practitioner says something in the interview they haven't written down anywhere else.
48
-
49
- ### 6. Academic papers when relevant
50
-
51
- Often underrepresented in design and engineering mixtapes because the field skews toward practitioner blogs. When a question is genuinely empirical or has been studied formally, the paper beats any number of blog posts. Don't skip them by default just because the format is intimidating.
52
-
53
- ---
54
-
55
- ## What to avoid
56
-
57
- Source types that consistently produce low-value mixtapes. Drop these unless a specific exception applies.
58
-
59
- - **Listicles ("10 tips for...", "7 things every X should know").** Optimized for clicks, not depth. Almost always shallow despite specificity in the title.
60
- - **AI-generated content.** Now widespread, often subtly wrong, frequently fluent enough to mislead. Detection is imperfect but the tells are: generic phrasing, no specific examples or named cases, no opinionated stance, suspiciously even coverage across sub-topics.
61
- - **Twitter / X threads as primary sources.** Real expertise sometimes lives on Twitter, but threads are usually a teaser for longer-form work elsewhere. If a thread is the primary source, look for the article it was excerpted from. If there isn't one, ask whether a thread really earns a place in the corpus.
62
- - **Vendor blog posts with promotional angles.** Even when the technical content is good, the promotional framing distorts the analysis. Use as background, not as primary references.
63
- - **Most TED-style talks.** Optimized for narrative, emotional resonance, and applause moments. Low density of transferable content per minute. Exceptions exist but are rare.
64
- - **"Ultimate guides," "complete guides," "everything you need to know."** The promise in the title is almost never met. Treat as a yellow flag.
65
-
66
- ---
67
-
68
- ## Decision rubric
69
-
70
- For each fetched source, decide one of: kept, trim, dropped. Rate kept and trim sources 1–5.
71
-
72
- - **Keep (4–5).** Strong fit with JTBD. Canonical, distinctive, or load-bearing for a knowledge-map section that would otherwise be empty. The AI's downstream output is clearly better with this source than without it.
73
- - **Trim (3).** Real content but selective. Worth including with a curator note flagging what to read and what to skip. Trim is not "kept with reservations" — it's "kept *because* the note tells the consuming AI how to use this source." The note is doing real work.
74
- - **Drop (1–2).** Tangential, generic, low-density, or redundant with stronger sources already kept. Drop without guilt. The cost of dropping a marginal source is low; the cost of keeping it is higher than it looks because it dilutes the corpus.
75
-
76
- **Rating calibration.** A 5 is "this source alone makes the mixtape meaningfully more useful." A 4 is "this source clearly belongs and pulls weight." A 3 is "this source belongs only with selective framing in the note." A 2 is "this source duplicates a stronger one or has shallow content." A 1 is "this source actively makes the corpus worse if included."
77
-
78
- If you find yourself rating most sources 4–5, you're under-discriminating. The point of evaluation is to discriminate.
79
-
80
- ## Evidence fields
81
-
82
- Every kept or trimmed source must include these fields in `working/03-evaluation.yaml`:
83
-
84
- - `fetch_status: readable | partial` — `readable` means the substantive article, transcript, PDF body, or local content was retrieved. `partial` means enough real source content was retrieved to judge, such as an abstract plus substantial excerpt.
85
- - `content_quality: high | medium` — `high` means dense, distinctive, and directly useful; `medium` means useful but selective. If the content is shallow, generic, AI-generated, SEO filler, a homepage/gallery without rationale, or a low-density transcript, drop it.
86
- - `evidence:` — at least two bullets naming source-specific claims, examples, sections, methods, transcript moments, or limitations actually seen in the content.
87
-
88
- `metadata_only` and `unavailable` candidates must be dropped. They can remain in the evaluation file as evaluated candidates, but they must not enter `tape.yaml` as normal corpus sources.
89
-
90
- ---
91
-
92
- ## JTBD-fit labels
93
-
94
- Every kept or trimmed source must also get a `jtbd_fit` label. This prevents
95
- topic adjacency from passing as source quality.
96
-
97
- - **direct** — the source teaches, demonstrates, or argues for the core action
98
- in the JTBD.
99
- - **bridge** — the source helps execute the result after the core decision is
100
- made: implementation mechanics, tokens, layout, process, API references, or
101
- operational constraints.
102
- - **background** — broad vocabulary, primer, historical context, or generic
103
- orientation.
104
-
105
- Bridge sources are valuable, but they are not the same as direct fit. If the job
106
- is "turn moodboards into HTML interface concepts," then a moodboard analysis
107
- method, a studio case study with rationale, or a talk on translating visual
108
- references can be direct. A CSS layout guide, token spec, or design critique
109
- process is a bridge unless it specifically teaches the translation move.
110
-
111
- For a `reference-translation` capability, use an even stricter direct-fit test:
112
- the source must help the future agent interpret the input/reference domain or
113
- demonstrate the translation from reference qualities into target-output
114
- decisions. Target-medium mechanics, accessibility standards, design-token
115
- formats, style-guide infrastructure, and implementation docs are usually bridge
116
- sources. They are important, but they cannot carry the core action alone.
117
-
118
- Background sources should rarely be marked required. A kept background source
119
- needs a narrow note explaining why its vocabulary or context is worth carrying.
120
-
121
- If a knowledge-map section contains only `bridge` or `background` sources, mark
122
- that as weak coverage in the rationale or quality report and backfill a direct
123
- source if the section is central to the JTBD.
124
-
125
- Quality also checks source roles at the corpus level. `reference / principle /
126
- prescription / example` is only the generic kind distribution; some projects
127
- need more specific roles. A visual art-director corpus may need high-craft case
128
- studies and worked image-to-interface translations. A medical SEO corpus may
129
- need clinical authority, search-intent evidence, and Google guidance. If those
130
- role-specific sources are missing, write an operating-fit audit and recommend a
131
- focused improvement pass instead of calling the corpus ready with a limitation.
132
-
133
- ---
134
-
135
- ## Bounded fetch fallback
136
-
137
- Phase 4 should read enough to make honest decisions, but it must not stall on
138
- unavailable content. For each candidate, try one direct fetch/read. If that
139
- fails, make at most one recovery attempt: alternate transcript source, search
140
- result, mirror, metadata page, or equivalent.
141
-
142
- After two failed retrieval attempts total, stop searching for that candidate and
143
- evaluate from verified metadata, the Phase 2 reason, and any partial content you
144
- have. Usually that means `dropped`. If you have enough partial content to judge,
145
- set `fetch_status: partial` and write the evidence bullets. If you only have
146
- metadata, set the decision to `dropped`; the rationale can say the candidate
147
- looked promising but was metadata-only. Every candidate still gets a decision in
148
- `working/03-evaluation.yaml`; no source may keep the phase open indefinitely.
149
-
150
- ---
151
-
152
- ## Patterns to watch for
153
-
154
- These are the recurring failure modes during evaluation. Each one is a moment where a source seems worth keeping but isn't.
155
-
156
- ### Redundancy
157
-
158
- Two sources making the same point with similar examples. Keep the stronger one; drop the other. Two sources covering the same ground from different angles is not redundancy — it's coverage. The test is whether the AI would generate meaningfully different output from one vs. both. If not, redundant.
159
-
160
- ### The duplicate trap
161
-
162
- Same talk reposted at different conferences. Same article republished on different sites. Same interview transcribed by multiple outlets. Keep one — usually the longest, most-cited, or earliest-published version. Drop the rest.
163
-
164
- ### Framework boilerplate masquerading as design content
165
-
166
- Common with implementation tutorials. The video or article uses design vocabulary ("usability," "user experience," "accessibility") but teaches no transferable principles — it's a walkthrough of how to use a specific framework's API.
167
-
168
- Drop unless the source encodes a genuinely transferable pattern. A Ratatui tutorial that happens to mention layout principles is a Ratatui tutorial. A Ratatui tutorial that articulates the immediate-mode rendering principle and shows why it matters for terminal UI architecture is a design source.
169
-
170
- ### The rescue move
171
-
172
- A source flagged as "low-value" during candidate discovery (Phase 2) sometimes turns out to be the only one that addresses a specific gap once you've actually read every candidate. If a low-priority source uniquely covers a knowledge-map section that would otherwise be empty or thin, rescue it. Mark the decision and the rationale clearly.
173
-
174
- ### Author overrepresentation
175
-
176
- Three of five sources in a section are by the same author. This narrows perspective and reduces the AI's ability to synthesize across views. Keep the single strongest piece by that author; replace the others with sources by different practitioners. The exception: if the author has genuinely written the canonical work in multiple sub-areas, and no other practitioner has equivalent work, keeping multiple pieces is justified — but you should be able to defend it.
177
-
178
- ### Recency without substance
179
-
180
- Recent does not mean better. A 2024 article that summarizes well-known points is weaker than a 2018 article that originated them. Don't auto-prefer recent. Don't auto-discount old. Apply the same JTBD-fit test regardless of publication date.
181
-
182
- ---
183
-
184
- ## Output: `working/03-evaluation.yaml`
185
-
186
- Write every candidate's decision, regardless of whether it was kept or dropped. The dropped decisions matter — they're how the working notes show that evaluation actually happened.
187
-
188
- For large candidate sets, write decisions incrementally under `working/evaluation-decisions/` as section-sized YAML fragments. Use names like `01-foundations.yaml` and keep each fragment small enough to inspect. Liner assembles those fragments into `working/03-evaluation.yaml` in the original longlist order, so the fragment files are the durable work surface and `03-evaluation.yaml` is the canonical assembled artifact.
189
-
190
- ```yaml
191
- candidates:
192
- - url: https://example.com/source
193
- title: Source title
194
- decision: kept # kept | trim | dropped
195
- rating: 5 # 1-5; required for kept and trim
196
- jtbd_fit: direct # direct | bridge | background
197
- fetch_status: readable # readable | partial; metadata_only/unavailable are dropped
198
- content_quality: high # high | medium; low is dropped
199
- evidence:
200
- - Specific claim or example found in the readable source content.
201
- - Specific method, constraint, result, or limitation found in the content.
202
- section: foundations
203
- rationale: One-sentence reason this decision was made.
204
- note: >
205
- Role: Why this source belongs in the corpus. Value: What it contributes
206
- to the job-to-be-done. Limitations: What the source cannot prove.
207
- ```
208
-
209
- For dropped sources, the rationale should name *why* dropped — "duplicates Source 4," "shallow listicle," "AI-generated," "off-topic relative to JTBD." Generic "low quality" is not useful. Be specific.
@@ -1,151 +0,0 @@
1
- # Synthesis guidance
2
-
3
- Loaded by the `curating-mixtapes` skill at the start of Phase 6 (Synthesis).
4
-
5
- This file describes how to draft `synthesis.md`. Apply it after Phase 5's quality checks have passed and the keep-list is locked. The synthesis is the most personal artifact in the mixtape and the one with the largest effect on downstream AI output. Don't shortcut it.
6
-
7
- ---
8
-
9
- ## What the synthesis is
10
-
11
- The synthesis is the curator's distilled understanding of the domain expressed as continuous prose. It lives at the top of the compiled `MIXTAPE.md` and is the first thing the consuming AI reads.
12
-
13
- Without a synthesis, the AI gets a list of sources and curator notes. It has to construct its own framing of the domain from those pieces, which dilutes the curator's view.
14
-
15
- With a synthesis, the AI gets the curator's framing of the entire domain *before* it sees any source. The synthesis shapes how the AI reads everything that follows. This is the largest single lever for changing downstream AI output, and why the synthesis is required, not optional.
16
-
17
- Length: **800–2000 words.** Shorter for narrow topics; longer for broader ones. If you find yourself below 600 words, the synthesis is probably too thin. If you're above 2500, the synthesis is doing work the sources should be doing.
18
-
19
- ---
20
-
21
- ## What goes in
22
-
23
- Six kinds of content earn their place in the synthesis.
24
-
25
- ### Principles or framework
26
-
27
- The conceptual structure the curator sees in the domain. Not a definition list — a framework. "Good CLI design rests on four pillars: predictable command shape, humane errors, useful defaults, and machine-readable output." That framework, once articulated, shapes how the AI reads every source in the corpus.
28
-
29
- ### Generative rules
30
-
31
- The rules the consuming AI should apply when it is making decisions with the mixtape. Include a `## Generative rules` section with about five imperatives. These are not summaries of sources; they are portable constraints the AI can carry into new work.
32
-
33
- Example: "Channel discipline: stdout is for data, stderr is for humans, and exit codes mean what they say." A rule like this resolves dozens of downstream questions without the AI needing to re-open every source.
34
-
35
- ### Stances this corpus takes
36
-
37
- The opinionated positions the mixtape wants to preserve. Include a `## Stances this corpus takes` section that names what the corpus leans toward, what it resists, and where a dissenting source should temper the rule.
38
-
39
- This is different from the contested-questions section. Contested questions name the debate; stances state the operating answer this mixtape chooses for its JTBD.
40
-
41
- ### Contested questions
42
-
43
- Where credible practitioners disagree, name the disagreement and where the curator stands. "There's an ongoing argument about whether CLIs should mirror existing tool conventions or break them deliberately when the underlying behaviour differs. This mixtape leans toward mirroring; sources 7 and 12 represent the dissenting view."
44
-
45
- Contested questions are gold for downstream AI output. They give the AI permission to represent the domain as contested rather than collapsing it into one answer.
46
-
47
- ### Distinctions between concepts that get confused
48
-
49
- Where the domain has terms or concepts that get used interchangeably but shouldn't, draw the line clearly. "A *wizard* and a *form* are not the same thing. A form collects fields. A wizard collects fields *in a specific order, one at a time, with the option to navigate back*. The distinction matters because [...]."
50
-
51
- These distinctions are what an AI without the synthesis would have to infer from context. With the synthesis, they're explicit and load-bearing.
52
-
53
- ### When to use the mixtape and when to look elsewhere
54
-
55
- A short paragraph at the end: what kinds of questions this mixtape is meant to help with, and what kinds it isn't. This is honest about the corpus's scope. "This mixtape is calibrated for designing CLIs that humans will use interactively. It's less useful for non-interactive CI/CD scripts or for shell-script ergonomics — those are adjacent topics with different conventions."
56
-
57
- ---
58
-
59
- ## What doesn't go in
60
-
61
- Content that looks like it belongs in the synthesis but doesn't.
62
-
63
- ### Source-by-source recap
64
-
65
- "Source 1 argues X. Source 2 argues Y. Source 3 builds on Source 1 to argue Z." This is what a literature review does for an academic paper. The mixtape doesn't need it — the source index handles that role, and the consuming AI will read individual sources when it needs the specifics.
66
-
67
- If the synthesis is recapping sources, the curator hasn't actually synthesized yet. Force the harder question: what does the curator think about the *domain*, given all these sources?
68
-
69
- ### Generic introductions
70
-
71
- "Mobile design is the practice of designing applications for mobile devices, including smartphones and tablets, which have specific constraints around screen size, input methods, and connectivity." This is what the AI already knows. The synthesis isn't a Wikipedia stub. Start where the AI's training data ends.
72
-
73
- ### Tutorial content
74
-
75
- "To design a good CLI, first identify your audience, then decide on a command structure, then..." This is how-to writing, not synthesis. The synthesis is *what the curator thinks about the domain*, not *how to do the work*.
76
-
77
- ### Cheerleading or motivation
78
-
79
- "Good CLI design matters more than ever in an age of..." Cut. The AI doesn't need motivation. The curator's enthusiasm is irrelevant to the synthesis's job.
80
-
81
- ---
82
-
83
- ## Structure
84
-
85
- A typical synthesis runs:
86
-
87
- 1. **Opening framing** (1–2 paragraphs). What this domain is fundamentally about. The frame the curator uses to organize their understanding. Not a definition — a stance.
88
- 2. **The framework or principles** (2–4 paragraphs). The structure the curator sees. Named, not just described.
89
- 3. **Generative rules** (`## Generative rules`, about five imperatives). The small set of rules the consuming AI should remember and apply.
90
- 4. **Stances this corpus takes** (`## Stances this corpus takes`, 1–3 paragraphs or bullets). The opinionated positions and trade-offs this mixtape adopts.
91
- 5. **Contested questions** (1–3 paragraphs). Where credible practitioners disagree. Where the curator stands.
92
- 6. **Important distinctions** (1–2 paragraphs). Concepts the AI is likely to conflate without correction.
93
- 7. **Scope and limits** (1 short paragraph). What this mixtape covers and what it doesn't.
94
-
95
- This is a default. Vary it when the topic warrants — some domains lead with contested questions, some with distinctions, some with a different opening move. The structure serves the content.
96
-
97
- ---
98
-
99
- ## Voice and stance
100
-
101
- The synthesis is written in the curator's voice. First-person is fine. Strong stances are fine — preferred, actually. The AI synthesizes better from a confident framing than from a hedged one.
102
-
103
- "I think the most important distinction in CLI design is..." is better than "Many practitioners consider one of the important distinctions to be..." The first is a stance the AI can engage with; the second is mush.
104
-
105
- This doesn't mean overconfidence. Hedging is appropriate where the curator is genuinely uncertain. But default to stance. Mush in the synthesis produces mush in downstream output.
106
-
107
- ---
108
-
109
- ## Quick mode vs. methodology mode
110
-
111
- **Quick mode.** The AI drafts the synthesis. Apply this guidance during drafting. Show the curator the draft. Default is "looks good, save it." The curator lightly edits if they want.
112
-
113
- The risk in quick mode is that AI-drafted synthesis drifts toward source-by-source recap because that's the easier output shape. Resist this actively. The AI's draft should already be a real synthesis, not a placeholder that says "the curator will rewrite this."
114
-
115
- **Methodology mode.** The AI drafts a starting point. Expect the curator to rewrite it substantially in their own voice. The methodology-mode synthesis is the curator's voice on the domain — AI-drafted starting points with light edits don't meet the bar.
116
-
117
- Library contributions require methodology-mode synthesis. A synthesis that reads as AI-drafted is a signal the mixtape is quick-mode in methodology-mode clothing. The reviewers will catch it.
118
-
119
- ---
120
-
121
- ## A failure mode worth naming
122
-
123
- The most common synthesis failure is one I'll call **synthesis-as-recap.**
124
-
125
- An AI drafting a synthesis gravitates toward describing what each source says, because that's the immediately available material in context. It produces something that reads like a research summary: "Sources 1, 4, and 9 argue X. Sources 2 and 6 take a different view, arguing Y. Source 7 offers a synthesis of both positions."
126
-
127
- This is not a synthesis. It's a recap. The consuming AI can produce its own recap from the source list; what it can't produce is the curator's framing of the domain.
128
-
129
- The fix: stop describing sources, start describing the domain. The synthesis should be readable as a coherent essay on the domain by someone who happens to have read all these sources — not as a tour of the corpus.
130
-
131
- If the synthesis names source numbers ("Source 1 argues..."), it's probably synthesis-as-recap. Real synthesis names ideas, not sources. The source index handles attribution; the synthesis handles framing.
132
-
133
- ---
134
-
135
- ## Worked examples
136
-
137
- Good synthesis shape:
138
-
139
- > This corpus treats onboarding as a trust-building sequence, not as a checklist. The useful question is not "which screens does the user see?" but "what does each step prove before asking for the next commitment?" Sources disagree on how much explanation belongs up front, but they converge on one rule: every prompt should reduce uncertainty before it increases work.
140
-
141
- Bad synthesis-as-recap shape:
142
-
143
- > Source 1 explains onboarding screens. Source 2 covers empty states. Source 3 discusses progressive disclosure. Together, these sources show that onboarding is important.
144
-
145
- ---
146
-
147
- ## Output: `synthesis.md`
148
-
149
- Plain markdown. No front matter. Begins with a top-level heading that matches the mixtape title (e.g., `# Mobile Design Foundations — Synthesis`). The full file gets included verbatim at the top of `MIXTAPE.md` by `liner compile`.
150
-
151
- Write the synthesis to `synthesis.md` in the corpus folder (`mixtape/synthesis.md` in v2 projects). Show the curator the result before declaring Phase 6 complete.