pm
Product management skill dispatcher.
Inline Usage
Pass your intent directly on the invocation line — explore and plan proceed immediately with no opening question when a description is provided.
/pm explore pricing strategy for enterprise tier
/pm explore competitor analysis for Q3 roadmap
/pm plan ship retention features this quarter
Critical Rules
- Never execute workflow logic here — this file only parses args and dispatches
- Step 0 always runs first — no exceptions
- Unknown verb → run
help.md— never error silently - Pass all remaining args through — workflow receives
$REMAINING_ARGSunchanged - Markdown output: soft-wrap prose, never hard-wrap — when any pm workflow or agent writes a
.mdartifact (PRDs, roadmaps, research findings, plans), write each paragraph as one continuous line; do not insert manual newlines to wrap prose at a fixed column width. Newlines still separate paragraphs, list items, headings, and code fences. - Model tiers, never model IDs — the
pmagents declare**Model tier:** light|standard|heavyand workflows usemodel-tier:tokens; the platform maps tiers to concrete models (seereferences/model-tiers.md). Never hardcode a provider model ID (such asclaude-*) in this skill.
Docs directory resolution
approve promotes roadmaps into the docs tree. The docs directory is docs/ by default; override it per project with a "docs_dir" field in .codevoyant/metadata.json. Resolve and export DOCS_DIR once:
resolve_docs_dir() {
local root cfg d
root="$(git rev-parse --show-toplevel 2>/dev/null)" || root="$PWD"
cfg="$root/.codevoyant/metadata.json"
d=""
if [ -f "$cfg" ]; then
d="$(python3 - "$cfg" <<'PY' 2>/dev/null
import json, sys
try:
print(json.load(open(sys.argv[1])).get("docs_dir", ""))
except Exception:
pass
PY
)"
fi
DOCS_DIR="${d:-docs}"
}
resolve_docs_dir
export DOCS_DIR
Step 0: Parse Arguments
The raw invocation args (filled by Claude Code / OpenCode slash commands): $ARGUMENTS. If this line is not filled in, read the verb and remaining args from the user's current message.
VERB="[first non-flag argument, or empty]"
REMAINING_ARGS="[everything after VERB, preserving order and flags]"
case "$VERB" in
"") VERB="help" ;;
"roadmap") VERB="plan" ;;
esac
Step 1: Dispatch to Workflow
Read and execute references/workflows/{VERB}.md, passing $REMAINING_ARGS as the argument string.
If references/workflows/{VERB}.md does not exist, fall back to references/workflows/help.md and note the unknown verb.
Workflow Index
- allow (
references/workflows/allow.md) — pre-approve permissions for background agents - approve (
references/workflows/approve.md) — promote roadmap to docs/ and push initiatives to Linear - explore (
references/workflows/explore.md) — research a product area before planning - help (
references/workflows/help.md) — print command reference - plan (
references/workflows/plan.md) — create a quarterly/annual product roadmap - prd (
references/workflows/prd.md) — write a Product Requirements Document - review (
references/workflows/review.md) — review roadmap for quality and coverage - update (
references/workflows/update.md) — apply feedback to an existing plan or roadmap
Agent Index
- linear-initiative-sync (
agents/linear-initiative-sync.md) — syncs initiatives to Linear; used by approve - competitive-researcher (
agents/competitive-researcher.md) — researches competitive landscape; used by explore - ideation-researcher (
agents/ideation-researcher.md) — generates product ideas; used by explore - internal-researcher (
agents/internal-researcher.md) — reviews internal context; used by explore - market-researcher (
agents/market-researcher.md) — researches market trends; used by explore - user-problems-researcher (
agents/user-problems-researcher.md) — researches user pain points; used by explore - pm-planner (
agents/pm-planner.md) — generates roadmap structure; used by plan