---
name: tickets
description: Understand how to work with project tickets and the ticket workflow
---

# Ticket System

Use this skill to understand how to work with project tickets.

## Overview

Tickets are small, focused work items stored as markdown files.

```
.project/
├── backlog/           # Work to do (pending tickets)
├── done/              # Completed work (finished tickets)
└── systems/           # Component state (not tickets)
```

## Working with Tickets

### Finding Work
1. List tickets: `ls .project/backlog/`
2. Read a ticket to understand the task
3. Check priority and dependencies

### Starting Work
1. Read the full ticket
2. Check if it has dependencies (other tickets that must complete first)
3. Understand the acceptance criteria
4. Start working

### Completing Work
1. Verify all acceptance criteria are met
2. Run `/finalize-ticket` for thorough cleanup (derived tickets, system updates, cross-links)
3. Add completion date to the ticket: `**Completed:** YYYY-MM-DD`
4. Add any relevant notes about what was done
5. Move the file: `mv .project/backlog/NNN-name.md .project/done/`
6. Commit with reference to ticket number

**Important:** Don't skip step 2 - `/finalize-ticket` catches loose ends that are easy to miss.

### Creating New Tickets
When you discover new work needed:

```markdown
# Ticket: Short Descriptive Title

## Priority
High / Medium / Low

## Goal
One sentence describing the outcome.

## Context
Why this matters, background info.

## Tasks
- [ ] Specific task 1
- [ ] Specific task 2

## Acceptance
- Criteria that must be true when done

## Dependencies
- Ticket XXX must be done first (if any)

## Notes
Any other relevant info.
```

**Naming:** `NNN-short-name.md` where NNN is the next number.

## Ticket vs System Files

| Tickets | Systems |
|---------|---------|
| Discrete work items | Component definitions |
| Move to done/ when complete | Stay in systems/, get updated |
| Focus on "what to do" | Focus on "what exists + ideas" |

## Example Workflow

```bash
# See what's available
ls .project/backlog/

# Read the ticket
cat .project/backlog/002-define-build-workflow.md

# Do the work...

# Mark complete and move
# (edit file to add completion date first)
mv .project/backlog/002-define-build-workflow.md .project/done/

# Commit
git add -A && git commit -m "Complete ticket 002: Define build workflow"
```

## Tips

- Keep tickets small and focused
- One ticket = one coherent piece of work
- If a ticket gets too big, split it
- Update system files when completing tickets that change system state
- Don't forget to update the system's "State" emoji when things change
