task-lifecycle-discipline
Skill2 starsChanged 45 days agoMITView on GitHub
Manage task lifecycle safely: find-before-create, rename/delete cascades, and index consistency.
In this repository15 other files it gives its agents.
- compact-directory-memorySkill
- task-archaeologySkill
- task-artifact-integritySkill
- task-aware-project-workSkill
- task-context-storageSkill
- task-cross-machine-syncSkill
- task-external-repos-patternSkill
- task-frameworkSkill
- task-lifecycle-edge-casesSkill
- task-lifecycle-portabilitySkill
- task-nested-subtask-lifecycleSkill
- task-requirement-intakeSkill
- task-root-git-operationsSkill
- task-timestamp-conventionSkill
- task-trackerSkill
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
- Distinctive: line 28
Before creating a task:
- Very specific: line 30
Use task_api.py search <terms> against the configured task root.
- Distinctive: line 32
Create only when no existing task matches.
- Distinctive: line 33
Use a specific kebab-case name that includes the system/domain and deliverable.
- Very specific: line 49
Never hand-generate hashes or metadata.
- Very specific: line 53
Use manage_task.py status and manage_task.py reset.
- Very specific: line 62
Update # Task:, .hermes-task.json.name, absolute references, named outputs, and related-task links.
- Distinctive: line 71
Read task context and related-task closure.
- Distinctive: line 74
Delete the exact task directory and regenerate indexes.
- Distinctive: line 76
Never delete by glob, topic fragment, process output, or inferred path.
≈ “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.
Files
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:
- Use
task_api.py search <terms>against the configured task root. - Reuse a matching active task when its scope already covers the request.
- Create only when no existing task matches.
- 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:
- Resolve the task through
task_api.py describe. - Validate the new lowercase kebab-case name and preserve the hash suffix.
- Copy to the new directory, verify a relative-path/type/size/SHA-256 manifest, then remove the old directory.
- Update
# Task:,.hermes-task.json.name, absolute references, named outputs, and related-task links. - 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:
- Read task context and related-task closure.
- Confirm no required input/output or downstream reference would be lost.
- Archive only when requested or needed for rollback.
- 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.
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
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.

