Create a new ticket with schema validation
Scanned 2/12/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
name: create-ticket
description: Create a new ticket with schema validation
---
# Create 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`, `medium`, `high`
- **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`
- `TNNNN`: The ticket ID (zero-padded 4 digits)
- `short-description`: Lowercase, hyphenated slug derived from the title
- 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:
```yaml
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 `.ushabti/tickets/` (NOT in `.archived/`)
- [ ] Filename matches `TNNNN-slug.yaml` pattern
- [ ] YAML is syntactically valid
- [ ] All six required fields are present
- [ ] `id` field matches the TNNNN in the filename
- [ ] `created` field is today's date in YYYY-MM-DD format
- [ ] `priority` field is exactly `low`, `medium`, or `high`
- [ ] `context` and `proposed_work` fields have meaningful content
## Example: Complete Ticket Creation
```yaml
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 `.ushabti/tickets/` until a derived phase completes, then they are archived.
- Archived tickets are moved to `.ushabti/tickets/.archived/` and become invisible to agents.
No comments yet. Be the first to comment!