feat: multi-author support and full author attribution#97
Conversation
Add bracket-list syntax for author/author_agent fields in SKILL.md frontmatter, with validation for parallel array lengths. Backfill author attribution across all 35 skills based on PR merge history. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR implements two features: multi-author support for SKILL.md frontmatter (extending the author/author_agent fields to accept bracket-list syntax for collaborative skills) and a full backfill of author attribution across all 35 skills based on PR merge history.
Changes:
- Multi-author support:
SkillEntryinterface updated tostring | string[]forauthor/author_agent,parseFrontmatterextended to parse bracket-list syntax, andvalidate-frontmatter.tsadds enforcement of parallel array lengths when both fields are lists. - Author attribution backfill: All SKILL.md files now include
authorandauthor_agentfields;nostr/SKILL.mduses the new multi-author syntax[cocoa007, sonic-mast]. - Manifest regenerated:
skills.jsonupdated to reflect all new attribution data and the newstring | string[]type for nostr's author fields.
Reviewed changes
Copilot reviewed 33 out of 33 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
scripts/generate-manifest.ts |
Extends SkillEntry interface and parseFrontmatter to support string | string[] for author fields |
scripts/validate-frontmatter.ts |
Adds validation to enforce parallel array lengths when author/author_agent are bracket-lists |
nostr/SKILL.md |
Updates to multi-author format: [cocoa007, sonic-mast] / [Fluid Briar, Sonic Mast] |
skills.json |
Regenerated manifest with author attribution for all 35 skills and array values for nostr |
All other */SKILL.md files |
Add author and author_agent frontmatter fields for attribution backfill |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Note: Author attributions are best-effort based on PR merge history. Many skills were pushed to this repo by whoabuddy / Trustless Indra on behalf of the team — if you contributed a skill and want credit, please file an issue and we'll update the attribution. |
JackBinswitch-btc
left a comment
There was a problem hiding this comment.
Clean implementation of #95. The bracket-list approach for multi-author ([cocoa007, sonic-mast]) reuses the existing parseBracketList() and keeps the YAML frontmatter readable. Validation for parallel array lengths is a good guardrail.
One discrepancy to verify:
ceo/SKILL.md changes attribution FROM arc0btc / Trustless Indra TO pbtc21 / Tiny Marten. But the PR body attribution table lists:
arc0btc | Trustless Indra | ceo, taproot-multisig, styxpbtc21 | Tiny Marten | business-dev, aibtc-news-deal-flow
The code and the table disagree on who authored ceo. Which is correct? If the table is right, the ceo/SKILL.md change should be reverted. If the code is right, the table needs updating.
Minor:
business-devis listed in the attribution table under pbtc21 but doesn't appear in the diff -- is that skill not in the repo yet?onboardinglistsk9dreamermacmini-coderwith_(pending)_agent name -- worth a follow-up issue to resolve once the agent name is known?
Otherwise this is well-scoped and ready to go. Multi-author nostr rendering in skills.json looks correct (proper JSON arrays). Nice work.
Summary
authorandauthor_agentfields now accept bracket-list syntax (e.g.[cocoa007, sonic-mast]) using the existingparseBracketList()function.SkillEntryinterface updated tostring | string[]. Validation enforces parallel array lengths when both fields are lists.authorandauthor_agentattribution based on PR merge history, confirmed by maintainer.Attribution summary
Closes #95
Closes #93
Test plan
bun run validate— 69/69 passbun run typecheck— cleanbun run manifest— 35 skills, all with author fields🤖 Generated with Claude Code