Product Manager orchestrator. Use when someone asks to scan code for features, crawl docs for epics, interview about a new feature, add requirements, check product coverage, audit staleness, or publish a product spec.
Orchestrator skill. Parses intent, dispatches to focused sub-skills, tracks coverage. Never writes content or DB records directly.
.claude/db/marketing.sqlite/pm-preflight — see skills/pm-preflight/schema.sqlskills/pm-preflight/queries.sqlProduct code is optional when only one product exists in the database. Natural language:
/pm scan this codebase and write the epics and features
/pm crawl ./src/ ./docs/api.md https://docs.example.com
/pm interview me about a new feature
/pm I need a new feature. When X happens we want Y
/pm voice new feature
/pm status
/pm audit
/pm webtool
/pm publish
/pm-preflight. If it fails, STOP.SELECT code FROM our_products;
If exactly one product exists, use it. If multiple, ask the user which one.| Keywords | Mode |
|---|---|
| scan, crawl, read, discover, learn | Crawl |
| interview, add, new, I need, I want | Interact |
| voice | Voice (activate VoiceMode, then Interact) |
| status, dashboard, coverage | Status → invoke /pm-status and stop |
| audit, stale, check | Audit → invoke /pm-auditor and stop |
| publish | Publish → invoke /pm-publish and stop |
| webtool, web, review, approve | WebTool → invoke /pm-webtool and stop |
Dispatch in order. Each step feeds the next:
/pm-epic <product> crawl <sources> — identify epics from source material/pm-feature <product> crawl <epic-uuid>/pm-requirement <product> crawl <feature-uuid>/pm-test <product> crawl <requirement-uuid>/pm-iterator if repeated value lists were detected during steps 1-4/pm-auditor <product> — verify dependency chain integrityAll results land with human_approved = 0.
/pm-epic <product> add/pm-feature <product> add <epic-uuid> (ensure epic exists first)/pm-requirement <product> add <feature-uuid> (ensure feature exists first)/pm-test <product> add <requirement-uuid>/pm-iterator <product> create ...After every pipeline completes, report:
PM Summary: Myriplay
--------------------------------------------
Created: 3 epics, 12 features, 28 requirements, 28 tests
Mode: crawl (./src/)
Coverage Gaps:
[!] Feature "WebSocket streaming" has 0 requirements
[!] Requirement "Compact layout threshold" has no test
[!] 2 features stale (parent epic updated)
Next Steps:
- Review unapproved items in WebTool
- Run /pm myriplay audit for full staleness report
If no gaps exist, say: Coverage: 100% — all epics have features, all features have requirements, all requirements have tests.
-- Epics without features
SELECT e.id, e.name FROM epics e
LEFT JOIN product_features pf ON pf.epic_id = e.id
WHERE e.product_id = :pid AND pf.id IS NULL;
-- Features without requirements
SELECT pf.id, pf.short_desc FROM product_features pf
LEFT JOIN requirements r ON r.feature_id = pf.id
WHERE pf.product_id = :pid AND r.id IS NULL;
-- Requirements without tests
SELECT r.id, r.title FROM requirements r
JOIN product_features pf ON pf.id = r.feature_id
LEFT JOIN product_feature_tests t ON t.requirement_id = r.id
WHERE pf.product_id = :pid AND t.id IS NULL;
human_approved. Only WebTool or explicit human action does that.