# Workflow Pack

> Discover, reuse, and release workflow packs in Epismo. Trigger on: 'find a workflow', 'get <id>', 'read <alias>', 'new workflow', 'create workflow', 'capture pattern', 'adapt a workflow', 'reuse this pattern', 'update workflow', 'organize steps', 'release this as a workflow', 'publish a workflow', 'deprecate workflow', 'suggest a change to a workflow', 'review suggestions', 'resolve a suggestion'…

- **Type:** Skill
- **Install:** `agentstack add skill-epismoai-skills-workflow-pack`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [epismoai](https://agentstack.voostack.com/s/epismoai)
- **Installs:** 0
- **Category:** [Search](https://agentstack.voostack.com/c/search)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [epismoai](https://github.com/epismoai)
- **Source:** https://github.com/epismoai/skills/tree/main/skills/workflow-pack
- **Website:** https://epismo.ai/hub

## Install

```sh
agentstack add skill-epismoai-skills-workflow-pack
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Workflow Pack

Discover, adapt, and release reusable workflow packs in Epismo — from finding a community pattern to publishing a proven execution structure.

**Core principle: reuse before creating. Search private and public candidates together, then compare with liked/bookmarked workflows before building anything new.**

> For connection setup, surface conventions, scope model, share URL resolution, and error handling, see [Epismo Basics](../epismo-basics/SKILL.md).
> For task/goal tracking, see [Project Tracking](../project-tracking/SKILL.md).
> For workflow query patterns and loading, see [Search & Discovery](./references/search.md).
> For sending and resolving improvement suggestions, see [Suggestions](../epismo-basics/references/suggestions.md).

## Commands

| Command                 | Natural language triggers                                             | →                     |
| ----------------------- | --------------------------------------------------------------------- | --------------------- |
| `new`                   | create workflow, capture pattern, adapt a pattern, new workflow       | [NEW](#new)           |
| `get `       | get this ID, load this ID, read alias, open alias, load workflow      | [GET](#get)           |
| `find `          | find a workflow, search workflows, what workflows do I have           | [FIND](#find)         |
| `update []`  | edit steps, update workflow, modify steps                             | [UPDATE](#update)     |
| `organize`              | reorganize steps, reorder, clean up workflow                          | [ORGANIZE](#organize) |
| `release []` | publish this, make public, release pattern, update release, deprecate | [RELEASE](#release)   |
| `suggest`               | suggest a change, propose an edit, review suggestions, resolve a suggestion | [SUGGEST](#suggest) |
| —                       | unclear intent                                                        | Ask once              |

## Operations

| Operation      | CLI                                                                             |
| -------------- | ------------------------------------------------------------------------------- |
| `search pack`  | `epismo pack search --type workflow --filter '{...}'`                           |
| `get pack`     | `epismo pack get  [--full] [--step-id ]`                        |
| `create pack`  | `epismo pack create --input ''`                                           |
| `update pack`  | `epismo pack update  --input ''`                               |
| `delete pack`  | `epismo pack delete `                                                |
| `like pack`    | `epismo pack like  --liked`                                          |
| `upsert alias` | `epismo alias upsert @ --id `                                         |
| `get alias`    | `epismo alias get @`                                                      |
| `list aliases` | `epismo alias list --type workflow`                                             |
| `delete alias` | `epismo alias delete @`                                                   |
| `create suggestion`  | `epismo suggestion create  --title  --content `          |
| `get suggestion`     | `epismo suggestion get  [--include-snapshot]`                         |
| `list suggestions`   | `epismo suggestion list [--owner] [--reference ] [--status ]`     |
| `update suggestion`  | `epismo suggestion update  --title  --content `                 |
| `resolve suggestion` | `epismo suggestion resolve  --status `   |

CLI forms shown; on MCP, derive the tool name mechanically (`pack get` → `epismo_pack_get`). See [surface conventions](../epismo-basics/SKILL.md#surface-conventions).

`` is any pack reference — an ID, `@alias`, share URL, or hub URL — resolved server-side. See [Pack References](../epismo-basics/SKILL.md#pack-references-resolving-share-urls).

---

## NEW

**Goal:** create a reusable workflow as a private pack. Reuse before building — scan for an existing pattern first.

### Step 1 — Reuse scan

Infer 2–4 topic keywords from the user's intent. Search private and public scopes together so local patterns and community patterns can be compared before choosing a base.

```bash
# Private workflows in the active workspace
epismo pack search --type workflow --query "" --filter '{"visibility":["private"]}'

# Public community workflows
epismo pack search --type workflow --query "" --filter '{"visibility":["public"]}'

# Bookmarked workflows, useful as a quality signal or fallback
epismo pack search --type workflow --query "" --filter '{"like":"liked"}'
```

| Result        | Action                                                                     |
| ------------- | -------------------------------------------------------------------------- |
| Strong match  | Fetch full content → adapt steps → [Step 3 — Create](#step-3--create)      |
| Partial match | Fetch → use as base, modify steps → [Step 3 — Create](#step-3--create)     |
| No match      | Design steps from scratch → [Step 2 — Design steps](#step-2--design-steps) |

### Step 2 — Design steps

Each step should:

- Have a clear title and self-contained content
- Assign an owner: `human` for decisions/reviews, AI agent name for generation/research
- Declare `dependsOn` only when execution genuinely requires a prior step

### Adapting a found workflow

Before materializing:

1. Identify steps to keep, modify, or remove.
2. Strip project-specific names, IDs, and one-off constraints.
3. Reassign owners as appropriate for the new context.
4. Confirm destination: private pack for future reuse, or project tracks for immediate execution.

**To materialize steps as project tracks**, map each workflow step to an `upserts` entry — use the step's `id` (e.g. `s001`) as a client label; the server resolves it to a UUID. Preserve `dependsOn` directly from the workflow steps:

```bash
epismo track apply --input '{
  "scope": { "type": "projects", "ids": ["pj_123"] },
  "upserts": [
    { "id": "s001", "title": "Define scope", "task": { "status": "todo" } },
    { "id": "s002", "title": "Implement", "task": { "status": "todo", "dependsOn": ["s001"] } },
    { "id": "s003", "title": "Review and ship", "task": { "status": "todo", "dependsOn": ["s002"] } }
  ]
}'
```

Use [Workflow Patterns — Discovery](./templates/patterns.md#2-workflow-discovery) for structured adaptation reports.

### Step 3 — Create

Default `private`. Use [RELEASE](#release) to publish publicly.

`create pack`:

```json
{
  "title": "",
  "content": "",
  "type": "workflow",
  "visibility": "private",
  "steps": [
    {
      "id": "s001",
      "title": "",
      "content": "",
      "dueDate": "",
      "dependsOn": [],
      "parentId": "",
      "assignee": "human"
    }
  ]
}
```

| Who needs it    | `visibility` | Scope / share                                    |
| --------------- | ------------ | ------------------------------------------------ |
| Just me         | `"private"`  | `scope: { type: "personal" }`                    |
| My team         | `"private"`  | `scope: { type: "projects", ids: ["pj_xxx"] }`   |
| Specific people | `"private"`  | any `scope` + `sharedWith: { userIds / emails }` |

```
workflow    
step            
```

---

## GET

**Goal:** fetch a workflow by ID, alias, or explicit read/open target.

### Route intent before resolving

Prefer **alias-first** unless the input is obviously a search query.

| Input pattern                                                          | Route         | Why                                           |
| ---------------------------------------------------------------------- | ------------- | --------------------------------------------- |
| `get ...`, `use ...`, `load ...`, `open ...`, `read ...`               | [GET](#get)   | Explicit retrieval                            |
| `find ...`, `search ...`, `what workflows do I have`, `show workflows` | [FIND](#find) | Explicit discovery                            |
| Bare UUID                                                              | [GET](#get)   | IDs are unambiguous                           |
| Bare alias-shaped token                                                | [GET](#get)   | Try alias first, then search if it misses     |
| Short ambiguous phrase                                                 | [GET](#get)   | Try alias first, then search if it misses     |
| Obvious search query, question, or long descriptive phrase             | [FIND](#find) | Discovery intent is clearer than alias intent |

### Resolve the input

1. UUID → `get pack `.
2. `@`, `@/`, or one compact token like `prd-review` → `get pack @`; if it misses, run [FIND](#find) with the same text.
3. Short phrase like `deployment checklist` → try `get pack @` first; if it misses, run [FIND](#find).
4. Question, explicit search wording, or long descriptive text → [FIND](#find) first.
5. `get/read/open/use ` always counts as retrieval intent.

`get pack` — default returns outline only; pass `--full` for all steps, or `--step-id` to load specific steps.

```bash
epismo pack get  --full
epismo pack get @ --full
epismo pack get  --step-id ,
```

---

## FIND

**Goal:** discover the right workflow when the ID is not known.

`search pack` — scan titles only (no step content). Use this for natural-language discovery requests and multi-keyword topic phrases. Search private and public scopes for the same topic, then compare results before fetching full content:

1. `type: workflow`, `query: `, `filter: { visibility: ["private"] }`
2. `type: workflow`, `query: `, `filter: { visibility: ["public"] }`
3. `type: workflow`, `query: `, `filter: { like: "liked" }`

Present the title list; if the match is clear, `get pack` immediately.

For filter keys and search recipes, see [Search & Discovery](./references/search.md).

---

## UPDATE

**Goal:** edit the steps or metadata of an existing workflow.

### ID or alias known

Always fetch before writing.

`get pack` → inspect current steps and metadata → `update pack` with `id` and step operations using `op` fields.

For `update  based on this conversation`:

- modify the steps where the new guidance belongs
- add new steps only for new execution work
- keep `dependsOn`, ownership, and ordering coherent

### ID unknown

1. `search pack` — `type: workflow`, `query: `, run both `filter: { visibility: ["private"] }` and `filter: { visibility: ["public"] }`
2. **One clear match** → fetch and update without asking.
3. **Multiple candidates** → show titles and IDs, ask the user to pick.
4. **No match** → fall back to [NEW](#new).

**"Last workflow" shortcut:** search private workflow packs and take the first result from the default recent-first outline.

```
workflow    
step                # when a specific step was updated
```

---

## ORGANIZE

**Goal:** improve the step structure of an existing workflow.

`get pack --full` → review all steps → apply changes → `update pack`.

| Situation                                       | Action                                                              |
| ----------------------------------------------- | ------------------------------------------------------------------- |
| A step is too broad or covers multiple concerns | **Split** — divide into two focused steps                           |
| Two steps overlap or one has become redundant   | **Merge** — combine into one coherent step, remove the other        |
| A step is no longer relevant                    | **Remove** — delete the step from the workflow                      |
| Steps are out of execution order                | **Reorder** — update `dependsOn` chains to reflect correct sequence |
| The whole workflow is obsolete                  | **Delete** — requires explicit user approval                        |

All changes are applied via `update pack` using `op` fields. Use `"op": "add"` for new steps, `"op": "update"` for existing ones, `"op": "remove"` to delete a step by ID. `delete pack` requires explicit user approval.

---

## RELEASE

**Goal:** publish a workflow publicly, update an existing release, or deprecate an obsolete one.

Two paths:

| Situation                               | Path                                             |
| --------------------------------------- | ------------------------------------------------ |
| Existing private workflow worth sharing | Promote — change visibility to `public`          |
| New content written for community reuse | Create new public workflow via [NEW](#new) first |

### Step 1 — Quality Gate

Run [Quality Gate](./references/quality.md) before any release decision. All 8 criteria must pass for public release. A single fail means: fix or keep private.

### Step 2 — Release decision

| Decision       | When                                                                     |
| -------------- | ------------------------------------------------------------------------ |
| `release`      | Execution proven, structure generalizable, no superior equivalent exists |
| `update`       | Improves an existing released pattern without breaking consumers         |
| `keep private` | Evidence incomplete or quality gate has open items                       |
| `deprecate`    | Obsolete, unsafe, or superseded                                          |

Run the pre-decision checks in [Release](./references/release.md) before choosing one of these paths.

### Step 3 — Confirm and update

**Confirm with user before writing:** state the workflow title, ID, and target visibility.

`update pack`:

```json
{
  "id": "",
  "visibility": "public",
  "category": ""
}
```

| Category       | When to use                                             |
| -------------- | ------------------------------------------------------- |
| `productivity` | Daily rhythms, time management, operating norms         |
| `programming`  | Code review, deployment, testing, development workflows |
| `design`       | Component reviews, UX research, design system processes |
| `marketing`    | Campaign planning, content creation, launch workflows   |
| `operations`   | Incident response, onboarding, deployment pipelines     |
| `learning`     | Onboarding guides, skill-building, training workflows   |
| `life`         | Personal productivity, non-work routines                |

See [Release](./references/release.md) for the approval boundary and required output format.

```
workflow    
share     https://epismo.ai/hub/workflows/
```

---

## SUGGEST

**Goal:** propose an improvement to a workflow you don't own, or review and resolve suggestions on a workflow you do own. Suggestions are text-first — they never edit the workflow directly.

Full lifecycle, listing modes, and the CLI/MCP surface are in [Suggestions](../epismo-basics/references/suggestions.md). Decide direction first:

| Intent                                              | Action                                                                 |
| --------------------------------------------------- | ---------------------------------------------------------------------- |
| Propose a change to someone else's workflow         | `create suggestion` with the pack reference, a short title, and content describing the proposed edit |
| See suggestions I've received (inbox)               | `list suggestions --owner` (filter with `--status open`)               |
| See suggestions for one workflow                    | `list suggestions --reference @`                                |
| See suggestions I submitted                         | `list suggestions` (no flags)                                          |
| Revise my own suggestion                            | `update suggestion ` (author only)                                 |
| Act on a suggestion I received                      | `resolve suggestion  --status applied\|declined\|archived` (owner only) |

When you **apply** a suggestion, make the actual change via [UPDAT

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [epismoai](https://github.com/epismoai)
- **Source:** [epismoai/skills](https://github.com/epismoai/skills)
- **License:** MIT
- **Homepage:** https://epismo.ai/hub

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-epismoai-skills-workflow-pack
- Seller: https://agentstack.voostack.com/s/epismoai
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
