Create and manage epics (big-picture product capabilities). Crawl sources or interview humans to identify epics. Each epic decomposes into features.
Identify and write epics — large product capabilities that decompose into multiple features.
/pm-epic myriplay crawl ./src/
/pm-epic myriplay crawl ./docs/architecture.md
/pm-epic myriplay add
/pm-epic myriplay list
/pm-epic myriplay show <uuid>
/pm-epic myriplay edit <uuid>
Path: .claude/db/marketing.sqlite
Always run PRAGMA foreign_keys=ON; before writes.
UUID generation:
SELECT lower(hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-4' ||
substr(hex(randomblob(2)),2) || '-' ||
substr('89ab',abs(random()) % 4 + 1, 1) ||
substr(hex(randomblob(2)),2) || '-' || hex(randomblob(6)));
tags table)epics with human_approved = 0, source = 'docs:<path>' or 'code:<path>'epic_versionsepic_tagshuman_approved = 1, source = 'interview'epic_versionsCreated epic: <uuid> "name"version on epicsepic_versionsbase_version stays as-is (epics are root — no parent)-- List epics for a product
SELECT e.id, e.name, e.version, e.status, e.human_approved,
GROUP_CONCAT(t.name, ', ') AS tags
FROM epics e
JOIN our_products op ON op.id = e.product_id
LEFT JOIN epic_tags et ON et.epic_id = e.id
LEFT JOIN tags t ON t.id = et.tag_id
WHERE op.code = :product_code
GROUP BY e.id ORDER BY e.name;
-- Show epic detail
SELECT e.*, GROUP_CONCAT(t.name, ', ') AS tags
FROM epics e
LEFT JOIN epic_tags et ON et.epic_id = e.id
LEFT JOIN tags t ON t.id = et.tag_id
WHERE e.id = :uuid GROUP BY e.id;
human_approved = 0. Interact → human_approved = 1.