install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/describe-tickets" ~/.claude/skills/majiayu000-claude-skill-registry-describe-tickets && rm -rf "$T"
manifest:
skills/data/describe-tickets/SKILL.mdsource content
Ticket System
Purpose
Tickets provide a lightweight, file-backed way to capture ideas for future work within the Ushabti repository. They complement the phase-driven workflow by allowing agents and users to record ideas that are out-of-scope for the current phase without losing them.
Tickets are deliberately simple: create, derive a phase from, archive. No editing, no complex state transitions, no prioritization logic.
Directory Structure
.ushabti/tickets/ # Active tickets .ushabti/tickets/.archived/ # Completed tickets (invisible to agents)
Agents read tickets from
.ushabti/tickets/ but ignore .ushabti/tickets/.archived/. Archived tickets are effectively invisible once moved.
Ticket YAML Schema
Each ticket is a YAML file with the following required fields:
id: T0001 # Sequential ticket ID (TNNNN format) title: Short description # Brief, descriptive title created: 2026-02-01 # ISO 8601 date (YYYY-MM-DD) priority: medium # Must be: low, medium, or high context: | Multi-line context explaining why this ticket exists. What observation or need led to its creation? proposed_work: | Multi-line description of what should be done. What would a phase derived from this ticket accomplish?
All fields are required. The
priority field must be one of: low, medium, high.
Ticket Filename Format
Ticket files are named:
TNNNN-short-description.yaml
: Zero-padded 4-digit sequential ID (T0001, T0002, etc.)TNNNN
: Lowercase, hyphenated slug derived from titleshort-description- Extension:
.yaml
Example:
T0042-improve-error-messages.yaml
Workflows
Creating a Ticket
- Determine next ticket ID (use
skill)find-next-ticket-number - Create YAML file with all required fields
- Validate schema (all fields present, priority is valid)
- Write file to
.ushabti/tickets/TNNNN-slug.yaml
Deriving a Phase from a Ticket
When a ticket is ready to become a phase:
- Scribe reads the ticket YAML from
.ushabti/tickets/ - Scribe uses
andcontext
to inform phase planningproposed_work - Scribe adds
metadata to the phase.md fileticket: TNNNN - The ticket remains in
until the phase completes.ushabti/tickets/
Archiving a Ticket
When a ticket-derived phase completes:
- Overseer reads the
field from phase.mdticket - Overseer moves the ticket file from
to.ushabti/tickets/.ushabti/tickets/.archived/ - Overseer logs the archival action in review findings
- The archived ticket is now invisible to agents
Agent Responsibilities
Vizier (Advisory)
- Can read active tickets from
.ushabti/tickets/ - Ignores archived tickets in
.ushabti/tickets/.archived/ - May offer to create tickets when good ideas for future work arise during conversation
- Should offer ticket creation sparingly, only for genuine future work
Scribe (Planning)
- Reads tickets when user requests a phase derived from a ticket
- Uses ticket
andcontext
to inform phase intent and scopeproposed_work - Adds
metadata to phase.md when deriving from a ticketticket: TNNNN
Overseer (Review)
- Checks phase.md for
field when completing a phaseticket - Archives the corresponding ticket by moving it to
.ushabti/tickets/.archived/ - Logs archival action in review findings
Builder, Lawgiver, Artisan, Surveyor
- No specific ticket responsibilities
- May create tickets if they observe out-of-scope work during their duties
Design Principles
- Simple lifecycle: Create → derive phase → archive. No intermediate states.
- File-backed: Everything lives in the repository, no external dependencies.
- Agent-friendly: Clear schema, clear locations, clear workflows.
- Complementary: Tickets support phases, they don't replace planning or become a backlog management tool.
- Invisible when done: Archived tickets are moved out of the active directory and ignored by agents.