Install
openclaw skills install clawpmMulti-project task and research management (JSON-first CLI)
openclaw skills install clawpmMulti-project task management. All commands emit JSON by default; use -f text for human-readable output.
clawpm setup # Creates ~/clawpm/ with portfolio.toml, projects/, work_log.jsonl
clawpm setup --check # Verify installation
Projects are directories with a .project/ folder. They don't need to be git repos.
cd /path/to/my-project
clawpm project init # Auto-detects ID/name from directory
clawpm project init --id myproj # Custom ID
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" # Auto-initializes .project/, then adds task
clawpm projects list --all # Shows tracked + untracked git repos
# From a project directory (auto-detected):
clawpm status # See project status
clawpm next # Get next task
clawpm start 42 # Start task (short ID works)
clawpm done 42 # Mark done
# Or set a project context:
clawpm use my-project
clawpm status # Now uses my-project
| 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 |
ClawPM automatically detects your project from (in priority order):
clawpm tasks list --project clawpmclawpm --project clawpm status.project/settings.tomlclawpm use <project>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)clawpm add "Subtask" --parent 25 # Creates subtask (auto-splits parent if needed)
clawpm tasks split 25 # Manually convert task to parent directory
clawpm done 25 # Fails if subtasks not done
clawpm done 25 --force # Override and complete anyway
Subtasks move with parent on state change (done/blocked moves entire directory).
Get everything needed to resume work in one command:
clawpm context # Full context for current project
clawpm context -p myproj # Specific project
Returns JSON with: project info + spec, in-progress/next task, blockers, recent work log, git status, open issues.
clawpm context # Get full context
clawpm start 42 # Mark in progress (auto-logs)
# ... do work ...
git add . && git commit -m "feat: ..."
clawpm done 42 --note "Completed" # Auto-logs with files_changed
clawpm log commit # Also log the git commits themselves
Hit a blocker:
clawpm block 42 --note "Need API credentials"
clawpm projects list [--all] # List projects (--all includes untracked repos)
clawpm projects next # Next task across all projects
clawpm project context [project] # Full project context
clawpm project init # Initialize project in current dir
clawpm tasks # List tasks (default: open+progress+blocked)
clawpm tasks list [-s open|done|blocked|progress|all] [--flat]
clawpm tasks show <id> # Task details
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> # Convert to parent directory for subtasks
clawpm log add --task <id> --action progress --summary "What I did"
clawpm log tail [--limit 10] # Recent entries (auto-filtered to current project)
clawpm log tail --all # Recent entries across all projects
clawpm log tail --follow # Live tail (like tail -f)
clawpm log last # Most recent entry (auto-filtered to current project)
clawpm log last --all # Most recent entry across all projects
clawpm log commit [-n 10] # Log recent git commits to work log
clawpm log commit --dry-run # Preview without logging
clawpm log commit --task <id> # Associate commits with a task
Note: State changes (start/done/block) auto-log to work_log with git files_changed.
clawpm research list
clawpm research add --type investigation --title "Question"
clawpm research link --id <research_id> --session-key <key>
clawpm issues add --type bug --severity high --actual "What happened"
clawpm issues list [--open] # Open issues only
clawpm setup # Create portfolio (first-time)
clawpm setup --check # Verify installation
clawpm status # Project overview
clawpm context # Full agent context
clawpm doctor # Health check
clawpm use [project] # Set/show project context
clawpm use --clear # Clear context
start - Started working (auto-logged on clawpm start)progress - Made progressdone - 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 tasksresearch - Research notenote - General observation| 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 |
clawpm [global flags] <command> [command flags] — e.g. clawpm -f text tasks list -s open-f text for human-readable&& — run each separately~/clawpm<portfolio>/work_log.jsonlclawpm doctor # Check for issues
clawpm setup --check # Verify installation
clawpm log tail # See recent activity
uv tool install git+https://github.com/malphas-gh/clawpm