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 commands/mozurok/fhorja.dev/task-closegit clone --depth 1 https://github.com/Mozurok/fhorja.devWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/mozurok/fhorja.dev/task-close)<a href="https://agentmods.dev/commands/mozurok/fhorja.dev/task-close"><img src="https://agentmods.dev/badge/commands/mozurok/fhorja.dev/task-close.svg" alt="Measured on agentmods" height="20"></a>What 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.00177 | $0.07994 |
| Opus 5 | $0.00088 | $0.03997 |
| Sonnet 5 | $0.00035 | $0.01599 |
| Haiku 4.5 | $0.00018 | $0.00799 |
Grade A, and why
task-close 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 yesterday.
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 — 202 lines — stays where its author put it; the contents beside it link to each section on GitHub.
task-close
Act as a senior/staff engineering workflow closure operator.
Goal:
Perform the terminal task lifecycle transition for a finished engineering task: verify the spec done-conditions, set TASK_STATE.md to its final closed state, and move the task folder from active/ to archive/. This is the symmetric counterpart to task-init and the only official way to close a whole task.
This command is distinct from slice-closure (which closes a single slice and may route toward delivery) and from where-we-at (which only assesses progress). Use task-close exactly once per task, when the whole task is ending.
Mandatory context bootstrap (before any output):
- Read these sections in
WORKFLOW_OPERATING_SYSTEM.mdfirst:## LLM execution contract## Editor mode policy(mode definitions only; the tool mapping table is lazy-loaded inwos/editor-mode-mappings.mdand needed only for non-Claude-Code tools)## Global output contract(including Adaptive handoff and Mode selection rule)## Cross-cutting workflow guardrails
- Read additional sections needed for closure:
## When a task moves todoneand `## When a task stays in `active(the done-conditions gate)## Repository structure(theactive/vsarchive/convention;done/is a legacy alias)## Project-level memory(to keep project pointers valid after the move, and for theknowledge/folder write convention; full detail inwos/project-level-memory.md)
- Read the active task's memory:
TASK_STATE.md(current phase, last completed step, recommended next step, open blockers)IMPLEMENTATION_PLAN.mdandSLICES/closure status (every slice must be closed or explicitly deferred to a follow-up task)DECISIONS.md(confirm no decision is still open)SOURCE_OF_TRUTH.md## Workspacesection, if present (the worktree path and task branch to tear down per ADR-0074)
- Read the
commands/directory command inventory to ensure command names and availability are current. - Align all routing recommendations and next-command suggestions with the current command set.
- Official next-command names only: every recommended next command (including the handoff
Run nowline) MUST be the basename of an existingcommands/<name>.mdfile in this workflow repository. Never invent names (invalid:task-archive,close-task,finish).
Required inputs:
- active task folder path (
projects/<client>__<project>/active/YYYY-MM-DD_<task-slug>/) - TASK_STATE.md (current)
- IMPLEMENTATION_PLAN.md and SLICES/ closure status, if present
- evidence (or explicit user waiver) for each done-condition: implementation complete, review complete, team approval, merge into the target integration branch
- intended editor mode (Agent to actually move the folder and persist final state; Ask or Plan to dry-run the proposal without touching the filesystem)
Done-conditions gate (from the spec ## When a task moves to done``):
- implementation complete
- review complete
- team approval happened
- merge into the target integration branch happened
TASK_STATE.mdupdated to final state (this command performs this one)
- For each condition, classify exactly one of: met (cite evidence: commit, PR, slice note), not-met, or not-applicable / waived (user-confirmed for this context).
- If any condition is not-met and not explicitly waived by the user, do NOT archive. Return a gate-blocked result and route to the smallest unblocking action (
review-hardif review is missing,pr-packageif the PR is not prepared, or an explicit user confirmation for approval/merge). - Solo/local auto-waiver (P0, D-2, 2026-07-18). WHEN all three solo/local signals hold (the product repo has no configured git remote, there is no integration branch, and the task folder is not tracked by the workflow repository) THEN conditions 3 (team approval) and 4 (merge into integration branch) AND the knowledge-note topic/tag confirmation (see the Knowledge-layer note rule below) are AUTO-WAIVED and recorded verbatim in the final
TASK_STATE.mdas a solo-delivery auto-waiver, so a solo, local-only delivery does not stall on approvals that do not exist. This replaces the prior explicit-paste requirement for the solo case; WHEN any of the three signals is absent (a remote exists, an integration branch exists, or the folder is tracked), fall back to requiring an explicit maintainer waiver recorded verbatim. The auto-waiver NEVER covers the experience-verdict floor below (auser-facing-content/new-user-facing-surfacedeliverable still needs its recorded human PASS) nor the commit-evidence floor (uncommitted real work is still a bounded deferral, not auto-archived): it collapses only the team-approval, merge, and knowledge-note-confirmation ceremony. - Closure floors (lazy-loaded, UNCONDITIONAL;
wos/closure-floors.task-close.md, per ADR-0134 and ADR-0138). Loadwos/closure-floors.task-close.mdand apply every floor in it exactly as written there (a generated view: it already contains only this command's variants, and is rebuilt from the canonical floors file byscripts/build-closure-floor-views.py); the task record SHALL cite which subsections were read and applied (G3 safeguard: the lazy load never degrades into a paraphrase). The load is unconditional, not signature-gated: unlike the platform floors above, every floor below is evaluated on every task. The six, each with its trigger, its routing, and where the outcome is a recorded string rather than a route, that string:- Commit-evidence floor (ADR-0084, bounded deferral ADR-0100, no-VCS waiver ADR-0128,
ref-attestedroute ADR-0133). Fires always, even when merge (condition 4) is waived. Satisfied bycommit-reforref-attested. Routing has two branches and both are required: where a human turn is available it routes tobranch-commit --apply, the only path in this repository that can create a commit; an unattended run SHALL route toref-attested, the only one of the two it can reach. On a no-VCS workspace, ask for archive-with-waiver instead. Real work with neither class is a bounded deferral recorded verbatim asdeferred: pending human commit (<one-line context>). - Experience-verdict floor (ADR-0091). Fires WHEN the closure includes a deliverable tagged
user-facing-contentornew-user-facing-surface. Routes to the experience-verdict check; machine-green evidence SHALL NOT substitute for the human verdict. WHILE the Godot task signature is present this floor stands down in favor of the D-4 feel-verdict floor above. - Entry-path probe floor (ADR-0091). Fires WHEN the closure includes a deliverable tagged
new-user-facing-surface. Routes the operator to run the real entry path once. WHILE the Godot task signature is present this floor stands down in favor of the D-4 feel-verdict floor above. - Test-strategy consumption floor (F-6, ADR-0089). Fires WHEN the task folder contains a
TEST_STRATEGY.md. Routes toimplement-slice-complement, or the waiver is recorded first. - Integrity floor (blocking; v3 wave3 item S1). Fires always: run
bash scripts/verify-substrate-batch.sh <task-folder>. A non-zero exit blocks the archive unless the finalTASK_STATE.mdrecordsintegrity-waiver: N advisories unresolved (<one-line reason>), naming the failing validator(s). - Unresolved-revision floor (ADR-0109, D-10). Fires WHEN
DECISIONS.md ## Decision historyholds a revision entry still marked[OPEN](or[OPEN: equal-rank, escalate]). Routes todecision-interviewordirection-adjust, or the entry is tagged[WAIVED: <reason>].
- Commit-evidence floor (ADR-0084, bounded deferral ADR-0100, no-VCS waiver ADR-0128,
- Platform runtime floors (lazy-loaded; ADR-0085, ADR-0089, ADR-0106, ADR-0127). WHEN the active task matches the Godot signature (a
project.godotor.gdcodebase, orGODOT_SCENE_PLAN.md/GODOT_RUNTIME_VERIFY.mdin the task folder), the mobile signature (themobile-runtime-targettag, or apackage.jsonwith anexpoorreact-nativedependency plus a generatedandroid/orios/folder), the web signature (theweb-runtime-targettag, or a slice scope touching a servable frontend surface in a project whose manifest declares a web build or preview script), or the backend HTTP signature (thehttp-runtime-targettag, or a slice scope touching an HTTP route handler, controller, or router definition), loadwos/platform-runtime-floors.mdand apply its task-close variants (whole-task backstops for Godot runtime-gate, Godot feel-verdict, Godot tier-declaration, mobile-runtime-gate, web-runtime-gate, backend-runtime-gate) exactly as written there; the task record SHALL cite which subsection was read and applied (G3 safeguard: the lazy load never degrades into a paraphrase). Inert on a task with no platform signature. The generalized closure floors in this file are unaffected. - Multi-repo task: condition 4 must hold for every repository in scope before archiving; confirm each repo's merge (or waiver) explicitly.
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.
- yesterday First seen · 202 lines · 0 tokens per session scan A 7dcbeee2f8da
task-close is a command published in the GitHub repository Mozurok/fhorja.dev (6 stars, last pushed 20d ago), licensed MIT. It adds 177 tokens to every session and 7,994 once invoked, about $0.0009 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-09-03.
Other commands, from other repositories
constitution
根据交互输入或已提供原则创建或更新项目章程,并确保相关模板保持同步。.
cross-research
Two-phase multi-model research. Phase A fans codex+gemini in parallel (benchmarks + citations angles); Phase B synthesises via fresh Claude session. Usage: /cross-research [--with | list | compare].
memory-why
Show why a memory recall returned what it did -- BM25 vs vector vs hybrid provenance.
kiro-steering-custom
Command "kiro-steering-custom" from gotalab/cc-sdd, covering kiro custom steering creation, workflow, available templates, steering principles and tool guidance.
spec-requirements
Generate comprehensive requirements for a specification.
ijfw-metrics
Show IJFW token / cost / session metrics over a time window. Reads .ijfw/metrics/sessions.jsonl via the ijfwmetrics MCP tool.