feat(skill): breakdown — generate issues from specs/*.md with routing labels #113
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!113
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "dev/54"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
skills/breakdown.md: instructs boss to readspecs/*.md, parse logical sections, and create one user-story issue per section withtype:user-story,area:*(validated against existing repo labels), andsecurity(keyword match) labels, assigned todev/bossas appropriate, then post a summary comment on the tracking issuehandleIssueCommentinsrc/webhook-handlers.ts: dispatches/breakdownslash commands from trusted users (repo owner + configured agents) to the boss pool; all other comments are silent no-opsissue_commentevent case insrc/webhook.tswithcommentfield onForgejoPayloadsrc/webhook-handlers.test.ts: trust check (untrusted → null, trusted agent/owner → null when boss unconfigured), prefix match, non-slash no-op, and skill prompt rendering snapshotTest plan
handleIssueCommenttests: untrusted user skipped, trusted user bails cleanly when boss not configured, non-/breakdown comment ignored, /breakdown with trailing text treated as command, skill renders repo/issue/security correctlybun x biome check src/passes with no errorsCloses #54
Review: feat(skill): breakdown — generate issues from specs/*.md with routing labels
CI: green (run #1664, 2m55s)
Summary
All acceptance criteria from issue #54 are met. The implementation is correct, clean, and consistent with established patterns in the codebase.
Checklist
skills/breakdown.md
Dispatch path (src/webhook-handlers.ts)
src/webhook.ts
Tests (src/webhook-handlers.test.ts)
One observation (not a blocker): All /breakdown tests return null because TEST_CONFIG has no boss type, so the happy-path task-ID return is never directly asserted. This is the same pattern across every handler test in this suite: no workers are registered in unit tests, so dispatchByType would throw and be caught regardless. The dispatch logic is the same two-liner shared by every other handler. Manual verification per the AC covers the end-to-end path.