mcpField
C
cco-task

cco-task

github.com/egorfedorovAgent workflows12585 installsUpdated 1d ago
Repository

About cco-task

cco-task is a task-management skill that tracks execution state and token cost for each task in a project. Its bounded JSON state can be patched, then restored after context compaction or session resume.

Key features

  1. 01Start, switch, and complete tasks
  2. 02Track token and dollar cost per task
  3. 03Patch compact JSON execution state
  4. 04Restore state after compaction or resume
  5. 05List tasks and their costs

Use cases

  1. 01Keep task progress available after context compaction
  2. 02Hand a subagent a concise task brief
  3. 03Review token spending for project tasks

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/egorfedorov/claude-context-optimizer --skill cco-task

After installing, type/cco-taskin Claude Code to confirm it loaded.

Details

From the project README

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

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.

Comments

Markdown supported