task-management
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.
What this skill does
# Task Management with dot CLI !`dot ls --status active 2>/dev/null || echo "No active tasks (dot CLI not available or no tasks)"` ## Core Concept: Tasks Are Markdown Files 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:** ```markdown --- 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:** - Top-level tasks: `.dots/<id>/<id>.md` - Child tasks: `.dots/<parent-id>/<child-id>.md` **IDs** follow the format `<prefix>-<slug>-<hash>` where prefix comes from `.dots/config`. ## Workflow: Creating Tasks with Rich Descriptions ### Step 1: Create the task ```bash 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. ### Step 2: Add rich acceptance criteria Open `.dots/myapp-implement-user-registration-a1b2c3/myapp-implement-user-registration-a1b2c3.md` and add structured content after the frontmatter: ```markdown ## 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] ``` ### Step 3: Read task context before starting work ```bash dot show <task-id> # Prints full file content ``` Or read the `.md` file directly for the complete markdown. ## Parent-Child Hierarchies Model epics, stories, and subtasks with parent-child relationships. ```bash # 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 ``` ## Blocking Dependencies Declare that task B cannot start until task A is done: ```bash # 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. ```bash dot ready # Only unblocked, open tasks dot ready --json # JSON output for scripting ``` ## Status Lifecycle Tasks progress: **open** → **active** → **closed** ```bash 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. ```bash dot off <task-id> -r "Completed" git add .dots/ git commit -m "chore: close task <task-id>" # Then create PR — task closure is included ``` ## Searching ```bash dot find "query" # Searches titles, descriptions, and close-reasons dot ls --json # Full JSON for custom filtering ``` ## Command Reference | 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/ | | ### Frontmatter Fields | 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` | ## Constraints **DO:** - Edit task `.md` files directly for rich acceptance criteria - Use `dot ready` (not `dot ls`) to find next work - Use `-P` for parent-child and `-a` for blocking dependencies - Use full task IDs in git branch names for traceability - Provide close reasons with `-r` - Close tasks on the feature branch and commit `.dots/` changes before creating the PR - Track `.dots/` in version control so task state lands on main with PRs **DON'T:** - Skip `dot ready` — `dot ls` shows blocked tasks too - Create circular dependencies - Use short IDs or issue numbers in branch names - Close tasks after PR merge — close them before so `.dots/` changes are in the PR ## Detailed Examples For extended workflow examples including event modeling task creation, branch-based workflows, dependency chains, and epic completion scripts, see [references/examples.md](references/examples.md).
Related in Productivity
gitea-workflow
IncludedOrchestrate agile development workflows for Gitea repositories using the tea CLI. Use when working with Gitea-hosted repos and asking to 'run the workflow', 'continue working', 'what's next', 'complete the task cycle', 'start my day', 'end the sprint', 'implement the next task', or wanting guided step-by-step development assistance. Keywords: workflow, orchestrate, agile, task cycle, sprint, daily, implement, review, PR, standup, retrospective, gitea, tea.
microsoft-graph-gateway
IncludedRoute Microsoft Graph work in this workspace. Use when users want to read or write Outlook mail, calendar events, contacts, OneDrive or SharePoint files, Teams, Planner, To Do, users, groups, directory data, or arbitrary Microsoft Graph endpoints from VS Code. Prefer WorkIQ for common read scenarios. Use Microsoft Graph for write actions and gap-read scenarios that need exact Graph properties, filters, permissions, or endpoints.
copilotkit
IncludedUse when building with CopilotKit — setup, development, integrations, debugging, upgrading, or contributing. Routes to the appropriate specialized skill based on the task.
wordly-wisdom
IncludedProvides calibrated decision analysis using Charlie Munger-style multiple mental models, inversion, incentive mapping, circle-of-competence checks, misjudgment audits, second-order effects, and forecast updates. Use when the user asks for an oracle take, a hard call, a decision memo, a premortem, an outside view, a red-team, a sanity-check, what am I missing, think this through, or wants a strategy, hire, investment, plan, product, partnership, or major life choice analysed. Avoid for simple factual lookups or time-sensitive legal, medical, or market questions without fresh evidence.
swain-session
IncludedSession management and project status dashboard. Owns the full session lifecycle (start/work/close/resume), focus lane, bookmarks, worktree detection, and tab naming. Also serves as the project status dashboard — shows active epics, progress, actionable next steps, blocked items, tasks, GitHub issues, and recommendations. Worktree creation is deferred to swain-do task dispatch (SPEC-195). Triggers on: 'session', 'status', 'what's next', 'dashboard', 'overview', 'where are we', 'what should I work on', 'show me priorities', 'bookmark', 'focus on', 'session info'.
gandi
IncludedComprehensive Gandi domain registrar integration for domain and DNS management. Register and manage domains, create/update/delete DNS records (A, AAAA, CNAME, MX, TXT, SRV, and more), configure email forwarding and aliases, check SSL certificate status, create DNS snapshots for safe rollback, bulk update zone files, and monitor domain expiration. Supports multi-domain management, zone file import/export, and automated DNS backups. Includes both read-only and destructive operations with safety controls.