Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/theafh/ai-modules/task_createnpx skills add theafh/ai-modules --skill task_creategit clone --depth 1 https://github.com/theafh/ai-modulesWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00058 | $0.02276 |
| Opus 5 | $0.00029 | $0.01138 |
| Sonnet 5 | $0.00012 | $0.00455 |
| Haiku 4.5 | $0.00006 | $0.00228 |
Grade A, and why
task_create scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 83 lines — stays where its author put it; the contents beside it link to each section on GitHub.
task_create
<task_create_skill>
<when_to_activate> Activate when the user wants exactly one task file written:
- "Make / create / add / file / write a task (or todo) for X."
- "Capture this as a task" about a single piece of upcoming work.
- A single follow-up item that surfaced mid-conversation and should persist as one task file.
Route to the task skill instead when the user wants to list, query, update, refine, finish, implement, defer, archive, or lint tasks, or to derive several tasks from a larger document in one pass — those are the broader backlog workflows. Route to task_auto_check when the user wants an existing task repaired until task_check reports ready. Route to task_select when the user wants a recommendation about what backlog item to work on next.
</when_to_activate>
<file_format>—<naming>,<frontmatter>(including thedate-stampedcreated/updated),<markdown_policy>, and the<body>sections.<discover>— locate or scaffoldtasks/through the bundleddiscover_tasks.sh/init_tasks.sh.<create>'s<prior_art>— the two-tier duplicate / already-done gate run before writing.<create>'s<lossless_conversion>— the source-fidelity contract that fires whenever a task is derived from source material. This single-task on-ramp is the single-task-from-a-source path that contract names, so apply it verbatim from the base skill rather than restating it here, keeping the two in step.<readiness_checklist>— the lens the drafted body is self-checked against before the file is written.<lint>— the bundledlint.pyand what each finding means.
These assets ship in the same plugin as task_create, so they are present wherever task_create is.
<path_resolution>
The bundled scripts (discover_tasks.sh, init_tasks.sh, lint.py) ship in scripts/ next to the base task skill's SKILL.md, not next to this one. After reading that base SKILL.md (per <authority>), resolve each script's absolute path by combining the directory you loaded it from with scripts/<script-name> and invoke that absolute path — never a bare scripts/..., which resolves against the current working directory (the target project) rather than the skill, and so finds the project's own scripts/ or nothing. If the first invocation reports a missing file, re-resolve the absolute path once before treating the script as failed.
</path_resolution>
- Discover. Run the
taskskill's<discover>step to resolvetasks/, scaffolding it when it is missing. - Gather. Confirm the single item to capture and collect enough context to fill the
<body>sections to the base skill's self-sufficiency bar: the file on its own is enough to implement, with everything actually available at implementation time — the codebase, the project's standing instructions, the user — staying in play. When the context is too thin for that, ask one sharp clarifying question, then proceed. - Prior-art gate. Run the
taskskill's<prior_art>step: a fastrgscan oftasks/+tasks/archive/that escalates to an in-depth project analysis only when the scan hits. When a match shows the work is already an open task, partially covered, already implemented, or already deferred, surface it with evidence and let the user decide how to proceed before writing — never auto-resolve. - Scope and name. Pick a
<scope>from the groupings already present intasks/, and a compact<name>that is unique across bothtasks/andtasks/archive/. List both directories once to keep the name collision-free. - Timestamp. Run
date +%Y-%m-%dT%H:%M:%Sonce and use its output verbatim for bothcreatedandupdated. - Self-check the draft. Judge the drafted body against the
taskskill's<readiness_checklist>and resolve every finding derivable from the authoring-time material before writing. When the Ambiguity / under-specification lens finds one genuinely-open decision the authoring material cannot settle, carry it forward as one labeled "Open decision:" whose label carries its options, a suggested default, and the why-open clause the base Decide or label rule requires, so the file written already passes the lenstask_checkwill apply. Zero carried-forward decisions is the expected outcome of this step and one is the ceiling, so settle every other fork here against that rule's evidence base rather than deferring it to a label. - Write. Create
<tasks>/<scope>_<name>.mdwithstatus: openandreported-byresolved via the base skill's<user_name_chain>, then write a body that opens with a single# Titleand fills Goal / Context / Approach / Acceptance per thetaskskill's<body>. When filling## Contextand any cross-references, apply the cross-link discipline and the soft-pointer rule from thetaskskill's<markdown_policy>, so each link to another task earns its place and each pointer to file content survives edits to its target. - Lint. Run the linter per the
taskskill's<lint>step (lint.py --quiet) and resolve every blocking finding before reporting the file as created. - Offer open-decision reconciliation. After the written file is lint-clean, surface the Self-check the draft step's carried-forward "Open decision:" in one line and pair it with a concrete reconciliation suggestion: which option to take and why, which concrete value a vague pointer should use, or which requirement to add. This step is the authoring-time surface the base Decide or label rule's dual obligation names, so a carried-forward decision always reaches the user here rather than resting in the written file alone. When that suggestion rests on evidence that rule's tiers settle, say so and recommend resolve-now: the decision belonged reconciled back at Self-check the draft, and taking the suggestion restores that outcome. Ask the user to resolve it now or defer it. Resolve-now applies the minimum fix to the just-written file, folding in any user modification, through the base
<update>Applying check findings flow: per-number accept / reject / modify, one update round, oneupdatedbump, and one re-lint. Defer leaves the decision in the file fortask_check. When the self-check carried no open-decision residue, say so in one line and finish without prompting. Keep this step opt-in and non-blocking: record the user's choice while keeping the created file available either way.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 83 lines · 58 tokens per session scan A d45dbd6f3671
task_create is a skill published in the GitHub repository theafh/ai-modules (38 stars, last pushed 2d ago), licensed MIT. It adds 58 tokens to every session and 2,276 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
wayfinder
Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.
setup-matt-pocock-skills
Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.
accessibility
Consolidated accessibility skill entrypoint for WCAG 2.2, ARIA Authoring Practices, cognitive accessibility, Section 508, EN 301 549, design intent verification, and the Accessibility Planner workflow.
release-notes
Generate user-facing release notes from tickets, PRDs, or changelogs. Creates clear, engaging summaries organized by category (new features, improvements, fixes). Use when writing release notes, creating changelogs, announcing product updates, or summarizing what shipped.
retro
Facilitate a structured sprint retrospective — what went well, what didn't, and prioritized action items with owners and deadlines. Use when running a retrospective, reflecting on a sprint, creating action items from team feedback, or learning how to run effective retros.
bug-triage
Read all open bugs in production/qa/bugs/, re-evaluate priority vs. severity, assign to sprints, surface systemic trends, and produce a triage report. Run at sprint start or when the bug count grows enough to need re-prioritization.