Skilllibrary ticket-pack-builder
Create a repo-local ticket system with an index, machine-readable manifest, board, and individual ticket files. Use when a repo needs task decomposition that autonomous agents can follow without re-planning the whole project each session. Do not use for executing tickets (use ticket-execution) or quick fixes that don't warrant formal tickets.
install
source · Clone the upstream repo
git clone https://github.com/merceralex397-collab/skilllibrary
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/merceralex397-collab/skilllibrary "$T" && mkdir -p ~/.claude/skills && cp -r "$T/01-package-scaffolding/ticket-pack-builder" ~/.claude/skills/merceralex397-collab-skilllibrary-ticket-pack-builder && rm -rf "$T"
manifest:
01-package-scaffolding/ticket-pack-builder/SKILL.mdsource content
Ticket Pack Builder
Use this skill to create or refine the repo-local work queue.
Modes
- bootstrap: Generate the first implementation-ready backlog during initial scaffold
- refine: Regenerate, expand, or normalize an existing backlog later
Bootstrap mode procedure
1. Read the canonical brief
Read the project brief. Identify:
- What features/capabilities need to be built
- What infrastructure/setup is required
- What the acceptance criteria are
- Which areas are blocked on unresolved decisions
- The backlog readiness signal
2. Break work into implementation waves
Organize tickets into waves based on dependency order:
| Wave | Purpose | Examples |
|---|---|---|
| Wave 0: Foundation | Repo setup, CI/CD, configuration | Project init, dependency install, CI pipeline |
| Wave 1: Core | Primary functionality | Core business logic, main features |
| Wave 2: Secondary | Supporting features, integrations | Secondary workflows, integrations |
| Wave 3: Polish | Hardening, performance, docs | Error handling, performance, UX refinement |
3. Create individual tickets
For each piece of work, create a ticket with these fields:
- id — unique identifier (e.g.,
,SETUP-001
,CORE-001
)FEAT-001 - title — short descriptive title
- wave — which execution wave
- status —
ortodo
(all new tickets start in planning stage)blocked - depends_on — list of ticket IDs this depends on
- summary — one-paragraph description
- acceptance — list of specific, verifiable acceptance criteria
- decision_blockers — unresolved decisions that block this ticket (empty if none)
Optional fields for parallel execution:
- lane — which project area or ownership lane
- parallel_safe — whether this can advance in parallel when dependencies are met
- overlap_risk —
,low
, ormedium
expected overlap with other ticketshigh
Ticket sizing rules
- Each ticket should be completable in ONE agent session
- If a ticket requires changes to more than 5-7 files, split it
- If a ticket has more than 5 acceptance criteria, consider splitting
- Prefer many small tickets over few large ones
Handling unresolved decisions
- Do NOT fabricate implementation detail for work that depends on unresolved major choices
- Create explicit
tickets withblocked
listing what needs to be decideddecision_blockers - Create
tickets for choices the team needs to makedecision - Create
tickets for research that needs to happen before implementationdiscovery
4. Write ticket files
For each ticket, write a markdown file to
tickets/<id>.md:
--- id: SETUP-001 title: Initialize project structure wave: 0 status: todo depends_on: [] --- # SETUP-001: Initialize project structure ## Summary Set up the base repository structure with package manager, build tooling, and test framework. ## Acceptance Criteria - [ ] Package manager configured with lock file - [ ] Build command produces output without errors - [ ] Test command runs (even with zero tests) - [ ] Linter configured and passing
5. Write the manifest
Write
tickets/manifest.json with structured ticket data:
{ "version": 2, "project": "<project-name>", "active_ticket": "<first-ticket-id>", "tickets": [ ... ] }
6. Generate the board
Write
tickets/BOARD.md as a human-readable view organized by wave:
- Ticket ID, title, status, dependencies
- Grouped by wave
- This is a DERIVED VIEW — the manifest is the source of truth
7. Validate
- No circular dependencies in the dependency graph
- Every
reference points to a real ticketdepends_on - Every ticket has at least one acceptance criterion
- No ticket is both
and has unresolvedtodo
(should bedecision_blockers
)blocked - Critical path is identifiable
Refine mode
Use when expanding or normalizing an existing backlog:
- Read the existing manifest
- Identify gaps, unclear tickets, or new work from updated brief
- Add/modify tickets following the same rules
- Regenerate BOARD.md from manifest
Output contract
tickets/ ├── manifest.json # Machine-readable ticket data (source of truth) ├── BOARD.md # Human-readable board (derived view) ├── SETUP-001.md # Individual ticket files ├── CORE-001.md └── ...
Rules
- Keep manifest machine-readable; keep board human-readable
- Keep status coarse:
,todo
,ready
,in_progress
,blocked
,review
,qadone - Do NOT use ticket status for transient approval state (that belongs in workflow state)
- Record dependencies explicitly
- Put acceptance criteria on every ticket
- Mark
only when overlap risk is genuinely lowparallel_safe: true
Failure handling
- Brief too vague: Cannot decompose "build the app" into tickets. Request specific features first.
- Ticket too large: Split into sub-tickets. Use
,-a
suffixes if needed.-b - Circular dependencies: Refactor to break cycle — extract shared prerequisite as separate ticket.
- No clear acceptance criteria: Do not create ticket. Flag as needing clarification.
References
- This is step 5 of the scaffold-kickoff flow — continue to
../project-skill-bootstrap/SKILL.md - Shape Up "Map the Scopes": https://basecamp.com/shapeup