diff --git a/skills/in-progress/writing-beats/SKILL.md b/skills/in-progress/writing-beats/SKILL.md index 419d11f..1cdb7de 100644 --- a/skills/in-progress/writing-beats/SKILL.md +++ b/skills/in-progress/writing-beats/SKILL.md @@ -1,25 +1,42 @@ --- name: writing-beats -description: Shape an article as a journey of beats, choose-your-own-adventure style. The user picks a starting beat from the raw material, you write only that beat, then offer options for where to pivot next, beat by beat, until the article reaches a natural end. Use when the user has raw material and wants to assemble it as a narrative rather than an argument. +description: Writing, exploit — assemble raw material into a journey of beats, grounding each term before a beat leans on it. +disable-model-invocation: true --- -The user has passed (or will pass) a markdown file of raw material. +The user has passed (or will pass) a markdown file of raw material. This is **exploit**: the exploring is done, the pile is fixed — commit to a path through it and mine the pile to fill each beat. If the user did not say where to save the article, ask once and remember the path. -Then run a beat-by-beat journey: +Then run a beat-by-beat journey, choose-your-own-adventure style: -1. Write 2–3 candidate **starting beats**, drawn from the raw material. Each is a different entry point into the article. Show the user the beats before writing it to the article file. The user picks one. Preview what beats that might lead to once written - as if the user is seeing a little way down the path. -2. Once the user picks a starting beat, write **only that beat** to the article file. A beat may be one sentence or several paragraphs — whatever that beat naturally is. Stop there. -3. Re-read the article file from disk. Then offer 2–3 candidate **next beats** — different directions the journey could pivot to from where the article now stands. -4. Loop steps 2–4 until the article reaches a natural end. +1. **Establish the prerequisites.** Before any beats, settle with the user what the audience already knows walking in — the concepts that are **grounded** from the start. Everything else must be grounded by a beat before a later beat can use it. See [Grounding](#grounding). +2. Write 2–3 candidate **starting beats**, drawn from the raw material. Each is a different entry point into the article. Each may only lean on grounded concepts; note what new concepts each one grounds. Show the user the beats before writing to the article file. The user picks one. Preview what beats that pick unlocks — as if the user is seeing a little way down the path. +3. Once the user picks a starting beat, write **only that beat** to the article file. A beat may be one sentence or several paragraphs — whatever that beat naturally is. Stop there. +4. Re-read the article file from disk. Then offer 2–3 candidate **next beats** — different directions the journey could pivot to from where the article now stands. Each must be reachable from the current grounded set; note what each one grounds. +5. Loop steps 3–5 until the article reaches a natural end. +## Grounding + +Every **concept** has to be **grounded** before a beat can lean on it: the audience either walked in knowing it or met it in an earlier beat. A beat that reaches for an ungrounded concept loses the reader — that is the one move the journey can't make. The unit is the concept, not the word for it: a beat can lean on an idea the reader lacks even with no jargon in sight. Where a concept has a name — a **term** — grounding it means landing the idea and the term together. + +A concept gets grounded one of two ways: + +- **Prerequisite** — grounded before the first beat. The audience brings it. Fixed at the start. +- **Introduced** — a beat establishes it, and from then on it's grounded for every later beat. + +So each beat does two jobs: it **requires** concepts that are already grounded, and it **grounds** new ones. Keep a running list of what's grounded so far, and update it each time a beat lands. + +This is what shapes the choose-your-own-adventure. A candidate beat is only reachable if everything it requires is already grounded; picking a beat that grounds concept X unlocks every beat that was waiting on X. When you offer next beats, they must all be reachable from the current grounded set — and say what each one grounds, so the user can see which paths it opens. + +The big lever is what you make a prerequisite versus what you ground inside the piece. Demand too much up front and you shut out readers who don't have it; ground too much inside and the early beats drown in definitions. Settle this with the user when you establish prerequisites, and revisit it whenever a tempting beat turns out to require a concept nothing has grounded yet — the fix is either a grounding beat before it, or promoting the concept to a prerequisite. + ## What is a beat A beat is one move in the journey. It does one thing — sets a scene, lands a point, asks a question, drops an aside, twists the angle. Then it stops, leaving the reader at a place where the next beat can pivot. @@ -32,11 +49,9 @@ A beat is sized by what it needs: If a "beat" needs five paragraphs and three subheadings, it's not a beat — it's two beats glued together. Split it. -## Writing one beat +## Pulling from the pile -Once a beat is picked, write _that beat only_ to the article file. Do not write the next beat. - -Pull material from the raw pile to populate the beat. You can paraphrase, split, recombine, or quote. The pile is a quarry. +Pull material from the raw pile to populate each beat. You can paraphrase, split, recombine, or quote. The pile is a quarry. ## Ending the journey diff --git a/skills/in-progress/writing-fragments/SKILL.md b/skills/in-progress/writing-fragments/SKILL.md index 5514eaa..3d0ea75 100644 --- a/skills/in-progress/writing-fragments/SKILL.md +++ b/skills/in-progress/writing-fragments/SKILL.md @@ -1,13 +1,14 @@ --- name: writing-fragments -description: Grilling session that mines the user for fragments — heterogeneous nuggets of writing (claims, vignettes, sharp sentences, half-thoughts) — and appends them to a single document as raw material for a future article. Use when the user wants to develop ideas before imposing structure, or mentions "fragments", "ideate", or "raw material" for writing. +description: Writing, explore — mine raw fragments, no structure yet. +disable-model-invocation: true --- -Run a grilling session that produces fragments. Interview the user relentlessly about whatever they want to write about. Do not impose phases, outlines, or structure — that is explicitly out of scope. +This is pure **explore**: widen the space of what could be written without committing to structure — committing is _exploit_, a separate skill's job. Run a grilling session that produces fragments, interviewing the user relentlessly about whatever they want to write about. Imposing phases, outlines, or article structure is out of scope here. -As fragments emerge from either side of the conversation, append them to a single markdown file. The user will be editing this file during the session; always re-read it before writing so their edits are preserved. +As fragments emerge from either side of the conversation, append them to a single markdown file. If the user did not pass a path, ask once where to save the document, then remember it for the rest of the session. @@ -32,6 +33,9 @@ Fragments are deliberately heterogeneous. Examples of what could be a fragment: - A quote, a piece of dialogue, an overheard line. - A list of related observations that hang together by feel. - A complaint, a confession, a punchline. +- A **leading word** — a compact metaphor or coinage the whole piece can hang on (one term that names the idea, the way _tracer bullets_ or _fog of war_ names a whole pattern). + +Of these, the leading word is the most valuable fragment to land. It is load-bearing: name the right one in explore and it shapes the structure, the transitions, and the title later — paying dividends through the entire exploit phase. When the conversation circles a recurring idea, push to coin a word for it. The novelist's diary is the model: years of unstructured noticings that later get mined for raw material. Fragments are noticings. diff --git a/skills/in-progress/writing-shape/SKILL.md b/skills/in-progress/writing-shape/SKILL.md index 7dea057..a9694e3 100644 --- a/skills/in-progress/writing-shape/SKILL.md +++ b/skills/in-progress/writing-shape/SKILL.md @@ -1,15 +1,16 @@ --- name: writing-shape -description: Take a markdown file of raw material and shape it into an article through a conversational session — drafting candidate openings, growing the piece paragraph by paragraph, arguing about format (lists, tables, callouts, quotes) at each step. Use when the user has a pile of notes, fragments, or a rough draft and wants help turning it into something publishable. +description: Writing, exploit — shape raw material into an article, paragraph by paragraph. +disable-model-invocation: true --- The user has passed (or will pass) a markdown file of raw material. Treat it as the input pile — anything from a tidy list of fragments to a wall of unstructured prose to a transcript. The format does not matter. Read it end-to-end before doing anything else. -Then run a shaping session that produces a separate article document. Do not edit the raw material file — it is read-only to this skill. +Then run a shaping session that produces a separate article document. This is **exploit**: the exploring is done, the pile is fixed — commit to a structure and mine the pile to fill it. Do not edit the raw material file — it is read-only to this skill. -If the user did not say where to save the article, ask once and remember the path. The user will be editing the article file during the session; always re-read it before writing so their edits are preserved. +If the user did not say where to save the article, ask once and remember the path. @@ -18,10 +19,24 @@ If the user did not say where to save the article, ask once and remember the pat ## The loop 1. **Read the pile.** Read the input file in full. Form a sense of what's in it. -2. **Draft 2–3 candidate openings.** Each opening should imply a different thesis or angle for the article. Show all of them. Force the user to pick or compose a hybrid. The chosen opening defines what the rest of the article must do. -3. **Grow paragraph by paragraph.** After the opening lands, ask "given this opening, what does the reader need to hear next?" Pull material from the pile to answer. Argue about whether the next beat is a paragraph, a list, a table, a callout, a quote, a code block. Each format choice should be deliberate and defensible. -4. **Append to the article file as you go.** Don't batch. Write each agreed paragraph or block immediately so the user can see the article taking shape. -5. **Loop step 3 until the article is done.** The user decides when it's done. +2. **Establish the prerequisites.** Settle with the user what the reader knows walking in — the concepts that are **grounded** from the start. Everything else must be grounded by a block before a later block can lean on it. See [Grounding](#grounding). +3. **Draft 2–3 candidate openings.** Each opening should imply a different thesis or angle for the article. Show all of them. Force the user to pick or compose a hybrid. The chosen opening defines what the rest of the article must do. +4. **Grow paragraph by paragraph.** After the opening lands, ask "given this opening, what does the reader need to hear next?" Pull material from the pile to answer. The next block may only lean on grounded concepts, and grounds new ones as it lands. Argue about the form the next block takes — a paragraph, a list, a table, a callout, a quote, a code block. Each format choice should be deliberate and defensible. +5. **Append to the article file as you go.** Don't batch. Write each agreed paragraph or block immediately so the user can see the article taking shape. +6. **Loop step 4 until the article is done.** The user decides when it's done. + +## Grounding + +Every **concept** has to be **grounded** before a block can lean on it: the reader either walked in knowing it or met it in an earlier block. A block that reaches for an ungrounded concept loses the reader. The unit is the concept, not the word for it — a block can lean on an idea the reader lacks even with no jargon in sight. Where a concept has a name — a **term** — grounding it means landing the idea and the term together. + +A concept gets grounded one of two ways: + +- **Prerequisite** — grounded before the opening. The reader brings it. Fixed at the start. +- **Introduced** — a block establishes it, and from then on it's grounded for the rest of the article. + +Keep a running list of what's grounded. When you ask "what does the reader need to hear next?", an ungrounded concept the next move needs is itself the answer: ground it first — here or in an earlier block — or you can't make the move. This is the gap-naming of [Pulling from the pile](#pulling-from-the-pile) one level up: there the pile is missing material; here the article is missing a foundation. + +The lever is what you make a prerequisite versus what you ground inside the article. Demand too much up front and you shut readers out; ground too much inside and the opening drowns in definitions. Settle it with the user when you establish prerequisites. ## Conversational feel @@ -43,7 +58,7 @@ If the pile lacks something the article needs, name the gap explicitly: "We need ## Format arguments to actually have -When choosing how to render a beat, weigh these tradeoffs out loud with the user, not silently: +When choosing how to render a block, weigh these tradeoffs out loud with the user, not silently: - **Prose vs. list.** Prose carries argument; lists carry parallel items. If items aren't truly parallel, prose is better. If they are, a list is faster to scan. - **Inline vs. callout.** Tips, warnings, and asides go in callouts (`> [!TIP]`, `> [!NOTE]`) — but only if they'd genuinely derail the main argument inline. Otherwise leave them inline. @@ -57,7 +72,7 @@ Append to the article file as each block is agreed. Re-read the file from disk b ## Out of scope -- Mining for new fragments that aren't in the pile (the pile is the input — if it's incomplete, name the gap and either get the user to fill it or cut the section). +- Mining for new fragments that aren't in the pile (handle gaps as in "Pulling from the pile"). - Editing the raw material file. - Publishing, formatting for a specific platform, or adding frontmatter the user didn't ask for.