Ataski
Use this skill to coordinate work through files in an ataski/ directory.
Canonical Board Rule
When using git worktrees and sub-agents:
- The main agent is the coordinator.
- Break the work into the smallest sensible set of parallelizable tasks before implementation starts.
- Create one canonical feature worktree inside the configured worktree directory (
worktreesDir, default:ataski/worktrees/). - The canonical worktree MUST use the parent feature branch (example:
feature/faucet-cli). - Keep the shared
ataski/board only in that canonical feature worktree. - Only the main agent may change task files or
ataski/tasks.md. - Sub-agents MUST treat
ataski/as read-only context. - Prepare or update the board in the canonical feature worktree first, then create task worktrees for sub-agents.
- When task work is done, the main agent merges each task branch back into the canonical feature branch before review.
- The configured worktree directory MUST be git-ignored.
Default config.jsonc
If ataski/config.jsonc exists, it overrides defaults. Default configuration:
{
"structure": {
"0": "todo/",
"1": "in-progress/",
"2": "done/"
},
"taskID": {
"prefix": "T",
"length": 3,
"example": "T001"
},
"taskFrontMatter": {
"id": "The task ID",
"title": "The task title",
"status": "The task status",
"blockedBy": "Array of task IDs that must be done before this task can start",
"owner": "Optional current owner/agent",
"created_at": "The task creation datetime",
"updated_at": "The task update datetime"
},
"testStrategy": "BDD/TDD/DDD (choose the best fit)",
"tracker": "tasks.md",
"worktreesDir": "ataski/worktrees/"
}The same default file contents are mirrored in skills/references/config.jsonc.
Structure
Default structure:
ataski/
todo/
in-progress/
done/
worktrees/
config.jsonc
tasks.mdIf it does not exist, create it before writing tasks.
The default ataski/worktrees/ directory is reserved for git worktrees and MUST be git-ignored.
Worktree Configuration
Use worktreesDir to control where git worktrees are created.
- Default:
ataski/worktrees/ - The canonical feature worktree lives inside
worktreesDir. - Each parallel task gets its own separate worktree inside
worktreesDir. - The canonical branch should use the feature branch name (example:
feature/faucet-cli). - Task branches should stay task-scoped (example:
task/T001-short-title).
Create Tasks
- Allocate the next task ID (example:
T001). - Infer a short slugged title (example:
T001-implement-typechecking.md). - Create a new task file in directory
0(default:ataski/todo/). - Append a matching entry to
ataski/tasks.md.
Never reuse task IDs.
For non-trivial source-code work, plan the feature first and split it into explicit tasks that can run in parallel whenever dependencies allow.
When splitting work for sub-agents, write each task so it is self-contained and executable without follow-up clarification.
Allocate Task IDs
Task IDs must follow config.jsonc. For default config, IDs are T001, T002, T003,...
Find the next ID by reading ataski/tasks.md, taking the highest existing ID, and incrementing it. If no tasks exist, start at T001.
Task File Naming
Always prefix the file name with the task ID.
Example:
T001-short-title.md
Keep file names lowercase after the ID slug.
Task File Template
Every task file must be markdown with YAML frontmatter:
---
id: T001
title: "Short task title"
status: todo
blockedBy: []
owner: unassigned
created_at: 2026-02-21T00:00:00Z
updated_at: 2026-02-21T00:00:00Z
---
## Requirements
- Describe the concrete behavior, acceptance criteria, and constraints.
## Test Plan
- State whether the task will use BDD, TDD, or DDD, and describe the intended RED path before implementation (tests, harness updates, or prerequisite test setup).
## RED Evidence
## GREEN EvidenceUse status values from configured structure. Default statuses:
todoin-progressdone
Task content requirements:
- The task content MUST contain all context required to complete the task.
- A sub-agent MUST be able to complete the task without asking the main agent for missing scope, constraints, or acceptance criteria.
- Put all required implementation context in the task file, including relevant requirements, boundaries, dependencies, and validation expectations.
- A task file is not ready for implementation if
RequirementsorTest Planis missing, vague, or leaves key decisions unstated.
blockedBy Rules
blockedBy controls dependencies between tasks.
- Use
blockedByas an array of task IDs (example:blockedBy: [T001, T004]). - Default to an empty array for independent tasks.
- Reference only IDs that exist in
ataski/tasks.md. - Never include the task's own ID.
- Reject dependency cycles (direct or transitive) when creating or editing tasks.
- Treat dependencies as a hard gate: do not claim/start a task until every ID in
blockedByisdone.
Tracker Workflow
Keep ataski/tasks.md as a bullet list in ascending ID order.
Use this line format:
- T001 | todo | title-1 | todo/T001-title-1.mdWhen task state changes, update both:
- task frontmatter (
status,updated_at, optionalowner) - matching
ataski/tasks.mdline
In multiple-worktree flows:
- The main agent is the only board coordinator.
- The canonical feature worktree is the only place where the board is writable.
- Task worktrees MUST treat task files and
ataski/tasks.mdas read-only. - Sub-agents report RED/GREEN results to the main agent; the main agent records that evidence in the task file.
- The main agent updates the board only when planning/claiming work, and after task branches are merged back.
- Board-before-PR gate: for completed task work, the main agent MUST update the task to
doneand syncataski/tasks.mdbefore opening, updating, or pushing a PR/branch that represents that completed work. - Completion-state board updates (
ataski/done/move, taskstatus: done, andataski/tasks.mdsync) MUST be committed on the canonical feature branch so they are included in the PR diff. - Completion-state board updates MUST NOT be deferred as a post-merge manual step on
main.
Lifecycle Rules
Use directory location and status together:
- New task: create in
ataski/todo/withstatus: todo. - Claimed task: move to
ataski/in-progress/withstatus: in-progress. - Completed task: move to
ataski/done/withstatus: done.
Always update updated_at when status or task content changes.
Source-Code Scope and Hard Gates
The rules in this section apply to source-code changes and are hard-gated.
Source-code changes include changes that affect runtime behavior, business logic, test behavior, or execution paths, including examples such as:
- route rewiring
- deleting runtime code paths
- service rewrites
- data-path migrations
- changing tests that validate behavior
Chore-only changes are not source-code changes unless they alter behavior, including examples such as:
READMEedits.gitignoreedits- lockfile updates (unless they intentionally change runtime behavior)
- formatting-only or comment-only edits
For source-code changes, the agent MUST follow this ordered workflow and MUST NOT skip or reorder the gates:
- The main agent creates the task in
ataski/todo/(status: todo). - The main agent writes
RequirementsandTest Planin the task file. - The main agent moves the task to
ataski/in-progress/(status: in-progress). - Record RED evidence in the task file, or (if no test-first strategy is truly applicable) document a
Test Strategy Exceptionbefore source edits. In multiple-worktree flows, sub-agents report this evidence and the main agent records it. - Implement code changes.
- Record GREEN evidence in the task file. In multiple-worktree flows, sub-agents report this evidence and the main agent records it.
- The main agent moves the task to
ataski/done/(status: done). - The main agent updates
ataski/tasks.mdto reflect the final completed state and path.
Apply the normal tracker/frontmatter updates when status changes (create/claim/complete). Step 8 is the required final tracker sync/check.
Pre-edit coordination rule (source-code changes):
- Before any agent edits any source file, the main agent MUST already have created the task, written concrete
RequirementsandTest Plansections, and moved the task toataski/in-progress/.
No retroactive tracking (source-code changes):
- The main agent MUST NOT create or claim a task after source edits have already started.
- The main agent MUST NOT create a new completed task for already-finished untracked source-code work.
- Moving an already-tracked task to
doneafter implementation, validation, and merge is required and is not retroactive tracking.
Test Strategy
Each source-code task MUST choose the test-first method that best matches the work and name it in the Test Plan:
- Use
BDDfor user-visible behavior, acceptance criteria, CLI flows, API contracts, and end-to-end scenarios. - Use
TDDfor implementation-level logic, refactors, utility behavior, and tight feedback loops. - Use
DDDfor domain rules, invariants, aggregates, value objects, and business-model correctness.
All three methods still follow the same Red/Green discipline:
- RED first: write meaningful failing tests that express the intended behavior, rule, or acceptance criteria.
- Record RED evidence in the task file (command + failure summary). In multiple-worktree flows, the main agent records task-file evidence from sub-agent reports.
- GREEN second: implement the smallest correct change to satisfy the failing tests.
- Record GREEN evidence in the task file (command + pass summary). In multiple-worktree flows, the main agent records task-file evidence from sub-agent reports.
- REFACTOR optional: improve the design without changing behavior.
Test gate requirements for source-code changes:
- RED evidence MUST be recorded before implementation edits.
- The chosen test method MUST guide the implementation. Tests exist to define correctness, not to turn the task green with shallow validation.
- Tests MUST be thorough and meaningful for the task's risk and behavior. Write assertions that prove the intended behavior, not placeholder tests that merely execute code.
- If no test-first method is applicable, add a
Test Strategy Exceptionsection in the task file before source edits. This section MUST explain why BDD, TDD, and DDD are all not applicable and what validation will be used instead. - A
Test Strategy Exceptionreplaces the RED requirement only. It does not waive GREEN validation. - GREEN evidence is always required before moving the task to
done. - For new features, new packages, service rewrites, route rewiring, and other behavior-bearing work, automated tests are mandatory. Build, lint, typecheck, and manual smoke checks alone do NOT satisfy this requirement.
- Missing test coverage, missing test harnesses, greenfield package setup, or scaffolding work are NOT valid reasons to skip test-first development. The agent MUST first add or extend a test harness, or create a prerequisite task to do so, and then continue with RED/GREEN.
- A full feature or public package MUST NOT use a blanket
Test Strategy Exceptionto avoid writing tests for its user-visible behavior. - If only part of a task cannot be tested first, the exception MUST be narrowly scoped to that part, and the agent MUST still write tests for the remaining behavior or split the work into smaller tasks.
Do not mark task done without passing tests (or the documented exception validation) for source-level work.
Completion Compliance Checklist
Before completing a source-code task, verify all items below:
- task was created before source edits
- task requirements and test plan were written before source edits
- task was moved to
in-progressbefore source edits - RED and GREEN evidence were recorded, or a pre-edit
Test Strategy Exceptionplus GREEN evidence was recorded - task was moved to
doneonly after implementation and validation were complete
AGENTS.md Interaction
Keep and use the AGENTS.md guidance (see skills/references/AGENTS.md) to mandate Ataski at the project level.
For source-code changes:
AGENTS.mdprovides the project mandate/policy to use Ataski.- The
ataskiskill provides the exact operational procedure, lifecycle ordering, and hard gates. - If
AGENTS.mdsays to use Ataski, then the Ataski lifecycle and testing/compliance gates in this skill are mandatory.
Multi-Agent Coordination
Core rules:
- The main agent is the coordinator.
- The main agent owns the canonical feature worktree and the only active
ataski/board. - The canonical worktree MUST use the parent feature branch (example:
feature/faucet-cli). - The main agent creates one task worktree per task branch under
worktreesDir(example branch:task/T001-short-title). - Sub-agents work only in task worktrees.
- Sub-agents never edit the board.
- The main agent merges task branches and updates the board.
Follow this sequence:
- The main agent creates the canonical feature branch/worktree first.
- The main agent prepares the board there and creates the tasks.
- The main agent claims only tasks whose
blockedByentries are alreadydone. - For each claimable parallel task, the main agent creates a dedicated task branch/worktree from the canonical feature branch.
- The main agent assigns exactly one sub-agent to each task worktree.
- Each sub-agent implements only its assigned task and reports completion.
- The main agent reviews and merges each completed task branch back into the canonical feature branch.
- After each merge, the main agent updates the task on the canonical board to
donein the canonical feature branch, commits that board change, then re-checks which blocked tasks are now claimable. - Once all task branches are merged, the main agent reviews the complete feature from the canonical feature worktree.
- The main agent opens or updates the final review/PR from the canonical feature branch.
Coordination constraints:
- Do not claim blocked tasks.
- Do not claim more than one task per agent or sub-agent at a time.
- Only the main agent edits
ataski/. - Sub-agents MUST NOT create, claim, move, or complete tasks.
- Sub-agents MUST NOT commit changes under
ataski/. - Sub-agents MUST NOT open, update, or push PR branches.
- The main agent MUST include
done-state board updates in the canonical feature PR branch; never apply them only after merge onmain. - Do not edit unrelated task files unless explicitly requested.
- If two agents race for the same task, the first canonical board update wins; other agents must re-pick from
todo.
Plan Mode
When an agent is operating in plan mode:
- The agent MUST use Ataski to represent the plan.
- Every meaningful plan item MUST be written as an Ataski task.
- The plan MUST be split into the maximum safe level of parallelizable tasks.
- The plan is not complete until the Ataski tasks capture the full intended work.
- Do not keep extra implementation plan steps outside the Ataski board.
Git/worktree policy prerequisite:
- If project policy (for example
AGENTS.md) requires git and/or worktrees for task execution and they are unavailable, the agent MUST stop before source edits and ask the user to initialize git or enable the required worktree workflow.