refactor(songwriting): split pat-pattison mega-skill into concern skills#89
Conversation
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_ee180793-2602-4954-87cd-701d852dc676) |
|
Claude finished @kyle-sexton's task in 2m 54s —— View job PR Review: refactor(songwriting): split pat-pattison mega-skill into concern skills
SummaryWell-executed decomposition. The concern-as-skill / author-as-context split is clean, the 8 SKILL.md files are internally consistent, the corpus is preserved verbatim, and the routing index ( Finding 1 — Undocumented scope: README catalog rows deleted for non-present pluginsSeverity: Low / Informational The README diff removes two catalog rows not mentioned in the PR description: -| [`codebase-audit`](plugins/codebase-audit) | Skills | Repo-wide drift audit... |
-| [`teach`](plugins/teach) | Skill | Interactive multi-session learning coach... |Neither This is technically fine and the right thing to do, but it would be good to call it out explicitly in the PR description to avoid reviewer confusion. No code change needed, but update the PR description to mention: "Also removed stale catalog rows for Finding 2 —
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9d5e5874db
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
9d5e587 to
eacc29d
Compare
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_8f831542-1c07-42c7-9dd7-24afaa95bff7) |
|
Claude finished @kyle-sexton's task in 3m 23s —— View job PR Review: refactor(songwriting): split pat-pattison mega-skill into concern skills
SummaryWell-executed decomposition — clean concern/author axis split, internally consistent SKILL.md files, and the corpus is faithfully preserved. Previous review findings on Finding 1 — Codex P2 (action-routing.md line 90): spec is correct, model-fidelity risk is real but overstatedSeverity: Low / Informational The Codex finding claims
The listed actions are That said, the Codex concern has real-world validity: LLM-based routing doesn't guarantee faithful spec adherence, and a model might treat No change is required, but the annotation would preempt future confusion about this class of numeric-leading invocations. What looks good
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: eacc29d8d3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
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/<author>/ 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
eacc29d to
35c82ae
Compare
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_7d315c91-76a2-40cc-a7fc-c5c55d2e8d2b) |
|
Claude finished @kyle-sexton's task in 2m 54s —— View job PR Review: refactor(songwriting): split pat-pattison mega-skill into concern skills
SummaryClean, well-executed refactor on the latest commit. Both Codex P2 findings from the previous round are correctly resolved. The three items worth noting below are all low-severity — two informational, one minor — and none block merge. Finding 1 —
|
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_8354e9cc-7548-4267-9f72-e73f26ee716b) |
|
Claude finished @kyle-sexton's task in 2m 44s —— View job PR Review: refactor(songwriting): split pat-pattison mega-skill into concern skills
Latest push: merge-with-main onlyThe latest commit ( SummaryWell-executed, thoroughly-considered decomposition. All 8 concern skills are internally consistent, the corpus is faithfully preserved, and the two Codex P2 findings from earlier rounds are resolved. Three items below: one trivial open inconsistency from the previous round, and two informational notes. Finding 1 —
|
| File | Line | Text |
|---|---|---|
daily-practice/SKILL.md |
41 | `songwriting/practice/<YYYY>/<date>.md` |
daily-practice/SKILL.md |
47 | to `songwriting/practice/<YYYY>/<date>.md` |
README.md |
43 | `songwriting/practice/<YYYY>/<date>.md` |
The model reading both files would use the canonical <YYYY-MM-DD> form from artifact-persistence.md, so this is not a functional issue — but aligning the spelling in daily-practice/SKILL.md (×2) and README.md (×1) removes any ambiguity for human readers and future contributors.
Finding 2 — artifact-persistence.md embeds a rhyme-discipline rule (informational, no change needed)
Severity: Low / Informational
artifact-persistence.md lines 38–42:
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.md).The file's stated purpose is file-path conventions and template-override protocol. The rhyme-identity enforcement belongs in rhyme/SKILL.md's pre-flight (§1 already has it) and in rhyme-fundamentals.md. As written, it becomes a cross-skill rhyme constraint embedded in a file named for persistence. Functionally fine (the constraint is correct); a future tidy would move this sentence to rhyme-fundamentals.md and leave artifact-persistence.md containing only paths and override logic.
No change required to merge.
Finding 3 — action-routing.md line 90 comment (informational, no change needed)
Severity: Low / Informational
/songwriting:object-writing 90 seconds hotel bar
As confirmed in the previous round: "90" doesn't match any listed object-writing action so the full "90 seconds hotel bar" string falls through to the default timed-prompt handler — correct per spec. An inline comment (e.g. # "90 seconds hotel bar" is the seed payload → default object-writing prompt) would future-proof this for contributors maintaining the file. No change required to merge.
What looks good
- All 8 SKILL.md files: valid frontmatter (
name,description,argument-hint,user-invocable: true,disable-model-invocation: false), name matches directory, consistent payload-first action router, mandatory pre-flight filter assignments are skill-appropriate (§1 rhyme, §3+§8 diagnosis, §5+§2 co-write, §6 meter-prosody + song-form, §4 workflow, §7 object-writing, conditional daily-practice). ✓ - Template override (Codex P2, workflow/SKILL.md:49): Resolved. New
artifact-persistence.mddefines the shared contract; all 8 SKILL.md files carry a## Persistence and template overridessection loading it and repeating the override check inline. ✓ - Co-write artifact layout (Codex P2, co-write/SKILL.md:44): Resolved.
co-write/SKILL.mdexplicitly points toartifact-persistence.mdand namesvariations//worksheets/paths. ✓ plugin.jsondescription: Correctly reads "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…" ✓- Plugin-form safety: All context references use
${CLAUDE_PLUGIN_ROOT}where needed; no../reach-outs beyond plugin boundary.datamuse.shreferenced via${CLAUDE_PLUGIN_ROOT}/context/pat-pattison/scripts/datamuse.sh; exec-bit at 100755 preserved. ✓ - Routing consistency:
workflow/SKILL.md7-action table,action-routing.md35+ Quick Decision Guide, and each concern skill's action table are internally consistent with no routing gaps. ✓ - Author seam: OCP pattern (concern skills = stable interface,
context/<author>/= extension point) is legibly documented across all 8 SKILL.md files, README, and CHANGELOG. ✓ - Corpus preservation: 53 byte-identical files, 12 targeted drift-fixes (invocation remaps,
datamuse.shpath,action-routing.mdreframe). ✓ - Version bump + CHANGELOG: 0.1.0 → 0.2.0 correct for breaking invocation rename; CHANGELOG documents breaking change, migration path, and design rationale. ✓
- External cross-refs:
planning:brainstorm/SKILL.mdcorrectly updated to/songwriting:workflow; root README catalog row updated. ✓ - Merge commit: clean forward-merge from
main(event-storming + planning additions); no regressions in songwriting content. ✓
Verdict: Approve. The three findings above are trivial/informational and do not block merge. The one actionable item (Finding 1, the <date> spelling) is a one-liner cleanup that can land in a follow-up.


