Packs
Reusable workflow and context artifacts in Epismo.
Packs store information that should be reused. They are not task lists and they are not one-off notes. A good pack is something a person or agent can discover later and use as context, a procedure, or a template for future work.
Pack types
| Type | Shape | Use for |
|---|---|---|
workflow |
steps[] |
Procedures, checklists, review flows, operating playbooks |
context |
blocks[] |
Repository notes, policy context, research summaries, API background |
Use a workflow pack when order matters. Use a context pack when the content is reference material that can be read in sections.
Workflow packs
Workflow packs describe how to do something. Each step has a required title and optional content, dueDate, dependsOn, parentId, and assignee.
{
"type": "workflow",
"title": "Release review",
"scope": { "type": "projects", "ids": ["project-id"] },
"steps": [
{ "title": "Summarize changes", "content": "List merged PRs." },
{ "title": "Check migrations", "content": "Confirm database impact." }
]
}Workflow step dueDate is a relative offset from the workflow run, represented as a numeric string such as "7". It is not a calendar date. Use task dueDate when you need an absolute YYYY-MM-DD deadline.
Workflow step assignees are either human or an agent ID. Workspace user IDs are not valid workflow-step assignees. If the system cannot resolve an assignee name or the name is ambiguous, it is saved as empty.
Running a workflow pack
Packs are reusable; tracks are executable. A pack run connects the two: it expands a workflow pack into a track — one root goal plus one todo task per step — in a single operation (CLI epismo pack run, MCP epismo_pack_run, API POST /v1/packs/run).
The run resolves everything a manual conversion would require:
- The root goal is the run's objective and retrieval anchor. Its title/content come from the run request, defaulting to the pack's. Every task links to it via
goalId, so the whole run is fetchable later with a track search filtered by the goal id. - Relative step due dates (days from run start) become absolute
YYYY-MM-DDdates counted from the run's start date (default: today). - Step
dependsOn/parentIdids are resolved to the created track UUIDs. - Pack assignee tokens are mapped to track assignees (
humanneeds a user-id mapping; agent ids resolve as-is). - Every created track carries a
workflow:<pack-id>source, and referenced context packs are recorded ascontext:sources on the goal — provenance stays queryable, and the pack itself is never modified by a run.
Context packs
Context packs are collections of named blocks. They work well for onboarding material, policies, and reusable research: anything an agent or teammate should read as background before acting.
{
"type": "context",
"title": "Team onboarding",
"scope": { "type": "personal" },
"blocks": [
{
"title": "Where things live",
"content": "Docs in Notion, code in GitHub, designs in Figma."
},
{
"title": "How we work",
"content": "Weekly planning on Mondays; ship behind feature flags."
}
]
}For large context packs, read the outline first and then fetch selected blockIds. This keeps agent context smaller and avoids hydrating content the client does not need.
Overview content
Both workflow and context packs have top-level content. Use it for a short overview of what the pack is for, not for the full reusable material. Put reusable step-by-step material in workflow steps, and reusable reference material in context blocks.
Update operations
Nested pack content is updated with operation arrays. Omitting steps or blocks keeps them unchanged. Passing an empty array is a no-op. To remove all nested items, send one remove operation for each ID.
References
Packs can be referenced by UUID, alias, share URL, or hub URL. Aliases are the most readable form for humans and agents:
epismo alias upsert @repo-onboarding --reference $PACK_REFERENCE
epismo pack get @repo-onboarding --fullVisibility and categories
visibility controls public discovery. scope controls who can see a private pack.
| Field | Values |
|---|---|
visibility |
private, public |
category |
empty, productivity, learning, programming, design, marketing, operations, life |
Keep packs focused. A pack that mixes process, background, and current task status usually becomes hard to reuse.