agentleFS
nuffinnuffin/hermes-task-framework/skills/task-lifecycle-discipline/SKILL.md

task-lifecycle-discipline

Skill2 starsChanged 45 days agoMITView on GitHub

Manage task lifecycle safely: find-before-create, rename/delete cascades, and index consistency.

The file

We split this skill into the rules it gives an agent

10 rules. About 0 are common, 6 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈6

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Before creating a task:

    line 28
  2. Very specific:

    Use task_api.py search <terms> against the configured task root.

    line 30
  3. Distinctive:

    Create only when no existing task matches.

    line 32
  4. Distinctive:

    Use a specific kebab-case name that includes the system/domain and deliverable.

    line 33
  5. Very specific:

    Never hand-generate hashes or metadata.

    line 49
  6. Very specific:

    Use manage_task.py status and manage_task.py reset.

    line 53
  7. Very specific:

    Update # Task:, .hermes-task.json.name, absolute references, named outputs, and related-task links.

    line 62
  8. Distinctive:

    Read task context and related-task closure.

    line 71
  9. Distinctive:

    Delete the exact task directory and regenerate indexes.

    line 74
  10. Distinctive:

    Never delete by glob, topic fragment, process output, or inferred path.

    line 76

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Task Lifecycle Discipline

Owns lifecycle policy around task-framework commands. Agents do not create, rename, or delete task directories with raw filesystem commands.

Find before create

Before creating a task:

  1. Use task_api.py search <terms> against the configured task root.
  2. Reuse a matching active task when its scope already covers the request.
  3. Create only when no existing task matches.
  4. Use a specific kebab-case name that includes the system/domain and deliverable.

Generic file-writing does not automatically require a task. Create one for durable multi-step work, explicit task requests, cross-session coordination, or task-framework pipelines.

Creation

Use only:

python3 <task-framework>/scripts/manage_task.py create <name> --desc "<goal>"

Creation must produce TASK.md, README.md, MEMORY.md, CHANGELOG.md, .hermes-task.json, input/, output/docs/, output/logs/, cache/, and scripts/, then regenerate root indexes. cache/ is task-owned reproducible working state and is preserved by a hard reset; it is never a delivery directory.

The task directory is the default filesystem boundary. A project repository, device, service, cache root, temporary worktree, or any other target outside the task directory may be read or modified only when the current user instruction explicitly names it or TASK.md lists it under ## Authorized External Targets with its allowed operations and authorization source. Never infer external scope from related-task context or a matching project name.

Never hand-generate hashes or metadata. HERMES_TASKS_ROOT is canonical; HERMES_TASKS_DIR is compatibility-only.

Status and reset

Use manage_task.py status and manage_task.py reset. Hard reset clears only output/, resets non-DONE checkboxes, preserves input/, root context files, memories/, and metadata, then reindexes.

Rename

Task rename is a lifecycle operation, not raw mv:

  1. Resolve the task through task_api.py describe.
  2. Validate the new lowercase kebab-case name and preserve the hash suffix.
  3. Copy to the new directory, verify a relative-path/type/size/SHA-256 manifest, then remove the old directory.
  4. Update # Task:, .hermes-task.json.name, absolute references, named outputs, and related-task links.
  5. Append CHANGELOG entries and regenerate indexes.

A future manage_task.py rename command should automate this procedure; until then, use task-artifact-integrity and a permanent migration script.

Delete

Deletion requires an exact resolved task path and explicit user authorization. Before deletion:

  1. Read task context and related-task closure.
  2. Confirm no required input/output or downstream reference would be lost.
  3. Archive only when requested or needed for rollback.
  4. Delete the exact task directory and regenerate indexes.

Never delete by glob, topic fragment, process output, or inferred path.

Adapter boundary

External systems use task_api.py for resolution, search, metadata, and extension fields. They do not parse directory names, edit .hermes-task.json directly, or hardcode update-index.py paths.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.