with one click
Project Planner Skill
npx skills add https://github.com/JansenAnalytics/claudex --skill project-plannerCopy and paste this command into Claude Code to install the skill
Project Planner Skill
npx skills add https://github.com/JansenAnalytics/claudex --skill project-plannerCopy and paste this command into Claude Code to install the skill
Semantic memory search across all agent memories and conversation history. Use BEFORE answering questions about prior work, decisions, dates, people, preferences, projects, or past conversations. Also use when asked "do you remember", "what did we discuss", "when did we", etc.
Get current weather and forecasts. Use when the user asks about weather, temperature, or forecasts for any location.
Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.
Accessibility auditing: WCAG compliance checking, contrast ratios, ARIA labels, keyboard navigation, semantic HTML, screen reader compatibility.
ADR Manager Skill
Autonomous API testing and evaluation. Tests any REST API for correctness, security, performance, error handling, and standards compliance. Discovers endpoints, probes with valid/invalid/edge-case payloads, checks auth, response times, injection vulnerabilities, and generates severity-scored reports with actionable fixes. Use before any API "done" claim.
| name | project-planner |
| description | Project Planner Skill |
| category | productivity |
| maturity | stable |
| tags | ["task-planning","dependency-graph","subtasks","impact-analysis","orchestration"] |
Use at the START of every significant project before any sub-agent is spawned or any code is written. Also use when: the user asks for project status, before making a change that might affect other tasks, when a task fails.
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs new \
--project <project-slug> \
--description "What this project delivers"
# Write tasks.json with full task list, then:
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs import \
--project <project-slug> \
--file tasks.json
# Or add tasks one by one:
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs add \
--project <project-slug> \
--id task-01 \
--name "Task name" \
--requires "" \
--produces "artifact-name" \
--criteria "criterion 1,criterion 2,criterion 3" \
--rollback "How to undo this if it fails" \
--assigned sub-agent \
--hours 3 \
--priority high
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs next --project <slug>
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs parallel --project <slug>
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs start --task task-01 --project <slug>
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs impact --task task-01 --project <slug>
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs done --task task-01 --project <slug>
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs status --project <slug>
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs graph --project <slug>
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs report --project <slug> --send
plan.cjs new --project --description
plan.cjs add --project --id --name --requires --produces --criteria --rollback --assigned --hours --priority --tags
plan.cjs import --project --file
plan.cjs status [--project]
plan.cjs next [--project]
plan.cjs impact --task [--project]
plan.cjs start --task [--project]
plan.cjs done --task [--project] [--note] [--confirm]
plan.cjs fail --task --reason [--project]
plan.cjs block --task --reason [--project]
plan.cjs unblock --task [--project]
plan.cjs retry --task [--project]
plan.cjs note --task <text> [--project]
plan.cjs update --task [--project] [--assigned] [--hours] [--priority]
plan.cjs graph [--project]
plan.cjs parallel [--project]
plan.cjs report [--project] [--send]
plan.cjs list
validate.cjs --project
~/projects/<project>/PLAN.json — machine-readable (authoritative)
~/projects/<project>/PLAN.md — human-readable (auto-generated, do not edit)
Use subtasks for any task that:
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs subtask import \
--project <slug> --task <task-id> --file subtasks.json
[{"id":"st-01","name":"...","requires":[],"criteria":["..."],"hours":1,"priority":"high"},...]
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs subtask list --task <id> --project <slug>
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs subtask next --task <id> --project <slug>
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs subtask parallel --task <id> --project <slug>
node ${PROJECT_PLANNER_HOME:-$HOME/projects/project-planner}/plan.cjs subtask impact --task <id> --id <st-id> --project <slug>
subtask start → subtask done → (auto-completes parent task when all done)
A task cannot be marked done while any subtask is pending/running/failed. Use --force to override (only when subtasks are genuinely irrelevant).
plan.cjs subtask add --project --task --id --name --requires --produces --criteria --rollback --assigned --hours --priority
plan.cjs subtask import --project --task --file
plan.cjs subtask list --project --task
plan.cjs subtask next --project --task
plan.cjs subtask parallel --project --task
plan.cjs subtask impact --project --task --id
plan.cjs subtask graph --project --task
plan.cjs subtask start --project --task --id
plan.cjs subtask done --project --task --id [--confirm] [--force]
plan.cjs subtask fail --project --task --id --reason
plan.cjs subtask block --project --task --id --reason
plan.cjs subtask unblock --project --task --id
plan.cjs subtask retry --project --task --id
plan.cjs subtask note --project --task --id <text>
plan.cjs subtask update --project --task --id [--assigned] [--hours] [--priority]