tasks — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited tasks (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The user has an approved SPEC.md. Your job is to turn it into:
TASKS.md with phases, parallel tracks, sized tasks, dependencies, labels, and milestones.You are not writing code. You are not scaffolding files inside the directories. You are not committing anything to git.
/ank:third-degree → /ank:spec → /ank:tasks → (build with Claude Code) → /ank:review-board
(this)This skill runs only after SPEC.md has been written and explicitly approved by the user. If there's no SPEC.md (root or docs/spec/<slug>.md), refuse and point at /ank:spec. If a SPEC.md exists but the conversation has no record of approval, ask once: "I see SPEC.md at <path> — has this been approved? Reply yes to proceed."
Mirror the spec's location:
| Spec location | Tasks location |
|---|---|
./SPEC.md (product-level) | ./TASKS.md |
./docs/spec/<slug>.md (feature-level) | ./docs/spec/<slug>.tasks.md |
If TASKS.md already exists, ask once before overwriting.
Every TASKS.md the skill produces follows the same structure. Preserve all of these elements — they're what makes the file parallel-friendly and trackable:
S = hours, M = 1-2 days, L = 3+ days), Depends on: (hard code deps that block merge), Coordinate with: (soft interface agreement, no code dep), Unblocks: (downstream tasks that wait on this).├──, └──, arrows). Lets a reader see the critical path at a glance.area:<track>, size:S/M/L, blocked, with one-line "Purpose" column.Run these checks in parallel at the start:
test -f SPEC.md || ls docs/spec/*.md 2>/dev/null — confirm a spec existsgit remote -v — confirm the repo has a remote configuredgh --version 2>/dev/null — confirm gh CLI is installedgh auth status 2>/dev/null — confirm authenticationgh repo view --json nameWithOwner -q .nameWithOwner 2>/dev/null — confirm gh can see the current repoBranch on the results:
/ank:spec.Written:TASKS.mdwith N tasks. To create matching GitHub issues and the project board, rungh auth login(or install gh from <https://cli.github.com>), then re-run/ank:tasks— I'll pick up from issue creation and backfill the issue numbers into TASKS.md.
Read the spec end-to-end. In particular, study:
Propose, in chat:
area:<track>, size:S/M/L, blocked)Print the proposal as a tight bulleted summary. Stop. Let the user redirect track names, phase splits, or scope. Only proceed when they say "looks good, draft tasks" or equivalent.
Write the file using the structure described in "TASKS.md shape" above:
[ ] **T-NN** `commit-style title size with sub-bullets for scope and _Unblocks_` line.### Track X — <name> per parallel stream, each containing its task list in dependency order.├──, └──, arrows) showing inter-task edges. Same shape as the reference exemplar.area:*, size:*, status labels.Task IDs are sequential across all phases (T-01, T-02, …). Do not skip numbers — they must map 1:1 to GitHub issue numbers in Stage 5.
Size each task by gut feel: S = hours, M = 1-2 days, L = 3+ days. Don't sandbag — if a task feels like a week, it's an L and probably should be split.
Deps are derived, not invented. Read them from the spec's module layout and build order: if module B's public API uses types defined in module A, B depends on A. If two modules share an interface without code coupling, that's "Coordinate with" — soft, no merge ordering required.
After writing:
Written: TASKS.md (N tasks across Phase 0/1/2).Review TASKS.md and reply with "approved" to create GitHub issues and the project board, or send edits and I'll revise.
Anything but explicit approval = edits; revise and stop again.
After approval, before any `gh` command that creates state, print the planned operations:
About to create on <owner>/<repo>:
• N issues (T-01 … T-NN), each labeled per the labels table
• 1 GitHub Project board: "<product-name> v0"
• Add all N issues to the project, grouped by milestone
Reply "create" to proceed, or send edits.Wait for an explicit create / ship it / go ahead. Anything else = stop.
Once confirmed, execute in this order:
gh label create <name> --description "<desc>" --color <hex>. Use neutral colors. Skip if gh label list already includes them.gh issue create --title "<title>" --body "<body>" --label "<labels>".**Depends on:** #X, #Y lines if applicable, **Coordinate with:** #Z lines if applicable, and a backlink to the spec section.T-NN maps to #NN (typically the first task you create gets the next free issue number; if the repo already has issues, the mapping is offset). If mapping is offset (e.g., T-01 → #15), stop and report:Heads up: this repo already has issues, so T-01 maps to #15, T-02 to #16, … Replybackfilland I'll rewrite TASKS.md with the actual issue numbers, orcancelto delete the created issues and start fresh elsewhere.
Don't delete unprompted — the user owns that call.
**T-NN** headers with **[T-NN #N](https://github.com/<owner>/<repo>/issues/N)** and update the dependency map ASCII art to use the real #N references.gh project create --owner <owner> --title "<product> v0". Capture the project number. If gh project fails (older gh, missing scope), fall back to creating a classic Projects board via API or just report "project creation skipped — please create manually and add the milestone issues."gh project item-add <number> --owner <owner> --url <issue-url> per issue. Group by milestone in a "Status" or "Milestone" field if the gh version supports custom fields.Read the spec's package layout section (typically §3 in library specs, §5/§8 in SaaS specs — find the ASCII tree). For every directory in the tree, run mkdir -p <path>. Do not create files inside. No __init__.py, no placeholder READMEs, no stubs.
If the layout includes files at the leaves (e.g., loop.py), still only create the parent directory. The user (or Claude Code in build phase) owns file creation.
Print a one-screen summary:
✓ TASKS.md written (N tasks)
✓ N GitHub issues created on <owner>/<repo>
✓ Project board: <url>
✓ Directory scaffold: <count> directories created from SPEC §<n> layout
Next: pick up T-01 (#1) and start building. /ank:review-board after you ship a feature.Stop. Don't propose starting on T-01.
mkdir -p only. No touch, no placeholder content.feat:, chore:, feat(scope):) are encouraged./ank:spec first. Tasks without a spec drift instantly.When gh is missing or unauthenticated, the skill must still be useful. Producing TASKS.md is 80% of the value — the GitHub side-effects are a nicety. Make the degraded path feel intentional, not broken:
**T-NN** headers, no issue links yet)> Issue numbers pending — re-run /ank:tasks after \gh auth login\ to create issues and backfill links.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.