epic
Manage Plane epics — list, get, update, delete (complement to /create-epic) Arguments: <action> <project> [args...].
SKILL.mdplane-ops/skills/epic/SKILL.md
GitHubEpic
Operate on epics beyond creation. For creation use /create-epic. For breaking an epic into stories use /decompose.
Arguments
Format: <action> <project> [args...]
action:list|get|update|delete|statusproject: project name or identifier- For
get/update/status/delete: epic name or ID - For
update:--name,--description,--lead <user>,--target <date>,--initiative <name>
Parse from "$ARGUMENTS".
Process
- Bootstrap connector — consult
connector-bootstrap. Probe for the Plane resource toolsworkitem_type,workitemandinitiative. There are no epic tools: an epic is a work item of the type "Epic", and its child items are work items whoseparentis the epic's id. - Resolve project →
project_id, then the epic type:workitem_type(action=resolve, project_id, name="Epic")→type_id. - Route:
list→workitem(action=list, project_id, pql='type = "<epic-type-id>"')(follownext_cursor). Render: name | lead | child count | state buckets | target | progress %. Child counts per epic:workitem(action=count, project_id, pql='childOf("<epic identifier>")', group_by=state__group).get→workitem(action=retrieve, project_id, workitem_id)+ child itemsworkitem(action=list, project_id, pql='childOf("<epic identifier>")', fields="id,name,point,estimate_point,state")grouped by state. Show progress as(completed_points / total_points)and as(completed_count / total_count).status→ same as get but compact and emphasizes RAG (Red/Amber/Green) based on points completed vs time elapsed (seeepics-initiatives-milestonesskill).update→workitem(action=update, project_id, workitem_id, name?, description_html?, assignees?, target_date?)(--leadis the assignee). Linking to an initiative:--initiative→initiative(action=list)→ initiative_id →initiative(action=manage_workitems, initiative_id, add_ids=[<epic workitem id>]), read back withinitiative(action=list_workitems, initiative_id).delete→ confirm, thenworkitem(action=delete, project_id, workitem_id)(permanent; the children are separate work items and should be kept — Plane's behaviour, not stated by the tool description: confirm on your instance, and check the children'sparentafterwards).
- Confirm — re-render after mutation.
Examples
/epic list "TaskFlow"
/epic get "TaskFlow" "Checkout Rewrite"
/epic status "TaskFlow" "Checkout Rewrite"
/epic update "TaskFlow" "Checkout Rewrite" --target 2026-06-30 --lead alice
/epic delete "TaskFlow" "Cancelled Idea"
Best Practices
- Every epic needs an outcome statement in its description (not just a feature list). E.g. "Customers can complete checkout in <30s on mobile" — this is the success criterion.
- Epic health check: if an epic has been "in progress" for >3 cycles with <50% completion, rescope or split.
- Pair epics with a tracking page (
/page create project ... --from-template spec) and link from the epic description.