Local task management using the dot CLI with file-based markdown storage, parent-child hierarchies, and blocking dependencies. Use when managing tasks, creating stories or epics, tracking work items, breaking down features, writing acceptance criteria, or querying task status. Triggers on: "create a task", "add a story", "break down this feature", "what's ready to work on", "show task status", "dot add", "dot ls", "dot ready", "dot tree", or any reference to the dot CLI or .dots/ directory.
From sdlcnpx claudepluginhub jwilger/claude-code-plugins --plugin sdlcThis skill is limited to using the following tools:
references/examples.mdDispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Executes pre-written implementation plans: critically reviews, follows bite-sized steps exactly, runs verifications, tracks progress with checkpoints, uses git worktrees, stops on blockers.
Guides idea refinement into designs: explores context, asks questions one-by-one, proposes approaches, presents sections for approval, writes/review specs before coding.
!dot ls --status active 2>/dev/null || echo "No active tasks (dot CLI not available or no tasks)"
Tasks are stored as markdown files in .dots/. Each file has YAML frontmatter
(title, status, priority, issue-type) and a markdown body that IS the task
description. This means rich, multi-line acceptance criteria belong in the file
body — not crammed into a -d flag.
File format:
---
title: Implement user registration
status: open
priority: 2
issue-type: task
created-at: 2026-02-06T10:00:00Z
---
## Context
Users need to create accounts to access the application.
## Acceptance Criteria
- [ ] Registration form accepts email, password, and display name
- [ ] Password must be >= 12 characters with complexity requirements
- [ ] Email verification sent on successful registration
- [ ] Duplicate email returns clear error message
## Done Criteria
- All acceptance criteria checked off
- Unit and integration tests passing
- PR reviewed and merged
File locations:
.dots/<id>/<id>.md.dots/<parent-id>/<child-id>.mdIDs follow the format <prefix>-<slug>-<hash> where prefix comes from
.dots/config.
dot add "Implement user registration" -p 2
# Output: Created task: myapp-implement-user-registration-a1b2c3
The -d flag works for short descriptions, but for anything beyond a sentence,
edit the file directly.
Open .dots/myapp-implement-user-registration-a1b2c3/myapp-implement-user-registration-a1b2c3.md
and add structured content after the frontmatter:
## Context
[Why this task exists, background, links to designs]
## Acceptance Criteria
- [ ] [Specific, testable criterion]
- [ ] [Another criterion]
## Done Criteria
- [What "done" means beyond acceptance criteria]
## Notes
- [Implementation hints, constraints, edge cases]
dot show <task-id> # Prints full file content
Or read the .md file directly for the complete markdown.
Model epics, stories, and subtasks with parent-child relationships.
# Create parent (epic)
EPIC_ID=$(dot add "Epic: User Authentication" -p 1 | grep -oP 'Created task: \K[^\s]+')
# Create children
dot add "Implement login form" -P "$EPIC_ID" -p 2
dot add "Add password validation" -P "$EPIC_ID" -p 2
dot add "Create auth endpoint" -P "$EPIC_ID" -p 2
# View hierarchy
dot tree "$EPIC_ID"
Children are stored as files inside the parent's directory:
.dots/myapp-epic-user-authentication-x1y2z3/
├── myapp-epic-user-authentication-x1y2z3.md # Parent
├── myapp-implement-login-form-a1b2c3.md # Child
├── myapp-add-password-validation-d4e5f6.md # Child
└── myapp-create-auth-endpoint-g7h8i9.md # Child
Declare that task B cannot start until task A is done:
# Create blocker
dot add "Create database schema" -p 1
# Output: myapp-create-database-schema-abc123
# Create dependent task (blocked by schema)
dot add "Implement user repository" -a myapp-create-database-schema-abc123 -p 2
Always use dot ready to find unblocked work — dot ls shows everything
including blocked tasks.
dot ready # Only unblocked, open tasks
dot ready --json # JSON output for scripting
Tasks progress: open → active → closed
dot on <task-id> # Start work (open → active)
dot off <task-id> -r "reason" # Complete (→ closed)
Always provide a close reason with -r for audit trail.
Close tasks on the feature branch. When a task is done, close it and commit
the .dots/ changes on the feature branch before creating the PR. This way,
when the PR merges, main reflects the task as completed.
dot off <task-id> -r "Completed"
git add .dots/
git commit -m "chore: close task <task-id>"
# Then create PR — task closure is included
dot find "query" # Searches titles, descriptions, and close-reasons
dot ls --json # Full JSON for custom filtering
| Command | Purpose | Key Flags |
|---|---|---|
dot add "title" | Create task | -p priority, -d description, -P parent, -a blocker |
dot ls | List tasks | --status open|active|closed, --json |
dot ready | Unblocked open tasks | --json |
dot show <id> | Full task details | --json |
dot tree <id> | Hierarchy view | --json |
dot on <id> | Start work (→ active) | |
dot off <id> | Close task | -r "reason" (required) |
dot rm <id> | Delete task | |
dot find "query" | Search tasks | Searches titles, descriptions, close-reasons |
dot fix | Repair broken state | |
dot purge | Remove closed tasks | |
dot init | Initialize .dots/ |
| Field | Values | Notes |
|---|---|---|
title | string | Set by dot add |
status | open, active, closed | Managed by dot on/dot off |
priority | integer (1=highest) | Set with -p |
issue-type | task, epic, etc. | Optional |
created-at | ISO 8601 timestamp | Auto-set |
closed-at | ISO 8601 timestamp | Auto-set on close |
close-reason | string | Set with -r |
DO:
.md files directly for rich acceptance criteriadot ready (not dot ls) to find next work-P for parent-child and -a for blocking dependencies-r.dots/ changes before creating the PR.dots/ in version control so task state lands on main with PRsDON'T:
dot ready — dot ls shows blocked tasks too.dots/ changes are in the PRFor extended workflow examples including event modeling task creation, branch-based workflows, dependency chains, and epic completion scripts, see references/examples.md.