linersh 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,560 +0,0 @@
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 Liner project is a folder. Its mixtape corpus lives under `mixtape/` in v2 projects and contains:
10
-
11
- - a recipe, `mixtape/tape.yaml`
12
- - a curator synthesis, `mixtape/synthesis.md`
13
- - extracted source files in `mixtape/sources/`
14
- - optional working notes in `mixtape/working/`
15
- - a compiled master file, `mixtape/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 `mixtape/tape.yaml` in v2 projects.
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 corpus inside the 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/MIXTAPE.md` plus the referenced files in `mixtape/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
- |-- liner.yaml
77
- |-- LINER.md
78
- |-- SKILL.md
79
- |-- skills/
80
- |-- working/
81
- `-- mixtape/
82
- |-- MIXTAPE.md
83
- |-- tape.yaml
84
- |-- synthesis.md
85
- |-- sources/
86
- | |-- 01-touch-target-size.md
87
- | |-- 02-apple-gestures.md
88
- | `-- ...
89
- |-- local-sources/
90
- | `-- touch-target-paper.pdf
91
- `-- working/
92
- |-- 01-jtbd-and-knowledge-map.md
93
- |-- 02-candidate-longlist.md
94
- |-- 03-evaluation.yaml
95
- |-- 04-quality-checks.md
96
- `-- 07-tape-draft.yaml
97
- ```
98
-
99
- `mixtape/tape.yaml` is the source recipe. `mixtape/synthesis.md` is the curator's distilled framing. `mixtape/sources/` contains extracted content. `mixtape/working/` contains the curation trace. `mixtape/MIXTAPE.md` is the compiled entry point.
100
-
101
- ## What Liner Is Good For
102
-
103
- Liner is good when the AI needs durable, domain-specific context and when source choice matters.
104
-
105
- Examples:
106
-
107
- - **Mobile design foundations**: Apple HIG pages, touch target research, gesture references, accessibility guidance, and a synthesis of how native mobile conventions fit together.
108
- - **CLI/TUI design**: command-line UX talks, terminal UI framework docs, interaction design principles, and examples of developer tools that feel good to use.
109
- - **API design migration**: internal docs, public API guidelines, REST/GraphQL trade-off essays, platform-specific constraints, and migration examples.
110
- - **Hiring rubrics**: calibration documents, role expectations, interview design references, examples of good and bad signals, and a curator-written evaluation philosophy.
111
- - **Product strategy context**: market notes, user research excerpts, competitor docs, positioning essays, and a synthesis of what decisions the team is trying to make.
112
- - **Technical standards**: RFCs, official docs, canonical papers, implementation notes, and practitioner critiques.
113
- - **Design system audits**: internal component docs, accessibility standards, platform guidelines, usage examples, and known exceptions.
114
-
115
- Liner works especially well when:
116
-
117
- - the topic is narrower than a whole field
118
- - the job-to-be-done is explicit
119
- - sources include primary or canonical material
120
- - the curator can explain why each source belongs
121
- - the output will be reused across many AI conversations or tools
122
-
123
- ## What Liner Is Not Good For
124
-
125
- Liner is not the right tool for every context problem.
126
-
127
- It is usually not good for:
128
-
129
- - **One-off questions** where a quick search is enough.
130
- - **Huge document corpora** where retrieval over thousands of files is the real task.
131
- - **Real-time monitoring** where the source set changes constantly.
132
- - **Private data you cannot safely store in a project folder.**
133
- - **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.
134
- - **Pure reading lists for humans.** A mixtape is optimized for AI context, not for teaching a human in a pleasant sequence.
135
- - **Automatic truth.** Liner can package sources and expose provenance, but it does not guarantee the sources are correct.
136
- - **Generic topic overviews.** A broad "everything about design" mixtape will usually be shallow and noisy.
137
-
138
- 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.
139
-
140
- ## How Liner Is Used
141
-
142
- There are three common ways to use Liner.
143
-
144
- ### 1. CLI-First
145
-
146
- Use the Python CLI when you already have a project folder or prefer editing YAML and Markdown directly.
147
-
148
- ```sh
149
- liner init mobile-design-foundations
150
- # edit mobile-design-foundations/mixtape/tape.yaml
151
- # write mobile-design-foundations/mixtape/synthesis.md
152
- liner compile mobile-design-foundations
153
- ```
154
-
155
- The compile step fetches and extracts sources, then writes:
156
-
157
- - `mixtape/MIXTAPE.md`
158
- - `mixtape/sources/NN-*.md`
159
-
160
- To share:
161
-
162
- ```sh
163
- liner share mobile-design-foundations
164
- liner import mobile-design-foundations.mixtape
165
- ```
166
-
167
- ### 2. TUI-First
168
-
169
- Use the terminal UI when you want an interactive authoring experience.
170
-
171
- ```sh
172
- npx linersh
173
- ```
174
-
175
- The TUI helps create and edit mixtape project folders, add sources, edit metadata, run compilation, share archives, and inspect process manifests.
176
-
177
- With no arguments, the `liner` npm package opens the TUI. CLI subcommands pass through to the bundled Python core:
178
-
179
- ```sh
180
- liner compile mobile-design-foundations
181
- liner setup-js
182
- liner share mobile-design-foundations
183
- ```
184
-
185
- ### 3. Skill-Assisted Curation
186
-
187
- Use the `curating-mixtapes` skill when you want an AI assistant to run the curation methodology with you.
188
-
189
- The skill produces a project folder with:
190
-
191
- - `mixtape/tape.yaml`
192
- - `mixtape/synthesis.md`
193
- - `mixtape/working/*` notes
194
-
195
- The skill does not compile. After the skill finishes, run:
196
-
197
- ```sh
198
- liner compile <project-folder>
199
- ```
200
-
201
- ## The Curation Lifecycle
202
-
203
- 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.
204
-
205
- ### Phase 1: Framing
206
-
207
- Define the job-to-be-done, capability brief, knowledge map, and required source roles.
208
-
209
- 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.
210
-
211
- The capability brief says what the corpus should make a downstream AI agent better at. Required source roles name the evidence types the corpus must satisfy before source discovery can proceed.
212
-
213
- ### Phase 2: Candidate Discovery
214
-
215
- Gather more candidate sources than you expect to keep. This phase is about recall, not precision.
216
-
217
- Good tactics include following citations, mining expert reading lists, searching course syllabi, checking official docs, searching by required source role, and asking AI to critique gaps rather than invent sources.
218
-
219
- ### Phase 3: Evaluation
220
-
221
- Decide keep, trim, or drop.
222
-
223
- A kept source should have a specific role. The curator note should explain why the source belongs, what part matters, and any limitations.
224
-
225
- ### Phase 4: Quality Checks
226
-
227
- Run tests for redundancy, coverage, disagreement, framing gaps, source-kind balance, and required source-role fit.
228
-
229
- This is where the methodology catches "good but narrow" corpora.
230
-
231
- ### Phase 5: Synthesis
232
-
233
- Write the curator's distilled understanding of the domain.
234
-
235
- The synthesis is not a recap. It is the framing the AI should inherit before using the sources.
236
-
237
- ### Phase 6: Assembly
238
-
239
- Write the final `mixtape/tape.yaml`, order the sources, and prepare for compile.
240
-
241
- ### Compile
242
-
243
- Fetch every kept source, extract readable content, write `mixtape/sources/`, and produce `mixtape/MIXTAPE.md`.
244
-
245
- 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.
246
-
247
- ### Empirical Test (methodology guidance)
248
-
249
- 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.
250
-
251
- 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.
252
-
253
- ## How Compilation Works
254
-
255
- `liner compile <folder>` reads the project folder and performs a deterministic build.
256
-
257
- At a high level:
258
-
259
- 1. Parse and validate `mixtape/tape.yaml`.
260
- 2. Read `mixtape/synthesis.md`.
261
- 3. Fetch or load every source.
262
- 4. Extract readable content.
263
- 5. Use cached content when valid.
264
- 6. Write one file per source into `mixtape/sources/`.
265
- 7. Write `mixtape/MIXTAPE.md`.
266
-
267
- Supported source types:
268
-
269
- - `web`
270
- - `youtube`
271
- - `local_file`
272
-
273
- 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:
274
-
275
- ```sh
276
- liner setup-js
277
- ```
278
-
279
- 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.
280
-
281
- 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.
282
-
283
- YouTube sources use transcript fetching first and fall back through `yt-dlp` where possible.
284
-
285
- Local files live under the project's `local-sources/` directory or the legacy `personal/` directory and can include Markdown, text, HTML, and PDFs.
286
-
287
- ## How Sharing Works
288
-
289
- `liner share <folder>` creates a `.mixtape` archive.
290
-
291
- The archive can include:
292
-
293
- - the recipe
294
- - synthesis
295
- - source files
296
- - working notes
297
- - local source files, unless excluded
298
-
299
- Because compiled source content may include copyrighted or private material, a curator can share just the recipe or exclude local/source content depending on the audience.
300
-
301
- `liner import <archive>` unpacks a `.mixtape` and can refetch sources locally.
302
-
303
- ## How Liner Is Built
304
-
305
- Liner has two main implemented surfaces plus supporting documentation and release tooling.
306
-
307
- ### Python Core
308
-
309
- The Python package is the mechanical core.
310
-
311
- Important areas:
312
-
313
- - `src/liner/cli.py` exposes the `liner` command with Typer.
314
- - `src/liner/tape.py` parses and validates `tape.yaml`.
315
- - `src/liner/compile.py` orchestrates compilation.
316
- - `src/liner/handlers/` contains source handlers:
317
- - `web.py`
318
- - `web_js.py`
319
- - `youtube.py`
320
- - `local_file.py`
321
- - `src/liner/output/mixtape.py` renders `MIXTAPE.md` and source files.
322
- - `src/liner/cache.py` manages the local SQLite cache.
323
- - `src/liner/share.py` handles `.mixtape` archives.
324
- - `src/liner/manifest.py` aggregates process metadata from agent runs.
325
-
326
- The Python core can still be installed directly for development or fallback testing:
327
-
328
- ```sh
329
- pipx install linersh
330
- ```
331
-
332
- ### Terminal UI
333
-
334
- The active TUI is a Charm-based Go application in `packages/go-tui`.
335
- `packages/tui` is still the npm package/shim plus the TypeScript headless
336
- methodology runner; it is no longer the React/Ink TUI implementation. The old
337
- React/Ink UI is archived for reference under `ink/`.
338
-
339
- Important areas:
340
-
341
- - `packages/go-tui/cmd/liner-tui/` starts the active terminal app.
342
- - `packages/go-tui/internal/app/` owns screen routing, key handling, and UI rendering.
343
- - `packages/tui/src/yaml-io.ts` reads and writes `tape.yaml`.
344
- - `packages/tui/src/bin-resolver.ts` finds the Python core.
345
- - `packages/tui/src/agents/` runs and parses agent-backed methodology phases.
346
- - `packages/go-tui/internal/core/` streams compile progress from the Python CLI.
347
-
348
- The TUI does not reimplement core compile/share/import behavior. It shells out to the Python core and reads structured progress events.
349
-
350
- ### npm Distribution
351
-
352
- The npm package is named `linersh`.
353
-
354
- It contains the TUI plus a small `bin/liner.js` shim. Platform-specific Python binaries are distributed as optional npm dependencies:
355
-
356
- - `linersh-darwin-arm64`
357
- - `linersh-darwin-x64`
358
- - `linersh-linux-arm64`
359
- - `linersh-linux-x64`
360
- - `linersh-win32-x64`
361
-
362
- 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.
363
-
364
- **Windows status:** npm support includes `linersh-win32-x64` as an optional dependency alongside macOS and Linux packages.
365
-
366
- The shim behavior:
367
-
368
- - `liner` with no arguments opens the TUI.
369
- - CLI subcommands such as `compile`, `share`, `setup-js`, and `status` forward to the bundled Python binary.
370
- - `LINER_BIN=/path/to/liner` overrides binary resolution for development/debugging.
371
- - `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.
372
-
373
- ### Platform Builds
374
-
375
- Platform packages are built with PyInstaller.
376
-
377
- Build script:
378
-
379
- ```sh
380
- python3 scripts/build-platform-package.py
381
- ```
382
-
383
- Validation:
384
-
385
- ```sh
386
- python3 scripts/validate-platform-package.py --pack-dry-run
387
- ```
388
-
389
- The GitHub workflow `.github/workflows/platform-bundles.yml` builds platform
390
- package artifacts on manual dispatch. Publish manually only after all platform
391
- artifacts and the clean consumer release smoke pass.
392
-
393
- ### The Skill Bundle
394
-
395
- The tracked skill bundle lives in `docs/curation-skill/`.
396
-
397
- 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.
398
-
399
- The skill writes authoring artifacts. The CLI compiles them.
400
-
401
- ## How Liner Differs From Skills
402
-
403
- This is an important distinction.
404
-
405
- A **skill** is a set of instructions loaded by an AI assistant at runtime. It tells the assistant how to do a task.
406
-
407
- Liner is a **toolchain and artifact format** for creating portable context bundles.
408
-
409
- They overlap because Liner includes a skill, but they are not the same kind of thing.
410
-
411
- | Question | Skill | Liner |
412
- |---|---|---|
413
- | What is it? | Runtime instructions for an AI assistant | A file format, CLI, TUI, methodology, and packaging workflow |
414
- | Where does it live? | Inside a specific AI tool's skill system | On disk as YAML, Markdown, source files, and archives |
415
- | What does it produce? | Usually task output in the current session | A durable mixtape project folder |
416
- | Is it portable across AI tools? | Usually no, or only with adaptation | Yes, `MIXTAPE.md` and sources are plain files |
417
- | Does it fetch/compile sources? | Not by itself | Yes, through the CLI |
418
- | Does it preserve provenance? | Only if the skill is designed to | Yes, in `tape.yaml`, source files, and `MIXTAPE.md` |
419
- | Can it be versioned in Git? | The skill can; outputs are often ad hoc | Yes, both recipes and mixtapes are plain files |
420
-
421
- The relationship is:
422
-
423
- - The Liner skill helps author a mixtape.
424
- - The Liner CLI compiles the mixtape.
425
- - The mixtape can then be used in any AI tool, with or without the skill.
426
-
427
- So a skill is one way to make a mixtape. The mixtape is the portable artifact you keep.
428
-
429
- ## How Liner Differs From NotebookLM, Claude Projects, and Chat Uploads
430
-
431
- Hosted AI tools let you upload documents into a workspace. That is useful, but the context is usually trapped inside that product.
432
-
433
- Liner differs in four ways:
434
-
435
- 1. **Portable recipes.** `tape.yaml` can be shared, reviewed, and recompiled.
436
- 2. **Plain files.** Mixtapes are Markdown and YAML, not a database object inside a vendor product.
437
- 3. **Curator synthesis.** The curator's framing is a first-class artifact, not an afterthought.
438
- 4. **Repeatable builds.** Source fetching and compilation can be rerun locally.
439
-
440
- Liner is less polished than a hosted product and asks more of the user. The trade-off is control, portability, and inspectability.
441
-
442
- ## Example Tape
443
-
444
- ```yaml
445
- title: Mobile Design Foundations
446
- description: Core touch and gesture references for native mobile UX.
447
- version: 1
448
- curator: cmdux-sh
449
- mode: quick
450
- 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.
451
-
452
- sources:
453
- - type: web
454
- url: https://www.nngroup.com/articles/touch-target-size/
455
- note: Touch target minimums and the research behind the 44pt rule.
456
- section: foundations
457
-
458
- - type: web
459
- url: https://developer.apple.com/design/human-interface-guidelines/gestures
460
- note: Apple's canonical gesture reference.
461
- section: foundations
462
-
463
- - type: local_file
464
- path: local-sources/touch-target-paper.pdf
465
- citation: "Parhi et al., 'Target Size for One-Handed Thumb Use,' Mobile HCI 2006."
466
- note: The canonical empirical study behind the 44pt minimum.
467
- section: evidence
468
- ```
469
-
470
- ## Example End-to-End Flow
471
-
472
- ```sh
473
- # Start a project.
474
- liner init mobile-design-foundations
475
-
476
- # Edit the recipe and synthesis.
477
- $EDITOR mobile-design-foundations/mixtape/tape.yaml
478
- $EDITOR mobile-design-foundations/mixtape/synthesis.md
479
-
480
- # Enable JS rendering if needed.
481
- liner setup-js
482
-
483
- # Compile the mixtape.
484
- liner compile mobile-design-foundations
485
-
486
- # Use it in an AI conversation.
487
- # Paste mixtape/MIXTAPE.md and selected files from mixtape/sources/.
488
-
489
- # Share it.
490
- liner share mobile-design-foundations
491
- ```
492
-
493
- Or with the TUI:
494
-
495
- ```sh
496
- npx linersh
497
- ```
498
-
499
- ## Design Principles
500
-
501
- Liner is guided by a few product and architecture principles.
502
-
503
- ### Context Should Be Portable
504
-
505
- The output should survive outside any one AI product.
506
-
507
- ### Curation Is Judgment
508
-
509
- The value is not in collecting the most sources. The value is in choosing, framing, pruning, and explaining.
510
-
511
- ### Plain Text Wins
512
-
513
- YAML and Markdown make the artifact easy to inspect, diff, edit, copy, and version.
514
-
515
- ### Local First
516
-
517
- The core runs locally. There is no hosted compilation service, no account system, and no telemetry.
518
-
519
- ### AI Assistance Is Useful But Not Sovereign
520
-
521
- 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.
522
-
523
- ## Common Failure Modes
524
-
525
- Bad mixtapes usually fall into a few patterns:
526
-
527
- - **Bookmark dump**: links without judgment.
528
- - **Greatest hits list**: famous resources the AI likely already knows.
529
- - **Transcript dump**: too many videos, not enough primary/reference material.
530
- - **Unfocused topic**: no concrete job-to-be-done.
531
- - **Noteless sources**: no explanation of why each source belongs.
532
- - **Single-author tribute**: too much of one person's worldview.
533
- - **No disagreement**: contested domains presented as consensus.
534
- - **Synthesis as recap**: a summary of sources rather than a curator's framing.
535
-
536
- Liner's methodology exists to catch these before compile.
537
-
538
- ## Project Status
539
-
540
- As of v1.0.0:
541
-
542
- - The Python CLI is functional.
543
- - The active Go TUI is functional. The old React/Ink TUI is decommissioned and archived under `ink/`. 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 uses a file picker for `.mixtape` archives, and completed/partial compiles open the existing compile result instead of rerunning by default.
544
- - Phase 1 framing now validates the evidence plan before source discovery. The TUI requires a capability brief and required source roles with why/evidence/minimum coverage before advancing.
545
- - The npm distribution uses a main `linersh` package plus five optional platform packages (`darwin-arm64`, `darwin-x64`, `linux-arm64`, `linux-x64`, `win32-x64`).
546
- - 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).
547
- - 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.
548
- - `liner uninstall` exists for clean local reinstall tests.
549
- - The curation skill exists, ships with the TUI package, and supports Claude or Codex as the local runner.
550
- - The MCP server, hosted web builder, and public library are planned.
551
-
552
- ## Where To Read Next
553
-
554
- - Root README: `README.md`
555
- - Curation methodology: `docs/curation-skill/CURATION.md`
556
- - Mixtape format: `docs/curation-skill/MIXTAPE-FORMAT.md`
557
- - Skill bundle: `docs/curation-skill/SKILL.md`
558
- - TUI docs: `packages/tui/README.md`
559
- - Platform binary packaging: `packages/tui/PLATFORM-BUNDLES.md`
560
- - Publish checklist: `packages/tui/PUBLISH-CHECKLIST.md`