dex — Claude Code skill: what it does, how to install
Manages persistent work tickets with the dex CLI for task breakdowns, handoffs, and context that carries across sessions.
npx skills add dcramer/dex --skill dex -a claude-codeWhat dex does
The skill uses the dex CLI to create, inspect, edit, delete, and complete tickets. Each ticket carries a short name, a detailed description, and a recorded result. Its data lives in .dex/, so implementation context can survive beyond a single agent session. Tickets can form an epic, task, and subtask hierarchy.
Before work starts, the agent reads the full ticket plus relevant parent or blocker tickets. Completion records include the outcome and verification evidence; GitHub- or Shortcut-linked tickets need either --commit <sha> or --no-commit. For one atomic action, this adds overhead because dex is intended for work that persists across sessions.
What it helps with
- break a large change into tracked subtasks
- keep requirements and decisions between sessions
- list tickets that are ready to start
- record verification when work is completed
- attach a completed ticket to a commit
Example prompts for the agent
- Break this change into dex tickets and include acceptance criteria.
- Use
dexto show ready tickets and pick the next one. - Complete dex ticket
<id>with the result and commit<sha>.
How to install dex
1Skills CLI (Vercel)
npx skills add dcramer/dex --skill dex -a claude-code2Manually: put the files in place
~/.claude/skills/dex/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/dex/
1Skills CLI (Vercel)
npx skills add dcramer/dex --skill dex -a codex2Manually: put the files in place
.agents/skills/dex/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add dcramer/dex --skill dex -a cursor2Manually: put the files in place
.cursor/skills/dex/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install dcramer/dex dex2Manually: put the files in place
.github/skills/dex/SKILL.md1Skills CLI (Vercel)
npx skills add dcramer/dex --skill dex -a gemini-cli2Platform CLI
gemini skills install https://github.com/dcramer/dex --path plugins/dex/skills/dexManually: put the files in place
.devin/skills/dex/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add dcramer/dex --skill dex -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about dex
How do I install dex in Claude Code?
Run npx skills add dcramer/dex --skill dex -a claude-code, then run npx skills add dcramer/dex --skill dex -a claude-code again. The skill file is located at ~/.claude/skills/dex/SKILL.md.
What does dex do?
dex keeps persistent tickets with descriptions, context, and results. The skill uses them to break down work, retain handoff context, and document outcomes.
When does completing a ticket require a commit?
A GitHub- or Shortcut-linked ticket needs --commit <sha> when code changes exist. Use --no-commit for planning or design work without code changes; the linked issue stays open.
Source text
SKILL.md · MIT
---
name: dex
description: Manage tasks via dex CLI. Use when breaking down complex work, tracking implementation items, or persisting context across sessions.
---
# Agent Coordination with dex
## Command Invocation
Use `dex` directly for all commands. If not on PATH, use `npx @zeeg/dex` instead.
```bash
command -v dex &>/dev/null && echo "use: dex" || echo "use: npx @zeeg/dex"
```
## Core Principle: Tickets, Not Todos
Dex tasks are **tickets** - structured artifacts with comprehensive context:
- **Name**: One-line summary (issue title)
- **Description**: Full background, requirements, approach (issue body)
- **Result**: Implementation details, decisions, outcomes (PR description)
Think: "Would someone understand the what, why, and how from this task alone?"
## Dex Tasks are Ephemeral
**Never reference dex task IDs in external artifacts** (commits, PRs, docs). Task IDs like `abc123` become meaningless once tasks are completed. Describe the work itself, not the task that tracked it.
## When to Use dex
**Use dex when:**
- Breaking down complexity into subtasks
- Work spans multiple sessions
- Context needs to persist for handoffs
- Recording decisions for future reference
**Skip dex when:**
- Work is a single atomic action
- Everything fits in one session with no follow-up
- Overhead exceeds value
## dex vs Built-in Task Tools
Some AI agents (like Claude Code) have built-in task tools. These are session-only and not the same as dex.
| | dex | Built-in Task Tools |
| --------------- | ------------------------------------- | ------------------- |
| **Persistence** | Files in `.dex/` | Session-only |
| **Context** | Rich (description + context + result) | Basic |
| **Hierarchy** | 3-level (epic → task → subtask) | Flat |
Use **dex** for persistent work. Use built-in task tools for ephemeral in-session tracking only.
## Basic Workflow
### Create a Task
```bash
dex create "Short name" --description "Full implementation context"
```
Description should include: what needs to be done, why, implementation approach, and acceptance criteria. See [examples.md](examples.md) for good/bad examples.
### List and View Tasks
```bash
dex list # Pending tasks
dex list --ready # Unblocked tasks
dex show <id> # Full details
```
### Complete a Task
```bash
dex complete <id> --result "What was accomplished" --commit <sha>
```
**GitHub/Shortcut-linked tasks** require either `--commit <sha>` or `--no-commit`:
- Use `--commit <sha>` when you have code changes (issue closes when merged)
- Use `--no-commit` for non-code tasks like planning or design (issue stays open)
**Always verify before completing.** Results must include evidence: test counts, build status, manual testing outcomes. See [verification.md](verification.md) for the full checklist.
### Edit and Delete
```bash
dex edit <id> --description "Updated description"
dex delete <id>
```
For full CLI reference including blockers, see [cli-reference.md](cli-reference.md).
## Understanding Task Fields
Tasks have two text fields:
- **Name**: Brief one-line summary (shown in `dex list`)
- **Description**: Full details - requirements, approach, acceptance criteria (shown with `--full`)
When you run `dex show <id>`, the description may be truncated. The CLI will hint at `--full` if there's more content.
### Gathering Context
When picking up a task, gather all relevant context:
```bash
dex show <id> --full # Full task details
dex show <parent-id> --full # Parent context (if applicable)
dex show <blocker-id> --full # What blockers accomplished
```
Before starting, verify you can answer:
- **What** needs to be done specifically?
- **Why** is this needed?
- **How** should it be implemented?
- **When** is it done (acceptance criteria)?
If any answer is unclear:
1. Check parent task or completed blockers for more details
2. Suggest entering plan mode to flesh out requirements before starting
**Proceed without full context when:**
- Task is trivial/atomic (e.g., "Add .gitignore entry")
- Conversation already provides the missing context
- Description itself is sufficiently detailed
## Task Hierarchies
Three levels: **Epic** (large initiative) → **Task** (significant work) → **Subtask** (atomic step).
**Choosing the right level:**
- Small feature (1-2 files) → Single task
- Medium feature (3-7 steps) → Task with subtasks
- Large initiative (5+ tasks) → Epic with tasks
```bash
# Create subtask under parent
dex create --parent <id> "Subtask name" --description "..."
```
For detailed hierarchy guidance, see [hierarchies.md](hierarchies.md).
## Recording Results
Complete tasks **immediately after implementing AND verifying**:
- Capture decisions while fresh
- Note deviations from plan
- Document verification performed
- Create follow-up tasks for tech debt
Your result must include explicit verification evidence. Don't just describe what you did—prove it works. See [verification.md](verification.md).
## Commit Messages with GitHub Issues
When a task is linked to a GitHub issue (shown in `dex show` output), include issue references in commit messages:
- **Root tasks** (the task itself has GitHub metadata): Use `Fixes #N`
- This closes the issue when merged
- **Subtasks** (parent/ancestor has GitHub metadata): Use `Refs #N`
- This links to the issue without closing it
Check `dex show <id>` for GitHub issue info before committing. The "(via parent)" indicator means use `Refs`, direct metadata means use `Fixes`.
## Best Practices
1. **Right-size tasks**: Completable in one focused session
2. **Clear completion criteria**: Description should define "done"
3. **Don't over-decompose**: 3-7 children per parent
4. **Action-oriented descriptions**: Start with verbs ("Add", "Fix", "Update")
5. **Verify before completing**: Tests passing, manual testing done
## Additional Resources
- [cli-reference.md](cli-reference.md) - Full CLI documentation
- [examples.md](examples.md) - Good/bad context and result examples
- [verification.md](verification.md) - Verification checklist and process
- [hierarchies.md](hierarchies.md) - Epic/task/subtask organization
© dcramer · MIT · dcramer/dex