What
Decompose the
pat-pattisonlyric-craft mega-skill (1 skill, 260-line router, 48 research + 16 templates) into eight concern-scoped skills, each a thin router over a shared reference corpus. Thesunoskill is unchanged.New lyric-craft skills:
workflow(start-here situation router + coaching),rhyme,object-writing,meter-prosody,song-form,co-write,diagnosis,daily-practice.Design decisions
context/. The corpus is densely self-cross-linked (hub files referenced from every concern), so a naive per-skill file partition would break most links. Moving the whole corpus verbatim undercontext/pat-pattison/preserves every intra-corpus link with zero rewriting. Precedent:prototype(context/discipline.mdread by both skills),review-toolkit(context/severity.md).context/pat-pattison/. A future author's method for the same concern plugs in atcontext/<author>/without changing the concern skills (open for extension, closed for modification)./songwriting:pat-pattisonis retired (no backward-compat constraint at this stage)./songwriting:workflowis the start-here router and carries the cross-skill routing index + Quick Decision Guide.Content preservation
Corpus moved verbatim; drift-fixes applied only where needed (stale
/pat-pattison <action>invocation strings remapped to/songwriting:<skill>, thedatamuse.shpath corrected,action-routing.mdreframed as a cross-skill index).Hash audit vs
origin/main: 53 corpus files byte-identical, 0 lost, 12 changed = exactly the intentional drift-fixes.Verification (local)
scripts/validate-plugins.sh: all manifests + catalog validateSKILL.md: valid frontmatter, required keys,user-invocable: true, name matches dirdatamuse.shexec-bit preserved (100755)marketplace.jsonuntouched (within-plugin split)0.1.0->0.2.0;CHANGELOG.mdaddedAlso updated the repo README catalog row and the
planning:brainstormcross-reference that pointed at the retired skill.Refs melodic-software/medley#1395
Note
Medium Risk
Breaking skill invocations for anyone using
/songwriting:pat-pattison; behavior should be equivalent if users adopt the new routes, but routing mistakes are possible until habits/docs catch up.Overview
Breaking: Retires
/songwriting:pat-pattisonand replaces it with eight concern-scoped lyric-craft skills (workflow,rhyme,object-writing,meter-prosody,song-form,co-write,diagnosis,daily-practice). Each new skill is a thin action router with concern-specific response-filter pre-flight;/songwriting:workflowis the start-here orchestrator and hosts the cross-skill Quick Decision Guide.sunois unchanged.The Pat Pattison reference corpus (research, templates,
datamuse.sh, response filter) moves from under the old skill tocontext/pat-pattison/as a shared, author-namespaced content layer. Addsartifact-persistence.mdfor shared file-layout rules; corpus links are updated from/pat-pattisonactions to/songwriting:<skill>and the Datamuse script path.Plugin 0.1.0 → 0.2.0 with a new
CHANGELOG.md; README and root catalog describe the split.planning:brainstormnow points creative songwriting ideation at/songwriting:workflowinstead of the retired skill.Reviewed by Cursor Bugbot for commit 0e6d092. Bugbot is set up for automated code reviews on this repo. Configure here.