linersh 0.5.0 → 0.5.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/bin/liner.js +37 -0
- package/cli-update-docs/ABOUT.md +69 -0
- package/cli-update-docs/CURATION.md +261 -0
- package/cli-update-docs/JOB-STORY-MIGRATION.md +99 -0
- package/cli-update-docs/JTBD-MASTER-PROMPT-ABOUT.md +133 -0
- package/cli-update-docs/JTBD-MASTER-PROMPT.md +147 -0
- package/cli-update-docs/MIXTAPE-FORMAT.md +398 -0
- package/cli-update-docs/PLATFORM.md +210 -0
- package/cli-update-docs/README.md +107 -0
- package/cli-update-docs/SKILL.md +244 -0
- package/cli-update-docs/TUI-BACKLOG.md +196 -0
- package/cli-update-docs/curator-notes.md +84 -0
- package/cli-update-docs/quality-check-tests.md +196 -0
- package/cli-update-docs/source-finding-tactics.md +99 -0
- package/cli-update-docs/source-quality-hierarchy.md +130 -0
- package/cli-update-docs/synthesis-guidance.md +133 -0
- package/dist/App.js +29 -12
- package/dist/App.js.map +1 -1
- package/dist/agents/detect.js +14 -4
- package/dist/agents/detect.js.map +1 -1
- package/dist/colors.js +48 -21
- package/dist/colors.js.map +1 -1
- package/dist/components/Header.js +5 -5
- package/dist/components/Header.js.map +1 -1
- package/dist/components/KeyHints.js +9 -2
- package/dist/components/KeyHints.js.map +1 -1
- package/dist/components/LabeledBox.js +2 -2
- package/dist/components/LabeledBox.js.map +1 -1
- package/dist/components/NextSteps.js +2 -2
- package/dist/components/NextSteps.js.map +1 -1
- package/dist/open-folder.js +28 -0
- package/dist/open-folder.js.map +1 -0
- package/dist/screens/AgentSetup.js +12 -12
- package/dist/screens/AgentSetup.js.map +1 -1
- package/dist/screens/BootSplash.js +30 -15
- package/dist/screens/BootSplash.js.map +1 -1
- package/dist/screens/CompileView.js +21 -12
- package/dist/screens/CompileView.js.map +1 -1
- package/dist/screens/FramingConfirmReview.js +6 -6
- package/dist/screens/FramingConfirmReview.js.map +1 -1
- package/dist/screens/Gate1Review.js +4 -4
- package/dist/screens/Gate1Review.js.map +1 -1
- package/dist/screens/Gate2Review.js +4 -4
- package/dist/screens/Gate2Review.js.map +1 -1
- package/dist/screens/ImportPrompt.js +3 -3
- package/dist/screens/ImportPrompt.js.map +1 -1
- package/dist/screens/LocalFilePicker.js +5 -5
- package/dist/screens/LocalFilePicker.js.map +1 -1
- package/dist/screens/NewMixtapeWizard.js +14 -14
- package/dist/screens/NewMixtapeWizard.js.map +1 -1
- package/dist/screens/PhaseRunner.js +52 -43
- package/dist/screens/PhaseRunner.js.map +1 -1
- package/dist/screens/ProcessManifest.js +4 -4
- package/dist/screens/ProcessManifest.js.map +1 -1
- package/dist/screens/ProjectHub.js +31 -25
- package/dist/screens/ProjectHub.js.map +1 -1
- package/dist/screens/SourceModal.js +2 -2
- package/dist/screens/SourceModal.js.map +1 -1
- package/dist/screens/TapeBrowser.js +10 -9
- package/dist/screens/TapeBrowser.js.map +1 -1
- package/dist/screens/TapeDraftReview.js +17 -17
- package/dist/screens/TapeDraftReview.js.map +1 -1
- package/dist/screens/TapeEditor.js +5 -5
- package/dist/screens/TapeEditor.js.map +1 -1
- package/dist/screens/cassette-art.js +21 -21
- package/package.json +5 -4
- package/dist/browser-support.js +0 -62
- package/dist/browser-support.js.map +0 -1
- package/dist/screens/BrowserSetup.js +0 -181
- package/dist/screens/BrowserSetup.js.map +0 -1
- package/dist/screens/NewProjectPrompt.js +0 -66
- package/dist/screens/NewProjectPrompt.js.map +0 -1
- package/dist/screens/Settings.js +0 -72
- package/dist/screens/Settings.js.map +0 -1
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Liner Platform
|
|
2
|
+
|
|
3
|
+
How the Liner project operates: the surfaces, the lifecycle, the library, and the boundaries.
|
|
4
|
+
|
|
5
|
+
This document assumes the reader has read [ABOUT.md](./ABOUT.md) (what Liner is) and [CURATION.md](./CURATION.md) (the methodology). It describes Liner's specific implementation choices, not the methodology itself.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## The surfaces
|
|
10
|
+
|
|
11
|
+
Liner is several tools sharing a methodology and a file format. Each surface exists for a specific moment in the workflow.
|
|
12
|
+
|
|
13
|
+
**CLI** (Python, `pipx install linersh`). Atomic operations on mixtape projects — `liner init`, `liner compile`, `liner share`, `liner import`, `liner list`, `liner clone`, `liner cache {info,list,show,clear,purge}`, `liner setup-js` (one-shot JavaScript-rendering setup). The right tool for scripting, automation, and one-shot operations.
|
|
14
|
+
|
|
15
|
+
**TUI** (Node + Ink, `npx linersh`). Interactive multi-step lifecycle runner. Drives the methodology with sensible defaults, calls the Python CLI as subprocesses for fetching, parsing, and compilation. The right tool for authoring new mixtapes. Features a project-folder browser, a structured editor for `tape.yaml` with synthesis-readiness indicator, a local-file picker for `local_file` sources, and a live progress view that streams NDJSON events from `liner compile --emit-events`.
|
|
16
|
+
|
|
17
|
+
**Skill** (`curating-mixtapes`). A portable methodology document Claude reads when invoked. Drops into `~/.claude/skills/`. Works without the CLI for users who prefer chat-native authoring.
|
|
18
|
+
|
|
19
|
+
**MCP server**. Exposes Liner's functions as tools any MCP-compatible host can call (Claude Code, Codex, Cursor, others). Local install, stdio transport. The right tool for agent-driven workflows.
|
|
20
|
+
|
|
21
|
+
**Web builder**. Stateless form on `liner.sh` that produces a `tape.yaml` for download. The right tool for casual users who don't want to install anything.
|
|
22
|
+
|
|
23
|
+
The surfaces are independent. None requires the others.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## The two modes
|
|
28
|
+
|
|
29
|
+
Most curators won't practice the methodology in detail. They want a tool that produces a usable mixtape with minimal effort. A small minority will engage substantively at each step.
|
|
30
|
+
|
|
31
|
+
Liner supports both through two modes that share the same architecture and produce the same artifact shape.
|
|
32
|
+
|
|
33
|
+
**Quick mode** (default). The AI does maximum work. The curator confirms or lightly edits at each gate. Defaults are accept-all. A complete mixtape takes 15–30 minutes. Quality is "good enough for personal use."
|
|
34
|
+
|
|
35
|
+
**Methodology mode**. The curator engages substantively. Writes their own synthesis if they want. Reviews evaluation rationales. Adds and rejects sources deliberately. A complete mixtape takes several hours. Quality is library-eligible.
|
|
36
|
+
|
|
37
|
+
The TUI runs quick mode by default with methodology mode available as a slower path. The skill defaults to quick mode and includes instructions for methodology mode. Library contributions require methodology mode.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## The lifecycle
|
|
42
|
+
|
|
43
|
+
Every mixtape moves through the same phases regardless of mode. Quick mode runs through them with AI doing the work and the curator confirming. Methodology mode runs through them with the curator doing substantive work alongside the AI.
|
|
44
|
+
|
|
45
|
+
1. **Framing** — JTBD statement, knowledge map
|
|
46
|
+
2. **Candidate discovery** — long-list of URLs based on the knowledge map, no fetching yet
|
|
47
|
+
3. **Fetching** — pull content for candidates into the shared cache
|
|
48
|
+
4. **Evaluation** — AI reads fetched content, proposes keep/trim/drop with ratings against the JTBD
|
|
49
|
+
5. **Quality checks** — redundancy, coverage, disagreement, framing-gap tests
|
|
50
|
+
6. **Synthesis** — AI drafts the synthesis; curator may edit (synthesis is required, not optional)
|
|
51
|
+
7. **Final assembly** — `liner compile` writes `MIXTAPE.md` and populates `sources/`
|
|
52
|
+
8. **Empirical test** (optional but recommended) — compile, paste into AI conversation, compare with/without
|
|
53
|
+
|
|
54
|
+
Two natural human-in-the-loop gates: candidate confirmation before fetching (saves wasted network calls) and evaluation review before finalization (catches the AI's misjudgments). Quick mode shows these gates with "looks good, continue" defaulted; methodology mode pauses for real review.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## The artifacts
|
|
59
|
+
|
|
60
|
+
A mixtape is a folder, not a file. The folder is the canonical unit; everything else is derived from it.
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
mobile-design-foundations/
|
|
64
|
+
├── MIXTAPE.md # the consumable artifact
|
|
65
|
+
├── tape.yaml # the recipe — kept sources, sections, notes
|
|
66
|
+
├── synthesis.md # the curator's distilled understanding
|
|
67
|
+
├── sources/ # extracted content for kept sources
|
|
68
|
+
│ ├── 01-<slug>.md
|
|
69
|
+
│ └── ...
|
|
70
|
+
├── personal/ # curator's local copies of `local_file` sources (optional)
|
|
71
|
+
│ └── ...
|
|
72
|
+
└── working/ # the methodology made visible
|
|
73
|
+
├── 01-jtbd-and-knowledge-map.md
|
|
74
|
+
├── 02-candidate-longlist.md
|
|
75
|
+
├── 03-evaluation.yaml
|
|
76
|
+
├── 04-quality-checks.md
|
|
77
|
+
└── 05-empirical-test.md
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Three concepts to distinguish:
|
|
81
|
+
|
|
82
|
+
- A **tape file** (`tape.yaml`) is the recipe. References sources by URL or path. Shareable on its own; anyone with the file can recompile from scratch.
|
|
83
|
+
- A **mixtape** is the project folder. Contains the recipe, the working notes, the fetched content, the synthesis, and the master file.
|
|
84
|
+
- The **consumable mixtape** is `MIXTAPE.md` plus the `sources/*.md` files it references. This is what gets pasted into an AI conversation.
|
|
85
|
+
|
|
86
|
+
[MIXTAPE-FORMAT.md](./MIXTAPE-FORMAT.md) specifies the structure in detail.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## The content cache
|
|
91
|
+
|
|
92
|
+
The cache is a shared, curator-level resource. One cache per machine, used across all projects.
|
|
93
|
+
|
|
94
|
+
Default location: `~/.liner/cache/` (or wherever `platformdirs` puts it on the user's OS).
|
|
95
|
+
|
|
96
|
+
The cache holds extracted source content keyed by canonical URL. The same source used in three different mixtapes is fetched once. Sources that change over time (transcripts, articles) have per-type TTLs; permanent references (specs, papers) can be pinned.
|
|
97
|
+
|
|
98
|
+
The cache is the curator's local research library. Treat it that way. `liner cache list` shows what's there. `liner cache show <url>` displays a cached source. `liner cache purge <url>` removes one.
|
|
99
|
+
|
|
100
|
+
The cache is never included in `.mixtape` exports. When a recipient imports a `.mixtape`, the receiving Liner repopulates *their* cache by fetching sources fresh — reusing whatever they already have.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## The library
|
|
105
|
+
|
|
106
|
+
The Liner library is a curated collection of public mixtapes at [liner.sh/library](https://liner.sh/library), backed by a Git repository.
|
|
107
|
+
|
|
108
|
+
**What the library contains.** Methodology-mode mixtapes authored by Liner maintainers and invited guest curators. Every mixtape uses only sources anyone can fetch. The folders are published in full — recipe, synthesis, working notes, sources, the compiled `MIXTAPE.md`. Library readers can browse the compiled artifact directly without compiling anything themselves.
|
|
109
|
+
|
|
110
|
+
**What the library does not contain.** Quick-mode tapes. Tapes containing `local_file` sources (which by definition reference content the maintainers can't republish). Tapes with `render: js` that depend on opt-in dependencies. Tapes that haven't passed the empirical test.
|
|
111
|
+
|
|
112
|
+
**Structure.** Each mixtape is a directory in the repo. The website renders these as individual pages. Users can clone the tape file and edit it, browse the compiled mixtape, or read the working notes.
|
|
113
|
+
|
|
114
|
+
**Curation philosophy.** Small, slow-growing, opinionated. Quality over coverage. A library of fifty excellent mixtapes is more useful than five hundred mediocre ones.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Contributing
|
|
119
|
+
|
|
120
|
+
The library accepts pull requests for methodology-mode mixtapes only.
|
|
121
|
+
|
|
122
|
+
1. Build the mixtape in methodology mode, applying [CURATION.md](./CURATION.md) substantively
|
|
123
|
+
2. Run the empirical test — compile the mixtape, compare AI output with and without it on a real question. Document the result in `working/05-empirical-test.md`
|
|
124
|
+
3. Submit a PR with the full project folder — exported via `liner share --no-personal`, and with no `local_file` sources in `tape.yaml`
|
|
125
|
+
4. A maintainer reviews. Submissions can be accepted, returned with feedback, or declined
|
|
126
|
+
|
|
127
|
+
The bar is "demonstrably improves AI output for the stated job-to-be-done." Effort alone isn't sufficient. A well-meaning mixtape that doesn't move the needle isn't a library mixtape.
|
|
128
|
+
|
|
129
|
+
Accepted mixtapes are credited to the curator by name. Curators retain authorship. Library mixtapes are MIT-licensed by default unless otherwise specified.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Sharing
|
|
134
|
+
|
|
135
|
+
Mixtapes are folders. To share a mixtape as a single file, use `liner share <project-folder>`. This produces `<project-folder>.mixtape` — a zip containing the project folder.
|
|
136
|
+
|
|
137
|
+
The exported `.mixtape` includes everything in the project folder: `MIXTAPE.md`, `tape.yaml`, `synthesis.md`, `sources/`, `working/`, and `personal/` (when the recipe uses `local_file` sources). It does not include anything from the shared content cache (which lives outside the project folder anyway).
|
|
138
|
+
|
|
139
|
+
On `liner import <file.mixtape>`, the receiving Liner unzips the folder, then refetches any sources that aren't already in the receiving curator's cache. Sources already cached are reused. `local_file` sources read from the archived `personal/` directly — no refetch. The result is a working project folder identical to what the original curator had.
|
|
140
|
+
|
|
141
|
+
**Flags worth knowing about:**
|
|
142
|
+
|
|
143
|
+
- `--no-working-notes`: exclude the `working/` folder from the export. For curators who consider their working notes private. Default is to include them.
|
|
144
|
+
- `--no-personal`: exclude `personal/` from the export. Used when the local copies are licensed/gated material the curator can't redistribute, or when preparing a library submission. The recipient won't be able to compile `local_file` sources without supplying their own copies.
|
|
145
|
+
- `--no-source-content`: skip the `sources/` folder. The recipient must re-fetch on first compile.
|
|
146
|
+
- `--minimal`: produce a smaller zip containing only `tape.yaml`. For sharing the recipe only. The recipient compiles fresh.
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## What Liner doesn't do
|
|
151
|
+
|
|
152
|
+
Boundaries that shape the project's scope:
|
|
153
|
+
|
|
154
|
+
- **No hosted compilation.** All compilation happens on the curator's machine. Liner does not run a server that fetches sources for users.
|
|
155
|
+
- **No accounts in v1.** The CLI, TUI, library, and website all work without authentication. A future community index will use GitHub OAuth only.
|
|
156
|
+
- **No paywall bypass.** Liner does not help users access content they don't already have. Source handlers for gated content require the user to provide content from their existing access.
|
|
157
|
+
- **No LLM calls in the core tools.** The CLI, TUI, library tools, and web builder don't make LLM calls. All AI work happens through the user's own subscription (Claude Code, Codex, or API key) via the skill or MCP server. Liner doesn't pay for inference.
|
|
158
|
+
- **No headless browser by default.** Plain `pipx install linersh` ships with the lightweight server-side web handler only. JavaScript-rendered sites (Apple HIG, Notion, many SPAs) require the opt-in `linersh[js]` extra, which adds Playwright and a Chromium binary. The extra is local-only — there's no hosted rendering service.
|
|
159
|
+
- **No telemetry.** The tools don't phone home. Usage is the user's own business.
|
|
160
|
+
- **No curator-required compression decisions.** Sources are stored at full extracted length. In-context efficiency comes from the master file pattern — `MIXTAPE.md` is small and always-loaded, sources are referenced and loaded on demand by the consuming AI.
|
|
161
|
+
|
|
162
|
+
These boundaries are stable. Anything outside them either lives in a separate project or doesn't get built.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## The community index (planned, deferred)
|
|
167
|
+
|
|
168
|
+
A future addition will be a community index — a directory of community-published mixtapes hosted by their curators on GitHub. Liner does not host the content; it indexes links to user repositories.
|
|
169
|
+
|
|
170
|
+
The design:
|
|
171
|
+
|
|
172
|
+
- Curators sign in with GitHub OAuth and submit a link to a public GitHub repository containing their mixtape folder
|
|
173
|
+
- The repository must be on GitHub (no other hosts in v1)
|
|
174
|
+
- Entries are reviewed before featuring; the front page is editorially curated
|
|
175
|
+
- No comments, ratings, or community voting in v1
|
|
176
|
+
- A passive popularity signal may be shown but does not drive default sorting
|
|
177
|
+
|
|
178
|
+
This feature is not part of the initial Liner release. It will be built only if there's evidence of demand from real users of the v1 tools and library. In the meantime, the `/mixtapes` route on the website serves as a placeholder with an interest signup.
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Maintenance contract
|
|
183
|
+
|
|
184
|
+
Liner is a side project. The maintenance contract:
|
|
185
|
+
|
|
186
|
+
- Issues and PRs are reviewed when time permits, not on any schedule
|
|
187
|
+
- No SLA, no guaranteed compatibility, no support commitments
|
|
188
|
+
- Breaking changes are possible between versions; versioning will be honest about them
|
|
189
|
+
- The transcript-fetching and content-extraction layers depend on third-party platforms that change over time; the tools will sometimes break and will be fixed when fixes are practical
|
|
190
|
+
- The library is curated by the maintainer and invited guest curators; submissions are welcomed but not guaranteed acceptance or response
|
|
191
|
+
|
|
192
|
+
Open source does not mean free maintenance. Users who need guaranteed support should use a hosted product.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Versioning
|
|
197
|
+
|
|
198
|
+
Liner versions three things independently:
|
|
199
|
+
|
|
200
|
+
- **Tape format** has its own version field. Breaking format changes increment the format version; older tapes either continue to work or get a clear migration path. See [MIXTAPE-FORMAT.md](./MIXTAPE-FORMAT.md) for the versioning policy.
|
|
201
|
+
- **Methodology** is versioned in [CURATION.md](./CURATION.md). Substantive changes increment the methodology version.
|
|
202
|
+
- **Tools** (CLI, TUI, skill, MCP server) follow semver. Major versions can break compatibility; minor and patch versions don't.
|
|
203
|
+
|
|
204
|
+
The methodology, the format, and the tools are versioned independently. Updates to one don't force updates to the others unless there's a real dependency.
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## License
|
|
209
|
+
|
|
210
|
+
MIT.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Curating Mixtapes — Skill Bundle
|
|
2
|
+
|
|
3
|
+
This is the Liner methodology made executable by Claude. The bundle implements CURATION.md v2.0 as instructions to a running AI, drives the eight-phase mixtape lifecycle from a topic to a project folder ready for `liner compile`, and supports both quick mode (the AI does most of the work, the user confirms at two gates) and methodology mode (the curator engages substantively at every phase).
|
|
4
|
+
|
|
5
|
+
It is one of Liner's surfaces, alongside the CLI, the TUI, the planned MCP server, and the planned web builder. The skill is the surface for Claude-Code-native and TUI-subprocess authoring. Methodology-mode curators can also use it directly when working in a Claude Code session.
|
|
6
|
+
|
|
7
|
+
## Bundle contents
|
|
8
|
+
|
|
9
|
+
Six files in one directory:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
curating-mixtapes/
|
|
13
|
+
├── SKILL.md # the orchestrator
|
|
14
|
+
├── source-finding-tactics.md # Phase 2
|
|
15
|
+
├── source-quality-hierarchy.md # Phase 4
|
|
16
|
+
├── curator-notes.md # Phase 4
|
|
17
|
+
├── quality-check-tests.md # Phase 5
|
|
18
|
+
└── synthesis-guidance.md # Phase 6
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
`SKILL.md` is the orchestrator. It defines the trigger description, the two modes, the two gates, the eight-phase lifecycle skeleton, the AI biases to compensate for, the boundaries (what the skill does NOT do), and the failure modes to watch. It is always loaded when the skill fires.
|
|
22
|
+
|
|
23
|
+
The five companion files are loaded only at the phases that use them. Phases 1, 3, 7, and 8 have no companion file — their guidance fits inside SKILL.md.
|
|
24
|
+
|
|
25
|
+
The split is deliberate. Every invocation pulls SKILL.md's ~2,300 words into context regardless. Companion files add 1,000–1,500 words each but only at the phase that needs them, so total context cost scales with where the user is in the lifecycle rather than with the bundle's full size.
|
|
26
|
+
|
|
27
|
+
## Where the bundle lives
|
|
28
|
+
|
|
29
|
+
**Local testing.** Drop the `curating-mixtapes/` folder into `~/.claude/skills/`. Claude Code and Claude Desktop both look there for user-installed skills. The skill fires when the user says something the description matches — "help me make a mixtape on [topic]" is the canonical trigger.
|
|
30
|
+
|
|
31
|
+
**Shipping.** The bundle lives at `liner/skills/curating-mixtapes/` in the main Liner repository. End users install it from there (installation flow TBD — likely a `liner skills install` command or a documented copy step in the Liner README).
|
|
32
|
+
|
|
33
|
+
**TUI subprocess.** The Liner TUI bundles the skill internally and invokes it via the Claude Agent SDK in quick mode. The user doesn't see the skill directly; they see the TUI's wizard UI. The methodology being applied is this skill's.
|
|
34
|
+
|
|
35
|
+
The same file contents work in all three locations. Don't fork between a local-test version and a ship version.
|
|
36
|
+
|
|
37
|
+
## Runtime requirements
|
|
38
|
+
|
|
39
|
+
Filesystem access is required, not optional. The skill reads its own companion files at specific phases and writes mixtape artifacts to a project folder. It is designed for execution inside Claude Code or as a TUI subprocess, both of which have filesystem access by default. It is not designed for pure-chat (claude.ai) use.
|
|
40
|
+
|
|
41
|
+
No MCP server is required. v1 uses Claude's own web search for candidate discovery and URL verification. When the Liner MCP server ships, a future skill version will use it for fetching and cache operations; v1 doesn't depend on it.
|
|
42
|
+
|
|
43
|
+
## How invocation works
|
|
44
|
+
|
|
45
|
+
The user says something the description matches. Claude loads SKILL.md. Claude reads it, identifies which mode applies (quick by default unless the user says otherwise or asks for library contribution), and begins the lifecycle.
|
|
46
|
+
|
|
47
|
+
At Phase 2, Claude reads `source-finding-tactics.md`. At Phase 4, Claude reads `source-quality-hierarchy.md` and `curator-notes.md`. At Phase 5, Claude reads `quality-check-tests.md`. At Phase 6, Claude reads `synthesis-guidance.md`. Each companion file is read at the start of its phase, before any work in that phase happens.
|
|
48
|
+
|
|
49
|
+
The two gates pause for user input. In quick mode, the default is "looks good, continue" — Claude proceeds unless the user actively objects. In methodology mode, Claude pauses for substantive review.
|
|
50
|
+
|
|
51
|
+
The skill writes artifacts to a project folder named for the topic (e.g., `mobile-design-foundations/`) as it goes. The working notes are produced phase by phase, so the user can stop at any phase boundary and resume later — the working files are picked up where they were left.
|
|
52
|
+
|
|
53
|
+
When all phases complete, the user runs `liner compile <project-folder>` themselves. The skill never compiles.
|
|
54
|
+
|
|
55
|
+
## How to test the bundle
|
|
56
|
+
|
|
57
|
+
Pick a small topic the curator hasn't already researched. "Writing better LLM evals," "Notion API patterns," "designing for color blindness" — narrow, technical, with enough source material that the corpus has shape but not so much that the run takes hours. Run the skill end-to-end in quick mode. Note where Claude struggles, where the methodology produces friction, where the gates fire awkwardly.
|
|
58
|
+
|
|
59
|
+
Run again in methodology mode on the same topic. Compare the artifacts. The two modes should produce same-shape folders with different depth of curator engagement showing through. If the methodology-mode output looks indistinguishable from the quick-mode output, that's a signal the skill isn't asking enough of methodology-mode curators.
|
|
60
|
+
|
|
61
|
+
For higher signal: run the skill in quick mode on a topic that already has a hand-curated mixtape (the CLI/TUI corpus is the obvious one). Compare the skill's tape file and synthesis against the hand-curated version. This is the empirical test for the skill itself, structurally identical to the methodology's Phase 8 test for mixtapes. If the skill's quick-mode output is meaningfully worse than the hand-curated version, that's expected — quick mode targets "good enough for personal use." If the gap is larger than expected, the skill needs work.
|
|
62
|
+
|
|
63
|
+
## How to update or extend the bundle
|
|
64
|
+
|
|
65
|
+
Three kinds of changes happen, each with a different shape.
|
|
66
|
+
|
|
67
|
+
**Tightening SKILL.md.** Phase descriptions, gate behavior, trigger description, the AI-biases list, the failure-modes list. Edit in place. SKILL.md is the source of truth for the bundle's structure; everything else conforms to what SKILL.md says.
|
|
68
|
+
|
|
69
|
+
**Editing a companion file.** Refinements to the tactics, hierarchy, notes guidance, tests, or synthesis advice. Edit in place. Keep the orchestrator references in SKILL.md unchanged unless the change affects when or how a companion gets read.
|
|
70
|
+
|
|
71
|
+
**Adding a new companion file.** Two questions to answer first. Is the content concretely better than what could fit in SKILL.md? (Worked examples and pattern catalogs are the usual reasons.) Does the content apply to one specific phase rather than the whole lifecycle? If yes to both, add the companion and reference it from SKILL.md's lifecycle section. If no to either, the content probably belongs in SKILL.md itself or in CURATION.md.
|
|
72
|
+
|
|
73
|
+
When adding a companion, update this README's "Bundle contents" section and the load-profile note in SKILL.md. Don't let the bundle's structure drift from how the README describes it.
|
|
74
|
+
|
|
75
|
+
## v0.3 status and the second pass
|
|
76
|
+
|
|
77
|
+
The current bundle is v0.3. SKILL.md is complete and reflects CURATION.md v2.0. The five companion files contain the methodology content in instructional voice but use `TODO` markers in place of worked examples.
|
|
78
|
+
|
|
79
|
+
The second pass — pulling those examples from the Cowork CLI/TUI synthesis — is the immediate next deliverable. The `TODO` markers name specific candidates: the Caligula rescue for the rescue-move pattern in Phase 4, the Van Slyck duplicate for the redundancy test, the form-design tradition rescue for the framing-gap test in Phase 5, the OpenClaw original notes for bad-note contrast in curator-notes.md.
|
|
80
|
+
|
|
81
|
+
Hold off shipping the bundle to `liner/skills/` until the second pass lands. The `TODO` markers are specific enough that a methodology-mode curator could fill them by hand, but it's faster and more consistent to do it in one focused session pointed at the Cowork material.
|
|
82
|
+
|
|
83
|
+
## Versioning
|
|
84
|
+
|
|
85
|
+
The skill bundle has its own version, independent of the CLI, TUI, and methodology document. Three version numbers track separately:
|
|
86
|
+
|
|
87
|
+
- **Methodology version** is tracked in CURATION.md (`Current version: 2.0`).
|
|
88
|
+
- **Skill bundle version** is the bundle's own — currently v0.3 internally, not yet stamped into SKILL.md frontmatter. Adding a `version` field to the frontmatter is a small open decision; the convention isn't established yet across Liner's surfaces.
|
|
89
|
+
- **Methodology compatibility** is asserted by the `methodology_version` field the skill writes into generated `tape.yaml` files. The skill claims compatibility with the methodology version it was built against.
|
|
90
|
+
|
|
91
|
+
When CURATION.md updates, the skill bundle may need a corresponding update. The question to ask: does the methodology change affect what the running AI should do, or just how a human reader explains the work? If the former, the skill needs an update; if the latter, the skill is fine as-is. Bias toward updating both together when in doubt.
|
|
92
|
+
|
|
93
|
+
## Relationship to other Liner pieces
|
|
94
|
+
|
|
95
|
+
The skill is the methodology made executable. It sits alongside Liner's other surfaces and shares the format and methodology with them.
|
|
96
|
+
|
|
97
|
+
**CURATION.md** is the methodology described to humans. The skill bundle implements it for an AI executor. The two are paired artifacts that update together when the methodology changes substantively.
|
|
98
|
+
|
|
99
|
+
**The Liner CLI** runs `liner compile` against the project folder this skill produces. The skill never compiles; the CLI never authors. Clean split.
|
|
100
|
+
|
|
101
|
+
**The Liner TUI** invokes this skill internally for quick-mode authoring via the Claude Agent SDK. Same methodology, different UX.
|
|
102
|
+
|
|
103
|
+
**The Liner MCP server** (planned) will expose mechanical operations — fetch this URL, validate this tape file, query the cache — as tools. A future skill version will use those tools where v1 uses Claude's own web search.
|
|
104
|
+
|
|
105
|
+
**The Liner library** publishes methodology-mode mixtapes. The skill can produce library-eligible output if run in methodology mode and the empirical test passes — but the bar for library contribution is real curator engagement, not the skill's quick-mode default.
|
|
106
|
+
|
|
107
|
+
Treat changes to the bundle the way you'd treat changes to the methodology: deliberately, with examples, with a clear reason. The skill is the methodology executed at scale; drift in the skill is drift in the methodology.
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: curating-mixtapes
|
|
3
|
+
description: Use when the user wants to build a "mixtape" — a curated bundle of sources (videos, articles, papers, specs) assembled as AI context for a specific job-to-be-done. Triggers include "help me make a mixtape on X", "curate sources on Y for AI", "build a context bundle for Z", "let's research X with Liner", "make me a tape on Y", "help me build a Liner mixtape". Drives the eight-phase Liner curation methodology end-to-end and produces a mixtape project folder — `tape.yaml`, `synthesis.md`, and `working/*` notes — ready for `liner compile`. Defaults to quick mode (the AI does the heavy lifting, the user confirms at two gates); methodology mode is available when the user wants to engage substantively at every step or is targeting library contribution.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Curating Mixtapes
|
|
7
|
+
|
|
8
|
+
This skill implements the Liner curation methodology (CURATION.md v2.0). A mixtape is a curated bundle of sources designed to make AI conversations meaningfully better within a specific domain. The bar: a good mixtape demonstrably improves AI output on tasks within its job-to-be-done.
|
|
9
|
+
|
|
10
|
+
The output of this skill is a project folder ready for `liner compile`. The skill does not compile.
|
|
11
|
+
|
|
12
|
+
**Runtime requirement:** this skill assumes filesystem access. It reads companion files from its own directory at specific phases and writes artifacts to a project folder. Designed for execution inside Claude Code or as a subprocess driven by the Liner TUI. Not designed for pure-chat use.
|
|
13
|
+
|
|
14
|
+
## Terminology — get these right
|
|
15
|
+
|
|
16
|
+
- **Tape file** (`tape.yaml`) — the recipe. Sources with notes and sections.
|
|
17
|
+
- **Mixtape** — the project folder. Recipe + synthesis + working notes + source content + master file.
|
|
18
|
+
- **Consumable mixtape** — `MIXTAPE.md` plus the `sources/*.md` files. What gets pasted into an AI conversation. Produced by `liner compile`.
|
|
19
|
+
|
|
20
|
+
Tape ≠ mixtape. The recipe is small; the mixtape is the realized artifact.
|
|
21
|
+
|
|
22
|
+
## What this skill produces
|
|
23
|
+
|
|
24
|
+
A project folder named for the topic (e.g., `mobile-design-foundations/`) containing:
|
|
25
|
+
|
|
26
|
+
- `tape.yaml` — the recipe, conforming to MIXTAPE-FORMAT v1 (with v1.1 additions: `mode`, `jtbd`, `local_file` sources, optional `render` field on web sources)
|
|
27
|
+
- `synthesis.md` — the curator's distilled understanding of the domain
|
|
28
|
+
- `working/01-jtbd-and-knowledge-map.md` — framing artifacts
|
|
29
|
+
- `working/02-candidate-longlist.md` — the unfiltered candidate pool
|
|
30
|
+
- `working/03-evaluation.yaml` — keep/trim/drop decisions with rationales and ratings
|
|
31
|
+
- `working/04-quality-checks.md` — redundancy, coverage, disagreement, and framing-gap findings
|
|
32
|
+
|
|
33
|
+
`sources/` and `MIXTAPE.md` are produced later by `liner compile`. The `working/05-empirical-test.md` file is produced when Phase 8 is run.
|
|
34
|
+
|
|
35
|
+
When the curator has supplied local material (book chapters, exported PDFs, Reader-Mode-saved articles), the skill may write `local_file` entries in `tape.yaml` pointing at files the curator has placed under `personal/`. This is a methodology-mode affordance — the curator's local context belongs to them, not the public web, and the `local_file` source type makes it first-class. Library contributions still exclude `local_file` sources; the skill should not invent them or suggest paths the curator hasn't supplied.
|
|
36
|
+
|
|
37
|
+
## Companion files
|
|
38
|
+
|
|
39
|
+
This skill is split across files in its own directory. Read each companion file at the start of the phase that uses it. Do not skip the read.
|
|
40
|
+
|
|
41
|
+
- `source-finding-tactics.md` — read before Phase 2
|
|
42
|
+
- `source-quality-hierarchy.md` — read before Phase 4
|
|
43
|
+
- `curator-notes.md` — read before Phase 4
|
|
44
|
+
- `quality-check-tests.md` — read before Phase 5
|
|
45
|
+
- `synthesis-guidance.md` — read before Phase 6
|
|
46
|
+
|
|
47
|
+
The orchestration logic, the two modes, the two gates, the AI-bias list, and the failure-mode list stay in this file because they apply across the whole lifecycle.
|
|
48
|
+
|
|
49
|
+
## Two modes
|
|
50
|
+
|
|
51
|
+
Default to **quick mode** unless the user says they want methodology mode or library contribution.
|
|
52
|
+
|
|
53
|
+
**Quick mode.** The AI does maximum work. Defaults at every gate are "looks good, continue." Total wall-clock target: 15–30 minutes. Output quality: good enough for personal use.
|
|
54
|
+
|
|
55
|
+
**Methodology mode.** The curator engages substantively at every phase. Revises the knowledge map. Reviews evaluation rationales. Writes or substantially rewrites the synthesis in their own voice. Runs the empirical test. Several hours over one or more sessions. Output quality: library-eligible.
|
|
56
|
+
|
|
57
|
+
Same lifecycle. Same artifacts. The difference is how much human judgment shows up in the working notes and the synthesis.
|
|
58
|
+
|
|
59
|
+
## Two human-in-the-loop gates
|
|
60
|
+
|
|
61
|
+
Two gates exist regardless of mode. Quick mode defaults them to "continue." Methodology mode pauses for substantive review.
|
|
62
|
+
|
|
63
|
+
- **Gate 1 — Candidate confirmation** (after Phase 2, before Phase 3). Show the candidate long-list. The user confirms before any fetching happens. Saves wasted network calls; catches missing categories early.
|
|
64
|
+
- **Gate 2 — Evaluation review** (after Phase 4, before Phase 6). Show keep/trim/drop with rationales and quality-check findings. The user confirms before synthesis is drafted.
|
|
65
|
+
|
|
66
|
+
## The lifecycle
|
|
67
|
+
|
|
68
|
+
Run these phases in order. Each phase's output feeds the next. Do not reorder.
|
|
69
|
+
|
|
70
|
+
### Phase 1 — Framing
|
|
71
|
+
|
|
72
|
+
Define the job-to-be-done and sketch a knowledge map.
|
|
73
|
+
|
|
74
|
+
**The JTBD is a Job Story, not a topic.** Required form: `When [circumstance], I want [motivation], so I can [outcome].` All three slots required. "Mobile design" is a topic. *"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."* is a JTBD. Three different Job Stories in the same topic area produce three different mixtapes.
|
|
75
|
+
|
|
76
|
+
Elicit the JTBD using the [JTBD Master Prompt](JTBD-MASTER-PROMPT.md) — drop its body into this phase as your interview script. It opens with a single short context-sharing question (offering to read project material if the user has any), reads what's shared if anything, then either runs a budgeted interview (five questions max) or descends the scope ladder from what was inferred. It drafts silently, checks the draft against a six-test rubric, and emits one sentence. If the user pushes back, take the correction and re-run the rubric — don't defend.
|
|
77
|
+
|
|
78
|
+
If you can't use the master prompt as-is (e.g., you're in a context where pasting it doesn't make sense), the minimum bar is: refuse any answer that's a bare topic, an aspiration ("be better at X"), a slot-missing fragment, or two jobs joined by "and." Stay on framing until the JTBD is a concrete single-sentence Job Story.
|
|
79
|
+
|
|
80
|
+
**Knowledge map.** A short outline of the conceptual territory the corpus needs to cover. Four to eight sections, each with a few sub-areas. Treat it as a hypothesis — it will get revised during research.
|
|
81
|
+
|
|
82
|
+
Write both to `working/01-jtbd-and-knowledge-map.md`. In quick mode: draft, show, get a one-line confirmation. In methodology mode: iterate with the curator until both feel right.
|
|
83
|
+
|
|
84
|
+
### Phase 2 — Candidate discovery
|
|
85
|
+
|
|
86
|
+
**Read `source-finding-tactics.md` before starting this phase.**
|
|
87
|
+
|
|
88
|
+
Generate a long list of candidate sources across the knowledge map. URLs and titles only — no fetching yet. Aim wide: two to four times the eventual kept count. This phase is recall, not precision.
|
|
89
|
+
|
|
90
|
+
Verify each candidate exists at the URL given. AI is prone to hallucinating plausible-sounding URLs. Treat unverified URLs as candidates only until they're confirmed.
|
|
91
|
+
|
|
92
|
+
Write to `working/02-candidate-longlist.md`, grouped by knowledge-map section. For each candidate: URL, title, one-line reason it's a candidate.
|
|
93
|
+
|
|
94
|
+
**At Gate 1, show the long-list and ask:** "Anything obviously missing? Anything obviously wrong? Confirm to start fetching." In quick mode the default is "looks good, continue." In methodology mode, expect real edits.
|
|
95
|
+
|
|
96
|
+
### Phase 3 — Fetching
|
|
97
|
+
|
|
98
|
+
Pull content for every confirmed candidate.
|
|
99
|
+
|
|
100
|
+
For each URL, retrieve the full text. YouTube: transcript. Articles, papers, docs: extracted body text. Skim each as it comes back to confirm the URL contains what the title promised.
|
|
101
|
+
|
|
102
|
+
If a URL fails to fetch (paywall, dead link, no transcript, geographic block): note the failure, decide whether the source is critical enough to chase via an alternate route (Wayback Machine, alternate venue), and either find a substitute or drop it. Don't silently lose candidates.
|
|
103
|
+
|
|
104
|
+
A successful transcript fetch is not the same as a high-value source. Many tutorial videos transcribe cleanly but contain no transferable content. The next phase handles that judgment.
|
|
105
|
+
|
|
106
|
+
Don't write fetched content into the project folder yet. That happens at compile time, only for kept sources.
|
|
107
|
+
|
|
108
|
+
### Phase 4 — Evaluation
|
|
109
|
+
|
|
110
|
+
**Read `source-quality-hierarchy.md` and `curator-notes.md` before starting this phase.**
|
|
111
|
+
|
|
112
|
+
Read every fetched source against the JTBD. Decide keep / trim / drop. Rate kept sources 1–5. Draft curator notes for kept and trim sources.
|
|
113
|
+
|
|
114
|
+
Write decisions to `working/03-evaluation.yaml`:
|
|
115
|
+
|
|
116
|
+
```yaml
|
|
117
|
+
candidates:
|
|
118
|
+
- url: https://example.com/source
|
|
119
|
+
title: Source title
|
|
120
|
+
decision: kept # kept | trim | dropped
|
|
121
|
+
rating: 5 # 1-5; required for kept and trim
|
|
122
|
+
section: foundations
|
|
123
|
+
rationale: One-sentence reason this decision was made.
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Drafted curator notes land in `tape.yaml` at Phase 7. Write them now in their final form; don't postpone the work to assembly.
|
|
127
|
+
|
|
128
|
+
### Phase 5 — Quality checks
|
|
129
|
+
|
|
130
|
+
**Read `quality-check-tests.md` before starting this phase.**
|
|
131
|
+
|
|
132
|
+
Step back from the keep-pile. Run the four tests. Document findings in `working/04-quality-checks.md`.
|
|
133
|
+
|
|
134
|
+
If a test fails, fix it before moving on. Don't proceed to synthesis with known coverage or framing gaps.
|
|
135
|
+
|
|
136
|
+
*Tip: this phase benefits from running with fresh attention. If the conversation has been long, consider starting a separate chat with just the JTBD, knowledge map, and the kept-source list (titles + notes only) to run the checks. Optional, not required by the methodology.*
|
|
137
|
+
|
|
138
|
+
**At Gate 2, show the final keep-list, the curator notes, and the quality-check findings. Ask:** "Confirm to proceed to synthesis." Quick mode default: continue. Methodology mode: expect substantive edits.
|
|
139
|
+
|
|
140
|
+
### Phase 6 — Synthesis
|
|
141
|
+
|
|
142
|
+
**Read `synthesis-guidance.md` before starting this phase.**
|
|
143
|
+
|
|
144
|
+
Draft `synthesis.md`. The synthesis is the curator's distilled understanding of the domain expressed as continuous prose. 800–2000 words.
|
|
145
|
+
|
|
146
|
+
Quick mode: draft, show, default to "looks good, save it." The curator lightly edits if they want.
|
|
147
|
+
|
|
148
|
+
Methodology mode: draft a starting point. Expect the curator to rewrite it substantially in their own voice. Library mixtapes need a substantially curator-written synthesis.
|
|
149
|
+
|
|
150
|
+
### Phase 7 — Assembly
|
|
151
|
+
|
|
152
|
+
Write `tape.yaml`.
|
|
153
|
+
|
|
154
|
+
**Required top-level fields:** `title`, `description`, `curator`, `version: 1`, `mode` (`quick` or `methodology`), `sources` (non-empty list).
|
|
155
|
+
|
|
156
|
+
**Recommended top-level fields:** `tags`, `created` (ISO date), `jtbd`, `methodology_version: "2.0"`, `license`.
|
|
157
|
+
|
|
158
|
+
**Each kept source needs:**
|
|
159
|
+
|
|
160
|
+
- `type` — `youtube` or `web` (v1 supports only these two; gated content, local files, and pasted content are v2)
|
|
161
|
+
- `url`
|
|
162
|
+
- `note` — the curator note drafted in Phase 4
|
|
163
|
+
- `section` — matches a knowledge-map section
|
|
164
|
+
- `priority: optional` — only for sources the user can skip with `--skip-optional`
|
|
165
|
+
|
|
166
|
+
Order sources within each section by importance (most important first). Order sections by reading order (foundations first, applications later).
|
|
167
|
+
|
|
168
|
+
**Validate before declaring done:**
|
|
169
|
+
|
|
170
|
+
- YAML parses
|
|
171
|
+
- All required fields present
|
|
172
|
+
- `version: 1`
|
|
173
|
+
- `mode` is `quick` or `methodology`
|
|
174
|
+
- `sources` is non-empty
|
|
175
|
+
- Every source has `type` and `url`
|
|
176
|
+
- Every `type` is `youtube` or `web`
|
|
177
|
+
- Every `url` parses
|
|
178
|
+
|
|
179
|
+
If validation fails, fix and re-check before showing the user.
|
|
180
|
+
|
|
181
|
+
### Phase 8 — Empirical test (optional in quick mode, required for library contribution)
|
|
182
|
+
|
|
183
|
+
The only real test of whether the mixtape works.
|
|
184
|
+
|
|
185
|
+
1. Compile: `liner compile <project-folder>`
|
|
186
|
+
2. Open a fresh AI conversation. Don't paste the mixtape. Ask a substantive question that should benefit from the JTBD. Save the response.
|
|
187
|
+
3. Open another fresh AI conversation. Paste `MIXTAPE.md` plus relevant `sources/*.md` files. Ask the same question. Save the response.
|
|
188
|
+
4. Compare. Is the with-mixtape response meaningfully better — more specific, more accurate, more nuanced, less generic?
|
|
189
|
+
|
|
190
|
+
Write findings to `working/05-empirical-test.md`: the question, the two responses (or summaries), the honest verdict. If the mixtape didn't help: what's missing? Back to Phase 2 or 5.
|
|
191
|
+
|
|
192
|
+
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. Don't skip this for library contributions.
|
|
193
|
+
|
|
194
|
+
## AI biases this skill must compensate for
|
|
195
|
+
|
|
196
|
+
The skill is the AI running the methodology. The AI has systematic biases that produce worse mixtapes if left uncorrected. Watch for these in your own work throughout every phase — these are not phase-specific.
|
|
197
|
+
|
|
198
|
+
- **Popularity bias.** AI surfaces popular and recent sources at the expense of canonical or older ones. Search deliberately for primary sources. The Apple HIG, the W3C spec, the canonical paper — these often won't appear in generic search results and need to be found directly.
|
|
199
|
+
- **URL hallucination.** AI invents URLs that sound plausible but don't exist. Verify every URL with a web fetch before adding it to the candidate list. A 404 candidate is worse than a missing one.
|
|
200
|
+
- **Generic curator notes.** AI drafts notes that say "this is a useful resource" without specifying role, location of value, or limitations. Compensate by writing each note against the three-thing template in `curator-notes.md`.
|
|
201
|
+
- **Primary-document blindness.** AI gravitates to secondary commentary over primary sources. If a domain has a spec, a standard, or a foundational paper, search for it specifically. Don't accept commentary as a substitute.
|
|
202
|
+
- **Framing-gap blindness.** AI can't see what it didn't search for. The framing-gap test in Phase 5 is the methodological correction for this. Run it with intent — not as a checkbox, as a genuine "what am I missing" question.
|
|
203
|
+
- **Synthesis-as-recap.** AI-drafted synthesis tends to recap source content rather than distill the curator's framing of the domain. Push toward principles, contested questions, and framework distinctions — not "Source 1 says X; Source 2 says Y."
|
|
204
|
+
|
|
205
|
+
If you find yourself producing any of these patterns, stop and correct.
|
|
206
|
+
|
|
207
|
+
## Final delivery
|
|
208
|
+
|
|
209
|
+
When all phases complete, the project folder contains:
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
<topic-slug>/
|
|
213
|
+
├── tape.yaml
|
|
214
|
+
├── synthesis.md
|
|
215
|
+
└── working/
|
|
216
|
+
├── 01-jtbd-and-knowledge-map.md
|
|
217
|
+
├── 02-candidate-longlist.md
|
|
218
|
+
├── 03-evaluation.yaml
|
|
219
|
+
├── 04-quality-checks.md
|
|
220
|
+
└── 05-empirical-test.md # if Phase 8 was run
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Tell the user the folder is ready to compile with `liner compile <topic-slug>`. The compile step produces `MIXTAPE.md` and the `sources/` folder.
|
|
224
|
+
|
|
225
|
+
## What this skill does NOT do
|
|
226
|
+
|
|
227
|
+
- **Does not run `liner compile`.** That's the user's call, with the user's tools.
|
|
228
|
+
- **Does not fetch from gated or local sources.** v1 supports only public `youtube` and `web` URLs. Personal sources (book chapters, gated articles, local files) are real and often high-value, but v1 doesn't support them.
|
|
229
|
+
- **Does not maintain the shared content cache.** That's the CLI's job.
|
|
230
|
+
- **Does not publish to the library.** Library contributions happen via PR to the Liner repo, in methodology mode, after passing the empirical test.
|
|
231
|
+
|
|
232
|
+
## Common failure modes
|
|
233
|
+
|
|
234
|
+
Patterns that produce bad mixtapes. Watch for them in your own work:
|
|
235
|
+
|
|
236
|
+
- **The greatest-hits mixtape.** A list of the most famous resources. Looks impressive, adds little value because the AI already knows about famous resources from training. Curate for *non-obvious* sources.
|
|
237
|
+
- **The unfocused mixtape.** No clear JTBD. Tries to cover the field. Shallow on everything, deep on nothing.
|
|
238
|
+
- **The author-tribute mixtape.** Three of five sources by the same person because the curator is a fan. Narrows perspective, reduces synthesis quality.
|
|
239
|
+
- **The transcript dump.** All video transcripts, no articles, no specs, no primary sources. Mix source types.
|
|
240
|
+
- **The noteless mixtape.** Sources without curator notes. The curator either was lazy or didn't have a reason. Both are problems.
|
|
241
|
+
- **The aspirational mixtape.** Sources the curator thinks people *should* read, not sources that help with the JTBD. Mixtapes are tools, not reading recommendations.
|
|
242
|
+
- **The single-pass mixtape.** Curated without a framing-gap test. Well-covered within one narrow framing, blind to perspectives the curator didn't think to look for.
|
|
243
|
+
|
|
244
|
+
If the mixtape this skill produces fits any of these patterns, return to the relevant phase and fix it.
|