From 35c82ae8b0fa2702110ab112b3dd91e991fe9929 Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Sun, 12 Jul 2026 01:54:15 -0400 Subject: [PATCH] refactor(songwriting): split pat-pattison mega-skill into concern skills Decompose the pat-pattison lyric-craft mega-skill into eight concern-scoped skills (workflow, rhyme, object-writing, meter-prosody, song-form, co-write, diagnosis, daily-practice), each a thin router over a shared reference corpus. The suno skill is unchanged. - Move the full corpus (48 research + 16 templates + datamuse.sh + the response filter) verbatim to context/pat-pattison/, preserving every intra-corpus link. - Concern = skill (author-neutral interface); author/method = context namespace. Pat's method lives once under context/pat-pattison/; a future author plugs in at context// without changing the concern skills (open/closed). - Retire /songwriting:pat-pattison; /songwriting:workflow is the start-here situation router carrying the cross-skill routing index and Quick Decision Guide. - Remap stale /pat-pattison invocation strings and the datamuse path across the corpus; rewrite READMEs, bump version 0.1.0 -> 0.2.0, add CHANGELOG. Content preserved: 53 corpus files byte-identical, 0 lost. Verified locally: lychee 660 OK / 0 errors, markdownlint 0 errors, typos clean, manifests validate. Refs melodic-software/medley#1395 --- README.md | 2 +- plugins/planning/skills/brainstorm/SKILL.md | 2 +- .../songwriting/.claude-plugin/plugin.json | 4 +- plugins/songwriting/CHANGELOG.md | 36 +++ plugins/songwriting/README.md | 42 ++- .../pat-pattison/research/action-routing.md | 109 ++++++++ .../pat-pattison/research/ai-tools.md | 4 +- .../research/artifact-persistence.md | 42 +++ .../pat-pattison/research/audit-checklist.md | 0 .../pat-pattison/research/beyond-books.md | 0 .../pat-pattison/research/book-references.md | 0 .../pat-pattison/research/box-model.md | 0 .../pat-pattison/research/brainstorm.md | 2 +- .../pat-pattison/research/bridge.md | 0 .../pat-pattison/research/cliche.md | 0 .../pat-pattison/research/co-writing.md | 0 .../research/coaching-protocol.md | 10 +- .../pat-pattison/research/daily-practice.md | 0 .../pat-pattison/research/demo-review.md | 4 +- .../pat-pattison/research/exercises.md | 0 .../research/five-compositional-elements.md | 4 +- .../pat-pattison/research/form.md | 0 .../research/fragment-development.md | 0 .../pat-pattison/research/hook.md | 0 .../pat-pattison/research/idea-to-title.md | 0 .../pat-pattison/research/line-brainstorm.md | 12 +- .../research/lyric-melodic-roadmaps.md | 0 .../pat-pattison/research/metaphor.md | 0 .../pat-pattison/research/meter.md | 0 .../pat-pattison/research/mosaic-rhyme.md | 0 .../pat-pattison/research/object-writing.md | 0 .../pat-pattison/research/phrasing.md | 0 .../pat-pattison/research/point-of-view.md | 0 .../pat-pattison/research/process.md | 0 .../pat-pattison/research/prosody.md | 0 .../pat-pattison/research/repetition.md | 0 .../pat-pattison/research/response-filter.md | 2 +- .../research/rhyme-dictionary-practice.md | 0 .../research/rhyme-fundamentals.md | 0 .../pat-pattison/research/rhyme-generation.md | 0 .../research/rhyme-sonic-bonding.md | 0 .../research/rhyme-spotlight-connection.md | 0 .../pat-pattison/research/rhyme-strategy.md | 0 .../pat-pattison/research/rhyme-types.md | 0 .../pat-pattison/research/rhyme-worksheets.md | 2 +- .../pat-pattison/research/section-building.md | 0 .../research/song-forms-examples.md | 2 +- .../pat-pattison/research/song-forms.md | 0 .../research/stable-unstable-meta.md | 0 .../pat-pattison/research/title-game.md | 0 .../pat-pattison/research/variations.md | 0 .../research/verse-development.md | 0 .../pat-pattison/research/workflows.md | 0 .../pat-pattison/research/worksheets.md | 0 .../pat-pattison/scripts/datamuse.sh | 2 +- .../templates/audit-checklist-prompt.md | 0 .../templates/brainstorm-opener.md | 2 +- .../templates/bridge-writing-prompt.md | 0 .../templates/co-write-session-opener.md | 0 .../templates/demo-review-prompt.md | 0 .../templates/diagnose-section-prompt.md | 0 .../templates/fragment-development-prompt.md | 0 .../templates/idea-to-title-prompt.md | 0 .../templates/line-brainstorm-prompt.md | 0 .../templates/metaphor-collision-prompt.md | 0 .../templates/metaphor-recipe-prompt.md | 0 .../templates/object-writing-prompt.md | 0 .../templates/title-game-prompt.md | 0 .../templates/title-generation-prompt.md | 0 .../templates/variations-prompt.md | 0 .../templates/worksheet-prompt.md | 0 plugins/songwriting/skills/co-write/SKILL.md | 59 ++++ .../skills/daily-practice/SKILL.md | 55 ++++ plugins/songwriting/skills/diagnosis/SKILL.md | 61 ++++ .../songwriting/skills/meter-prosody/SKILL.md | 59 ++++ .../skills/object-writing/SKILL.md | 61 ++++ .../songwriting/skills/pat-pattison/SKILL.md | 260 ------------------ .../pat-pattison/research/action-routing.md | 146 ---------- plugins/songwriting/skills/rhyme/SKILL.md | 67 +++++ plugins/songwriting/skills/song-form/SKILL.md | 61 ++++ plugins/songwriting/skills/workflow/SKILL.md | 106 +++++++ 81 files changed, 776 insertions(+), 442 deletions(-) create mode 100644 plugins/songwriting/CHANGELOG.md create mode 100644 plugins/songwriting/context/pat-pattison/research/action-routing.md rename plugins/songwriting/{skills => context}/pat-pattison/research/ai-tools.md (97%) create mode 100644 plugins/songwriting/context/pat-pattison/research/artifact-persistence.md rename plugins/songwriting/{skills => context}/pat-pattison/research/audit-checklist.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/beyond-books.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/book-references.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/box-model.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/brainstorm.md (99%) rename plugins/songwriting/{skills => context}/pat-pattison/research/bridge.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/cliche.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/co-writing.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/coaching-protocol.md (96%) rename plugins/songwriting/{skills => context}/pat-pattison/research/daily-practice.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/demo-review.md (97%) rename plugins/songwriting/{skills => context}/pat-pattison/research/exercises.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/five-compositional-elements.md (98%) rename plugins/songwriting/{skills => context}/pat-pattison/research/form.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/fragment-development.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/hook.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/idea-to-title.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/line-brainstorm.md (95%) rename plugins/songwriting/{skills => context}/pat-pattison/research/lyric-melodic-roadmaps.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/metaphor.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/meter.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/mosaic-rhyme.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/object-writing.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/phrasing.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/point-of-view.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/process.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/prosody.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/repetition.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/response-filter.md (99%) rename plugins/songwriting/{skills => context}/pat-pattison/research/rhyme-dictionary-practice.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/rhyme-fundamentals.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/rhyme-generation.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/rhyme-sonic-bonding.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/rhyme-spotlight-connection.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/rhyme-strategy.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/rhyme-types.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/rhyme-worksheets.md (99%) rename plugins/songwriting/{skills => context}/pat-pattison/research/section-building.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/song-forms-examples.md (99%) rename plugins/songwriting/{skills => context}/pat-pattison/research/song-forms.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/stable-unstable-meta.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/title-game.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/variations.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/verse-development.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/workflows.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/research/worksheets.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/scripts/datamuse.sh (97%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/audit-checklist-prompt.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/brainstorm-opener.md (97%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/bridge-writing-prompt.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/co-write-session-opener.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/demo-review-prompt.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/diagnose-section-prompt.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/fragment-development-prompt.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/idea-to-title-prompt.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/line-brainstorm-prompt.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/metaphor-collision-prompt.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/metaphor-recipe-prompt.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/object-writing-prompt.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/title-game-prompt.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/title-generation-prompt.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/variations-prompt.md (100%) rename plugins/songwriting/{skills => context}/pat-pattison/templates/worksheet-prompt.md (100%) create mode 100644 plugins/songwriting/skills/co-write/SKILL.md create mode 100644 plugins/songwriting/skills/daily-practice/SKILL.md create mode 100644 plugins/songwriting/skills/diagnosis/SKILL.md create mode 100644 plugins/songwriting/skills/meter-prosody/SKILL.md create mode 100644 plugins/songwriting/skills/object-writing/SKILL.md delete mode 100644 plugins/songwriting/skills/pat-pattison/SKILL.md delete mode 100644 plugins/songwriting/skills/pat-pattison/research/action-routing.md create mode 100644 plugins/songwriting/skills/rhyme/SKILL.md create mode 100644 plugins/songwriting/skills/song-form/SKILL.md create mode 100644 plugins/songwriting/skills/workflow/SKILL.md diff --git a/README.md b/README.md index d0546dfb2..3ba8ec1c2 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ Browse and manage with `/plugin`. To refresh after updates: `/plugin marketplace | [`session-flow`](plugins/session-flow) | Skills | Session-lifecycle toolkit of four skills: `workflow` (navigate a staged dev workflow and suggest the next stage), `handoff` (write a save-point + resume prompt for the `/clear`-and-resume pattern), `retro` (structured retrospective with a bundled transcript-metrics parser and learning codification), and `orchestration-brief` (arm a session or spawned worker with proactive-orchestration imperatives). | | [`tdd`](plugins/tdd) | Skill | Ships a TDD knowledge base distilled from Beck's *TDD: By Example* and Khorikov's *Unit Testing: Principles, Practices, and Patterns* — fourteen author-attributed reference files behind a routing table plus a no-load quick decision guide, answering the WHY behind test design decisions. | | [`claude-ops`](plugins/claude-ops) | Skills | Claude Code operations toolkit of three skills: `/claude-ops:claude-observability` (read locally captured telemetry — OTEL store, collector, hook-event JSONL, ccusage — with trend reports and store pruning), `/claude-ops:claude-troubleshooting` (search known Claude product bugs, check service health, maintain a persistent tracked-issue registry), and `/claude-ops:claude-code-changelog` (ingest Claude Code changelog entries and integrate them into the current repo). | -| [`songwriting`](plugins/songwriting) | Skills | Songwriting craft companion. Ships two skills: `/songwriting:pat-pattison` (Pat Pattison lyric-craft coaching — rhyme, meter, prosody, song form, object writing, metaphor, co-writing, daily practice, with a live Datamuse rhyme/vocabulary helper) and `/songwriting:suno` (Suno v5.5 prompt engineering — style prompts, tagged lyrics, genre templates, troubleshooting). | +| [`songwriting`](plugins/songwriting) | Skills | Songwriting craft companion. Lyric craft is decomposed by concern — `/songwriting:workflow` (start-here situation router + coaching), `/songwriting:rhyme` (rhyme generation, mosaic, worksheets, Datamuse helper), `/songwriting:object-writing` (object writing, metaphor, cliche, POV), `/songwriting:meter-prosody`, `/songwriting:song-form`, `/songwriting:co-write`, `/songwriting:diagnosis`, `/songwriting:daily-practice` (Pat Pattison methods) — plus `/songwriting:suno` (Suno v5.5 prompt engineering). | | [`source-control`](plugins/source-control) | Skills | Git/GitHub delivery workflow in three skills: `/source-control:commit` (Conventional Commits + Co-Authored-By trailer via safe heredoc mechanics), `/source-control:pull-request` (prep, create, CI monitoring, review-comment triage, merge, multi-PR babysit loop), and `/source-control:worktree` (create/status/cleanup/audit for parallel-session isolation). | | [`planning`](plugins/planning) | Skills | Pre-implementation planning pipeline of six skills: `/planning:brainstorm` (cheapest→most-ambitious candidate divergence), `/planning:prd` (three-tier product requirements), `/planning:interview` (depth-first Q&A locking a task contract into a PLAN.md Brief), `/planning:design` (collaborative type/contract/topology exploration with a binary handoff gate), `/planning:devils-advocate` (evidence-backed adversarial stress-testing), and `/planning:architect` (structured implementation plans with blast radius, parallelism analysis, and a user approval gate). | | [`review-toolkit`](plugins/review-toolkit) | Agents + Skills | Code-review toolkit: six read-only reviewer agents (code quality, security, architecture, doc drift, build/test/lint, CI-log audit) plus two orchestration skills — `/review-toolkit:quality-gate` (single-lens checkpoint with eight modes) and `/review-toolkit:code-review-fanout` (multi-surface fan-out normalized into one severity-ranked findings report, with a findings-driven fix pass). | diff --git a/plugins/planning/skills/brainstorm/SKILL.md b/plugins/planning/skills/brainstorm/SKILL.md index f4cde17d4..487d8bc14 100644 --- a/plugins/planning/skills/brainstorm/SKILL.md +++ b/plugins/planning/skills/brainstorm/SKILL.md @@ -10,7 +10,7 @@ disable-model-invocation: false The divergence step before any scoping: unknown-knowns (criteria the user only recognizes when seen) surface cheapest at candidate-list time — finding one mid-implementation costs a re-plan. A brainstorm round also calibrates scope: reacting to a cheapest→most-ambitious spread prevents locking a scope that is too narrow (missed the high-value approach) or too wide (ambition the problem doesn't need). -Distinct neighbors: `/design` Phase 1 decomposes the problem space WITHIN a design task already chosen; a proactive architecture-friction scan (e.g. `/improve-architecture:improve-architecture`, if installed) hunts on its own lanes; a UI-variation prototyper (e.g. `/prototype:ui`, if installed) builds visual variations of a chosen direction. This skill is the general, problem-shaped entry upstream of all three. Creative-domain ideation owned by a domain skill (e.g. songwriting brainstorms → `/songwriting:pat-pattison`, if installed) stays with that skill. +Distinct neighbors: `/design` Phase 1 decomposes the problem space WITHIN a design task already chosen; a proactive architecture-friction scan (e.g. `/improve-architecture:improve-architecture`, if installed) hunts on its own lanes; a UI-variation prototyper (e.g. `/prototype:ui`, if installed) builds visual variations of a chosen direction. This skill is the general, problem-shaped entry upstream of all three. Creative-domain ideation owned by a domain skill (e.g. songwriting brainstorms → `/songwriting:workflow`, if installed) stays with that skill. ## Task diff --git a/plugins/songwriting/.claude-plugin/plugin.json b/plugins/songwriting/.claude-plugin/plugin.json index 23e223e08..08c377827 100644 --- a/plugins/songwriting/.claude-plugin/plugin.json +++ b/plugins/songwriting/.claude-plugin/plugin.json @@ -1,8 +1,8 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "songwriting", - "version": "0.1.0", - "description": "Songwriting craft companion — Pat Pattison lyric-craft coaching (rhyme, meter, prosody, song form, object writing, metaphor, co-writing) and Suno AI prompt engineering (style prompts, tagged lyrics, genre templates, troubleshooting).", + "version": "0.2.0", + "description": "Songwriting craft companion — eight concern-scoped lyric-craft skills (workflow router, rhyme, object-writing, meter-prosody, song-form, co-write, diagnosis, daily-practice) applying Pat Pattison's methods, plus Suno v5.5 prompt engineering (style prompts, tagged lyrics, genre templates, troubleshooting).", "author": { "name": "Melodic Software", "email": "info@melodicsoftware.com" diff --git a/plugins/songwriting/CHANGELOG.md b/plugins/songwriting/CHANGELOG.md new file mode 100644 index 000000000..5469b376c --- /dev/null +++ b/plugins/songwriting/CHANGELOG.md @@ -0,0 +1,36 @@ +# Changelog + +All notable changes to the `songwriting` plugin are documented here. Format follows +[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. + +## [0.2.0] + +### Changed (breaking) + +- **Decomposed the `pat-pattison` mega-skill by concern.** The single lyric-craft skill is replaced + by focused concern skills: `workflow`, `rhyme`, `object-writing`, `meter-prosody`, `song-form`, + `co-write`, `diagnosis`, and `daily-practice`. Each is a thin router over the shared reference + corpus and runs the applicable response-filter section as its pre-flight. The `suno` skill is + unchanged. + - **Invocation change:** `/songwriting:pat-pattison ` is removed. Use the concern skill + that owns the action — e.g. `/songwriting:rhyme`, `/songwriting:meter-prosody meter`, + `/songwriting:diagnosis audit`. `/songwriting:workflow` is the start-here situation router and + carries the full cross-skill routing index and Quick Decision Guide. +- **Reference content is preserved, not lost.** All 48 research files, 16 templates, the Datamuse + script, and the response filter moved verbatim to `context/pat-pattison/`, keeping every + intra-corpus link intact. + +### Design decision — concern-as-skill, author-as-context + +The decomposition separates two independent axes: **concern** (the craft topic → the skill you +invoke) and **author/method** (whose opinionated technique → a content namespace). Pat Pattison's +full method now lives once under `context/pat-pattison/`; the concern skills are author-neutral +interfaces that load it. A future author's method for the same concern plugs in at +`context//` without modifying the concern skills (open for extension, closed for +modification). This is why the corpus is namespaced by author rather than sitting in a plain +`context/` pool. + +## [0.1.0] + +- Initial release: `pat-pattison` lyric-craft skill (all four books plus Berklee/Coursera materials, + action router, mandatory response filter) and `suno` Suno v5.5 prompt-engineering skill. diff --git a/plugins/songwriting/README.md b/plugins/songwriting/README.md index 3c918488f..0892e6ad8 100644 --- a/plugins/songwriting/README.md +++ b/plugins/songwriting/README.md @@ -3,24 +3,48 @@ A Claude Code plugin for **songwriting craft** — one cohesive capability covering the two halves of getting a song written with AI in the loop: writing the lyric well, and prompting Suno to perform it. -It ships **two skills**: +The lyric-craft side is decomposed **by concern** into focused skills, each a thin router over a +shared reference corpus. Start with `/songwriting:workflow` if you have a situation ("blank page", +"co-write tonight", "half a song") and it routes you; invoke a concern skill directly when you know +the craft term. | Skill | Invoke | Answers | |---|---|---| -| `pat-pattison` | `/songwriting:pat-pattison ` | Lyric craft — writing, rewriting, rhyming, diagnosis, object writing, metaphor, meter/prosody, song form, point of view, co-writing, and daily practice, applying Pat Pattison's methods (all 4 books plus Berklee/Coursera materials) through an action router and a mandatory response filter. | -| `suno` | `/songwriting:suno ` | Suno v5.5 prompt engineering — style prompts (6-layer formula), tagged lyrics with per-section style overrides, 12 genre templates, genre research, troubleshooting, and feature guidance (Voices, Custom Models, Studio). | +| `workflow` | `/songwriting:workflow ` | Start-here situation router (11 scenarios), step-by-step coaching dialog, blank-page/idea/fragment starts, the response-filter diagnostic, and going-deeper resources. | +| `rhyme` | `/songwriting:rhyme ` | Rhyme generation and stress-testing — identity check, stability tiers, rhyme types, mosaic/multi-word rhyme, worksheets, and the Datamuse lookup supplement. | +| `object-writing` | `/songwriting:object-writing ` | Sensory raw material and figurative language — object writing, metaphor (3 types, 8 recipes), cliche repair, and point of view. | +| `meter-prosody` | `/songwriting:meter-prosody ` | Sound and motion — scansion/meter, prosody, phrasing, section stability, and lyric-melody alignment. | +| `song-form` | `/songwriting:song-form ` | Structure — form and song forms, hook placement, repetition/repainting, verse development, the box model, and bridges. | +| `co-write` | `/songwriting:co-write ` | Collaboration and volume — the No-Free-Zone co-write protocol, the Title Game, title generation, and high-volume line/section dumps. | +| `diagnosis` | `/songwriting:diagnosis ` | Review and revise — demo review, full-draft diagnosis, the pre-lock audit checklist, variations, and rewrite. | +| `daily-practice` | `/songwriting:daily-practice ` | Habit — the daily craft routine and numbered exercises across all four Pat Pattison books. | +| `suno` | `/songwriting:suno ` | Suno v5.5 prompt engineering — style prompts (6-layer formula), tagged lyrics with per-section overrides, 12 genre templates, genre research, troubleshooting, and feature guidance (Voices, Custom Models, Studio). | -The pair is deliberate: `/songwriting:pat-pattison` develops the lyric; `/songwriting:suno` formats -the finished lyric for Suno's syntax. Each works standalone. +The lyric-craft skills and `suno` are deliberately paired: the lyric-craft skills develop the lyric; +`/songwriting:suno` formats the finished lyric for Suno's syntax. Each works standalone. + +## Method content and the author seam + +Every lyric-craft skill is **concern-scoped and author-neutral** — the skill is the stable interface +(what you invoke); the opinionated method behind it is content. Today that method is **Pat +Pattison's**, held once under `context/pat-pattison/` (the full reference corpus, its templates, the +Datamuse script, and the mandatory response filter). A future author's method for the same concern +plugs in at `context//` without changing the concern skills — the concern skills are open for +extension, closed for modification. + +Every craft output first runs the applicable section of the response filter +(`context/pat-pattison/research/response-filter.md`) — the gate that replaces generic LLM defaults +(perfect rhymes, abstract telling, single-winner picks) with Pat's craft. ## Artifacts Per-song work persists under your project root at `songwriting/songs//` by default (`LYRIC.md`, `BRIEF.md`, `ideation/`, `variations/`, `worksheets/`, `decisions/`), with daily -practice, cross-song research, and shared worksheets in sibling `songwriting/` folders. If your -project's own `CLAUDE.md` or rules define a different songwriting layout, that layout wins. +practice (`songwriting/practice//.md`), cross-song research, and shared worksheets in +sibling `songwriting/` folders. If your project's own `CLAUDE.md` or rules define a different +songwriting layout, that layout wins. -You can override any `pat-pattison` prompt template without forking the plugin: a file at +You can override any prompt template without forking the plugin: a file at `songwriting/templates/pat-pattison/.md` in your project takes precedence over the bundled default. @@ -39,7 +63,7 @@ plus the project-level template override and layout override described above. ## Requirements None beyond Claude Code for the core skills. The optional Datamuse rhyme/vocabulary helper -(`scripts/datamuse.sh`, used by `/songwriting:pat-pattison` rhyme actions as a supplement) needs +(`context/pat-pattison/scripts/datamuse.sh`, used by `/songwriting:rhyme` as a supplement) needs `bash`, `curl`, and `jq`, and calls the free, no-auth [Datamuse API](https://www.datamuse.com/api/) — the only network egress in the plugin. Without those tools the skill degrades gracefully to internal rhyme generation. diff --git a/plugins/songwriting/context/pat-pattison/research/action-routing.md b/plugins/songwriting/context/pat-pattison/research/action-routing.md new file mode 100644 index 000000000..1dee5084b --- /dev/null +++ b/plugins/songwriting/context/pat-pattison/research/action-routing.md @@ -0,0 +1,109 @@ +# Cross-Skill Routing Index + +Which `/songwriting` skill (and action) answers a given request. The per-skill action tables live in +each skill's own `SKILL.md`; this file is the cross-skill map the `workflow` orchestrator loads when +routing is ambiguous or when surfacing the menu to the user. + +Method content is Pat Pattison's. Skills are concern-scoped and author-neutral; his method is the +content under `context/pat-pattison/`. + +## Skills at a glance + +| Skill | Owns | +| --- | --- | +| `/songwriting:workflow` | situation routing (11 scenarios), coaching dialog, blank-page/idea/fragment starts, response-filter diagnostic, going-deeper resources | +| `/songwriting:rhyme` | rhyme generation, rhyme types, mosaic, worksheets, Datamuse lookup | +| `/songwriting:object-writing` | object writing, metaphor, cliche repair, point of view | +| `/songwriting:meter-prosody` | scansion/meter, prosody, phrasing, stability, lyric-melody fit | +| `/songwriting:song-form` | form, song forms, hook, repetition, verse, bridge, box model | +| `/songwriting:co-write` | co-write protocol, Title Game, titles, high-volume line/section dumps | +| `/songwriting:diagnosis` | demo review, full-draft diagnosis, pre-lock audit, variations, rewrite | +| `/songwriting:daily-practice` | daily curriculum, numbered exercises | +| `/songwriting:suno` | Suno v5.5 prompt formatting (separate capability) | + +## Quick Decision Guide + +| User asks | Route | +| --- | --- | +| "I want to write a new song." | `/songwriting:workflow` → Scenario 1 | +| "I have nothing — just want to write something." | `/songwriting:workflow brainstorm` (Scenario 8) | +| "I have an image / phrase / feeling — no title." | `/songwriting:workflow idea` (Scenario 9) | +| "This line / verse / fragment is stuck." | `/songwriting:workflow fragment` (Scenario 10) | +| "This demo is partway done — what's missing?" | `/songwriting:diagnosis demo` (Scenario 11) | +| "Review my full draft." | `/songwriting:diagnosis diagnose` (or `/songwriting:workflow` Scenario 2 / 6) | +| "I have a title — what next?" | `/songwriting:workflow` Scenario 3, then `/songwriting:co-write title` + `/songwriting:rhyme worksheet` | +| "I have a melody for these lyrics." | `/songwriting:meter-prosody align-melody` (Scenario 4) | +| "Co-write tonight." | `/songwriting:co-write` + `/songwriting:co-write title-game` (Scenario 5) | +| "Daily practice plan." | `/songwriting:daily-practice` (Scenario 7) | +| "Is this verse stable or unstable?" | `/songwriting:meter-prosody stability` | +| "Find rhymes for X that aren't cliche." | `/songwriting:rhyme` (internal first), supplement with `/songwriting:rhyme datamuse` if needed | +| "Syllable count of this line." | `/songwriting:rhyme datamuse` | +| "Why does this rhyme feel weak?" | `/songwriting:rhyme` | +| "Make this verse less abstract." | `/songwriting:object-writing` + `/songwriting:diagnosis rewrite` | +| "Give me a 90-second writing prompt." | `/songwriting:object-writing` or `/songwriting:daily-practice` | +| "I need a metaphor for trust." | `/songwriting:object-writing metaphor` or `metaphor-recipe` | +| "Generate eight metaphor options for X." | `/songwriting:object-writing metaphor-recipe` | +| "Should this be like or is?" | `/songwriting:object-writing metaphor` | +| "Scan this line." | `/songwriting:meter-prosody meter` | +| "Can this be common meter?" | `/songwriting:meter-prosody meter` | +| "My chorus does not land." | `/songwriting:song-form hook` + `/songwriting:meter-prosody` | +| "My second verse repeats the first." | `/songwriting:song-form box-model` + `repetition` | +| "Is this a verse/chorus or AABA song?" | `/songwriting:song-form song-forms` | +| "Where should the title go?" | `/songwriting:song-form hook` | +| "Generate title candidates from this idea." | `/songwriting:co-write title` or `/songwriting:workflow idea` | +| "Title Game / vowel cascade." | `/songwriting:co-write title-game` | +| "Write me a bridge." | `/songwriting:song-form bridge` | +| "What goes in verse 2 / 3?" | `/songwriting:song-form box-model` | +| "Audit this line before I lock it." | `/songwriting:diagnosis audit` | +| "Give me 5 versions of line 3." | `/songwriting:diagnosis variations` | +| "This line sounds cliched." | `/songwriting:object-writing cliche` | +| "Who is speaking in this lyric?" | `/songwriting:object-writing pov` | +| "My lyric and melody don't fit." | `/songwriting:meter-prosody align-melody` | +| "There's a greedy spot in line 2." | `/songwriting:meter-prosody align-melody` + `prosody` | +| "Run me a numbered exercise." | `/songwriting:daily-practice exercise` | +| "How do I structure a co-writing session?" | `/songwriting:co-write` | +| "Coursera / Berklee / Pat's columns / podcasts." | `/songwriting:workflow beyond-books` | +| "Rhyme this proper noun / brand / place." | `/songwriting:rhyme mosaic` | +| "I need mosaic rhymes / rhymes like Eminem." | `/songwriting:rhyme mosaic` | +| "Give me 30 options for this line." | `/songwriting:co-write line-brainstorm` | +| "Brainstorm the whole chorus / verse / bridge." | `/songwriting:co-write section-brainstorm` | +| "Walk me through writing this song step by step." | `/songwriting:workflow coach` | +| "I have an idea but I don't know where to start." | `/songwriting:workflow coach` | +| "Review the rhyme list this AI just gave me." | `/songwriting:workflow filter` (applies response-filter §1) | +| "Did my critique do Pat's craft right?" | `/songwriting:workflow filter` (applies §3) | + +## Sample Invocations + +```text +/songwriting:workflow +/songwriting:workflow brainstorm +/songwriting:workflow idea "image of an empty diner at 3am" +/songwriting:workflow fragment "the streetlight talks back" +/songwriting:workflow coach +/songwriting:workflow filter "" +/songwriting:workflow beyond-books +/songwriting:rhyme +/songwriting:rhyme types +/songwriting:rhyme mosaic "Texas" +/songwriting:rhyme worksheet "last call at the Moonlight" +/songwriting:rhyme datamuse syllables disappointment +/songwriting:object-writing 90 seconds hotel bar +/songwriting:object-writing metaphor-recipe trust +/songwriting:meter-prosody meter "I woke up under a borrowed sky" +/songwriting:meter-prosody stability chorus +/songwriting:meter-prosody align-melody "" "" +/songwriting:song-form song-forms +/songwriting:song-form bridge +/songwriting:song-form box-model +/songwriting:co-write +/songwriting:co-write title "small town funeral" +/songwriting:co-write title-game +/songwriting:co-write line-brainstorm "" +/songwriting:co-write section-brainstorm chorus +/songwriting:diagnosis diagnose "" +/songwriting:diagnosis demo "" +/songwriting:diagnosis audit "" +/songwriting:diagnosis variations "" +/songwriting:daily-practice +/songwriting:daily-practice exercise 4.6 +``` diff --git a/plugins/songwriting/skills/pat-pattison/research/ai-tools.md b/plugins/songwriting/context/pat-pattison/research/ai-tools.md similarity index 97% rename from plugins/songwriting/skills/pat-pattison/research/ai-tools.md rename to plugins/songwriting/context/pat-pattison/research/ai-tools.md index 26af497f0..cf7b38cca 100644 --- a/plugins/songwriting/skills/pat-pattison/research/ai-tools.md +++ b/plugins/songwriting/context/pat-pattison/research/ai-tools.md @@ -75,8 +75,8 @@ The model's strengths and Datamuse's strengths are complementary. ### Invocation ```bash -bash "${CLAUDE_PLUGIN_ROOT}/skills/pat-pattison/scripts/datamuse.sh" -LIMIT=50 bash "${CLAUDE_PLUGIN_ROOT}/skills/pat-pattison/scripts/datamuse.sh" near grief +bash "${CLAUDE_PLUGIN_ROOT}/context/pat-pattison/scripts/datamuse.sh" +LIMIT=50 bash "${CLAUDE_PLUGIN_ROOT}/context/pat-pattison/scripts/datamuse.sh" near grief ``` Output is TSV: `word\tscore\tnumSyllables\ttags`. Higher score = stronger match. diff --git a/plugins/songwriting/context/pat-pattison/research/artifact-persistence.md b/plugins/songwriting/context/pat-pattison/research/artifact-persistence.md new file mode 100644 index 000000000..6d025752e --- /dev/null +++ b/plugins/songwriting/context/pat-pattison/research/artifact-persistence.md @@ -0,0 +1,42 @@ +# Artifact Persistence and Template Override + +Shared operational contract for every `/songwriting` craft skill: where generated files go, and how +a consuming project overrides a bundled template. Author-neutral layout; the template-override path +is namespaced by author (`pat-pattison`) so a future author's templates layer independently. + +## Where generated work persists + +Named per-song work (title given, multi-session) persists under the consuming project's root. +Default layout (relative to `${CLAUDE_PROJECT_DIR}`): + +| Artifact kind | Default path | +|---|---| +| Per-song work | `songwriting/songs//` | +| Pre-title work (brainstorm / idea / fragment) | the song's `ideation/` subfolder | +| Line / section brainstorm output | the song's `variations/` or `worksheets/` | +| Daily practice | `songwriting/practice//.md` | +| Broader research not tied to one song | `songwriting/research/.md` | +| Reusable rhyme inventories / audit checklists | `songwriting/shared/` | + +Per-song folder anatomy: `PLAN.md` / `BRIEF.md` / `LYRIC.md` / `ideation/` / `variations/` / +`worksheets/` / `research/` / `decisions/` / `journal/`. Slug = song title kebab-cased, lowercase, +no version qualifiers (`v1`, `final`, dates) — one canonical song per slug; rewrites overwrite +within the slug. + +**Consumer override:** if the consuming project's `CLAUDE.md` or rules define their own songwriting +artifact layout, that layout wins — the table above is the default, not a mandate. + +## Template override + +When loading any `templates/.md`, check +`${CLAUDE_PROJECT_DIR}/songwriting/templates/pat-pattison/.md` first — a project-level +override wins over the bundled skill default (first match), so writers layer custom versions without +forking the plugin. + +## Output-to-file conventions + +When the user asks for variations / multiple options, write each option to a `variations/.md` +file as a labeled menu — don't dump options inline. When introducing a rhyme pair, run the +identity-vs-rhyme check (pre-vowel consonants MUST differ) via the song's +`worksheets/audit-checklist.md` Step 3 before declaring "this rhymes" — identity is NOT rhyme (per +[rhyme-fundamentals](rhyme-fundamentals.md)). diff --git a/plugins/songwriting/skills/pat-pattison/research/audit-checklist.md b/plugins/songwriting/context/pat-pattison/research/audit-checklist.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/audit-checklist.md rename to plugins/songwriting/context/pat-pattison/research/audit-checklist.md diff --git a/plugins/songwriting/skills/pat-pattison/research/beyond-books.md b/plugins/songwriting/context/pat-pattison/research/beyond-books.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/beyond-books.md rename to plugins/songwriting/context/pat-pattison/research/beyond-books.md diff --git a/plugins/songwriting/skills/pat-pattison/research/book-references.md b/plugins/songwriting/context/pat-pattison/research/book-references.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/book-references.md rename to plugins/songwriting/context/pat-pattison/research/book-references.md diff --git a/plugins/songwriting/skills/pat-pattison/research/box-model.md b/plugins/songwriting/context/pat-pattison/research/box-model.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/box-model.md rename to plugins/songwriting/context/pat-pattison/research/box-model.md diff --git a/plugins/songwriting/skills/pat-pattison/research/brainstorm.md b/plugins/songwriting/context/pat-pattison/research/brainstorm.md similarity index 99% rename from plugins/songwriting/skills/pat-pattison/research/brainstorm.md rename to plugins/songwriting/context/pat-pattison/research/brainstorm.md index 33a8011e0..df2c8cf25 100644 --- a/plugins/songwriting/skills/pat-pattison/research/brainstorm.md +++ b/plugins/songwriting/context/pat-pattison/research/brainstorm.md @@ -129,7 +129,7 @@ After a brainstorm session: The writer may want pure daily practice (`daily-practice.md`) with no song target. That's the 56-day curriculum, not a brainstorm session. Route to -`/pat-pattison daily` instead. +`/songwriting:daily-practice` instead. Brainstorm = intent to develop a song, but no material yet. Daily practice = intent to train, no song target required. diff --git a/plugins/songwriting/skills/pat-pattison/research/bridge.md b/plugins/songwriting/context/pat-pattison/research/bridge.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/bridge.md rename to plugins/songwriting/context/pat-pattison/research/bridge.md diff --git a/plugins/songwriting/skills/pat-pattison/research/cliche.md b/plugins/songwriting/context/pat-pattison/research/cliche.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/cliche.md rename to plugins/songwriting/context/pat-pattison/research/cliche.md diff --git a/plugins/songwriting/skills/pat-pattison/research/co-writing.md b/plugins/songwriting/context/pat-pattison/research/co-writing.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/co-writing.md rename to plugins/songwriting/context/pat-pattison/research/co-writing.md diff --git a/plugins/songwriting/skills/pat-pattison/research/coaching-protocol.md b/plugins/songwriting/context/pat-pattison/research/coaching-protocol.md similarity index 96% rename from plugins/songwriting/skills/pat-pattison/research/coaching-protocol.md rename to plugins/songwriting/context/pat-pattison/research/coaching-protocol.md index aa2a51a15..5e7fa75e7 100644 --- a/plugins/songwriting/skills/pat-pattison/research/coaching-protocol.md +++ b/plugins/songwriting/context/pat-pattison/research/coaching-protocol.md @@ -177,11 +177,11 @@ phase. When it doesn't, the AI names what's still open. Coaching dialog routes to another action when: -- Writer wants more options on a line → `/pat-pattison line-brainstorm` -- Writer is stuck on a rhyme → `/pat-pattison rhyme-generation` -- Writer wants to verify pre-lock → `/pat-pattison audit` -- Writer wants alternates of a candidate → `/pat-pattison variations` -- Writer wants form / song-shape options → `/pat-pattison song-forms` +- Writer wants more options on a line → `/songwriting:co-write line-brainstorm` +- Writer is stuck on a rhyme → `/songwriting:rhyme` +- Writer wants to verify pre-lock → `/songwriting:diagnosis audit` +- Writer wants alternates of a candidate → `/songwriting:diagnosis variations` +- Writer wants form / song-shape options → `/songwriting:song-form song-forms` The AI names the route and asks if the writer wants to take it. The coaching dialog doesn't pretend to cover everything — it routes when a diff --git a/plugins/songwriting/skills/pat-pattison/research/daily-practice.md b/plugins/songwriting/context/pat-pattison/research/daily-practice.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/daily-practice.md rename to plugins/songwriting/context/pat-pattison/research/daily-practice.md diff --git a/plugins/songwriting/skills/pat-pattison/research/demo-review.md b/plugins/songwriting/context/pat-pattison/research/demo-review.md similarity index 97% rename from plugins/songwriting/skills/pat-pattison/research/demo-review.md rename to plugins/songwriting/context/pat-pattison/research/demo-review.md index e379c215a..715f28cf2 100644 --- a/plugins/songwriting/skills/pat-pattison/research/demo-review.md +++ b/plugins/songwriting/context/pat-pattison/research/demo-review.md @@ -10,8 +10,8 @@ Distinct from: - `brainstorm.md` — nothing yet - `idea-to-title.md` — seed only - `fragment-development.md` — single fragment -- `/pat-pattison diagnose` — assumes a complete-ish draft; this assumes ANY stage -- `/pat-pattison rewrite` — execute a rewrite (this file precedes that) +- `/songwriting:diagnosis diagnose` — assumes a complete-ish draft; this assumes ANY stage +- `/songwriting:diagnosis rewrite` — execute a rewrite (this file precedes that) ## When to load diff --git a/plugins/songwriting/skills/pat-pattison/research/exercises.md b/plugins/songwriting/context/pat-pattison/research/exercises.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/exercises.md rename to plugins/songwriting/context/pat-pattison/research/exercises.md diff --git a/plugins/songwriting/skills/pat-pattison/research/five-compositional-elements.md b/plugins/songwriting/context/pat-pattison/research/five-compositional-elements.md similarity index 98% rename from plugins/songwriting/skills/pat-pattison/research/five-compositional-elements.md rename to plugins/songwriting/context/pat-pattison/research/five-compositional-elements.md index 7fc1c2818..aeb8d2158 100644 --- a/plugins/songwriting/skills/pat-pattison/research/five-compositional-elements.md +++ b/plugins/songwriting/context/pat-pattison/research/five-compositional-elements.md @@ -197,8 +197,8 @@ One row fix. The other four stay. Diagnose all five, change one. ## Related actions -- `/pat-pattison diagnose
` — runs this worksheet. -- `/pat-pattison stability` — runs the +- `/songwriting:diagnosis diagnose
` — runs this worksheet. +- `/songwriting:meter-prosody stability` — runs the [stable / unstable](stable-unstable-meta.md) meta-question on top of the five-row check. diff --git a/plugins/songwriting/skills/pat-pattison/research/form.md b/plugins/songwriting/context/pat-pattison/research/form.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/form.md rename to plugins/songwriting/context/pat-pattison/research/form.md diff --git a/plugins/songwriting/skills/pat-pattison/research/fragment-development.md b/plugins/songwriting/context/pat-pattison/research/fragment-development.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/fragment-development.md rename to plugins/songwriting/context/pat-pattison/research/fragment-development.md diff --git a/plugins/songwriting/skills/pat-pattison/research/hook.md b/plugins/songwriting/context/pat-pattison/research/hook.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/hook.md rename to plugins/songwriting/context/pat-pattison/research/hook.md diff --git a/plugins/songwriting/skills/pat-pattison/research/idea-to-title.md b/plugins/songwriting/context/pat-pattison/research/idea-to-title.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/idea-to-title.md rename to plugins/songwriting/context/pat-pattison/research/idea-to-title.md diff --git a/plugins/songwriting/skills/pat-pattison/research/line-brainstorm.md b/plugins/songwriting/context/pat-pattison/research/line-brainstorm.md similarity index 95% rename from plugins/songwriting/skills/pat-pattison/research/line-brainstorm.md rename to plugins/songwriting/context/pat-pattison/research/line-brainstorm.md index 3d4f1cdc1..84768883d 100644 --- a/plugins/songwriting/skills/pat-pattison/research/line-brainstorm.md +++ b/plugins/songwriting/context/pat-pattison/research/line-brainstorm.md @@ -7,12 +7,12 @@ This is NOT the same as: | Action | Volume | Output shape | |---|---|---| -| `/pat-pattison rhyme` / `rhyme-generation` | 8-15 rhyme candidates | rhyme-list per tier | -| `/pat-pattison variations` | 5-7 labeled line alternates | menu of polished alternates | -| `/pat-pattison line-brainstorm` | 30-50+ across 5 columns | RAW pre-revision dump | -| `/pat-pattison demo` | diagnosis of the line in song context | dominant-problem named | -| `/pat-pattison audit` | pre-lock checklist on a candidate line | go / no-go signal | -| `/pat-pattison object-writing` | timed sense-bound write | raw-image generation | +| `/songwriting:rhyme` / `rhyme-generation` | 8-15 rhyme candidates | rhyme-list per tier | +| `/songwriting:diagnosis variations` | 5-7 labeled line alternates | menu of polished alternates | +| `/songwriting:co-write line-brainstorm` | 30-50+ across 5 columns | RAW pre-revision dump | +| `/songwriting:diagnosis demo` | diagnosis of the line in song context | dominant-problem named | +| `/songwriting:diagnosis audit` | pre-lock checklist on a candidate line | go / no-go signal | +| `/songwriting:object-writing` | timed sense-bound write | raw-image generation | `line-brainstorm` is the *between* tool — the writer knows the line needs to change but doesn't know what to change. Generate MANY options, sort diff --git a/plugins/songwriting/skills/pat-pattison/research/lyric-melodic-roadmaps.md b/plugins/songwriting/context/pat-pattison/research/lyric-melodic-roadmaps.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/lyric-melodic-roadmaps.md rename to plugins/songwriting/context/pat-pattison/research/lyric-melodic-roadmaps.md diff --git a/plugins/songwriting/skills/pat-pattison/research/metaphor.md b/plugins/songwriting/context/pat-pattison/research/metaphor.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/metaphor.md rename to plugins/songwriting/context/pat-pattison/research/metaphor.md diff --git a/plugins/songwriting/skills/pat-pattison/research/meter.md b/plugins/songwriting/context/pat-pattison/research/meter.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/meter.md rename to plugins/songwriting/context/pat-pattison/research/meter.md diff --git a/plugins/songwriting/skills/pat-pattison/research/mosaic-rhyme.md b/plugins/songwriting/context/pat-pattison/research/mosaic-rhyme.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/mosaic-rhyme.md rename to plugins/songwriting/context/pat-pattison/research/mosaic-rhyme.md diff --git a/plugins/songwriting/skills/pat-pattison/research/object-writing.md b/plugins/songwriting/context/pat-pattison/research/object-writing.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/object-writing.md rename to plugins/songwriting/context/pat-pattison/research/object-writing.md diff --git a/plugins/songwriting/skills/pat-pattison/research/phrasing.md b/plugins/songwriting/context/pat-pattison/research/phrasing.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/phrasing.md rename to plugins/songwriting/context/pat-pattison/research/phrasing.md diff --git a/plugins/songwriting/skills/pat-pattison/research/point-of-view.md b/plugins/songwriting/context/pat-pattison/research/point-of-view.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/point-of-view.md rename to plugins/songwriting/context/pat-pattison/research/point-of-view.md diff --git a/plugins/songwriting/skills/pat-pattison/research/process.md b/plugins/songwriting/context/pat-pattison/research/process.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/process.md rename to plugins/songwriting/context/pat-pattison/research/process.md diff --git a/plugins/songwriting/skills/pat-pattison/research/prosody.md b/plugins/songwriting/context/pat-pattison/research/prosody.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/prosody.md rename to plugins/songwriting/context/pat-pattison/research/prosody.md diff --git a/plugins/songwriting/skills/pat-pattison/research/repetition.md b/plugins/songwriting/context/pat-pattison/research/repetition.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/repetition.md rename to plugins/songwriting/context/pat-pattison/research/repetition.md diff --git a/plugins/songwriting/skills/pat-pattison/research/response-filter.md b/plugins/songwriting/context/pat-pattison/research/response-filter.md similarity index 99% rename from plugins/songwriting/skills/pat-pattison/research/response-filter.md rename to plugins/songwriting/context/pat-pattison/research/response-filter.md index b178a4df0..9443d6ac4 100644 --- a/plugins/songwriting/skills/pat-pattison/research/response-filter.md +++ b/plugins/songwriting/context/pat-pattison/research/response-filter.md @@ -1,6 +1,6 @@ # AI Response Filter — Pre-Flight Gate for Every Output -**This file is mandatory.** When `/pat-pattison` skill is active — explicitly or +**This file is mandatory.** When any `/songwriting` craft skill is active — explicitly or auto-routed — every AI response that suggests rhymes, writes a line, rewrites a lyric, critiques a draft, or coaches process MUST pass through the applicable section below before emission. diff --git a/plugins/songwriting/skills/pat-pattison/research/rhyme-dictionary-practice.md b/plugins/songwriting/context/pat-pattison/research/rhyme-dictionary-practice.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/rhyme-dictionary-practice.md rename to plugins/songwriting/context/pat-pattison/research/rhyme-dictionary-practice.md diff --git a/plugins/songwriting/skills/pat-pattison/research/rhyme-fundamentals.md b/plugins/songwriting/context/pat-pattison/research/rhyme-fundamentals.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/rhyme-fundamentals.md rename to plugins/songwriting/context/pat-pattison/research/rhyme-fundamentals.md diff --git a/plugins/songwriting/skills/pat-pattison/research/rhyme-generation.md b/plugins/songwriting/context/pat-pattison/research/rhyme-generation.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/rhyme-generation.md rename to plugins/songwriting/context/pat-pattison/research/rhyme-generation.md diff --git a/plugins/songwriting/skills/pat-pattison/research/rhyme-sonic-bonding.md b/plugins/songwriting/context/pat-pattison/research/rhyme-sonic-bonding.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/rhyme-sonic-bonding.md rename to plugins/songwriting/context/pat-pattison/research/rhyme-sonic-bonding.md diff --git a/plugins/songwriting/skills/pat-pattison/research/rhyme-spotlight-connection.md b/plugins/songwriting/context/pat-pattison/research/rhyme-spotlight-connection.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/rhyme-spotlight-connection.md rename to plugins/songwriting/context/pat-pattison/research/rhyme-spotlight-connection.md diff --git a/plugins/songwriting/skills/pat-pattison/research/rhyme-strategy.md b/plugins/songwriting/context/pat-pattison/research/rhyme-strategy.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/rhyme-strategy.md rename to plugins/songwriting/context/pat-pattison/research/rhyme-strategy.md diff --git a/plugins/songwriting/skills/pat-pattison/research/rhyme-types.md b/plugins/songwriting/context/pat-pattison/research/rhyme-types.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/rhyme-types.md rename to plugins/songwriting/context/pat-pattison/research/rhyme-types.md diff --git a/plugins/songwriting/skills/pat-pattison/research/rhyme-worksheets.md b/plugins/songwriting/context/pat-pattison/research/rhyme-worksheets.md similarity index 99% rename from plugins/songwriting/skills/pat-pattison/research/rhyme-worksheets.md rename to plugins/songwriting/context/pat-pattison/research/rhyme-worksheets.md index ab96f8c87..608df75e8 100644 --- a/plugins/songwriting/skills/pat-pattison/research/rhyme-worksheets.md +++ b/plugins/songwriting/context/pat-pattison/research/rhyme-worksheets.md @@ -479,7 +479,7 @@ resources in later chapters. ## Skill output format -When `/pat-pattison` generates a rhyme worksheet, prefer this structure: +When `/songwriting:rhyme worksheet` generates a rhyme worksheet, prefer this structure: ```text Idea sketch: diff --git a/plugins/songwriting/skills/pat-pattison/research/section-building.md b/plugins/songwriting/context/pat-pattison/research/section-building.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/section-building.md rename to plugins/songwriting/context/pat-pattison/research/section-building.md diff --git a/plugins/songwriting/skills/pat-pattison/research/song-forms-examples.md b/plugins/songwriting/context/pat-pattison/research/song-forms-examples.md similarity index 99% rename from plugins/songwriting/skills/pat-pattison/research/song-forms-examples.md rename to plugins/songwriting/context/pat-pattison/research/song-forms-examples.md index 3a1d6a12c..c9d1d3cc5 100644 --- a/plugins/songwriting/skills/pat-pattison/research/song-forms-examples.md +++ b/plugins/songwriting/context/pat-pattison/research/song-forms-examples.md @@ -16,7 +16,7 @@ analysis and Pat's craft commentary, paraphrased. companion writers reach when asking: "how is this form actually built?" or "how does a deceptive verse hand off to a resolving chorus?" -Load via `/pat-pattison song-forms` when a writer wants to see Pat's +Load via `/songwriting:song-form song-forms` when a writer wants to see Pat's mechanism analyses, not just the form taxonomy. ## "This Bottle and Me" — Verse/Refrain (Chapter 6) diff --git a/plugins/songwriting/skills/pat-pattison/research/song-forms.md b/plugins/songwriting/context/pat-pattison/research/song-forms.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/song-forms.md rename to plugins/songwriting/context/pat-pattison/research/song-forms.md diff --git a/plugins/songwriting/skills/pat-pattison/research/stable-unstable-meta.md b/plugins/songwriting/context/pat-pattison/research/stable-unstable-meta.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/stable-unstable-meta.md rename to plugins/songwriting/context/pat-pattison/research/stable-unstable-meta.md diff --git a/plugins/songwriting/skills/pat-pattison/research/title-game.md b/plugins/songwriting/context/pat-pattison/research/title-game.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/title-game.md rename to plugins/songwriting/context/pat-pattison/research/title-game.md diff --git a/plugins/songwriting/skills/pat-pattison/research/variations.md b/plugins/songwriting/context/pat-pattison/research/variations.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/variations.md rename to plugins/songwriting/context/pat-pattison/research/variations.md diff --git a/plugins/songwriting/skills/pat-pattison/research/verse-development.md b/plugins/songwriting/context/pat-pattison/research/verse-development.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/verse-development.md rename to plugins/songwriting/context/pat-pattison/research/verse-development.md diff --git a/plugins/songwriting/skills/pat-pattison/research/workflows.md b/plugins/songwriting/context/pat-pattison/research/workflows.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/workflows.md rename to plugins/songwriting/context/pat-pattison/research/workflows.md diff --git a/plugins/songwriting/skills/pat-pattison/research/worksheets.md b/plugins/songwriting/context/pat-pattison/research/worksheets.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/research/worksheets.md rename to plugins/songwriting/context/pat-pattison/research/worksheets.md diff --git a/plugins/songwriting/skills/pat-pattison/scripts/datamuse.sh b/plugins/songwriting/context/pat-pattison/scripts/datamuse.sh similarity index 97% rename from plugins/songwriting/skills/pat-pattison/scripts/datamuse.sh rename to plugins/songwriting/context/pat-pattison/scripts/datamuse.sh index e12d0fe4d..fd50a3016 100755 --- a/plugins/songwriting/skills/pat-pattison/scripts/datamuse.sh +++ b/plugins/songwriting/context/pat-pattison/scripts/datamuse.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Datamuse API helper for /pat-pattison. +# Datamuse API helper for /songwriting:rhyme (Pat Pattison method). # Free, no auth, no key. https://www.datamuse.com/api/ # # Why this exists: AI rhyme/syllable/semantic recall is unreliable. Pat's diff --git a/plugins/songwriting/skills/pat-pattison/templates/audit-checklist-prompt.md b/plugins/songwriting/context/pat-pattison/templates/audit-checklist-prompt.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/templates/audit-checklist-prompt.md rename to plugins/songwriting/context/pat-pattison/templates/audit-checklist-prompt.md diff --git a/plugins/songwriting/skills/pat-pattison/templates/brainstorm-opener.md b/plugins/songwriting/context/pat-pattison/templates/brainstorm-opener.md similarity index 97% rename from plugins/songwriting/skills/pat-pattison/templates/brainstorm-opener.md rename to plugins/songwriting/context/pat-pattison/templates/brainstorm-opener.md index 13cd49010..554792d30 100644 --- a/plugins/songwriting/skills/pat-pattison/templates/brainstorm-opener.md +++ b/plugins/songwriting/context/pat-pattison/templates/brainstorm-opener.md @@ -1,6 +1,6 @@ # Brainstorm Opener Template -Use this when the writer enters with `/pat-pattison brainstorm` or with no +Use this when the writer enters with `/songwriting:workflow brainstorm` or with no material at all. Goal: pull material before any commitment to title, form, or POV. diff --git a/plugins/songwriting/skills/pat-pattison/templates/bridge-writing-prompt.md b/plugins/songwriting/context/pat-pattison/templates/bridge-writing-prompt.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/templates/bridge-writing-prompt.md rename to plugins/songwriting/context/pat-pattison/templates/bridge-writing-prompt.md diff --git a/plugins/songwriting/skills/pat-pattison/templates/co-write-session-opener.md b/plugins/songwriting/context/pat-pattison/templates/co-write-session-opener.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/templates/co-write-session-opener.md rename to plugins/songwriting/context/pat-pattison/templates/co-write-session-opener.md diff --git a/plugins/songwriting/skills/pat-pattison/templates/demo-review-prompt.md b/plugins/songwriting/context/pat-pattison/templates/demo-review-prompt.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/templates/demo-review-prompt.md rename to plugins/songwriting/context/pat-pattison/templates/demo-review-prompt.md diff --git a/plugins/songwriting/skills/pat-pattison/templates/diagnose-section-prompt.md b/plugins/songwriting/context/pat-pattison/templates/diagnose-section-prompt.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/templates/diagnose-section-prompt.md rename to plugins/songwriting/context/pat-pattison/templates/diagnose-section-prompt.md diff --git a/plugins/songwriting/skills/pat-pattison/templates/fragment-development-prompt.md b/plugins/songwriting/context/pat-pattison/templates/fragment-development-prompt.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/templates/fragment-development-prompt.md rename to plugins/songwriting/context/pat-pattison/templates/fragment-development-prompt.md diff --git a/plugins/songwriting/skills/pat-pattison/templates/idea-to-title-prompt.md b/plugins/songwriting/context/pat-pattison/templates/idea-to-title-prompt.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/templates/idea-to-title-prompt.md rename to plugins/songwriting/context/pat-pattison/templates/idea-to-title-prompt.md diff --git a/plugins/songwriting/skills/pat-pattison/templates/line-brainstorm-prompt.md b/plugins/songwriting/context/pat-pattison/templates/line-brainstorm-prompt.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/templates/line-brainstorm-prompt.md rename to plugins/songwriting/context/pat-pattison/templates/line-brainstorm-prompt.md diff --git a/plugins/songwriting/skills/pat-pattison/templates/metaphor-collision-prompt.md b/plugins/songwriting/context/pat-pattison/templates/metaphor-collision-prompt.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/templates/metaphor-collision-prompt.md rename to plugins/songwriting/context/pat-pattison/templates/metaphor-collision-prompt.md diff --git a/plugins/songwriting/skills/pat-pattison/templates/metaphor-recipe-prompt.md b/plugins/songwriting/context/pat-pattison/templates/metaphor-recipe-prompt.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/templates/metaphor-recipe-prompt.md rename to plugins/songwriting/context/pat-pattison/templates/metaphor-recipe-prompt.md diff --git a/plugins/songwriting/skills/pat-pattison/templates/object-writing-prompt.md b/plugins/songwriting/context/pat-pattison/templates/object-writing-prompt.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/templates/object-writing-prompt.md rename to plugins/songwriting/context/pat-pattison/templates/object-writing-prompt.md diff --git a/plugins/songwriting/skills/pat-pattison/templates/title-game-prompt.md b/plugins/songwriting/context/pat-pattison/templates/title-game-prompt.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/templates/title-game-prompt.md rename to plugins/songwriting/context/pat-pattison/templates/title-game-prompt.md diff --git a/plugins/songwriting/skills/pat-pattison/templates/title-generation-prompt.md b/plugins/songwriting/context/pat-pattison/templates/title-generation-prompt.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/templates/title-generation-prompt.md rename to plugins/songwriting/context/pat-pattison/templates/title-generation-prompt.md diff --git a/plugins/songwriting/skills/pat-pattison/templates/variations-prompt.md b/plugins/songwriting/context/pat-pattison/templates/variations-prompt.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/templates/variations-prompt.md rename to plugins/songwriting/context/pat-pattison/templates/variations-prompt.md diff --git a/plugins/songwriting/skills/pat-pattison/templates/worksheet-prompt.md b/plugins/songwriting/context/pat-pattison/templates/worksheet-prompt.md similarity index 100% rename from plugins/songwriting/skills/pat-pattison/templates/worksheet-prompt.md rename to plugins/songwriting/context/pat-pattison/templates/worksheet-prompt.md diff --git a/plugins/songwriting/skills/co-write/SKILL.md b/plugins/songwriting/skills/co-write/SKILL.md new file mode 100644 index 000000000..c6aad6762 --- /dev/null +++ b/plugins/songwriting/skills/co-write/SKILL.md @@ -0,0 +1,59 @@ +--- +name: co-write +description: "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." +argument-hint: "[action] [args] (e.g., /songwriting:co-write, /songwriting:co-write title-game, /songwriting:co-write line-brainstorm \"...\") — full actions in body" +user-invocable: true +disable-model-invocation: false +--- + +## 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](../../context/pat-pattison/research/response-filter.md) +(add **§4 Coaching posture** when facilitating a live session). NAME each box's pass / fail / +skip-with-reason; correct before emission. Skips are valid; silent skips are not. + +## 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 `context/pat-pattison/`. A future author's method plugs in +at `context//` without changing this skill. + +## Action Router + +`/songwriting:co-write [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](../../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) | +| `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) | +| `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) | +| `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) | +| `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) | + +## 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. + +## Persistence and template overrides + +Write generated files to the paths in +[artifact-persistence](../../context/pat-pattison/research/artifact-persistence.md), 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/.md`, check `${CLAUDE_PROJECT_DIR}/songwriting/templates/pat-pattison/.md` +first — a project-level override wins over the bundled default. + +## Related skills + +- 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:diagnosis audit` diff --git a/plugins/songwriting/skills/daily-practice/SKILL.md b/plugins/songwriting/skills/daily-practice/SKILL.md new file mode 100644 index 000000000..0b9881f30 --- /dev/null +++ b/plugins/songwriting/skills/daily-practice/SKILL.md @@ -0,0 +1,55 @@ +--- +name: daily-practice +description: "Build a songwriting practice habit with Pat Pattison's curriculum — the daily object-writing/craft routine and numbered exercises drawn from all four books (Essential Guide to Lyric Form and Structure structural exercises, Songwriting Without Boundaries 56-day curriculum, Essential Guide to Rhyming worksheets). Use when: 'daily practice plan', 'build a writing habit', 'give me a 90-second writing prompt', 'run me a numbered exercise', 'exercise 4.6', 'daily craft prompt'. For a one-off object-writing prompt use /songwriting:object-writing." +argument-hint: "[action] [args] (e.g., /songwriting:daily-practice, /songwriting:daily-practice exercise 4.6) — full actions in body" +user-invocable: true +disable-model-invocation: false +--- + +## Mandatory pre-flight — Response Filter + +When a practice run produces sample lines, images, or rhymes, run the applicable section of +[response-filter](../../context/pat-pattison/research/response-filter.md) (§1 rhyme, §2 line, +§7 image) before emitting them. NAME each box's pass / fail / skip-with-reason; correct before +emission. Skips are valid; silent skips are not. Prompt-only runs (assigning an exercise) need no +filter pass. + +## Purpose + +The habit layer: a daily craft routine and a numbered-exercise index across all four books, so a +writer can build and sustain practice. This skill hands out prompts and curricula; the craft skills +do the in-the-moment coaching on the output. + +Method content is Pat Pattison's, under `context/pat-pattison/`. A future author's curriculum plugs +in at `context//` without changing this skill. + +## Action Router + +`/songwriting:daily-practice [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 → issue one daily craft prompt immediately (default a 90-second object-writing dive). + +| Action | Use when the user asks for | Load | +| --- | --- | --- | +| `daily` (default) | a daily craft prompt or practice curriculum | [daily-practice](../../context/pat-pattison/research/daily-practice.md), [templates/object-writing-prompt](../../context/pat-pattison/templates/object-writing-prompt.md), [templates/metaphor-collision-prompt](../../context/pat-pattison/templates/metaphor-collision-prompt.md) | +| `exercise` | a numbered exercise from any of the four books (structural / 56-day / rhyme worksheets) | [exercises](../../context/pat-pattison/research/exercises.md) | + +## Handlers + +- **Pre-flight when producing sample output:** run the applicable response-filter section; a + prompt-only (assign-an-exercise) run needs no filter pass. +- Give one usable prompt or a bounded sequence — do not assign the full curriculum unless asked. +- Practice output persists per the artifact convention (`songwriting/practice//.md`). + +## Persistence and template overrides + +Write generated files to the paths in +[artifact-persistence](../../context/pat-pattison/research/artifact-persistence.md) (daily practice +to `songwriting/practice//.md`), and honor a consuming project's own layout when it +defines one. Before loading any bundled `templates/.md`, check +`${CLAUDE_PROJECT_DIR}/songwriting/templates/pat-pattison/.md` first — a project-level override +wins over the bundled default. + +## Related skills + +- A single in-session object-writing or metaphor prompt → `/songwriting:object-writing` +- Rhyme worksheets specifically → `/songwriting:rhyme worksheet` diff --git a/plugins/songwriting/skills/diagnosis/SKILL.md b/plugins/songwriting/skills/diagnosis/SKILL.md new file mode 100644 index 000000000..33de43643 --- /dev/null +++ b/plugins/songwriting/skills/diagnosis/SKILL.md @@ -0,0 +1,61 @@ +--- +name: diagnosis +description: "Review, audit, and rewrite a lyric with Pat Pattison's methods — demo review at any completion stage, full-draft diagnosis against the five compositional elements and stable/unstable analysis, the pre-lock line/section audit checklist (tools, not gates), labeled variations across six axes, and critique-driven rewrite. Use when: 'what's wrong with my song', 'review my draft', 'is this any good', 'review this demo', 'audit this line before I lock it', 'give me 5 versions of line 3', 'rewrite this using Pat's checklist'. For blank-page starts use /songwriting:workflow." +argument-hint: "[action] [args] (e.g., /songwriting:diagnosis, /songwriting:diagnosis audit \"...\", /songwriting:diagnosis variations \"...\") — full actions in body" +user-invocable: true +disable-model-invocation: false +--- + +## Mandatory pre-flight — Response Filter + +Before emitting a critique, diagnosis, audit verdict, variation set, or rewrite, run **§3 Critique +filter** and **§8 Pre-lock filter** of +[response-filter](../../context/pat-pattison/research/response-filter.md) (add **§2 Line-writing** +when producing rewritten lines). NAME each box's pass / fail / skip-with-reason; correct before +emission. Skips are valid; silent skips are not — list-and-leave critique is the default this +filter catches. + +## Purpose + +The review-and-revise layer: name the dominant problem, offer one focused revision, run the pre-lock +checklist as deliberate choice points, and generate labeled alternates. Diagnosis names problems; +it does not silently rewrite the whole song. + +Method content is Pat Pattison's, under `context/pat-pattison/`. A future author's method plugs in +at `context//` without changing this skill. + +## Action Router + +`/songwriting:diagnosis [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 → route on completion stage (partway draft → `demo`; near-complete → `diagnose`). + +| Action | Use when the user asks for | Load | +| --- | --- | --- | +| `diagnose` (default) | "what's wrong with my song", "review my draft" (near-complete) | [five-compositional-elements](../../context/pat-pattison/research/five-compositional-elements.md), [stable-unstable-meta](../../context/pat-pattison/research/stable-unstable-meta.md), [prosody](../../context/pat-pattison/research/prosody.md) | +| `demo` | "review this demo", "where do I take this", "lyric is partway done" | [demo-review](../../context/pat-pattison/research/demo-review.md), [templates/demo-review-prompt](../../context/pat-pattison/templates/demo-review-prompt.md) | +| `audit` | "line-by-line review", "pre-lock checklist", "should this lock" | [audit-checklist](../../context/pat-pattison/research/audit-checklist.md), [templates/audit-checklist-prompt](../../context/pat-pattison/templates/audit-checklist-prompt.md), [templates/diagnose-section-prompt](../../context/pat-pattison/templates/diagnose-section-prompt.md) | +| `variations` | "give me 5 versions of this line", "different POV / image / vowel", "alternate this" | [variations](../../context/pat-pattison/research/variations.md), [templates/variations-prompt](../../context/pat-pattison/templates/variations-prompt.md) | +| `rewrite` | a lyric critique or rewrite using Pat's checklist | [stable-unstable-meta](../../context/pat-pattison/research/stable-unstable-meta.md), [five-compositional-elements](../../context/pat-pattison/research/five-compositional-elements.md), [prosody](../../context/pat-pattison/research/prosody.md), [object-writing](../../context/pat-pattison/research/object-writing.md), [rhyme-strategy](../../context/pat-pattison/research/rhyme-strategy.md), [cliche](../../context/pat-pattison/research/cliche.md) | + +## Handlers + +- **Pre-flight ALWAYS:** run response-filter §3 + §8 (+ §2 when rewriting) before output. +- Name the dominant problem; offer one focused revision. Do not list every issue. +- Audit boxes are tools, not gates: present each as a deliberate choice point, pass/fail/skip — a + writer may skip any box, but a skip names a reason; silent skips are not OK. +- If the user pastes an incomplete fragment/idea/half-song, this is the wrong skill — route to + `/songwriting:workflow` (`fragment` / `idea`), not `diagnose`. + +## Persistence and template overrides + +Write generated files to the paths in +[artifact-persistence](../../context/pat-pattison/research/artifact-persistence.md), and honor a +consuming project's own songwriting layout when it defines one. Before loading any bundled +`templates/.md`, check `${CLAUDE_PROJECT_DIR}/songwriting/templates/pat-pattison/.md` +first — a project-level override wins over the bundled default. + +## Related skills + +- Blank page, seed, or stuck fragment → `/songwriting:workflow` +- The craft dimensions a diagnosis names → `/songwriting:rhyme`, `/songwriting:meter-prosody`, + `/songwriting:song-form`, `/songwriting:object-writing` diff --git a/plugins/songwriting/skills/meter-prosody/SKILL.md b/plugins/songwriting/skills/meter-prosody/SKILL.md new file mode 100644 index 000000000..3553e7119 --- /dev/null +++ b/plugins/songwriting/skills/meter-prosody/SKILL.md @@ -0,0 +1,59 @@ +--- +name: meter-prosody +description: "Scan lines and make structure serve meaning with Pat Pattison's methods — meter (scansion, Paradigms I/II/III, Pentad, Goldilocks, the 'into' rule, In Memoriam quatrain, pitch-stress), prosody (motion-emotion, greedy spots, tone-of-voice, three phrasing types), section stability (stable/unstable scan), and lyric-melody alignment. Use when: 'scan this line', 'can this be common meter', 'is this verse stable or unstable', 'my words don't fit the music', 'greedy spot in line 2', 'set lyrics to this tune', 'does my song feel right'. For song sections/form use /songwriting:song-form; for rhyme use /songwriting:rhyme." +argument-hint: "[action] [args] (e.g., /songwriting:meter-prosody meter \"...\", /songwriting:meter-prosody stability chorus) — full actions in body" +user-invocable: true +disable-model-invocation: false +--- + +## Mandatory pre-flight — Response Filter + +Before emitting a scansion verdict, stability call, phrasing judgement, or any rewrite, run +**§6 Form filter** of [response-filter](../../context/pat-pattison/research/response-filter.md) +(add **§2 Line-writing** when producing lines). NAME each box's pass / fail / skip-with-reason; +correct before emission. Skips are valid; silent skips are not. + +## Purpose + +The sound-and-motion layer: whether the number, placement, and stress of syllables — and the +stability of each section — support the meaning and emotion. Covers scansion, prosody, phrasing, +stable/unstable analysis, and fitting lyric to melody. + +Method content is Pat Pattison's, under `context/pat-pattison/`. A future author's method plugs in +at `context//` without changing this skill. + +## Action Router + +`/songwriting:meter-prosody [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 → route on context (a pasted line → `meter`; a "does this feel right" → `stability`). + +| Action | Use when the user asks for | Load | +| --- | --- | --- | +| `meter` | scansion, tetrameter, common meter, stress, Paradigms, Pentad, Goldilocks, 'into' rule, In Memoriam, pitch-stress | [meter](../../context/pat-pattison/research/meter.md) | +| `prosody` | whether structure supports meaning, motion, greedy spots, tone-of-voice | [prosody](../../context/pat-pattison/research/prosody.md), [meter](../../context/pat-pattison/research/meter.md), [stable-unstable-meta](../../context/pat-pattison/research/stable-unstable-meta.md) | +| `phrasing` | the three phrasing types, front/back-heavy lines, breath and pacing | [phrasing](../../context/pat-pattison/research/phrasing.md), [meter](../../context/pat-pattison/research/meter.md), [prosody](../../context/pat-pattison/research/prosody.md) | +| `stability` | section-level stable/unstable scan, "does my song feel right" | [stable-unstable-meta](../../context/pat-pattison/research/stable-unstable-meta.md) | +| `align-melody` | lyric-melody mismatch, setting words to a tune, roadmap problems, greedy spots | [lyric-melodic-roadmaps](../../context/pat-pattison/research/lyric-melodic-roadmaps.md), [phrasing](../../context/pat-pattison/research/phrasing.md), [prosody](../../context/pat-pattison/research/prosody.md) | + +## Handlers + +- **Pre-flight ALWAYS:** run response-filter §6 (+ §2 when producing lines) before output. +- Scan concretely: mark stresses, name the paradigm, and say what the meter does FOR the meaning — + not scansion for its own sake. +- Stability is a tool, not a verdict: name whether a section reads stable or unstable and whether + that serves the section's job; the writer chooses. +- Greedy spots (too many syllables for the melodic slot) route through `align-melody` + `prosody`. + +## Persistence and template overrides + +Write generated files to the paths in +[artifact-persistence](../../context/pat-pattison/research/artifact-persistence.md), and honor a +consuming project's own songwriting layout when it defines one. Before loading any bundled +`templates/.md`, check `${CLAUDE_PROJECT_DIR}/songwriting/templates/pat-pattison/.md` +first — a project-level override wins over the bundled default. + +## Related skills + +- Section identification, form-fit, hook placement → `/songwriting:song-form` +- Rhyme position and stability → `/songwriting:rhyme strategy` +- Whole-draft diagnosis → `/songwriting:diagnosis` diff --git a/plugins/songwriting/skills/object-writing/SKILL.md b/plugins/songwriting/skills/object-writing/SKILL.md new file mode 100644 index 000000000..9c2da9165 --- /dev/null +++ b/plugins/songwriting/skills/object-writing/SKILL.md @@ -0,0 +1,61 @@ +--- +name: object-writing +description: "Generate raw sensory material and images with Pat Pattison's methods — object writing (sense-bound, 90-second timed dives, Rusty's-collar/Kami-kazi), metaphor (3 types, 8 recipes, collision drills, transitive/intransitive), cliche taxonomy + redemption, and point of view (camera distance, pronoun consistency). Use when: 'object writing', 'make this less abstract', 'show don't tell', '90-second writing prompt', 'I need a metaphor for X', 'generate metaphor options', 'this line sounds cliched', 'who is speaking in this lyric'. For rhyme use /songwriting:rhyme; for daily curriculum use /songwriting:daily-practice." +argument-hint: "[action] [args] (e.g., /songwriting:object-writing, /songwriting:object-writing metaphor-recipe trust) — full actions in body" +user-invocable: true +disable-model-invocation: false +--- + +## Mandatory pre-flight — Response Filter + +Before emitting any image, metaphor, sensory prompt, or rewrite, run **§7 Image filter (object +writing + metaphor)** of [response-filter](../../context/pat-pattison/research/response-filter.md) +(add **§2 Line-writing** when producing lines). NAME each box's pass / fail / skip-with-reason; +correct before emission. Skips are valid; silent skips are not — abstract telling and cliche +imagery are the defaults this filter catches. + +## Purpose + +Sense-bound raw material and figurative language: object writing, metaphor/simile, cliche repair, +and point of view. This is the "showing, not telling" engine — the source of concrete detail the +other skills shape. + +Method content is Pat Pattison's, under `context/pat-pattison/`. A future author's imagery method +plugs in at `context//` without changing this skill. + +## Action Router + +`/songwriting:object-writing [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 → issue one usable timed object-writing prompt immediately (do not assign a curriculum). + +| Action | Use when the user asks for | Load | +| --- | --- | --- | +| `object-writing` (default) | sensory writing, showing instead of telling, raw material | [object-writing](../../context/pat-pattison/research/object-writing.md), [templates/object-writing-prompt](../../context/pat-pattison/templates/object-writing-prompt.md) | +| `metaphor` | metaphor, simile, collision drills, linking qualities, productive ambiguity, is-vs-like | [metaphor](../../context/pat-pattison/research/metaphor.md), [templates/metaphor-collision-prompt](../../context/pat-pattison/templates/metaphor-collision-prompt.md) | +| `metaphor-recipe` | 8 named metaphor moves to generate options from a subject | [metaphor](../../context/pat-pattison/research/metaphor.md) "8 recipes", [templates/metaphor-recipe-prompt](../../context/pat-pattison/templates/metaphor-recipe-prompt.md) | +| `cliche` | cliche phrase, cliche image, stale metaphor, cliche rhyme | [cliche](../../context/pat-pattison/research/cliche.md), [worksheets](../../context/pat-pattison/research/worksheets.md), [metaphor](../../context/pat-pattison/research/metaphor.md) | +| `pov` | first/second/third person, direct address, dialogue, pronoun consistency, camera distance | [point-of-view](../../context/pat-pattison/research/point-of-view.md) | +| `worksheet` | broader sense-bound worksheets (not rhyme worksheets) | [worksheets](../../context/pat-pattison/research/worksheets.md) | + +## Handlers + +- **Pre-flight ALWAYS:** run response-filter §7 (+ §2 when producing lines) before output. +- If the user asks for a prompt, generate one usable timed exercise immediately (default + 90 seconds). Do not assign the full curriculum unless asked — that is `/songwriting:daily-practice`. +- Keep object-writing sense-bound and personal; its job is to reveal specific, sensory detail, not + to produce finished lines. +- For metaphor, name the type and recipe used; offer options, not a single winner. + +## Persistence and template overrides + +Write generated files to the paths in +[artifact-persistence](../../context/pat-pattison/research/artifact-persistence.md), and honor a +consuming project's own songwriting layout when it defines one. Before loading any bundled +`templates/.md`, check `${CLAUDE_PROJECT_DIR}/songwriting/templates/pat-pattison/.md` +first — a project-level override wins over the bundled default. + +## Related skills + +- Rhyme choice and rhyme cliche → `/songwriting:rhyme` +- Daily practice curriculum and numbered exercises → `/songwriting:daily-practice` +- Whole-draft diagnosis (where images fail in context) → `/songwriting:diagnosis` diff --git a/plugins/songwriting/skills/pat-pattison/SKILL.md b/plugins/songwriting/skills/pat-pattison/SKILL.md deleted file mode 100644 index a83fe64cd..000000000 --- a/plugins/songwriting/skills/pat-pattison/SKILL.md +++ /dev/null @@ -1,260 +0,0 @@ ---- -name: pat-pattison -description: "Apply Pat Pattison lyric-craft methods (all 4 books + Berklee/Coursera/columns/workshops) to real songwriting work via an action router — writing, rewriting, rhyming, diagnosis, object writing, metaphor, meter/prosody, song form, POV, co-writes, daily practice. Use when: 'write a song', 'rhyme this', 'fix this lyric', 'object writing', 'diagnose my song', 'blank page', 'pat pattison', 'co-write session', 'demo review', or any lyric-craft request — for Suno prompt formatting use /suno instead (pair: write the lyric here, format it there)." -argument-hint: "[action] [args] (e.g., /pat-pattison rhyme, /pat-pattison diagnose, /pat-pattison workflow) — full action list in body" -user-invocable: true -disable-model-invocation: false ---- - -## Mandatory pre-flight — Response Filter - -**Before emitting any rhyme suggestion, lyric line, rewrite, critique, -coaching step, title, form recommendation, image, or pre-lock judgement — -run the applicable section of [response-filter](research/response-filter.md).** - -The filter is the gate. The filter activates the discipline. Without it, -generic LLM defaults — perfect rhymes, predictable end-lines, abstract -telling, cliche imagery, single-winner picks, list-and-leave coaching — -ship instead of Pat's craft. - -The filter is fast: scan the applicable § section, NAME each box's pass / -fail / skip-with-reason out loud (or silently in reasoning), correct -before emission. Skips are valid; silent skips are not. - -[response-filter](research/response-filter.md) holds the output-type → §1-§8 -section map (rhymes, line / rewrite, critique, coaching, title / hook, form, -image, pre-lock) plus every checkbox and worked fail signature. See also -[coaching-protocol](research/coaching-protocol.md) for §4 dialog mechanics -and [book-references](research/book-references.md) for canonical source -citation form. - -## Purpose - -Apply Pat Pattison's lyric-craft methods to real songwriting work. Concept- -organized skill, not a chapter summary. Load only the context files needed -for the user's action, then coach or rewrite from those craft principles — -filtered through `response-filter.md` per the table above. - -Use this for lyric writing, rewriting, diagnosis, rhyme finding, meter, -prosody, song form, hook, object writing, metaphor, cliche repair, point -of view, repetition, daily practice, co-writing, fragment development, -demo review, pre-lock audits, variation generation, and high-volume -single-line / single-section brainstorm. Use the workflow router when the -user describes a situation rather than a craft term. - -## Stance — Tools, Not Rules - -> "Tools, not rules." — Pat Pattison (recurring column / seminar framing; -> also the name of his *American Songwriter* magazine column) - -Every principle below is a tool to deploy for effect, not a rule that -binds the writer. The skill names defaults so the writer can choose -deliberately, not so the writer can be policed. Checklists in this skill -are option lists, never gates — the writer can refuse any item, but -should know they're refusing. - -Tools-not-rules applies to the AI itself: the response filter is a tool -the AI uses on its own work. Skips are valid when NAMED with a reason. - -## Action Router - -Arguments: `$ARGUMENTS` - -`/pat-pattison [args]`. Parse `$ARGUMENTS`: first token = action, -remainder = args. With no action, route on conversation context. Full action tables + Quick Decision Guide + Sample Invocations -live in [action-routing](research/action-routing.md). Load that file when -routing is ambiguous or when surfacing the menu to the user. - -### Summary — situation-first actions - -| Action | Trigger summary | -| --- | --- | -| `workflow` | situation router — picks one of 11 scenarios | -| `brainstorm` | blank page / no idea yet | -| `idea` | seed (image/feeling/phrase) but no title | -| `fragment` | partial line / section / hook that won't grow | -| `demo` | lyric in progress at any completion stage | -| `diagnose` | full draft review | -| `stability` | section-level stable/unstable scan | -| `align-melody` | lyric-melody mismatch / greedy spots | -| `title` | title generation from idea | -| `title-game` | Pat's chained title-cascade (solo or co-write) | -| `co-write-protocol` | No-Free-Zone session opener | -| `audit` | pre-lock per-line / per-section checklist | -| `variations` | labeled alternates across six axes | -| `line-brainstorm` | ONE line — 30-50 across 5 columns (end-line / content / internal / image / whole-line) | -| `section-brainstorm` | ONE section — line-brainstorm per line + stability profile + hot-spot map + box-model check | -| `coach` | step-by-step guided dialog through any task | -| `filter` | apply response filter to a paste-in (rhyme list / line / critique) — diagnostic mode | - -### Summary — craft-term actions - -| Action | Trigger summary | -| --- | --- | -| `rhyme` / `rhyme-generation` | rhyme search; internal Pat-framed generation primary | -| `datamuse` | live API supplement for vocabulary / syllables / semantic field | -| `worksheet` / `rhyme-dictionary` | rhyme worksheet from title / theme / section | -| `meter` | scansion, paradigms, Pentad, Goldilocks, In Memoriam, pitch-stress | -| `prosody` | motion-emotion, greedy spots, tone-of-voice, three phrasing types | -| `form` / `song-forms` | section identification, candy bar, form-fit, *Essential Guide to Lyric Form and Structure* (1991) worked examples | -| `hook` | title placement, hot spots (section + phrase level), targeting | -| `object-writing` | sense-bound writing, Rusty's collar, Kami-kazi | -| `metaphor` / `metaphor-recipe` | 3 types, 8 recipes, transitive/intransitive, grounded, tone center | -| `cliche` | cliche taxonomy + redemption | -| `repetition` / `box-model` | repaintable chorus, You-I-We, Past-Pres-Future, hidden Q/cmd | -| `verse` / `bridge` | verse development, travelogue, bridge writing | -| `pov` | camera distances, pronoun consistency | -| `daily` / `exercise` | daily practice curriculum, numbered drills across all 4 books | -| `co-write` | co-writing protocol + Title Game | -| `process` / `rewrite` | full workflow / lyric critique | -| `beyond-books` | Coursera / Berklee Online / Berklee Take Note essays / columns / podcasts / workshops | - -Full tables with trigger phrases + file loads live in -[action-routing](research/action-routing.md). Quick Decision Guide with 35+ -user-question → route mappings lives there too. - -## Action Handlers - -- **Pre-flight ALWAYS:** invoke `response-filter.md` section before output. -- If the user describes a situation (not a craft term), route via - `workflow` to [workflows](research/workflows.md) (1-11 scenarios). -- If the user gives a draft, run `demo` (any stage) or `diagnose` (near- - complete) first. Name the dominant problem; offer one focused revision. - Do not list every issue. -- If the user asks for a prompt, generate one usable exercise immediately. - Do not assign the full curriculum unless asked. -- **If the user asks for rhymes:** load - [rhyme-generation](research/rhyme-generation.md) FIRST. Apply Pat's - discipline (identity check, stability tier walk, vowel triangle, song's - world vocabulary, cliche scan) to internal vocabulary. Surface 8-15 - labeled candidates across tiers. Use [ai-tools](research/ai-tools.md) - (Datamuse) only as supplement for vocabulary breadth, syllable - verification, or semantic-field mining. Internal generation is PRIMARY; - Datamuse supplements. -- **If the user asks for a LOT of options for ONE line or ONE section:** - load [line-brainstorm](research/line-brainstorm.md) — five-column dump - (end-line word swaps × content word swaps × internal rhyme partners × - image alternates × whole-line variants), filtered through - `response-filter.md` §1 + §2 + §7. -- **If the user wants step-by-step guidance:** load - [coaching-protocol](research/coaching-protocol.md). Ask ONE question, - wait for the answer, apply Pat's tool, surface next choice point. - Never list-and-leave; never monologue 14 steps. -- If the user asks for a plan, give the smallest sequence that solves the - craft problem. -- If the user pastes incomplete material (a fragment, an idea, half a - song), route to `fragment`, `idea`, or `demo` — NOT to `diagnose`. -- If multiple actions apply, pick the dominant craft problem and mention - the secondary file only when it affects the answer. - -## Songwriter Workflow Scenarios - -11 scenarios via `workflow` (chains in [workflows](research/workflows.md)): - -1. Brand new song from scratch -2. Existing song revision -3. Writing from a title -4. Writing to an existing melody -5. Co-write session start -6. Diagnose without rewrite -7. Build a daily practice habit -8. Pure brainstorm (no seed yet) -9. Idea / seed but no title -10. Fragment in hand -11. Demo at any stage - -Each scenario lists which context files to load in what order. Every -scenario routes through [response-filter](research/response-filter.md) at -emission time. - -## What This Skill Does Not Do - -Pat's books cover lyric craft and structure. This skill does not handle: - -- melody writing, -- chord progressions or harmonic analysis, -- arrangement, production, recording, mixing, or mastering, -- vocal performance coaching, -- music business, licensing, royalties, or contracts, -- Suno prompt formatting. - -For Suno formatting, use `/suno lyrics`. The skills are independent: -`/pat-pattison` develops lyric craft; `/suno` formats the finished lyric -for Suno syntax. Do not import files from `/suno` or assume `/suno` has -loaded this skill. - -## Output Style - -Be concrete and craft-first. Prefer: - -- short diagnosis before rewrite, -- labeled rhyme/stability risks, -- timed prompts with exact instructions, -- before/after examples when rewriting, -- cross-file routing only when it helps the user act. - -Do not quote long passages from Pat's books. The context files contain -short, verified anchor quotes only; answer mostly in your own words. - -When citing a source, use the canonical naming form in -[book-references](research/book-references.md): short title + year + -"Chapter N" (never "Book X" or "Ch N"). - -### Internal rhyme-generation discipline - -Rhyme requests run the full internal discipline in -[rhyme-generation](research/rhyme-generation.md) through `response-filter.md` -§1 — internal generation primary (8-15 labeled candidates, never a single -winner); Datamuse (`scripts/datamuse.sh`, see [ai-tools](research/ai-tools.md)) -supplements only for high-volume, syllable, or semantic-field breadth. The -"user asks for rhymes" handler above is the operational routing. - -### Coaching posture — depth-first dialog - -Guidance / "help me think through" / "what next" requests route through -[coaching-protocol](research/coaching-protocol.md): ask ONE question, wait, -restate decided-vs-open, apply Pat's tool, surface the next ≥3-option choice -point — never a pre-decided 14-step plan or list-and-leave dump. - -### Checklists are tools, not gates - -When running audit-checklist or pre-lock walkthroughs (per -[audit-checklist](research/audit-checklist.md)), present each box as a -deliberate choice point — not pass/fail. A writer may skip any box. A -skip names a reason; silent skips are not OK. Same posture applies to -the response filter itself. - -## Artifact Persistence - -Named per-song work (title given, multi-session) persists under the consuming -project's root. Default layout (relative to `${CLAUDE_PROJECT_DIR}`): - -| Artifact kind | Default path | -|---|---| -| Per-song work | `songwriting/songs//` | -| Pre-title work (brainstorm / idea / fragment) | the song's `ideation/` subfolder | -| Line / section brainstorm output | the song's `variations/` or `worksheets/` | -| Daily practice | `songwriting/practice//.md` | -| Broader research not tied to one song | `songwriting/research/.md` | -| Reusable rhyme inventories / audit checklists | `songwriting/shared/` | - -Per-song folder anatomy: `PLAN.md` / `BRIEF.md` / `LYRIC.md` / `ideation/` / -`variations/` / `worksheets/` / `research/` / `decisions/` / `journal/`. -Slug = song title kebab-cased, lowercase, no version qualifiers (`v1`, `final`, -dates) — one canonical song per slug; rewrites overwrite within the slug. - -**Consumer override:** if the consuming project's `CLAUDE.md` or rules define -their own songwriting artifact layout, that layout wins — the table above is -the default, not a mandate. - -**Template override:** when loading any `templates/.md`, check -`${CLAUDE_PROJECT_DIR}/songwriting/templates/pat-pattison/.md` first — a -project-level override wins over the skill default (first match), so writers -layer custom versions without forking the plugin. - -When the user asks for variations / multiple options, write each option to a -`variations/.md` file as a labeled menu — don't dump options inline. -When introducing a rhyme pair, run the identity-vs-rhyme check (pre-vowel -consonants MUST differ) via the song's `worksheets/audit-checklist.md` Step 3 -before declaring "this rhymes" — identity is NOT rhyme (per -[rhyme-fundamentals](research/rhyme-fundamentals.md)). diff --git a/plugins/songwriting/skills/pat-pattison/research/action-routing.md b/plugins/songwriting/skills/pat-pattison/research/action-routing.md deleted file mode 100644 index dc890ef22..000000000 --- a/plugins/songwriting/skills/pat-pattison/research/action-routing.md +++ /dev/null @@ -1,146 +0,0 @@ -# Action Routing — Full Tables - -Full Scenario routing + Craft-term routing + Quick Decision Guide for -`/pat-pattison`. SKILL.md body keeps the summary; this file carries the -detail for progressive disclosure. - -## Scenario routing (situation-first) - -| Action | Use when the user describes | Load | -| --- | --- | --- | -| `workflow` | brand new song / existing song / from a title / to a melody / co-write / diagnose-only / daily habit / brainstorm / idea / fragment / demo at any stage | [workflows](workflows.md) — picks the scenario chain (11 scenarios) | -| `brainstorm` | "blank page", "no idea", "starting cold", "give me anything", "I want to write but I don't know what" | [brainstorm](brainstorm.md), [templates/brainstorm-opener](../templates/brainstorm-opener.md) | -| `idea` | "I have an idea / image / phrase / feeling but no title", "what title comes from this" | [idea-to-title](idea-to-title.md), [templates/idea-to-title-prompt](../templates/idea-to-title-prompt.md), [hook](hook.md) "title generation", [object-writing](object-writing.md) | -| `fragment` | "I have this line / hook / half-verse — won't grow", "this phrase keeps coming back" | [fragment-development](fragment-development.md), [templates/fragment-development-prompt](../templates/fragment-development-prompt.md), [verse-development](verse-development.md), [object-writing](object-writing.md) | -| `demo` | "review this demo", "where do I take this", "what's missing here", "lyric is partway done" | [demo-review](demo-review.md), [templates/demo-review-prompt](../templates/demo-review-prompt.md), [workflows](workflows.md) Scenario 11 | -| `diagnose` | "what's wrong with my song", "review my draft", "is this any good" (assumes near-complete draft) | [five compositional elements](five-compositional-elements.md), [stable unstable](stable-unstable-meta.md), [prosody](prosody.md) | -| `stability` | "is this verse stable or unstable", "does my song feel right", section-level prosody scan | [stable unstable](stable-unstable-meta.md) | -| `align-melody` | "my words don't fit the music", "set lyrics to this tune", roadmap problems, greedy spots | [lyric-melodic roadmaps](lyric-melodic-roadmaps.md), [phrasing](phrasing.md), [prosody](prosody.md) | -| `title` | "I have an idea but no title", "title candidates for X", title generation | [hook](hook.md) "title generation", [idea-to-title](idea-to-title.md), [templates/title-generation-prompt](../templates/title-generation-prompt.md) | -| `title-game` | "Title Game", "Pat's title cascade", "10 titles fast", "vowel-chain titles", co-write warmup | [title-game](title-game.md), [templates/title-game-prompt](../templates/title-game-prompt.md), [co-writing](co-writing.md) | -| `co-write-protocol` | "starting a co-write session", "co-write rules", "no-free-zone" | [co-writing](co-writing.md), [templates/co-write-session-opener](../templates/co-write-session-opener.md) | -| `audit` | "line-by-line review", "pre-lock checklist", "audit before I commit", "should this lock" | [audit-checklist](audit-checklist.md), [templates/audit-checklist-prompt](../templates/audit-checklist-prompt.md) | -| `variations` | "give me 5 versions of this line", "different POV / image / vowel", "alternate this" | [variations](variations.md), [templates/variations-prompt](../templates/variations-prompt.md) | -| `line-brainstorm` | "30 alternatives for this line", "more end-line words", "lots of swaps", "what could go here" — HIGH VOLUME pre-revision dump for ONE line | [line-brainstorm](line-brainstorm.md), [templates/line-brainstorm-prompt](../templates/line-brainstorm-prompt.md), [mosaic-rhyme](mosaic-rhyme.md) | -| `section-brainstorm` | "more options for the chorus", "what could this verse say", "high volume options for this section" — line-brainstorm per line + stability profile + hot-spot map | [line-brainstorm](line-brainstorm.md) Scope B, [box-model](box-model.md), [audit-checklist](audit-checklist.md) | -| `coach` | "guide me", "walk me through", "help me think", "where do I start", "what next" — dynamic step-by-step dialog | [coaching-protocol](coaching-protocol.md), [workflows](workflows.md) | -| `filter` | "apply Pat's filter to this", "review my AI-generated rhyme list", "is this passing the discipline" — diagnostic mode | [response-filter](response-filter.md) | - -## Craft-term routing (concept-first) - -| Action | Use when the user asks for | Load | -| --- | --- | --- | -| `rhyme` | rhyme choice, rhyme stability, rhyme types, family rhyme, mosaic rhyme | [rhyme-generation](rhyme-generation.md) PRIMARY, [rhyme fundamentals](rhyme-fundamentals.md), [rhyme types](rhyme-types.md), [mosaic-rhyme](mosaic-rhyme.md), [rhyme strategy](rhyme-strategy.md), [rhyme sonic bonding](rhyme-sonic-bonding.md) | -| `rhyme-generation` | the internal rhyme-search discipline; identity check; tier walk; vowel triangle; world vocabulary; mosaic tier | [rhyme-generation](rhyme-generation.md) | -| `mosaic` | "mosaic rhyme", "multi-word rhymes", "rhyme this proper noun", "cross-part-of-speech rhymes", "rhyme like Eminem", "I need rhymes for [polysyllabic / proper noun / rare word]" | [mosaic-rhyme](mosaic-rhyme.md), [rhyme-generation](rhyme-generation.md) Step 3b | -| `datamuse` | "live rhyme lookup", "syllable count of X", "synonyms via API", "semantic field for X" — supplemental data | [ai-tools](ai-tools.md), [scripts/datamuse.sh](../scripts/datamuse.sh) | -| `worksheet` | a rhyme worksheet from a title, theme, section, or draft | [rhyme worksheets](rhyme-worksheets.md), [rhyme dictionary practice](rhyme-dictionary-practice.md), [templates/worksheet-prompt](../templates/worksheet-prompt.md) | -| `rhyme-dictionary` | how to search a rhyming dictionary or avoid identities | [rhyme dictionary practice](rhyme-dictionary-practice.md), [rhyme spotlight and connection](rhyme-spotlight-connection.md) | -| `meter` | scansion, tetrameter, common meter, stress, Paradigms I/II/III, Pentad, Goldilocks, "into" rule, In Memoriam quatrain, pitch-stress | [meter](meter.md) | -| `prosody` | whether structure supports meaning, motion, greedy spots, tone-of-voice | [prosody](prosody.md), [form](form.md), [meter](meter.md), [rhyme strategy](rhyme-strategy.md), [stable unstable](stable-unstable-meta.md) | -| `form` | verse, chorus, bridge, balance, section contrast, candy bar rewrite | [form](form.md), [section building](section-building.md), [song forms](song-forms.md) | -| `song-forms` | AABA, verse/chorus, verse/refrain, bridge validity, four-times-a-lot risk, third-system risk, *Essential Guide to Lyric Form and Structure* (1991) worked examples | [song forms](song-forms.md), [song-forms-examples](song-forms-examples.md), [hook](hook.md), [repetition](repetition.md) | -| `hook` | title placement, hook hot spots (section + phrase level), hook rhythm, targeting | [hook](hook.md), [form](form.md) | -| `object-writing` | sensory writing, showing instead of telling, raw material | [object writing](object-writing.md), [templates/object-writing-prompt](../templates/object-writing-prompt.md) | -| `metaphor` | metaphor, simile, collision drills, linking qualities, productive ambiguity, transitive/intransitive verbal | [metaphor](metaphor.md), [templates/metaphor-collision-prompt](../templates/metaphor-collision-prompt.md) | -| `metaphor-recipe` | 8 named metaphor moves to generate options from a subject | [metaphor](metaphor.md) "8 recipes", [templates/metaphor-recipe-prompt](../templates/metaphor-recipe-prompt.md) | -| `daily` | a daily craft prompt or practice curriculum | [daily practice](daily-practice.md), [templates/object-writing-prompt](../templates/object-writing-prompt.md), [templates/metaphor-collision-prompt](../templates/metaphor-collision-prompt.md) | -| `exercise` | a numbered exercise from *Essential Guide to Lyric Form and Structure* (1991) (Ex 1-44 structural), *Songwriting Without Boundaries* (2011) (Days 1-56 curriculum), or *Essential Guide to Rhyming* (2014) (Chapter 1-9 rhyme worksheets) | [exercises](exercises.md) | -| `cliche` | cliche phrase, cliche image, stale metaphor, cliche rhyme | [cliche](cliche.md), [worksheets](worksheets.md), [metaphor](metaphor.md) | -| `repetition` | chorus repetition, repainting, stagnant repeats, You-I-We / Past-Present-Future, hidden questions/commands | [repetition](repetition.md), [box-model](box-model.md), [form](form.md), [song forms](song-forms.md) | -| `verse` | second verse problems, travelogues, verse development, power positions, trigger lines | [verse development](verse-development.md), [box-model](box-model.md), [repetition](repetition.md), [object writing](object-writing.md) | -| `bridge` | "write me a bridge", "do I need a bridge", bridge as restatement, three bridge functions, AABA homecoming | [bridge](bridge.md), [templates/bridge-writing-prompt](../templates/bridge-writing-prompt.md), [form](form.md), [song-forms](song-forms.md) | -| `box-model` | verse division of labor, second-verse stagnation, what goes in verse 2 / 3, You-I-We, Past-Present-Future | [box-model](box-model.md), [repetition](repetition.md), [verse-development](verse-development.md) | -| `pov` | first/second/third person, direct address, dialogue, pronoun consistency, close-up vs middle distance | [point of view](point-of-view.md) | -| `process` | full writing workflow, revisions, trigger lines | [process](process.md), [worksheets](worksheets.md), [co-writing](co-writing.md) | -| `co-write` | co-writing session rules and feedback discipline | [co-writing](co-writing.md), [process](process.md), [title-game](title-game.md) | -| `rewrite` | a lyric critique or rewrite using Pat's checklist | Start with [stable unstable](stable-unstable-meta.md), [five compositional elements](five-compositional-elements.md), [prosody](prosody.md), [object writing](object-writing.md), [rhyme strategy](rhyme-strategy.md), [cliche](cliche.md); add others as needed | -| `beyond-books` | Coursera / Berklee Online courses, patpattison.com columns, podcasts, workshops, famous students, "how do I go deeper" | [beyond-books](beyond-books.md) | - -## Quick Decision Guide - -| User asks | Route | -| --- | --- | -| "I want to write a new song." | `workflow` → Scenario 1 | -| "I have nothing — just want to write something." | `brainstorm` (Scenario 8) | -| "I have an image / phrase / feeling — no title." | `idea` (Scenario 9) | -| "This line / verse / fragment is stuck." | `fragment` (Scenario 10) | -| "This demo is partway done — what's missing?" | `demo` (Scenario 11) | -| "Review my full draft." | `workflow` → Scenario 2 or 6, or `diagnose` | -| "I have a title — what next?" | `workflow` → Scenario 3, then `title` + `worksheet` | -| "I have a melody for these lyrics." | `workflow` → Scenario 4, then `align-melody` | -| "Co-write tonight." | `workflow` → Scenario 5, then `co-write-protocol` + `title-game` | -| "Daily practice plan." | `workflow` → Scenario 7, then `daily` | -| "Is this verse stable or unstable?" | `stability` | -| "Find rhymes for X that aren't cliche." | `rhyme-generation` (internal first), supplement with `datamuse` if needed | -| "Syllable count of this line." | `datamuse syllables` | -| "Why does this rhyme feel weak?" | `rhyme` | -| "Make this verse less abstract." | `object-writing` + `rewrite` | -| "Give me a 90-second writing prompt." | `object-writing` or `daily` | -| "I need a metaphor for trust." | `metaphor` or `metaphor-recipe` | -| "Generate eight metaphor options for X." | `metaphor-recipe` | -| "Should this be like or is?" | `metaphor` | -| "Scan this line." | `meter` | -| "Can this be common meter?" | `meter` | -| "My chorus does not land." | `prosody` + `form` + `hook` + `stability` | -| "My second verse repeats the first." | `verse` + `box-model` + `repetition` | -| "Is this a verse/chorus or AABA song?" | `song-forms` | -| "Where should the title go?" | `hook` | -| "Generate title candidates from this idea." | `title` or `idea` | -| "Title Game / vowel cascade." | `title-game` | -| "Write me a bridge." | `bridge` | -| "What goes in verse 2 / 3?" | `box-model` | -| "Audit this line before I lock it." | `audit` | -| "Give me 5 versions of line 3." | `variations` | -| "This line sounds cliched." | `cliche` | -| "Who is speaking in this lyric?" | `pov` | -| "My lyric and melody don't fit." | `align-melody` | -| "There's a greedy spot in line 2." | `align-melody` + `prosody` | -| "Run me a numbered exercise." | `exercise` | -| "How do I structure a co-writing session?" | `co-write` or `co-write-protocol` | -| "Coursera / Berklee / Pat's columns / podcasts." | `beyond-books` | -| "Rhyme this proper noun / brand / place." | `mosaic` (proper nouns are mosaic-territory) | -| "I need mosaic rhymes / rhymes like Eminem." | `mosaic` | -| "Give me 30 options for this line." | `line-brainstorm` | -| "Brainstorm the whole chorus / verse / bridge." | `section-brainstorm` | -| "Walk me through writing this song step by step." | `coach` | -| "I have an idea but I don't know where to start." | `coach` → `workflow` | -| "Review the rhyme list this AI just gave me." | `filter` (apply response-filter §1) | -| "Did my critique do Pat's craft right?" | `filter` (apply §3) | - -## Sample Invocations - -```text -/pat-pattison workflow brand-new-song -/pat-pattison brainstorm -/pat-pattison idea "image of an empty diner at 3am" -/pat-pattison fragment "the streetlight talks back" -/pat-pattison demo "" -/pat-pattison diagnose "" -/pat-pattison stability chorus -/pat-pattison align-melody "" "" -/pat-pattison title "small town funeral" -/pat-pattison title-game -/pat-pattison metaphor-recipe trust -/pat-pattison co-write-protocol -/pat-pattison audit "" -/pat-pattison variations "" -/pat-pattison bridge -/pat-pattison box-model -/pat-pattison datamuse rhyme stranger -/pat-pattison datamuse syllables disappointment -/pat-pattison exercise 4.6 -/pat-pattison rhyme types -/pat-pattison rhyme-generation -/pat-pattison mosaic "Texas" -/pat-pattison mosaic "silence" -/pat-pattison worksheet "last call at the Moonlight" -/pat-pattison object-writing 90 seconds hotel bar -/pat-pattison meter "I woke up under a borrowed sky" -/pat-pattison line-brainstorm "" -/pat-pattison section-brainstorm chorus -/pat-pattison coach -/pat-pattison filter "" -/pat-pattison rewrite "..." -/pat-pattison beyond-books -``` diff --git a/plugins/songwriting/skills/rhyme/SKILL.md b/plugins/songwriting/skills/rhyme/SKILL.md new file mode 100644 index 000000000..d208d1301 --- /dev/null +++ b/plugins/songwriting/skills/rhyme/SKILL.md @@ -0,0 +1,67 @@ +--- +name: rhyme +description: "Find and stress-test rhymes with Pat Pattison's discipline — identity check, stability-tier walk, vowel triangle, song-world vocabulary, mosaic/multi-word rhyme, cliche scan. Internal generation is primary (8-15 labeled candidates, never a single winner); the Datamuse API supplements for breadth/syllables/semantic field. Use when: 'rhyme this', 'find rhymes for X', 'why does this rhyme feel weak', 'mosaic rhyme', 'rhyme this proper noun', 'rhyme like Eminem', 'syllable count of X', 'rhyme worksheet'. For meter/scansion use /songwriting:meter-prosody; for line-volume dumps use /songwriting:co-write line-brainstorm." +argument-hint: "[action] [args] (e.g., /songwriting:rhyme, /songwriting:rhyme mosaic \"Texas\", /songwriting:rhyme worksheet) — full actions in body" +user-invocable: true +disable-model-invocation: false +--- + +## Mandatory pre-flight — Response Filter + +Before emitting any rhyme suggestion or rhyme list, run **§1 Rhyme suggestion filter** of +[response-filter](../../context/pat-pattison/research/response-filter.md). NAME each box's +pass / fail / skip-with-reason (aloud or in reasoning), correct before emission. Skips are valid; +silent skips are not. Without the filter, generic LLM defaults — perfect rhymes, predictable +end-lines, single-winner picks — ship instead of Pat's craft. + +## Purpose + +Rhyme choice, rhyme stability, rhyme types, family/additive/subtractive/assonance/consonance, +mosaic (multi-word) rhyme, and rhyme worksheets. Internal Pat-framed generation is PRIMARY; the +live Datamuse lookup supplements only for vocabulary breadth, syllable verification, or +semantic-field mining. + +Method content is Pat Pattison's, under `context/pat-pattison/`. A future author's rhyme method +plugs in at `context//` without changing this skill. + +## Action Router + +`/songwriting:rhyme [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 → generate rhymes for the word/line in context (the `rhyme` default). + +| Action | Use when the user asks for | Load | +| --- | --- | --- | +| `rhyme` (default) | rhyme choice, rhyme stability, rhyme types, family rhyme | [rhyme-generation](../../context/pat-pattison/research/rhyme-generation.md) PRIMARY, [rhyme-fundamentals](../../context/pat-pattison/research/rhyme-fundamentals.md), [rhyme-types](../../context/pat-pattison/research/rhyme-types.md), [rhyme-strategy](../../context/pat-pattison/research/rhyme-strategy.md), [rhyme-sonic-bonding](../../context/pat-pattison/research/rhyme-sonic-bonding.md) | +| `mosaic` | multi-word rhymes, proper nouns, cross-part-of-speech, "rhyme like Eminem", polysyllabic/rare words | [mosaic-rhyme](../../context/pat-pattison/research/mosaic-rhyme.md), [rhyme-generation](../../context/pat-pattison/research/rhyme-generation.md) Step 3b | +| `types` | the rhyme taxonomy and stability tiers | [rhyme-types](../../context/pat-pattison/research/rhyme-types.md) | +| `datamuse` | live rhyme lookup, syllable count, synonyms/semantic field via API — supplemental | [ai-tools](../../context/pat-pattison/research/ai-tools.md), `${CLAUDE_PLUGIN_ROOT}/context/pat-pattison/scripts/datamuse.sh` | +| `worksheet` | a rhyme worksheet from a title, theme, section, or draft | [rhyme-worksheets](../../context/pat-pattison/research/rhyme-worksheets.md), [rhyme-dictionary-practice](../../context/pat-pattison/research/rhyme-dictionary-practice.md), [templates/worksheet-prompt](../../context/pat-pattison/templates/worksheet-prompt.md) | +| `dictionary` | how to search a rhyming dictionary or avoid identities | [rhyme-dictionary-practice](../../context/pat-pattison/research/rhyme-dictionary-practice.md), [rhyme-spotlight-connection](../../context/pat-pattison/research/rhyme-spotlight-connection.md) | +| `strategy` | which rhyme type/position serves the section's motion and meaning | [rhyme-strategy](../../context/pat-pattison/research/rhyme-strategy.md), [rhyme-sonic-bonding](../../context/pat-pattison/research/rhyme-sonic-bonding.md) | + +## Handlers + +- **Pre-flight ALWAYS:** run response-filter §1 before any rhyme output. +- Load [rhyme-generation](../../context/pat-pattison/research/rhyme-generation.md) FIRST for any + rhyme request. Apply the discipline — identity check (pre-vowel consonants MUST differ; identity + is NOT rhyme), stability-tier walk, vowel triangle, song's-world vocabulary, cliche scan — to + internal vocabulary. Surface 8-15 labeled candidates across tiers, never a single winner. +- Use [ai-tools](../../context/pat-pattison/research/ai-tools.md) (Datamuse) only as a supplement + for vocabulary breadth, syllable verification, or semantic-field mining. Internal generation is + PRIMARY; Datamuse supplements. The script degrades gracefully when `bash`/`curl`/`jq` are absent. +- Proper nouns and polysyllabic/rare words are mosaic territory — route to `mosaic`. + +## Persistence and template overrides + +Write generated files to the paths in +[artifact-persistence](../../context/pat-pattison/research/artifact-persistence.md), and honor a +consuming project's own songwriting layout when it defines one. Before loading any bundled +`templates/.md`, check `${CLAUDE_PROJECT_DIR}/songwriting/templates/pat-pattison/.md` +first — a project-level override wins over the bundled default. + +## Related skills + +- Scansion, stress, meter paradigms → `/songwriting:meter-prosody meter` +- High-volume swaps for ONE line (end-line × content × internal × image × whole-line) → + `/songwriting:co-write line-brainstorm` +- Cliche repair for images/metaphors → `/songwriting:object-writing cliche` diff --git a/plugins/songwriting/skills/song-form/SKILL.md b/plugins/songwriting/skills/song-form/SKILL.md new file mode 100644 index 000000000..d78fb9a2d --- /dev/null +++ b/plugins/songwriting/skills/song-form/SKILL.md @@ -0,0 +1,61 @@ +--- +name: song-form +description: "Build and balance song structure with Pat Pattison's methods — section identification (verse/chorus/bridge/refrain), forms (AABA, verse/chorus, verse/refrain), the candy-bar rewrite, hook placement and hot spots, repetition/repainting (You-I-We, Past-Present-Future, hidden questions/commands), verse development and the box model, bridge writing, and Essential Guide to Lyric Form and Structure worked examples. Use when: 'is this verse/chorus or AABA', 'where should the title go', 'my chorus does not land', 'my second verse repeats the first', 'what goes in verse 2/3', 'write me a bridge', 'do I need a bridge'. For stability/scansion use /songwriting:meter-prosody." +argument-hint: "[action] [args] (e.g., /songwriting:song-form, /songwriting:song-form bridge, /songwriting:song-form box-model) — full actions in body" +user-invocable: true +disable-model-invocation: false +--- + +## Mandatory pre-flight — Response Filter + +Before emitting a form recommendation, section rewrite, hook placement, or bridge, run +**§6 Form filter** of [response-filter](../../context/pat-pattison/research/response-filter.md) +(add **§5 Title + hook** for hook/title placement). NAME each box's pass / fail / skip-with-reason; +correct before emission. Skips are valid; silent skips are not. + +## Purpose + +The architecture layer: how sections are identified, contrasted, balanced, and repeated so the form +serves the song. Covers form selection, hook/title placement, repetition and repainting, verse +division of labor (box model), verse development, and bridges. + +Method content is Pat Pattison's, under `context/pat-pattison/`. A future author's method plugs in +at `context//` without changing this skill. + +## Action Router + +`/songwriting:song-form [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 → route on context (a structural question → `form`; "write me a bridge" → `bridge`). + +| Action | Use when the user asks for | Load | +| --- | --- | --- | +| `form` (default) | verse/chorus/bridge balance, section contrast, candy-bar rewrite | [form](../../context/pat-pattison/research/form.md), [section-building](../../context/pat-pattison/research/section-building.md), [song-forms](../../context/pat-pattison/research/song-forms.md) | +| `song-forms` | AABA, verse/chorus, verse/refrain, bridge validity, four-times-a-lot / third-system risk, 1991 worked examples | [song-forms](../../context/pat-pattison/research/song-forms.md), [song-forms-examples](../../context/pat-pattison/research/song-forms-examples.md), [repetition](../../context/pat-pattison/research/repetition.md) | +| `hook` | title placement, hook hot spots (section + phrase level), hook rhythm, targeting | [hook](../../context/pat-pattison/research/hook.md), [form](../../context/pat-pattison/research/form.md) | +| `repetition` | chorus repetition, repainting, stagnant repeats, You-I-We, Past-Present-Future, hidden Q/cmd | [repetition](../../context/pat-pattison/research/repetition.md), [box-model](../../context/pat-pattison/research/box-model.md), [song-forms](../../context/pat-pattison/research/song-forms.md) | +| `verse` | second-verse problems, travelogues, verse development, power positions, trigger lines | [verse-development](../../context/pat-pattison/research/verse-development.md), [box-model](../../context/pat-pattison/research/box-model.md), [repetition](../../context/pat-pattison/research/repetition.md) | +| `box-model` | verse division of labor, second-verse stagnation, what goes in verse 2 / 3 | [box-model](../../context/pat-pattison/research/box-model.md), [verse-development](../../context/pat-pattison/research/verse-development.md) | +| `bridge` | "write me a bridge", "do I need a bridge", bridge as restatement, three bridge functions, AABA homecoming | [bridge](../../context/pat-pattison/research/bridge.md), [templates/bridge-writing-prompt](../../context/pat-pattison/templates/bridge-writing-prompt.md), [form](../../context/pat-pattison/research/form.md), [song-forms](../../context/pat-pattison/research/song-forms.md) | +| `section-building` | building or contrasting a single section from the ground up | [section-building](../../context/pat-pattison/research/section-building.md), [form](../../context/pat-pattison/research/form.md) | + +## Handlers + +- **Pre-flight ALWAYS:** run response-filter §6 (+ §5 for hook/title) before output. +- Name the form and what each section is DOING; recommend the smallest structural change that fixes + the problem, not a wholesale rewrite. +- Repetition is repainting, not stagnation — a repeated chorus should mean something new by its + surrounding context each time. + +## Persistence and template overrides + +Write generated files to the paths in +[artifact-persistence](../../context/pat-pattison/research/artifact-persistence.md), and honor a +consuming project's own songwriting layout when it defines one. Before loading any bundled +`templates/.md`, check `${CLAUDE_PROJECT_DIR}/songwriting/templates/pat-pattison/.md` +first — a project-level override wins over the bundled default. + +## Related skills + +- Stability and scansion of the sections → `/songwriting:meter-prosody` +- Rhyme within sections → `/songwriting:rhyme` +- Whole-draft diagnosis → `/songwriting:diagnosis` diff --git a/plugins/songwriting/skills/workflow/SKILL.md b/plugins/songwriting/skills/workflow/SKILL.md new file mode 100644 index 000000000..a50ac4f3a --- /dev/null +++ b/plugins/songwriting/skills/workflow/SKILL.md @@ -0,0 +1,106 @@ +--- +name: workflow +description: "Start-here situation router for songwriting with Pat Pattison's methods — picks the scenario for a blank page, an idea/seed, a stuck fragment, a co-write, a diagnose-only pass, or a daily habit, and runs step-by-step coaching dialog. Also applies Pat's response filter to AI-generated material and points to going-deeper resources (Coursera / Berklee / columns / podcasts). Use when: 'I want to write a new song', 'I have nothing — just want to write', 'I have an image but no title', 'this fragment is stuck', 'walk me through writing this', 'guide me', 'where do I start', 'review the rhyme list this AI gave me', 'how do I go deeper'. Craft-specific requests route to the concern skills below." +argument-hint: "[action] [args] (e.g., /songwriting:workflow, /songwriting:workflow coach, /songwriting:workflow brainstorm) — full actions in body" +user-invocable: true +disable-model-invocation: false +--- + +## Mandatory pre-flight — Response Filter + +Every craft output in this plugin runs the applicable section of +[response-filter](../../context/pat-pattison/research/response-filter.md) before emission — the gate +that activates the discipline. When this skill coaches or produces material directly, run **§4 +Coaching posture** (and the output-type section for anything emitted). NAME each box's pass / fail / +skip-with-reason; correct before emission. Skips are valid; silent skips are not. + +## Purpose + +The orchestrator and front door. Turn a situation ("I have half a song", "blank page", "co-write +tonight") into the right scenario and the right craft skill, and run guided step-by-step dialog when +the writer wants to be walked through it. When the user names a craft term (rhyme, meter, form, +image), route straight to that concern skill. + +Method content is Pat Pattison's, under `context/pat-pattison/`. A future author's process plugs in +at `context//` without changing this skill. + +## Concern skills — route craft-term requests here + +| The user wants | Skill | +| --- | --- | +| rhyme choice, rhyme types, mosaic, rhyme worksheet, syllable/Datamuse lookup | `/songwriting:rhyme` | +| object writing, metaphor, cliche repair, point of view | `/songwriting:object-writing` | +| scansion, meter, prosody, phrasing, stability, lyric-melody fit | `/songwriting:meter-prosody` | +| form, song forms, hook, repetition, verse, bridge, box model | `/songwriting:song-form` | +| co-write protocol, Title Game, titles, high-volume line/section dumps | `/songwriting:co-write` | +| diagnose a draft, demo review, pre-lock audit, variations, rewrite | `/songwriting:diagnosis` | +| daily practice curriculum, numbered exercises | `/songwriting:daily-practice` | +| Suno v5.5 prompt formatting (separate capability) | `/songwriting:suno` | + +## Action Router + +`/songwriting:workflow [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 → route on conversation context (pick the scenario the situation describes). + +| Action | Use when the user describes | Load | +| --- | --- | --- | +| `workflow` (default) | brand-new song / existing-song revision / from a title / to a melody / co-write / diagnose-only / daily habit / brainstorm / idea / fragment / demo | [workflows](../../context/pat-pattison/research/workflows.md) — picks the scenario chain (11 scenarios) | +| `coach` | "guide me", "walk me through", "help me think", "what next" — dynamic step-by-step dialog | [coaching-protocol](../../context/pat-pattison/research/coaching-protocol.md), [workflows](../../context/pat-pattison/research/workflows.md) | +| `brainstorm` | "blank page", "no idea", "starting cold", "give me anything" | [brainstorm](../../context/pat-pattison/research/brainstorm.md), [templates/brainstorm-opener](../../context/pat-pattison/templates/brainstorm-opener.md) | +| `idea` | "I have an idea / image / phrase / feeling but no title" | [idea-to-title](../../context/pat-pattison/research/idea-to-title.md), [templates/idea-to-title-prompt](../../context/pat-pattison/templates/idea-to-title-prompt.md), [object-writing](../../context/pat-pattison/research/object-writing.md) | +| `fragment` | "I have this line / hook / half-verse — won't grow" | [fragment-development](../../context/pat-pattison/research/fragment-development.md), [templates/fragment-development-prompt](../../context/pat-pattison/templates/fragment-development-prompt.md), [verse-development](../../context/pat-pattison/research/verse-development.md) | +| `filter` | "apply Pat's filter to this", "review my AI-generated rhyme list", "is this passing the discipline" — diagnostic mode | [response-filter](../../context/pat-pattison/research/response-filter.md) | +| `beyond-books` | Coursera / Berklee Online / patpattison.com columns / podcasts / workshops, "how do I go deeper" | [beyond-books](../../context/pat-pattison/research/beyond-books.md) | + +Full scenario + craft-term routing tables and the Quick Decision Guide (35+ user-question → route +mappings across all skills) live in +[action-routing](../../context/pat-pattison/research/action-routing.md) — load it when routing is +ambiguous or when surfacing the menu. + +## Songwriter Workflow Scenarios + +11 scenarios via `workflow` (chains in +[workflows](../../context/pat-pattison/research/workflows.md)): + +1. Brand new song from scratch +2. Existing song revision +3. Writing from a title +4. Writing to an existing melody +5. Co-write session start +6. Diagnose without rewrite +7. Build a daily practice habit +8. Pure brainstorm (no seed yet) +9. Idea / seed but no title +10. Fragment in hand +11. Demo at any stage + +Each scenario lists which context files to load in what order and which concern skill owns the deep +dive. Every scenario routes through +[response-filter](../../context/pat-pattison/research/response-filter.md) at emission time. + +## Handlers + +- If the user describes a SITUATION (not a craft term), route via `workflow` to the matching + scenario, then hand the deep dive to the concern skill that owns it. +- If the user names a CRAFT TERM, route straight to the concern skill (table above) — do not + re-explain here. +- If the user wants step-by-step guidance, run `coach`: ask ONE question, wait, apply Pat's tool, + surface the next choice point. Never list-and-leave; never monologue 14 steps. +- If the user gives a draft, that is diagnosis — route to `/songwriting:diagnosis` (`demo` for any + stage, `diagnose` for near-complete). +- If the user pastes an incomplete fragment / idea / half-song, route to `fragment` or `idea` here. + +## Persistence and template overrides + +Write generated files to the paths in +[artifact-persistence](../../context/pat-pattison/research/artifact-persistence.md), and honor a +consuming project's own songwriting layout when it defines one. Before loading any bundled +`templates/.md`, check `${CLAUDE_PROJECT_DIR}/songwriting/templates/pat-pattison/.md` +first — a project-level override wins over the bundled default. + +## What this plugin does not do + +Pat's books cover lyric craft and structure. This plugin does not handle melody writing, chords, +arrangement, production/mixing, vocal coaching, or music business. For Suno prompt formatting use +`/songwriting:suno` — a separate capability that formats a finished lyric; it does not load these +skills, and these skills do not import from it.