Mandatory pre-flight. Response Filter
Before emitting titles, line/section option dumps, or co-write feedback, run §5 Title + hook
and §2 Line-writing of response-filter
(add §4 Coaching posture when facilitating a live session). NAME each box's pass / fail /
skip-with-reason (aloud or in reasoning); correct before emission. Skips are valid; silent skips
are not.
§2's Reference: line is a load list, not a bibliography: §2 has not been run until the files it
names have been read this session, at minimum
meter and
phrasing before the first candidate. Plus
metaphor when the request asks for an image or a
figure. Naming the §2 boxes while those files were never opened attests to the filter instead of
applying it, per
response-filter "§2 Line-writing filter".
Attestation is what lets bad lines through: a miscounted stress or a plain description labeled a
metaphor comes out of a §2 that was named rather than loaded. Loading is therefore an input,
checked in the hard gate below, not a step recorded afterward.
And when the output is a candidate LYRIC LINE about to be shown, §2's boxes are cycled inside
line-edit-rubric. Load it and run the
FULL cycle per candidate, in its order, naming each pass. On fixed-melody work, pass 1 (positional
fit) coming back CLEAN is the condition for showing anything at all.
(Plugin-authored, not Pat Pattison's.)
Purpose
Collaborative generation: running a co-write with feedback discipline, generating titles (including
the Title Game), and dumping high-volume labeled options for a single line or section so the writer
has raw material to choose from.
Method content is Pat Pattison's, under the plugin-root ../../context/pat-pattison/; a future
author's method plugs in at context/<author>/ without changing this skill, the author seam per
the plugin-root ../../README.md "Method content and the author seam".
Action Router
/songwriting:co-write <action> [args]. Parse $ARGUMENTS: first token = action when it matches a listed action, remainder = args; otherwise treat all of $ARGUMENTS as payload for the default.
No action → open the co-write protocol (No-Free-Zone session opener).
| Action |
Use when the user asks for |
Load |
co-write (default) |
co-writing session rules, feedback discipline, No-Free-Zone opener |
co-writing, templates/co-write-session-opener, process |
title-game |
"Title Game", "Pat's title cascade", "10 titles fast", "vowel-chain titles", co-write warmup |
title-game, templates/title-game-prompt, co-writing |
title |
title candidates from an idea, title generation |
hook "title generation", idea-to-title, templates/title-generation-prompt |
line-brainstorm |
"30 alternatives for this line", "more end-line words", "lots of swaps". HIGH VOLUME dump for ONE line |
line-brainstorm, templates/line-brainstorm-prompt, mosaic-rhyme, meter, phrasing, line-edit-rubric |
section-brainstorm |
"more options for the chorus", "high volume options for this section". Line-brainstorm per line + stability profile + hot-spot map |
line-brainstorm Scope B, box-model, audit-checklist, meter, phrasing, line-edit-rubric |
Handlers
- Pre-flight ALWAYS: run response-filter §5 + §2 (+ §4 when facilitating) before output.
- Co-write facilitation is coaching, not monologue: keep the No-Free-Zone discipline. No idea is
free, every suggestion earns its place; surface choice points, do not decide for the writers.
- Line/section brainstorm writes each option to a labeled menu (per the
variations/worksheets
persistence convention), not an inline dump.
- The DUMP goes to the file; the MENU goes to chat. 3-4 candidates, each a full section block
in context with changed lines marked
►, one labeled block per variation. The 30-50+ columns stay
in variations//worksheets/; the display cap never lowers the generated volume. That is what
"not an inline dump" means, and a response with nothing singable in it has not been delivered. See
variations "Presenting the candidates — chat vs file".
- Rubric before the menu: every candidate cycles all passes of
line-edit-rubric before it is shown,
and pass 1 must come back CLEAN, not merely run. A candidate the AI has itself flagged as failing
a pass is removed, not disclosed. Showing it with the flag attached is the rule violation,
not the honest version of it. Present fewer candidates instead.
- Two rejected executions in a slot stops generation. Slot = the lyric position under
revision. One line, or one section when the section is being rewritten whole; not the metrical
or rhyme slot the craft files mean. Rejection = the writer declines the batch's EXECUTION:
"none of these", "the idea's right, the lines aren't", or no candidate picked. Picking one and
asking for a tweak is not a rejection, and rejecting the CONCEPT resets the count, because the
next batch answers a different brief. On the second rejection do not produce a third batch; hand
the concept over. (1) what the line has to do here, in one sentence; (2) the constraints, as the
marked positional template plus the section's rhyme and sound obligations; (3) the unused raw
material, naming images still sitting in the song's
ideation/; (4) what the two rejected
batches had in common, named as the failure mode; (5) one question for the writer. No candidate
lines in that handoff. Two is the writer's threshold; the AI does not raise it.
Persistence and template overrides
Write generated files to the paths in
artifact-persistence
"Where generated work persists", and honor a consuming project's own songwriting layout when it
defines one. Line/section brainstorm output goes to variations/ or worksheets/ as a labeled
menu (not inline). Before loading any bundled templates/<name>.md, check
${CLAUDE_PROJECT_DIR}/songwriting/templates/pat-pattison/<name>.md first: a project-level
override wins over the bundled skill default, first match, per that file's "Template override".
Boundary. This skill owns line emission, and pays for it
Every other craft skill routes finished lyric lines here. That makes this the one place where
generic output escapes into a song, so the gate is an input gate: what must exist BEFORE lines
are written, not a checklist named afterward.
Hard gate. Show the artifacts, do not claim them
A box is passed when its output is visible in this response or on disk at a named path. A box
named as passed with nothing to show is a failed box. For the source rows, what is shown is a
citation of what the file settled in THIS line, a filename is not an artifact, and neither is the
claim that the method is known. Every row applies before any line is emitted; the rhyme row applies
when the line sits in a rhyme position.
The rows run in the order work actually happens: inputs, then the self-check, then verification.
| Required before emission |
What "shown" means |
| Writer voiceprint loaded |
the four dimensions visible in this response, or the path to the writer's voiceprint file. Built per voiceprint |
| Craft sources read |
meter.md and phrasing.md read this session, each cited by what it settled for this line, the stress count the line has to hit, the phrase shape it has to keep, not by filename |
| Metaphor source read, when a figure is asked for |
metaphor.md read, and every figure emitted labeled with its type from Pat's three. Expressed Identity, Qualifying Metaphor, Verbal Metaphor. An unlabeled figure is a plain description until the label is shown |
| Sensory raw material exists |
a path under the song's ideation/, or object-writing output in this response, from /songwriting:object-writing generate |
| Rhyme candidates generated |
the labeled 8-15 candidate menu across ≥4 stability tiers, including ≥3 mosaic, visible, from /songwriting:rhyme, its search having walked the stressed vowel's coda field and not only the source word's own |
| Section mode named |
stated in this response: does this section SHOW (verse) or TELL (chorus)? |
| Positional template or stress map marked |
the marked line. Or, when a sung melody already exists, the numbered-and-bracketed positional template per meter "fitting a replacement line to an already-sung melody", never an assertion that it scans. From /songwriting:meter-prosody |
| Rubric cycled per candidate, pass 1 CLEAN |
the pass-by-pass result visible in this response, or at the candidate's named path under the song's variations/, per line-edit-rubric. Pass 1's artifact is the marked template above; on free-melody work the stress map stands in |
| Skeptic refutation returned |
the strongest case AGAINST each candidate, visible in this response or at a named path under the song's variations/, from a fresh subagent that READ response-filter §2, the marked map, and line-edit-rubric at those paths. A line survives when its refutation is stated and judged insufficient; a return holding nothing against anything has shown nothing |
Every row except the rubric row may be skipped, and a skip is named, with its reason, in the
output. That is the "tools, not rules" stance applied honestly. A silent skip is the failure, and
so is listing a box as passed while its artifact does not exist. Those rows stay skippable because
how much scaffolding a line gets is the writer's craft call, and "There are no rules, only tools."
(Writing Better Lyrics (2009), Chapter 18, quoted in
response-filter) is why. The skeptic row
is in that class deliberately: a refutation pass costs a subagent dispatch, and whether one is
worth spending on a given batch is a judgement, not a rule the writer laid down. Skip it by name
and reason, and expect to be asked why, because self-attestation is what failed.
The rubric row alone does not carry that clause, because it is not offered to the writer at all.
It is the AI checking its own output before spending his attention, and he cannot overrule a check
he never saw run. The full statement of the rules behind it is
line-edit-rubric
## Standing operating rules; in short, the cycle runs on every candidate every time with no
fatigue exception, and a FAILED pass kills the candidate rather than annotating it. Under load, emit
fewer candidates, not unchecked ones. Passes scoped out by their own headings (no fixed melody, no
rhyme position, no figure, no voiceprint on disk) are declared and stepped past. That is the pass
running, not a skip. This leaves the response-filter's own box-level skip clause untouched: its
§1-§8 boxes remain skippable-with-reason.
If a gate's input is missing, the correct move is to invoke the skill that produces it, not to
proceed and note the absence. Lines written without their inputs are LLM defaults wearing the
method's vocabulary, which is what the writer rejects. A source row's missing input is a file, so
the move is to READ it. Summarizing what a craft file probably says, or working from a remembered
version of it, is the same failure as skipping the gate with the skip left unnamed.
(Plugin-authored, not Pat Pattison's.)
Refute, do not review
(Plugin-authored, not Pat Pattison's.) A self-graded pass is indistinguishable from a real one
when the same context produced both: a model running the response filter on its own output
passes itself. So the skeptic is dispatched to build the case AGAINST each candidate, and it gets
nothing but the candidate batch, the slot's positional template or marked scansion map, and the
source paths to read: not the reasoning that produced the candidates, not which one you prefer.
This is a hard boundary, not a default, the same blind-dispatch mechanic that makes
/songwriting:object-writing generate's fleet work. Its kill rules rank singability and verbosity
ABOVE cleverness: a clever line that cannot be sung in the slot's length is refuted, not merely
ranked lower. The pass runs before the writer sees the batch and settles nothing, the writer's
sing-check is still the last word. Any general subagent honours this today; no agent in this plugin
is a skeptic, and a preloaded-skill skeptic agent is deliberately not shipped here.
Section mode binds before the line, not after
Verses show; the chorus tells. Verses carry specific situation, image, and action; the chorus makes
the broader statement the verses keep recoloring. Name the mode first, then check each emitted line
against it. A chorus of concrete inventory is verse material in the wrong box, however good the
inventory is, and a chorus is sung back, so unsingable length is a defect, not a polish item.
Mine → adapt → say it aloud
Object-writing output is ore. Pull ONE image forward and build the line around it. Pasting a run of
sensory material into a section is not using the material; it is relocating it.
Three steps. Running the first and skipping the other two is the failure this section exists to
prevent.
- Mine. Take ONE image, verb, or detail off the page. Pat's own framing of what a finished
write is for: "Once you become adept in your object writing, with bushels of sense-bound images
glittering on the kitchen table, what do you do with them?" (Writing Better Lyrics (2009),
Chapter 2). Preparation, not draft.
- Adapt. Rewrite the mined image in plain sung English BEFORE it enters a slot. Object-write
prose carries its own texture; quoting that texture into a lyric slot is what failed ("hung
where it stops being anybody's" is ore that reads like a line). Pat's printed demonstration of
the crafted shape is the collar: "Hot rod hearts and high school rings" replacing "All the
things we used to do" (Writing Better Lyrics (2009), Chapter 2). That every word in it is a
common one is this plugin's reading of the example, not a claim Pat makes about it. The step
itself is plugin-authored: Pat draws the raw-material-vs-crafted-line distinction and prints
no translation procedure. See
object-writing.
- Say it aloud. Would a person SAY the adapted line, talk-sung? Writer-derived from the same
sessions. The box lives in
line-edit-rubric pass 8; a line that
fails it goes back to step 2, never forward to a rarer word.
Related skills
- Sensory raw material before the lines →
/songwriting:object-writing generate
- Metaphor for a line that needs one →
/songwriting:metaphor
- Blank page, an idea/seed, or a stuck fragment →
/songwriting:workflow
- Rhyme partners for the swaps →
/songwriting:rhyme
- Pre-lock audit of the chosen line/section →
/songwriting:diagnose audit
- The writer's own register, before any generation → build
voiceprint
- The per-candidate cycle every emitted line clears →
line-edit-rubric
1---2name: co-write3description: Run a co-writing session and generate titles and high-volume options with Pat Pattison's methods, the No-Free-Zone co-write protocol and feedback discipline, the Title Game (chained vowel-cascade title generation), title generation from an idea, and high-volume brainstorm dumps for ONE line or ONE section. Use when: 'co-write tonight', 'co-write rules', 'no-free-zone', 'Title Game', '10 titles fast', 'title candidates for X', 'give me 30 options for this line', 'brainstorm the whole chorus'. For blank-page/idea/fragment starts use /songwriting:workflow; for rhyme dumps use /songwriting:rhyme.4---56## Mandatory pre-flight. Response Filter78Before emitting titles, line/section option dumps, or co-write feedback, run **§5 Title + hook**9and **§2 Line-writing** of [response-filter](../../context/pat-pattison/research/response-filter.md)10(add **§4 Coaching posture** when facilitating a live session). NAME each box's pass / fail /11skip-with-reason (aloud or in reasoning); correct before emission. Skips are valid; silent skips12are not.1314§2's **Reference:** line is a load list, not a bibliography: §2 has not been run until the files it15names have been read this session, at minimum16[meter](../../context/pat-pattison/research/meter.md) and17[phrasing](../../context/pat-pattison/research/phrasing.md) before the first candidate. Plus18[metaphor](../../context/pat-pattison/research/metaphor.md) when the request asks for an image or a19figure. Naming the §2 boxes while those files were never opened attests to the filter instead of20applying it, per21[response-filter](../../context/pat-pattison/research/response-filter.md) "§2 Line-writing filter".22Attestation is what lets bad lines through: a miscounted stress or a plain description labeled a23metaphor comes out of a §2 that was named rather than loaded. Loading is therefore an input,24checked in the hard gate below, not a step recorded afterward.2526And when the output is a candidate LYRIC LINE about to be shown, §2's boxes are cycled inside27[line-edit-rubric](../../context/pat-pattison/research/line-edit-rubric.md). Load it and run the28FULL cycle per candidate, in its order, naming each pass. On fixed-melody work, pass 1 (positional29fit) coming back CLEAN is the condition for showing anything at all.30*(Plugin-authored, not Pat Pattison's.)*3132## Purpose3334Collaborative generation: running a co-write with feedback discipline, generating titles (including35the Title Game), and dumping high-volume labeled options for a single line or section so the writer36has raw material to choose from.3738Method content is Pat Pattison's, under the plugin-root `../../context/pat-pattison/`; a future39author's method plugs in at `context/<author>/` without changing this skill, the author seam per40the plugin-root `../../README.md` "Method content and the author seam".4142## Action Router4344`/songwriting:co-write <action> [args]`. Parse `$ARGUMENTS`: first token = action when it matches a listed action, remainder = args; otherwise treat all of `$ARGUMENTS` as payload for the default.45No action → open the co-write protocol (No-Free-Zone session opener).4647| Action | Use when the user asks for | Load |48| --- | --- | --- |49| `co-write` (default) | co-writing session rules, feedback discipline, No-Free-Zone opener | [co-writing](../../context/pat-pattison/research/co-writing.md), [templates/co-write-session-opener](../../context/pat-pattison/templates/co-write-session-opener.md), [process](../../context/pat-pattison/research/process.md) |50| `title-game` | "Title Game", "Pat's title cascade", "10 titles fast", "vowel-chain titles", co-write warmup | [title-game](../../context/pat-pattison/research/title-game.md), [templates/title-game-prompt](../../context/pat-pattison/templates/title-game-prompt.md), [co-writing](../../context/pat-pattison/research/co-writing.md) |51| `title` | title candidates from an idea, title generation | [hook](../../context/pat-pattison/research/hook.md) "title generation", [idea-to-title](../../context/pat-pattison/research/idea-to-title.md), [templates/title-generation-prompt](../../context/pat-pattison/templates/title-generation-prompt.md) |52| `line-brainstorm` | "30 alternatives for this line", "more end-line words", "lots of swaps". HIGH VOLUME dump for ONE line | [line-brainstorm](../../context/pat-pattison/research/line-brainstorm.md), [templates/line-brainstorm-prompt](../../context/pat-pattison/templates/line-brainstorm-prompt.md), [mosaic-rhyme](../../context/pat-pattison/research/mosaic-rhyme.md), [meter](../../context/pat-pattison/research/meter.md), [phrasing](../../context/pat-pattison/research/phrasing.md), [line-edit-rubric](../../context/pat-pattison/research/line-edit-rubric.md) |53| `section-brainstorm` | "more options for the chorus", "high volume options for this section". Line-brainstorm per line + stability profile + hot-spot map | [line-brainstorm](../../context/pat-pattison/research/line-brainstorm.md) Scope B, [box-model](../../context/pat-pattison/research/box-model.md), [audit-checklist](../../context/pat-pattison/research/audit-checklist.md), [meter](../../context/pat-pattison/research/meter.md), [phrasing](../../context/pat-pattison/research/phrasing.md), [line-edit-rubric](../../context/pat-pattison/research/line-edit-rubric.md) |5455## Handlers5657- **Pre-flight ALWAYS:** run response-filter §5 + §2 (+ §4 when facilitating) before output.58- Co-write facilitation is coaching, not monologue: keep the No-Free-Zone discipline. No idea is59 free, every suggestion earns its place; surface choice points, do not decide for the writers.60- Line/section brainstorm writes each option to a labeled menu (per the `variations`/`worksheets`61 persistence convention), not an inline dump.62- **The DUMP goes to the file; the MENU goes to chat**. 3-4 candidates, each a full section block63 in context with changed lines marked `►`, one labeled block per variation. The 30-50+ columns stay64 in `variations/`/`worksheets/`; the display cap never lowers the generated volume. That is what65 "not an inline dump" means, and a response with nothing singable in it has not been delivered. See66 [variations](../../context/pat-pattison/research/variations.md) "Presenting the candidates — chat vs file".67- **Rubric before the menu:** every candidate cycles all passes of68 [line-edit-rubric](../../context/pat-pattison/research/line-edit-rubric.md) before it is shown,69 and pass 1 must come back CLEAN, not merely run. A candidate the AI has itself flagged as failing70 a pass is **removed, not disclosed**. Showing it with the flag attached is the rule violation,71 not the honest version of it. Present fewer candidates instead.72- **Two rejected executions in a slot stops generation.** *Slot* = the lyric position under73 revision. One line, or one section when the section is being rewritten whole; not the metrical74 or rhyme slot the craft files mean. *Rejection* = the writer declines the batch's EXECUTION:75 "none of these", "the idea's right, the lines aren't", or no candidate picked. Picking one and76 asking for a tweak is not a rejection, and rejecting the CONCEPT resets the count, because the77 next batch answers a different brief. On the second rejection do not produce a third batch; hand78 the concept over. (1) what the line has to do here, in one sentence; (2) the constraints, as the79 marked positional template plus the section's rhyme and sound obligations; (3) the unused raw80 material, naming images still sitting in the song's `ideation/`; (4) what the two rejected81 batches had in common, named as the failure mode; (5) one question for the writer. No candidate82 lines in that handoff. **Two** is the writer's threshold; the AI does not raise it.8384## Persistence and template overrides8586Write generated files to the paths in87[artifact-persistence](../../context/pat-pattison/research/artifact-persistence.md)88"Where generated work persists", and honor a consuming project's own songwriting layout when it89defines one. Line/section brainstorm output goes to `variations/` or `worksheets/` as a labeled90menu (not inline). Before loading any bundled `templates/<name>.md`, check91`${CLAUDE_PROJECT_DIR}/songwriting/templates/pat-pattison/<name>.md` first: a project-level92override wins over the bundled skill default, first match, per that file's "Template override".9394## Boundary. This skill owns line emission, and pays for it9596Every other craft skill routes finished lyric lines here. That makes this the one place where97generic output escapes into a song, so the gate is an **input** gate: what must exist BEFORE lines98are written, not a checklist named afterward.99100### Hard gate. Show the artifacts, do not claim them101102A box is passed when its output is **visible in this response or on disk at a named path**. A box103named as passed with nothing to show is a failed box. For the source rows, what is shown is a104citation of what the file settled in THIS line, a filename is not an artifact, and neither is the105claim that the method is known. Every row applies before any line is emitted; the rhyme row applies106when the line sits in a rhyme position.107108The rows run in the order work actually happens: inputs, then the self-check, then verification.109110| Required before emission | What "shown" means |111| --- | --- |112| Writer voiceprint loaded | the four dimensions visible in this response, or the path to the writer's voiceprint file. Built per [voiceprint](../../context/pat-pattison/research/voiceprint.md) |113| Craft sources read | `meter.md` and `phrasing.md` read this session, each cited by what it settled for this line, the stress count the line has to hit, the phrase shape it has to keep, not by filename |114| Metaphor source read, when a figure is asked for | `metaphor.md` read, and every figure emitted labeled with its type from Pat's three. Expressed Identity, Qualifying Metaphor, Verbal Metaphor. An unlabeled figure is a plain description until the label is shown |115| Sensory raw material exists | a path under the song's `ideation/`, or object-writing output in this response, from `/songwriting:object-writing generate` |116| Rhyme candidates generated | the labeled 8-15 candidate menu across ≥4 stability tiers, including ≥3 mosaic, visible, from `/songwriting:rhyme`, its search having walked the stressed vowel's coda field and not only the source word's own |117| Section mode named | stated in this response: does this section SHOW (verse) or TELL (chorus)? |118| Positional template or stress map marked | the marked line. Or, when a sung melody already exists, the numbered-and-bracketed positional template per [meter](../../context/pat-pattison/research/meter.md) "fitting a replacement line to an already-sung melody", never an assertion that it scans. From `/songwriting:meter-prosody` |119| Rubric cycled per candidate, pass 1 CLEAN | the pass-by-pass result visible in this response, or at the candidate's named path under the song's `variations/`, per [line-edit-rubric](../../context/pat-pattison/research/line-edit-rubric.md). Pass 1's artifact is the marked template above; on free-melody work the stress map stands in |120| Skeptic refutation returned | the strongest case AGAINST each candidate, visible in this response or at a named path under the song's `variations/`, from a fresh subagent that READ [response-filter](../../context/pat-pattison/research/response-filter.md) §2, the marked map, and [line-edit-rubric](../../context/pat-pattison/research/line-edit-rubric.md) at those paths. A line survives when its refutation is stated and judged insufficient; a return holding nothing against anything has shown nothing |121122**Every row except the rubric row may be skipped**, and a skip is **named, with its reason, in the123output**. That is the "tools, not rules" stance applied honestly. A silent skip is the failure, and124so is listing a box as passed while its artifact does not exist. Those rows stay skippable because125how much scaffolding a line gets is the writer's craft call, and "There are no rules, only tools."126(*Writing Better Lyrics* (2009), Chapter 18, quoted in127[response-filter](../../context/pat-pattison/research/response-filter.md)) is why. The skeptic row128is in that class deliberately: a refutation pass costs a subagent dispatch, and whether one is129worth spending on a given batch is a judgement, not a rule the writer laid down. Skip it by name130and reason, and expect to be asked why, because self-attestation is what failed.131132**The rubric row alone does not carry that clause**, because it is not offered to the writer at all.133It is the AI checking its own output before spending his attention, and he cannot overrule a check134he never saw run. The full statement of the rules behind it is135[line-edit-rubric](../../context/pat-pattison/research/line-edit-rubric.md)136`## Standing operating rules`; in short, the cycle runs on every candidate every time with no137fatigue exception, and a FAILED pass kills the candidate rather than annotating it. Under load, emit138fewer candidates, not unchecked ones. Passes scoped out by their own headings (no fixed melody, no139rhyme position, no figure, no voiceprint on disk) are declared and stepped past. That is the pass140running, not a skip. This leaves the response-filter's own box-level skip clause untouched: its141§1-§8 boxes remain skippable-with-reason.142143If a gate's input is missing, the correct move is to invoke the skill that produces it, not to144proceed and note the absence. Lines written without their inputs are LLM defaults wearing the145method's vocabulary, which is what the writer rejects. A source row's missing input is a file, so146the move is to READ it. Summarizing what a craft file probably says, or working from a remembered147version of it, is the same failure as skipping the gate with the skip left unnamed.148*(Plugin-authored, not Pat Pattison's.)*149150### Refute, do not review151152*(Plugin-authored, not Pat Pattison's.)* A self-graded pass is indistinguishable from a real one153when the same context produced both: a model running the response filter on its own output154passes itself. So the skeptic is dispatched to build the case AGAINST each candidate, and it gets155nothing but the candidate batch, the slot's positional template or marked scansion map, and the156source paths to read: not the reasoning that produced the candidates, not which one you prefer.157This is a hard boundary, not a default, the same blind-dispatch mechanic that makes158`/songwriting:object-writing generate`'s fleet work. Its kill rules rank singability and verbosity159ABOVE cleverness: a clever line that cannot be sung in the slot's length is refuted, not merely160ranked lower. The pass runs before the writer sees the batch and settles nothing, the writer's161sing-check is still the last word. Any general subagent honours this today; no agent in this plugin162is a skeptic, and a preloaded-skill skeptic agent is deliberately not shipped here.163164### Section mode binds before the line, not after165166Verses show; the chorus tells. Verses carry specific situation, image, and action; the chorus makes167the broader statement the verses keep recoloring. Name the mode first, then check each emitted line168against it. A chorus of concrete inventory is verse material in the wrong box, however good the169inventory is, and a chorus is sung back, so unsingable length is a defect, not a polish item.170171### Mine → adapt → say it aloud172173Object-writing output is ore. Pull ONE image forward and build the line around it. Pasting a run of174sensory material into a section is not using the material; it is relocating it.175176Three steps. Running the first and skipping the other two is the failure this section exists to177prevent.1781791. **Mine**. Take ONE image, verb, or detail off the page. Pat's own framing of what a finished180 write is for: *"Once you become adept in your object writing, with bushels of sense-bound images181 glittering on the kitchen table, what do you do with them?"* (*Writing Better Lyrics* (2009),182 Chapter 2). Preparation, not draft.1832. **Adapt**. Rewrite the mined image in plain sung English BEFORE it enters a slot. Object-write184 prose carries its own texture; quoting that texture into a lyric slot is what failed ("hung185 where it stops being anybody's" is ore that reads like a line). Pat's printed demonstration of186 the crafted shape is the collar: "Hot rod hearts and high school rings" replacing "All the187 things we used to do" (*Writing Better Lyrics* (2009), Chapter 2). That every word in it is a188 common one is this plugin's reading of the example, not a claim Pat makes about it. **The step189 itself is plugin-authored:** Pat draws the raw-material-vs-crafted-line distinction and prints190 no translation procedure. See191 [object-writing](../../context/pat-pattison/research/object-writing.md).1923. **Say it aloud**. Would a person SAY the adapted line, talk-sung? Writer-derived from the same193 sessions. The box lives in194 [line-edit-rubric](../../context/pat-pattison/research/line-edit-rubric.md) pass 8; a line that195 fails it goes back to step 2, never forward to a rarer word.196197## Related skills198199- Sensory raw material before the lines → `/songwriting:object-writing generate`200- Metaphor for a line that needs one → `/songwriting:metaphor`201- Blank page, an idea/seed, or a stuck fragment → `/songwriting:workflow`202- Rhyme partners for the swaps → `/songwriting:rhyme`203- Pre-lock audit of the chosen line/section → `/songwriting:diagnose audit`204- The writer's own register, before any generation → build205 [voiceprint](../../context/pat-pattison/research/voiceprint.md)206- The per-candidate cycle every emitted line clears →207 [line-edit-rubric](../../context/pat-pattison/research/line-edit-rubric.md)