linersh 0.5.4 → 0.5.6

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.
@@ -0,0 +1,546 @@
1
+ # Liner Master Overview
2
+
3
+ This document explains what Liner is, how it works, how it is built, how it is used, and where it fits relative to skills, AI projects, notebooks, and ordinary source lists.
4
+
5
+ ## Short Version
6
+
7
+ Liner is an open-source toolkit for building curated AI context bundles called **mixtapes**.
8
+
9
+ A mixtape is a project folder that contains:
10
+
11
+ - a recipe, `tape.yaml`
12
+ - a curator synthesis, `synthesis.md`
13
+ - extracted source files in `sources/`
14
+ - optional working notes in `working/`
15
+ - a compiled master file, `MIXTAPE.md`
16
+
17
+ The point is simple: AI systems are much better when they are given a thoughtful, domain-specific context bundle instead of a pile of random links or whatever happens to be in the model's training data.
18
+
19
+ Liner makes that context bundle portable, inspectable, repeatable, and shareable.
20
+
21
+ ## The Premise
22
+
23
+ Most AI work is bottlenecked by context quality.
24
+
25
+ If you ask an AI for mobile design feedback with no extra context, it leans on general knowledge. If you give it a carefully curated bundle of Apple HIG references, touch-target research, practitioner essays, pattern critiques, and your own synthesis of how those sources fit together, the answer gets more specific and more useful.
26
+
27
+ That pattern applies across domains:
28
+
29
+ - designing a native iOS app
30
+ - evaluating CLI/TUI interaction patterns
31
+ - choosing an API architecture
32
+ - writing an onboarding guide for a team
33
+ - reviewing product strategy
34
+ - building a hiring rubric
35
+ - understanding a technical standard
36
+ - comparing implementation approaches
37
+
38
+ The hard part is not just collecting links. The hard part is curating sources against a specific job-to-be-done, extracting the useful content, explaining why each source matters, and packaging the result so any AI tool can use it.
39
+
40
+ That is what Liner does.
41
+
42
+ ## Core Terms
43
+
44
+ ### Tape
45
+
46
+ A **tape** is the recipe. It lives in `tape.yaml`.
47
+
48
+ It names the mixtape, describes its purpose, identifies the curator, and lists the kept sources with notes, sections, and source metadata.
49
+
50
+ The tape is small and shareable. It can be edited by hand, stored in Git, reviewed in a pull request, forked, or recompiled later.
51
+
52
+ ### Mixtape
53
+
54
+ A **mixtape** is the full project folder.
55
+
56
+ It includes the tape, the curator's synthesis, extracted source content, working notes, and compiled output.
57
+
58
+ ### Consumable Mixtape
59
+
60
+ The **consumable mixtape** is what an AI actually reads: `MIXTAPE.md` plus the referenced files in `sources/`.
61
+
62
+ `MIXTAPE.md` contains the curator synthesis, a source index, and links to the extracted source files.
63
+
64
+ ### Curator
65
+
66
+ The **curator** is the person shaping the context bundle.
67
+
68
+ The curator's job is not to collect everything. It is to decide what belongs, what does not, what each source contributes, and what the AI should understand before using the sources.
69
+
70
+ ## What Liner Produces
71
+
72
+ A compiled project folder looks like this:
73
+
74
+ ```text
75
+ mobile-design-foundations/
76
+ |-- MIXTAPE.md
77
+ |-- tape.yaml
78
+ |-- synthesis.md
79
+ |-- sources/
80
+ | |-- 01-touch-target-size.md
81
+ | |-- 02-apple-gestures.md
82
+ | `-- ...
83
+ |-- personal/
84
+ | `-- touch-target-paper.pdf
85
+ `-- working/
86
+ |-- 01-jtbd-and-knowledge-map.md
87
+ |-- 02-candidate-longlist.md
88
+ |-- 03-evaluation.yaml
89
+ |-- 04-quality-checks.md
90
+ `-- 07-tape-draft.yaml
91
+ ```
92
+
93
+ `tape.yaml` is the source recipe. `synthesis.md` is the curator's distilled framing. `sources/` contains extracted content. `working/` contains the curation trace. `MIXTAPE.md` is the compiled entry point.
94
+
95
+ ## What Liner Is Good For
96
+
97
+ Liner is good when the AI needs durable, domain-specific context and when source choice matters.
98
+
99
+ Examples:
100
+
101
+ - **Mobile design foundations**: Apple HIG pages, touch target research, gesture references, accessibility guidance, and a synthesis of how native mobile conventions fit together.
102
+ - **CLI/TUI design**: command-line UX talks, terminal UI framework docs, interaction design principles, and examples of developer tools that feel good to use.
103
+ - **API design migration**: internal docs, public API guidelines, REST/GraphQL trade-off essays, platform-specific constraints, and migration examples.
104
+ - **Hiring rubrics**: calibration documents, role expectations, interview design references, examples of good and bad signals, and a curator-written evaluation philosophy.
105
+ - **Product strategy context**: market notes, user research excerpts, competitor docs, positioning essays, and a synthesis of what decisions the team is trying to make.
106
+ - **Technical standards**: RFCs, official docs, canonical papers, implementation notes, and practitioner critiques.
107
+ - **Design system audits**: internal component docs, accessibility standards, platform guidelines, usage examples, and known exceptions.
108
+
109
+ Liner works especially well when:
110
+
111
+ - the topic is narrower than a whole field
112
+ - the job-to-be-done is explicit
113
+ - sources include primary or canonical material
114
+ - the curator can explain why each source belongs
115
+ - the output will be reused across many AI conversations or tools
116
+
117
+ ## What Liner Is Not Good For
118
+
119
+ Liner is not the right tool for every context problem.
120
+
121
+ It is usually not good for:
122
+
123
+ - **One-off questions** where a quick search is enough.
124
+ - **Huge document corpora** where retrieval over thousands of files is the real task.
125
+ - **Real-time monitoring** where the source set changes constantly.
126
+ - **Private data you cannot safely store in a project folder.**
127
+ - **Bypassing paywalls or access controls.** If a source is gated, you need legitimate access and should use `local_file` only for material you are allowed to use.
128
+ - **Pure reading lists for humans.** A mixtape is optimized for AI context, not for teaching a human in a pleasant sequence.
129
+ - **Automatic truth.** Liner can package sources and expose provenance, but it does not guarantee the sources are correct.
130
+ - **Generic topic overviews.** A broad "everything about design" mixtape will usually be shallow and noisy.
131
+
132
+ The key test is: will a curated context bundle make an AI meaningfully better at a specific job? If not, Liner is probably more ceremony than value.
133
+
134
+ ## How Liner Is Used
135
+
136
+ There are three common ways to use Liner.
137
+
138
+ ### 1. CLI-First
139
+
140
+ Use the Python CLI when you already have a project folder or prefer editing YAML and Markdown directly.
141
+
142
+ ```sh
143
+ liner init mobile-design-foundations
144
+ # edit mobile-design-foundations/tape.yaml
145
+ # write mobile-design-foundations/synthesis.md
146
+ liner compile mobile-design-foundations
147
+ ```
148
+
149
+ The compile step fetches and extracts sources, then writes:
150
+
151
+ - `MIXTAPE.md`
152
+ - `sources/NN-*.md`
153
+
154
+ To share:
155
+
156
+ ```sh
157
+ liner share mobile-design-foundations
158
+ liner import mobile-design-foundations.mixtape
159
+ ```
160
+
161
+ ### 2. TUI-First
162
+
163
+ Use the terminal UI when you want an interactive authoring experience.
164
+
165
+ ```sh
166
+ npx linersh
167
+ ```
168
+
169
+ The TUI helps create and edit mixtape project folders, add sources, edit metadata, run compilation, share archives, and inspect process manifests.
170
+
171
+ With no arguments, the `liner` npm package opens the TUI. CLI subcommands pass through to the bundled Python core:
172
+
173
+ ```sh
174
+ liner compile mobile-design-foundations
175
+ liner setup-js
176
+ liner share mobile-design-foundations
177
+ ```
178
+
179
+ ### 3. Skill-Assisted Curation
180
+
181
+ Use the `curating-mixtapes` skill when you want an AI assistant to run the curation methodology with you.
182
+
183
+ The skill produces a project folder with:
184
+
185
+ - `tape.yaml`
186
+ - `synthesis.md`
187
+ - `working/*` notes
188
+
189
+ The skill does not compile. After the skill finishes, run:
190
+
191
+ ```sh
192
+ liner compile <project-folder>
193
+ ```
194
+
195
+ ## The Curation Lifecycle
196
+
197
+ The current TUI-driven flow has six authoring phases plus Compile. The empirical test remains methodology guidance for library-quality mixtapes, not a required TUI stop.
198
+
199
+ ### Phase 1: Framing
200
+
201
+ Define the job-to-be-done and sketch a knowledge map.
202
+
203
+ The job-to-be-done is not the topic. "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 job. The JTBD is written in Job Story form: `When [circumstance], I want [motivation], so I can [outcome].` See [CURATION.md](CURATION.md) Phase 1 and [JTBD-MASTER-PROMPT.md](JTBD-MASTER-PROMPT.md) for the full rubric.
204
+
205
+ ### Phase 2: Candidate Discovery
206
+
207
+ Gather more candidate sources than you expect to keep. This phase is about recall, not precision.
208
+
209
+ Good tactics include following citations, mining expert reading lists, searching course syllabi, checking official docs, and asking AI to critique gaps rather than invent sources.
210
+
211
+ ### Phase 3: Evaluation
212
+
213
+ Decide keep, trim, or drop.
214
+
215
+ A kept source should have a specific role. The curator note should explain why the source belongs, what part matters, and any limitations.
216
+
217
+ ### Phase 4: Quality Checks
218
+
219
+ Run tests for redundancy, coverage, disagreement, framing gaps, and source-kind balance.
220
+
221
+ This is where the methodology catches "good but narrow" corpora.
222
+
223
+ ### Phase 5: Synthesis
224
+
225
+ Write the curator's distilled understanding of the domain.
226
+
227
+ The synthesis is not a recap. It is the framing the AI should inherit before using the sources.
228
+
229
+ ### Phase 6: Assembly
230
+
231
+ Write the final `tape.yaml`, order the sources, and prepare for compile.
232
+
233
+ ### Compile
234
+
235
+ Fetch every kept source, extract readable content, write `sources/`, and produce `MIXTAPE.md`.
236
+
237
+ The TUI treats compilation as the completion milestone. A partial compile is still a usable finished state when `MIXTAPE.md` is written; the hub shows "Ready to use — compiled with warnings" and pressing Enter on Compile opens the existing compile result instead of fetching again. Recompile is explicit with `r` from the compile result screen.
238
+
239
+ ### Empirical Test (methodology guidance)
240
+
241
+ Ask the same AI question with and without the mixtape. If the answer with the mixtape is not meaningfully better, the mixtape is not earning its place.
242
+
243
+ This is a methodology practice, not a driven step in the TUI. As of v0.5.2 the TUI treats compilation as the completion milestone (*compiled = complete*) and no longer parks you on a trailing empirical-test phase — but the with-vs-without check remains the honest way to know whether a mixtape earns its place.
244
+
245
+ ## How Compilation Works
246
+
247
+ `liner compile <folder>` reads the project folder and performs a deterministic build.
248
+
249
+ At a high level:
250
+
251
+ 1. Parse and validate `tape.yaml`.
252
+ 2. Read `synthesis.md`.
253
+ 3. Fetch or load every source.
254
+ 4. Extract readable content.
255
+ 5. Use cached content when valid.
256
+ 6. Write one file per source into `sources/`.
257
+ 7. Write `MIXTAPE.md`.
258
+
259
+ Supported source types:
260
+
261
+ - `web`
262
+ - `youtube`
263
+ - `local_file`
264
+
265
+ Web sources use `httpx` and `trafilatura` for server-rendered extraction. If a page is JavaScript-walled and Playwright support has been set up, Liner can use headless Chromium. You enable that path once:
266
+
267
+ ```sh
268
+ liner setup-js
269
+ ```
270
+
271
+ The npm/TUI onboarding offers this setup on first run, and the compile result screen offers it again when a source needs JS rendering. The Chromium download is roughly 150MB.
272
+
273
+ If `trafilatura` itself crashes on a page, the web handlers now keep the source through a tag-stripped HTML fallback where possible and surface a soft warning instead of losing the source to an internal Python exception.
274
+
275
+ YouTube sources use transcript fetching first and fall back through `yt-dlp` where possible.
276
+
277
+ Local files live under the project's `personal/` directory and can include Markdown, text, HTML, and PDFs.
278
+
279
+ ## How Sharing Works
280
+
281
+ `liner share <folder>` creates a `.mixtape` archive.
282
+
283
+ The archive can include:
284
+
285
+ - the recipe
286
+ - synthesis
287
+ - source files
288
+ - working notes
289
+ - personal files, unless excluded
290
+
291
+ Because compiled source content may include copyrighted or private material, a curator can share just the recipe or exclude personal/source content depending on the audience.
292
+
293
+ `liner import <archive>` unpacks a `.mixtape` and can refetch sources locally.
294
+
295
+ ## How Liner Is Built
296
+
297
+ Liner has two main implemented surfaces plus supporting documentation and release tooling.
298
+
299
+ ### Python Core
300
+
301
+ The Python package is the mechanical core.
302
+
303
+ Important areas:
304
+
305
+ - `src/liner/cli.py` exposes the `liner` command with Typer.
306
+ - `src/liner/tape.py` parses and validates `tape.yaml`.
307
+ - `src/liner/compile.py` orchestrates compilation.
308
+ - `src/liner/handlers/` contains source handlers:
309
+ - `web.py`
310
+ - `web_js.py`
311
+ - `youtube.py`
312
+ - `local_file.py`
313
+ - `src/liner/output/mixtape.py` renders `MIXTAPE.md` and source files.
314
+ - `src/liner/cache.py` manages the local SQLite cache.
315
+ - `src/liner/share.py` handles `.mixtape` archives.
316
+ - `src/liner/manifest.py` aggregates process metadata from agent runs.
317
+
318
+ The Python package is installable directly:
319
+
320
+ ```sh
321
+ pipx install linersh
322
+ ```
323
+
324
+ ### TypeScript TUI
325
+
326
+ The TUI is a Node/React/Ink application in `packages/tui`.
327
+
328
+ Important areas:
329
+
330
+ - `packages/tui/src/App.tsx` owns screen routing.
331
+ - `packages/tui/src/screens/` contains interactive screens.
332
+ - `packages/tui/src/yaml-io.ts` reads and writes `tape.yaml`.
333
+ - `packages/tui/src/bin-resolver.ts` finds the Python core.
334
+ - `packages/tui/src/agents/` runs and parses agent-backed methodology phases.
335
+ - `packages/tui/src/screens/CompileView.tsx` streams compile progress from the Python CLI.
336
+
337
+ The TUI does not reimplement core compile/share/import behavior. It shells out to the Python core and reads structured progress events.
338
+
339
+ ### npm Distribution
340
+
341
+ The npm package is named `linersh`.
342
+
343
+ It contains the TUI plus a small `bin/liner.js` shim. Platform-specific Python binaries are distributed as optional npm dependencies:
344
+
345
+ - `linersh-darwin-arm64`
346
+ - `linersh-darwin-x64`
347
+ - `linersh-linux-arm64`
348
+ - `linersh-linux-x64`
349
+ - `linersh-win32-x64`
350
+
351
+ This follows the native-binary package pattern used by many developer tools: install the lightweight main package, let npm select the platform package that matches the host, then run the bundled binary.
352
+
353
+ **Windows status as of 0.5.5:** npm support unblocked the Windows platform tarball and `linersh@0.5.5` includes `linersh-win32-x64` as an optional dependency alongside macOS and Linux packages.
354
+
355
+ The shim behavior:
356
+
357
+ - `liner` with no arguments opens the TUI.
358
+ - CLI subcommands such as `compile`, `share`, `setup-js`, and `status` forward to the bundled Python binary.
359
+ - `LINER_BIN=/path/to/liner` overrides binary resolution for development/debugging.
360
+ - `liner uninstall` removes local Liner state, the npm `_npx` execution cache, and Playwright's Chromium cache for clean reinstall testing. It does not delete mixtape project folders.
361
+
362
+ ### Platform Builds
363
+
364
+ Platform packages are built with PyInstaller.
365
+
366
+ Build script:
367
+
368
+ ```sh
369
+ python3 scripts/build-platform-package.py
370
+ ```
371
+
372
+ Validation:
373
+
374
+ ```sh
375
+ python3 scripts/validate-platform-package.py --pack-dry-run
376
+ ```
377
+
378
+ The GitHub workflow `.github/workflows/platform-bundles.yml` builds and validates macOS, Linux, and Windows packages.
379
+
380
+ ### The Skill Bundle
381
+
382
+ The skill bundle lives in `cli-update-docs/`.
383
+
384
+ It encodes the curation methodology as executable instructions for an AI assistant. It is not the same thing as the CLI or TUI. It is one surface for producing Liner project folders.
385
+
386
+ The skill writes authoring artifacts. The CLI compiles them.
387
+
388
+ ## How Liner Differs From Skills
389
+
390
+ This is an important distinction.
391
+
392
+ A **skill** is a set of instructions loaded by an AI assistant at runtime. It tells the assistant how to do a task.
393
+
394
+ Liner is a **toolchain and artifact format** for creating portable context bundles.
395
+
396
+ They overlap because Liner includes a skill, but they are not the same kind of thing.
397
+
398
+ | Question | Skill | Liner |
399
+ |---|---|---|
400
+ | What is it? | Runtime instructions for an AI assistant | A file format, CLI, TUI, methodology, and packaging workflow |
401
+ | Where does it live? | Inside a specific AI tool's skill system | On disk as YAML, Markdown, source files, and archives |
402
+ | What does it produce? | Usually task output in the current session | A durable mixtape project folder |
403
+ | Is it portable across AI tools? | Usually no, or only with adaptation | Yes, `MIXTAPE.md` and sources are plain files |
404
+ | Does it fetch/compile sources? | Not by itself | Yes, through the CLI |
405
+ | Does it preserve provenance? | Only if the skill is designed to | Yes, in `tape.yaml`, source files, and `MIXTAPE.md` |
406
+ | Can it be versioned in Git? | The skill can; outputs are often ad hoc | Yes, both recipes and mixtapes are plain files |
407
+
408
+ The relationship is:
409
+
410
+ - The Liner skill helps author a mixtape.
411
+ - The Liner CLI compiles the mixtape.
412
+ - The mixtape can then be used in any AI tool, with or without the skill.
413
+
414
+ So a skill is one way to make a mixtape. The mixtape is the portable artifact you keep.
415
+
416
+ ## How Liner Differs From NotebookLM, Claude Projects, and Chat Uploads
417
+
418
+ Hosted AI tools let you upload documents into a workspace. That is useful, but the context is usually trapped inside that product.
419
+
420
+ Liner differs in four ways:
421
+
422
+ 1. **Portable recipes.** `tape.yaml` can be shared, reviewed, and recompiled.
423
+ 2. **Plain files.** Mixtapes are Markdown and YAML, not a database object inside a vendor product.
424
+ 3. **Curator synthesis.** The curator's framing is a first-class artifact, not an afterthought.
425
+ 4. **Repeatable builds.** Source fetching and compilation can be rerun locally.
426
+
427
+ Liner is less polished than a hosted product and asks more of the user. The trade-off is control, portability, and inspectability.
428
+
429
+ ## Example Tape
430
+
431
+ ```yaml
432
+ title: Mobile Design Foundations
433
+ description: Core touch and gesture references for native mobile UX.
434
+ version: 1
435
+ curator: cmdux-sh
436
+ mode: quick
437
+ jtbd: 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.
438
+
439
+ sources:
440
+ - type: web
441
+ url: https://www.nngroup.com/articles/touch-target-size/
442
+ note: Touch target minimums and the research behind the 44pt rule.
443
+ section: foundations
444
+
445
+ - type: web
446
+ url: https://developer.apple.com/design/human-interface-guidelines/gestures
447
+ note: Apple's canonical gesture reference.
448
+ section: foundations
449
+
450
+ - type: local_file
451
+ path: personal/touch-target-paper.pdf
452
+ citation: "Parhi et al., 'Target Size for One-Handed Thumb Use,' Mobile HCI 2006."
453
+ note: The canonical empirical study behind the 44pt minimum.
454
+ section: evidence
455
+ ```
456
+
457
+ ## Example End-to-End Flow
458
+
459
+ ```sh
460
+ # Start a project.
461
+ liner init mobile-design-foundations
462
+
463
+ # Edit the recipe and synthesis.
464
+ $EDITOR mobile-design-foundations/tape.yaml
465
+ $EDITOR mobile-design-foundations/synthesis.md
466
+
467
+ # Enable JS rendering if needed.
468
+ liner setup-js
469
+
470
+ # Compile the mixtape.
471
+ liner compile mobile-design-foundations
472
+
473
+ # Use it in an AI conversation.
474
+ # Paste MIXTAPE.md and selected files from sources/.
475
+
476
+ # Share it.
477
+ liner share mobile-design-foundations
478
+ ```
479
+
480
+ Or with the TUI:
481
+
482
+ ```sh
483
+ npx linersh
484
+ ```
485
+
486
+ ## Design Principles
487
+
488
+ Liner is guided by a few product and architecture principles.
489
+
490
+ ### Context Should Be Portable
491
+
492
+ The output should survive outside any one AI product.
493
+
494
+ ### Curation Is Judgment
495
+
496
+ The value is not in collecting the most sources. The value is in choosing, framing, pruning, and explaining.
497
+
498
+ ### Plain Text Wins
499
+
500
+ YAML and Markdown make the artifact easy to inspect, diff, edit, copy, and version.
501
+
502
+ ### Local First
503
+
504
+ The core runs locally. There is no hosted compilation service, no account system, and no telemetry.
505
+
506
+ ### AI Assistance Is Useful But Not Sovereign
507
+
508
+ AI can help discover, evaluate, and draft. The methodology still assumes human review because AI is biased toward popular sources, generic notes, and shallow consensus.
509
+
510
+ ## Common Failure Modes
511
+
512
+ Bad mixtapes usually fall into a few patterns:
513
+
514
+ - **Bookmark dump**: links without judgment.
515
+ - **Greatest hits list**: famous resources the AI likely already knows.
516
+ - **Transcript dump**: too many videos, not enough primary/reference material.
517
+ - **Unfocused topic**: no concrete job-to-be-done.
518
+ - **Noteless sources**: no explanation of why each source belongs.
519
+ - **Single-author tribute**: too much of one person's worldview.
520
+ - **No disagreement**: contested domains presented as consensus.
521
+ - **Synthesis as recap**: a summary of sources rather than a curator's framing.
522
+
523
+ Liner's methodology exists to catch these before compile.
524
+
525
+ ## Project Status
526
+
527
+ As of v0.5.5:
528
+
529
+ - The Python CLI is functional.
530
+ - The TypeScript/Ink TUI is functional. The empirical-test phase has been removed from the driven flow — compilation is now the completion milestone (*compiled = complete*). The hub is a single summary view (status box + always-visible phase checklist), import auto-detects `.mixtape` files in the current folder, and completed/partial compiles open the existing compile result instead of rerunning by default.
531
+ - The npm distribution uses a main `linersh` package plus five optional platform packages (`darwin-arm64`, `darwin-x64`, `linux-arm64`, `linux-x64`, `win32-x64`).
532
+ - The release is installable via `npx linersh` on Mac, Linux, and Windows x64. `liner --version` reports the TUI version (and the bundled core version alongside it).
533
+ - JavaScript-rendered web support is available through `liner setup-js`; the TUI prompts for it during first-run onboarding and from compile warnings when Chromium is missing.
534
+ - `liner uninstall` exists for clean local reinstall tests.
535
+ - The curation skill exists and is still being refined.
536
+ - The MCP server, hosted web builder, and public library are planned.
537
+
538
+ ## Where To Read Next
539
+
540
+ - Root README: `README.md`
541
+ - Curation methodology: `cli-update-docs/CURATION.md`
542
+ - Mixtape format: `cli-update-docs/MIXTAPE-FORMAT.md`
543
+ - Skill bundle: `cli-update-docs/SKILL.md`
544
+ - TUI docs: `packages/tui/README.md`
545
+ - Platform binary packaging: `packages/tui/PLATFORM-BUNDLES.md`
546
+ - Publish checklist: `packages/tui/PUBLISH-CHECKLIST.md`
@@ -42,7 +42,7 @@ mobile-design-foundations/
42
42
  ├── 02-candidate-longlist.md
