Purpose
Use this skill to keep long-running implementation or research projects reliable across many agent sessions. Maintain a small set of durable project files so any compatible agent can resume work without relying on hidden chat context.
Core Principles
- Work on one feature at a time unless the user explicitly requests parallel work.
- Track every feature in
feature_list.json. - Run each feature's test/check command before marking it complete.
- Keep a human-readable progress log for recovery.
- Commit meaningful checkpoints when the environment and user instructions require git commits.
- Prefer portable files and commands over host-specific slash commands.
Harness Files
Create or maintain these files at the project root:
| File | Purpose |
|---|---|
feature_list.json |
Canonical list of features, priorities, statuses, and test results. |
init.sh / init.ps1 / init.py |
Optional project bootstrap/start command for future sessions. Prefer init.ps1 or init.py on Windows native. |
agent-progress.md |
Chronological progress notes, decisions, blockers, and next steps. |
CODING_STANDARDS.md |
Optional project-specific coding/test/review conventions. |
If the project already has Claude-specific names such as claude-progress.txt, keep them if users rely on them, but prefer the portable agent-progress.md name for new projects.
Initialize a Project
- Identify the project goal, stack, default test command, and startup command.
- Create
feature_list.jsonfrom the schema below. - Create a repeatable bootstrap if useful:
init.shfor Unix-like shells,init.ps1orinit.pyfor Windows native. Do not require Bash on Windows. - Create
agent-progress.mdwith initial context, assumptions, and next feature. - Create or update
CODING_STANDARDS.mdonly when project conventions are known or requested. - Run the bootstrap and/or test command if safe in the current environment.
Add a Feature
Append a new feature object with:
- Unique sequential ID such as
feat-001. - Category:
functional,bugfix,refactor,research, or another user-approved category. - Priority: lower number means higher priority.
- Clear description and concrete steps.
- Test/check command that proves completion.
- Initial status:
pendingandpasses: false.
Resume a Session
At the beginning of a resumed project:
- Read
feature_list.json. - Read recent git history if available.
- Read
agent-progress.mdor legacy progress logs. - Select the highest-priority feature with status other than
completed. - Run
init.sh,init.ps1,init.py, or the documented startup command when appropriate for the host OS. - Run a baseline test/check when safe, then begin work.
Complete a Feature
Before marking a feature complete:
- Verify implementation/research artifacts exist.
- Run the feature's
test_commandor a justified equivalent. - Store a concise
test_outputsummary. - Set
test_statustopassedonly on success; otherwise usefailedand leavepasses: false. - Update
agent-progress.mdwith what changed, validation, and next steps. - Commit if required by user or project policy.
File-Mode Research Harness Pattern
For large research tasks, prefer a file-mode harness instead of chat-heavy handoff:
- Create a domain data directory such as
data/<domain>/plus adepth/subdirectory. - Track run status and convergence in
data/<domain>/index.json. - Split research into independent dimensions and write each dimension to
depth/<dimension>.json. - If the user explicitly requests/allows parallel agents and the host supports them, workers should write JSON files and reply only
DONE; otherwise perform the same dimensions sequentially. - Merge depth files into a main JSON data file, export any required CSV tables, then generate deliverables.
- Validate JSON/CSV/report files before marking the feature complete.
For renewable-energy market intelligence, use $renewable-market-research, which specializes this pattern for country + technology research and full/lite report generation.
feature_list.json Schema
{
"version": "1.1",
"project": "Project name",
"description": "One-sentence project goal",
"test_command": "npm test",
"created": "YYYY-MM-DD",
"features": [
{
"id": "feat-001",
"category": "functional",
"priority": 1,
"description": "Feature description",
"steps": ["Step 1", "Step 2"],
"test_command": "npm test",
"test_status": "pending",
"test_output": "",
"status": "pending",
"passes": false
}
]
}
Allowed status values: pending, in_progress, blocked, completed.
Allowed test_status values: pending, running, passed, failed, skipped.
Use skipped only with a clear reason in test_output.
Progress Log Format
Append entries like:
## YYYY-MM-DD — feat-001 short title
- Status: in_progress/completed/blocked
- Changed: ...
- Validation: `command` → result summary
- Decisions: ...
- Next: ...
Host Portability Notes
- Codex: use normal file edits, terminal commands, plan updates, and git commits according to the current instructions.
- OpenClaw: keep the same project files; place this skill under an OpenClaw skills directory or workspace skills directory.
- Windows native: prefer PowerShell (
.ps1) or Python (.py) startup/validation scripts; avoid Bash-onlymake.sh,sed,awk,chmod, or Unix path assumptions. - Claude Code: legacy slash commands may be used if present, but do not require them for portability.