git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/create-ticket-adamrdrew-ushabti" ~/.claude/skills/majiayu000-claude-skill-registry-create-ticket && rm -rf "$T"
skills/data/create-ticket-adamrdrew-ushabti/SKILL.mdCreate Ticket
Purpose
This skill provides step-by-step instructions for creating a new ticket with proper schema validation. Tickets are YAML files stored in
.ushabti/tickets/ that capture ideas for future work.
Prerequisites
Before creating a ticket, invoke the
find-next-ticket-number skill to determine the next ticket ID.
Required Fields
Every ticket MUST include these fields:
- id: Sequential ticket ID in TNNNN format (e.g., T0001)
- title: Short, descriptive title (used to generate filename slug)
- created: ISO 8601 date in YYYY-MM-DD format (today's date)
- priority: Must be exactly one of:
,low
,mediumhigh - context: Multi-line string explaining why this ticket exists
- proposed_work: Multi-line string describing what should be done
Filename Format
Ticket filenames follow the pattern:
TNNNN-short-description.yaml
: The ticket ID (zero-padded 4 digits)TNNNN
: Lowercase, hyphenated slug derived from the titleshort-description- Convert title to lowercase
- Replace spaces with hyphens
- Remove special characters except hyphens
- Limit to ~5 words for brevity
Example: Title "Improve error messages" becomes
T0042-improve-error-messages.yaml
Creation Procedure
Step 1: Determine Next ID
Use the
find-next-ticket-number skill to get the next ticket ID.
Step 2: Gather Information
Collect the required information:
- Title (brief, descriptive)
- Priority (low, medium, or high)
- Context (why does this ticket exist?)
- Proposed work (what should be done?)
Step 3: Validate Priority
Ensure priority is exactly one of:
low, medium, high (all lowercase).
If priority is not valid, stop and report the error.
Step 4: Generate Filename
Convert the title to a slug:
- Lowercase all characters
- Replace spaces with hyphens
- Remove special characters (keep letters, numbers, hyphens)
- Limit to approximately 5 words
Combine with ticket ID:
TNNNN-slug.yaml
Step 5: Create YAML Content
Construct the YAML file with all required fields:
id: T0042 title: Improve error messages created: 2026-02-01 priority: medium context: | Current error messages are vague and don't help users understand what went wrong or how to fix issues. This makes debugging difficult and reduces the usability of Ushabti. proposed_work: | - Audit all error messages across agents - Replace vague messages with specific, actionable guidance - Add error codes for programmatic error handling - Update documentation with common errors and solutions
Step 6: Ensure Directory Exists
Ensure the ticket directory exists by running:
mkdir -p .ushabti/tickets
This is idempotent and handles cases where bootstrap or onboarding didn't create the directory.
Step 7: Write File
Write the YAML content to
.ushabti/tickets/TNNNN-slug.yaml
Step 8: Verify
Confirm the file was written successfully and is valid YAML.
Validation Checklist
Before considering the ticket created, verify:
- File exists in
(NOT in.ushabti/tickets/
).archived/ - Filename matches
patternTNNNN-slug.yaml - YAML is syntactically valid
- All six required fields are present
-
field matches the TNNNN in the filenameid -
field is today's date in YYYY-MM-DD formatcreated -
field is exactlypriority
,low
, ormediumhigh -
andcontext
fields have meaningful contentproposed_work
Example: Complete Ticket Creation
id: T0001 title: Add search functionality to ticket list created: 2026-02-01 priority: low context: | As the number of tickets grows, finding specific tickets becomes harder. Currently users must read through all ticket files manually. proposed_work: | Create a new skill (search-tickets) that allows filtering tickets by: - Title substring match - Priority level - Date range Update list-tickets to optionally use search criteria.
Filename:
T0001-add-search-functionality.yaml
Location:
.ushabti/tickets/T0001-add-search-functionality.yaml
Notes
- Tickets are create-only. Once created, they are not edited.
- If a ticket needs correction, create a new ticket and archive the incorrect one.
- Tickets remain in
until a derived phase completes, then they are archived..ushabti/tickets/ - Archived tickets are moved to
and become invisible to agents..ushabti/tickets/.archived/