| name | clawpm |
| description | Multi-project task and research management (JSON-first CLI) |
| user-invocable | true |
| metadata | {"openclaw":{"requires":{"bins":["clawpm"]},"emoji":"📋","install":[{"id":"uv","kind":"uv","package":"git+https://github.com/malphas-gh/clawpm","bins":["clawpm"],"label":"Install clawpm (uv)"}]}} |
ClawPM Skill
Multi-project task management. All commands emit JSON by default; use -f text for human-readable output.
First-Time Setup
clawpm setup
clawpm setup --check
Override portfolio location with CLAWPM_PORTFOLIO env var.
Creating Projects
Projects are directories with a .project/ folder. They don't need to be git repos.
Initialize in any directory
cd /path/to/my-project
clawpm project init
clawpm project init --id myproj
From a git clone (auto-init)
Git repos under ~/clawpm/projects/ auto-initialize on first use:
git clone git@github.com:user/repo.git ~/clawpm/projects/repo
cd ~/clawpm/projects/repo
clawpm add "First task"
Discover untracked repos
clawpm projects list --all
Quick Start
clawpm status
clawpm next
clawpm start 42
clawpm done 42
clawpm use my-project
clawpm status
Top-Level Commands (Shortcuts)
| Command | Equivalent | Description |
|---|
clawpm add "Title" | clawpm tasks add -t "Title" | Quick add a task |
clawpm add "Title" -b "desc" | clawpm tasks add -t "Title" -b "desc" | Add with body |
clawpm add "Title" --parent 25 | - | Add subtask |
clawpm done 42 | clawpm tasks state 42 done | Mark task done |
clawpm start 42 | clawpm tasks state 42 progress | Start working |
clawpm block 42 | clawpm tasks state 42 blocked | Mark blocked |
clawpm next | clawpm projects next | Get next task |
clawpm status | - | Project overview |
clawpm context | - | Full agent context |
clawpm use <id> | - | Set project context |
Project Auto-Detection
ClawPM automatically detects your project from (in priority order):
- Subcommand flag:
clawpm tasks list --project clawpm
- Global flag:
clawpm --project clawpm status
- Current directory: Walks up looking for
.project/settings.toml
- Auto-init: If in untracked git repo under project_roots, auto-initializes
- Context: Previously set with
clawpm use <project>
Short Task IDs
You can use just the numeric part of a task ID:
42 → CLAWP-042 (prefix derived from project ID)
CLAWP-042 → CLAWP-042 (full ID works too)
Subtasks
clawpm add "Subtask" --parent 25
clawpm tasks split 25
clawpm done 25
clawpm done 25 --force
Subtasks move with parent on state change (done/blocked moves entire directory).
Agent Context (Resuming Work)
Get everything needed to resume work in one command:
clawpm context
clawpm context -p myproj
Returns JSON with: project info + spec, in-progress/next task, blockers, recent work log, git status, open issues.
Workflow Example
clawpm context
clawpm start 42
git add . && git commit -m "feat: ..."
clawpm done 42 --note "Completed"
clawpm log commit
Hit a blocker:
clawpm block 42 --note "Need API credentials"
Full Command Reference
Projects
clawpm projects list [--all]
clawpm projects next
clawpm project context [project]
clawpm project init
Tasks
clawpm tasks
clawpm tasks list [-s open|done|blocked|progress|all] [--flat]
clawpm tasks show <id>
clawpm tasks add -t "Title" [--priority 3] [--complexity m] [--parent <id>] [-b "body"]
clawpm tasks edit <id> [--title "..."] [--priority N] [--complexity s|m|l|xl] [--body "..."]
clawpm tasks state <id> open|progress|done|blocked [--note "..."] [--force]
clawpm tasks split <id>
Work Log
clawpm log add --task <id> --action progress --summary "What I did"
clawpm log tail [--limit 10]
clawpm log tail --all
clawpm log tail --follow
clawpm log last
clawpm log last --all
clawpm log commit [-n 10]
clawpm log commit --dry-run
clawpm log commit --task <id>
Note: State changes (start/done/block) auto-log to work_log with git files_changed.
Research
clawpm research list
clawpm research add --type investigation --title "Question"
clawpm research link --id <research_id> --session-key <key>
Issues
clawpm issues add --type bug --severity high --actual "What happened"
clawpm issues list [--open]
Sessions (transcript extraction)
clawpm sessions extract
clawpm sessions extract --force
clawpm sessions list
clawpm sessions list --processed
clawpm sessions process <id-prefix>
clawpm sessions process --all
Admin
clawpm setup
clawpm setup --check
clawpm status
clawpm context
clawpm doctor
clawpm use [project]
clawpm use --clear
Work Log Actions
start - Started working (auto-logged on clawpm start)
progress - Made progress
done - Completed (auto-logged on clawpm done)
blocked - Hit a blocker (auto-logged on clawpm block)
commit - Git commit (logged via clawpm log commit)
pause - Switching tasks
research - Research note
note - General observation
Task States & File Locations
| State | File Pattern | Meaning |
|---|
| open | tasks/CLAWP-042.md | Ready to work |
| progress | tasks/CLAWP-042.progress.md | In progress |
| done | tasks/done/CLAWP-042.md | Completed |
| blocked | tasks/blocked/CLAWP-042.md | Waiting |
Tips
- Flag order:
clawpm [global flags] <command> [command flags] — e.g. clawpm -f text tasks list -s open
- JSON output: All commands emit JSON by default; use
-f text for human-readable
- One command per call: Don't chain clawpm commands with
&& — run each separately
- Portfolio root: Default
~/clawpm, override via CLAWPM_PORTFOLIO env var
- Extra project roots: Set
CLAWPM_PROJECT_ROOTS (colon-separated) or add to project_roots in portfolio.toml
- Work log: Append-only at
<portfolio>/work_log.jsonl
Troubleshooting
clawpm doctor
clawpm setup --check
clawpm log tail