task-close

task-close is a skill for Claude Code from Mozurok/fhorja.dev. It costs 177 tokens per session (8,237 once invoked), scanned A, original, MIT.

A task-closing workflow that checks whether an engineering task is finished, marks its state as closed, and moves its folder to an archive.

In plain words
What is it for?
Use it to verify completion conditions, update TASKSTATE.md, and archive a finished task.
Why use it?
It prevents unfinished tasks from being closed and keeps active work separate from completed records.

Skill for Claude Code

Written for Claude Code: installed under .claude/.

Good fit Use it to verify completion conditions, update TASKSTATE.md, and archive a finished…

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/mozurok/fhorja.dev/task-close
Install

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.

Any agent
npx skills add Mozurok/fhorja.dev --skill task-close
Clone the repo
git clone --depth 1 https://github.com/Mozurok/fhorja.dev

Made for: Claude Code.

Wrote 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.

agentmods badge for task-close

README.md
[![agentmods](https://agentmods.dev/badge/skills/mozurok/fhorja.dev/task-close.svg)](https://agentmods.dev/skills/mozurok/fhorja.dev/task-close)
Your own site
<a href="https://agentmods.dev/skills/mozurok/fhorja.dev/task-close"><img src="https://agentmods.dev/badge/skills/mozurok/fhorja.dev/task-close.svg" alt="Measured on agentmods" height="20"></a>
Per session 177 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 8,237 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00177 $0.08237
Opus 5 $0.00088 $0.04118
Sonnet 5 $0.00035 $0.01647
Haiku 4.5 $0.00018 $0.00824

Measured 3d ago against content hash ad491bd9d25e, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

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 3d 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.

.claude/skills/task-close/SKILL.md · 224 lines

How it starts

The opening of the file, as written. The whole thing — 224 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Output contract, in brief. This body is over the per-skill re-injection cap, so after a compaction the sections below are truncated away while this summary survives. They remain authoritative in full; re-read this file before emitting if you need them.

  • Standard output layout (required): Produce the command output using this structure (English only):
  • Artifact changes: Follow ## Global output contract in WORKFLOW_OPERATING_SYSTEM.md for APPLIED / PROPOSED / SKIP rules.
  • Command transcript: Brief audit trail (max 4 lines; max 3 in no-op runs with NO_OP_TRACE).
  • Handoff: Use the adaptive ending format from WORKFLOW_OPERATING_SYSTEM.md ## Global output contract (Mode A compact or Mode B full per...
  • Definition of done (command output): Done-conditions checklist is complete: each of the five conditions has a verdict (met / not-met / waived) with evidence or an expl...

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.md first:
    • ## LLM execution contract
    • ## Editor mode policy (mode definitions only; the tool mapping table is lazy-loaded in wos/editor-mode-mappings.md and 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 to done and `## When a task stays in `active (the done-conditions gate)
    • ## Repository structure (the active/ vs archive/ convention; done/ is a legacy alias)
    • ## Project-level memory (to keep project pointers valid after the move, and for the knowledge/ folder write convention; full detail in wos/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.md and SLICES/ 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 ## Workspace section, 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 now line) MUST be the basename of an existing commands/<name>.md file 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``):

  1. implementation complete
  2. review complete
  3. team approval happened
  4. merge into the target integration branch happened
  5. TASK_STATE.md updated 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-hard if review is missing, pr-package if 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.md as 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 (a user-facing-content / new-user-facing-surface deliverable 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). Load wos/closure-floors.task-close.md and 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 by scripts/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-attested route ADR-0133). Fires always, even when merge (condition 4) is waived. Satisfied by commit-ref or ref-attested. Routing has two branches and both are required: where a human turn is available it routes to branch-commit --apply, the only path in this repository that can create a commit; an unattended run SHALL route to ref-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 as deferred: pending human commit (<one-line context>).
    • Experience-verdict floor (ADR-0091). Fires WHEN the closure includes a deliverable tagged user-facing-content or new-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 to implement-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 final TASK_STATE.md records integrity-waiver: N advisories unresolved (<one-line reason>), naming the failing validator(s).
    • Unresolved-revision floor (ADR-0109, D-10). Fires WHEN DECISIONS.md ## Decision history holds a revision entry still marked [OPEN] (or [OPEN: equal-rank, escalate]). Routes to decision-interview or direction-adjust, or the entry is tagged [WAIVED: <reason>].
  • Platform runtime floors (lazy-loaded; ADR-0085, ADR-0089, ADR-0106, ADR-0127). WHEN the active task matches the Godot signature (a project.godot or .gd codebase, or GODOT_SCENE_PLAN.md / GODOT_RUNTIME_VERIFY.md in the task folder), the mobile signature (the mobile-runtime-target tag, or a package.json with an expo or react-native dependency plus a generated android/ or ios/ folder), the web signature (the web-runtime-target tag, 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 (the http-runtime-target tag, or a slice scope touching an HTTP route handler, controller, or router definition), load wos/platform-runtime-floors.md and 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.

Read the full file on GitHub · 224 lines

Changes

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.

  1. 3d ago First seen · 224 lines · 177 tokens per session scan A ad491bd9d25e

Subscribe to this mod's changes

task-close is a skill published in the GitHub repository Mozurok/fhorja.dev (6 stars, last pushed 21d ago), licensed MIT. It adds 177 tokens to every session and 8,237 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.

Related

Other skills, from other repositories

issue-creation

Trigger: issue creation, bug reports, feature requests, or issue approval. Create and triage GitHub issues from repository evidence.

Gentleman-Programming/gentle-ai · 30 tokens

sdd-tasks

Break an SDD change into implementation tasks. Trigger: orchestrator launches task planning for a change.

Gentleman-Programming/gentle-ai · 25 tokens

systemic-issue-triage

Trigger: new issue, bug report, triage, backlog, issue flood, community report, root cause, dead-end, blocked user. Attack issues by root class, never one-by-one; fixes must shrink the system, not grow it.

Gentleman-Programming/gentle-ai · 57 tokens

ijfw-workflow

Use when the user says: 'build', 'create', 'plan', 'new project', 'brainstorm', 'design', 'UI', 'website', 'dashboard', 'app', 'help me build', 'launch', 'book', 'campaign', or anything project-level. Skill body decides Quick vs Deep path.

FerroxLabs/ijfw · 70 tokens

ijfw-plan

Use when the user says 'plan this', 'plan it', 'make a plan', 'let's plan', 'draft a plan', 'how should we tackle this', 'break this down', or invokes '/ijfw-plan'. Produces a falsifiable PLAN.md (software, book, campaign, design, research) with task breakdown, dependency wave-table, and success criteria — gated by…

FerroxLabs/ijfw · 95 tokens

ijfw-new-milestone

Use when the user says: 'new milestone', 'next milestone', 'plan milestone', 'start milestone', 'begin v1.2', 'kick off next release', 'next chapter', 'next campaign wave', 'next design tier', /ijfw-new-milestone.

FerroxLabs/ijfw · 63 tokens