Tasks — per-task context, cost, and execution state

SkillProductivity

Organize work by task, track tokens/cost per task, and keep a small patchable execution state that is re-injected after /compact (SKILL.state-style), start a task, patch its state, list tasks, or mark the active one done. Pairs with /cco-pack to load minimal context per task.

Use Tasks — per-task context, cost, and execution state in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add Tasks — per-task context, cost, and execution state and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the Tasks skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Tasks — per-task context, cost, and execution stateStart free

What this skill tells your AI

The instructions your AI receives, as published by egorfedorov/claude-context-optimizer in skills/cco-task/SKILL.md and read by Ahel’s review.

A task is a named unit of work. While a task is active, the tokens the session spends are attributed to it, so the Control Center (/cco) can show cost per task, not just per session.

Each task also carries a small JSON execution state — goal, what is done, what is open, the next action. You update it with patches instead of re-deriving progress from the transcript, it is capped at ~1K tokens so it never grows with the number of steps, and it is re-injected verbatim right after /compact (and on --resume). That is the SKILL.state idea (Google / Purdue, 2026) applied where a plugin can apply it: the compaction summary is lossy and free-form; the state is exact and bounded.

Commands

Parse the user's argument and run the matching command (working directory scopes the tasks to the current project):

Start / switch task (also closes the previous active task):

node ${CLAUDE_PLUGIN_ROOT}/src/tasks.js add "<task name>"

After starting, suggest packing the minimal context for it: /cco-pack "<task name>", and seed the state with the goal and the plan: /cco-task patch '{"goal": "...", "plan": ["...", "..."], "next": "..."}'.

Patch the execution state (set keys; null deletes a key):

node ${CLAUDE_PLUGIN_ROOT}/src/tasks.js patch '{"done": ["read auth.ts"], "next": "write the failing test", "scratch": null}'

The patch must be a JSON object. If the state would exceed the cap the patch is rejected — prune finished keys with null first.

Show the current state:

node ${CLAUDE_PLUGIN_ROOT}/src/tasks.js state

List tasks (newest first, with per-task tokens + $):

node ${CLAUDE_PLUGIN_ROOT}/src/tasks.js list

Complete the active task:

node ${CLAUDE_PLUGIN_ROOT}/src/tasks.js done

State discipline (what makes it worth keeping)

  • Keep it a state, not a log: done, open, next, decisions, files — facts needed to continue, not the history of how you got there. Reasoning is ephemeral; the state is what survives.
  • Patch after each milestone (a test passing, a decision made, a file finished), and delete keys the moment they stop mattering.
  • After /compact the SessionStart hook prints the active task's state into the new context automatically — treat it as authoritative over the summary.
  • When delegating to a subagent, pass the state (not the conversation) as the brief; it is already the minimal, current description of the task.

Flow to recommend

  1. /cco-task add "implement X" — start the task
  2. /cco-pack "implement X" — load only the files that task needs
  3. /cco-task patch '{"goal": "...", "next": "..."}' — seed the state; patch as you go
  4. /cco — see budget, savings, and this task's cost
  5. /cco-task done — freeze the task's token/$ total

Only one task is active per project at a time; starting a new one finalizes the previous task's cost automatically.

Signals

GitHub stars
114
Forks
9
Last commit
Sep 2026
Advanced
Item type
skill
Key
cco-task
Source
github.com/egorfedorov/claude-context-optimizer