43
43
  ├── 03-evaluation.yaml
44
44
  ├── 04-quality-checks.md
45
- └── 05-empirical-test.md
45
+ └── 05-empirical-test.md # optional methodology validation
46
46
  ```
47
47
 
48
48
  The folder is the canonical unit. Any operation that reads or writes a mixtape works on a folder, not on individual files.
@@ -304,7 +304,7 @@ working/
304
304
  ├── 02-candidate-longlist.md
305
305
  ├── 03-evaluation.yaml
306
306
  ├── 04-quality-checks.md
307
- └── 05-empirical-test.md
307
+ └── 05-empirical-test.md # optional methodology validation
308
308
  ```
309
309
 
310
310
  These are not required by the format but are recommended. Library contributions must include them.
@@ -74,7 +74,7 @@ mobile-design-foundations/
74
74
  ├── 02-candidate-longlist.md
75
75
  ├── 03-evaluation.yaml
76
76
  ├── 04-quality-checks.md
77
- └── 05-empirical-test.md
77
+ └── 05-empirical-test.md # optional methodology validation
78
78
  ```
79
79
 
80
80
  Three concepts to distinguish:
@@ -120,7 +120,7 @@ The Liner library is a curated collection of public mixtapes at [liner.sh/librar
120
120
  The library accepts pull requests for methodology-mode mixtapes only.
121
121
 
122
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`
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`. This is methodology guidance, not a driven TUI phase.
124
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
125
  4. A maintainer reviews. Submissions can be accepted, returned with feedback, or declined
126
126
 
@@ -1,6 +1,6 @@
1
1
  # Curating Mixtapes — Skill Bundle
2
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).
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 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
4
 
5
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
6
 
@@ -26,13 +26,15 @@ The split is deliberate. Every invocation pulls SKILL.md's ~2,300 words into con
26
26
 
27
27
  ## Where the bundle lives
28
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.
29
+ **Local testing.** Drop this directory into `~/.claude/skills/curating-mixtapes/`. 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
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).
31
+ **Shipping.** The canonical bundle lives at repo-root `cli-update-docs/`. The TUI copies this directory into `packages/tui/cli-update-docs/` during `prepack` and ships it inside the `linersh` npm package, so end users do not need a separate skill install for TUI-driven agent phases.
32
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.
33
+ **Direct skill use.** A documented copy/install flow for using the skill outside the TUI is still planned. Until then, direct local use is a developer workflow.
34
34
 
35
- The same file contents work in all three locations. Don't fork between a local-test version and a ship version.
35
+ **TUI subprocess.** The Liner TUI bundles the skill internally and invokes it via the local Claude or Codex CLI 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.
36
+
37
+ The same file contents work in every location. Don't fork between a local-test version and the package-shipped version.
36
38
 
37
39
  ## Runtime requirements
38
40
 
@@ -72,13 +74,13 @@ Three kinds of changes happen, each with a different shape.
72
74
 
73
75
  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
76
 
75
- ## v0.3 status and the second pass
77
+ ## Current status
76
78
 
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.
79
+ The bundle is functional and ships inside the npm TUI package so agent-backed phases can run from `npx linersh` without a separate skill install. The TUI copies this directory into the package during `prepack` and resolves it from the installed package root.
78
80
 
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.
81
+ The bundle still benefits from more worked examples in the companion files, but it is no longer blocked by the old "second pass before any shipping" constraint. Current product risk lives more in curation quality and fetcher edge cases than in basic skill availability.
80
82
 
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.
83
+ As of `linersh@0.5.5`, compilation is the product completion milestone. A project can be "ready to use — compiled with warnings" when `MIXTAPE.md` is written but some sources are missing or soft-failed. The TUI opens the existing compile result for a completed mixtape and requires an explicit retry/re-run from that screen.
82
84
 
83
85
  ## Versioning
84
86
 
@@ -30,7 +30,7 @@ A project folder named for the topic (e.g., `mobile-design-foundations/`) contai
30
30
  - `working/03-evaluation.yaml` — keep/trim/drop decisions with rationales and ratings
31
31
  - `working/04-quality-checks.md` — redundancy, coverage, disagreement, and framing-gap findings
32
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.
33
+ `sources/` and `MIXTAPE.md` are produced later by `liner compile`. The optional `working/05-empirical-test.md` file is produced only when the curator runs the methodology validation step; it is not a driven TUI phase.
34
34
 
35
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
36
 
@@ -178,7 +178,7 @@ Order sources within each section by importance (most important first). Order se
178
178
 
179
179
  If validation fails, fix and re-check before showing the user.
180
180
 
181
- ### Phase 8 — Empirical test (optional in quick mode, required for library contribution)
181
+ ### Empirical test — methodology validation (optional in quick mode, required for library contribution)
182
182
 
183
183
  The only real test of whether the mixtape works.
184
184
 
@@ -217,7 +217,7 @@ When all phases complete, the project folder contains:
217
217
  ├── 02-candidate-longlist.md
218
218
  ├── 03-evaluation.yaml
219
219
  ├── 04-quality-checks.md
220
- └── 05-empirical-test.md # if Phase 8 was run
220
+ └── 05-empirical-test.md # if empirical validation was run
221
221
  ```
222
222
 
223
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.