epismo-basics
Original:🇺🇸 English
Translated
Shared Epismo operating model: CLI/MCP surface conventions, workspace and project scope, share URL resolution, selective fetch and pack reuse patterns, pack aliases, credits/payment handling, and common auth or permission errors. Load this alongside any Epismo skill, or trigger on Epismo usage questions, alias/credit issues, share URLs, workspace scope, or setup/auth problems blocking another Epismo task.
1installs
Sourceepismoai/skills
Added on
NPX Install
npx skill4agent add epismoai/skills epismo-basicsTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Epismo Basics
Shared reference for all Epismo skills. Covers connection, surface conventions, scope, share URL resolution, and error handling.
Skills that build on this:
- Project Tracking — tasks, goals, notes, planning
- Workflow Pack — workflow pack discovery and release
- Context Pack — context packs, session handoff
Connection
CLI and MCP are two interfaces to the same Epismo service — same account, same data, same tools. There is one Epismo account; the difference is only how you connect.
When both are available, use CLI. If only MCP is available, use MCP. Never use both in the same session.
Auth
CLI (preferred):
bash
epismo login --email you@example.com # OTP flow (default, no browser)
epismo login --browser # browser-based flow
epismo whoami # verifyMCP: add as an MCP server in your client. Authentication is handled automatically via OAuth.
https://mcp.epismo.aiSurface Conventions
| Surface | Pattern | Example |
|---|---|---|
| | |
| | |
MCP tool name = CLI command with spaces and hyphens replaced by underscores. Conceptual payloads are the same across surfaces; CLI flags are mapped into the JSON shape used by API/MCP.
Pack Aliases
Packs can be fetched by a short alias instead of a full ID. Pass (or parameter in MCP) wherever is accepted on . To create and manage aliases, see Pack Alias.
--alias <name>alias--idget packCLI Input Conventions
- — inline JSON
--input '<json>' - — from file
--input @path/to/file.json - — from stdin
--input - - Explicit flags override fields in .
--input
Workspace Selection
bash
epismo workspace list
epismo workspace use --workspace-id <workspace-id> # save default
epismo workspace current # show saved default (no network)Workspace selection is CLI-only. All CLI commands resolve workspace automatically from , saved default, then personal space. In MCP, workspace scope is implicit in the OAuth token.
EPISMO_TOKENScope Model
- — top-level access boundary. All operations run within the active workspace.
workspace - — narrows private search or write access to specific projects within the active workspace.
targets.projectIds[] - /
targets.userIds[]— grant private write access to specific people on mutation calls.targets.emails[] - — for search, include private items that target the current user directly; defaults to
targets.self.true - CLI search/write flags such as ,
--project-ids,--user-ids, and--emailsare convenience flags that build the--selfobject.targets - For search, omitting uses the default private scope for the current context;
targets.projectIdsexplicitly disables project targets.targets.projectIds: []
When the user refers to "my project", resolve both layers before writing:
- Active workspace
- Target project(s) via
targets.projectIds[]
Resolving Share URLs
Share URLs resolve to a resource without credentials by following the HTTP redirect.
- Public packs typically use .
https://epismo.ai/share/{token} - Internal/private workspace packs may use .
https://{workspace}.epismo.ai/share/{token} - Do not assume the host is always the root domain; preserve the original host from the share URL.
bash
# curl
curl -s -o /dev/null -w "%{redirect_url}" "https://epismo.ai/share/${TOKEN}"
# → https://epismo.ai/hub/workflows/{id}
# → https://epismo.ai/hub/contexts/{id}
# internal/private packs may redirect from a workspace subdomain instead
curl -s -o /dev/null -w "%{redirect_url}" "https://${WORKSPACE}.epismo.ai/share/${TOKEN}"
# → https://${WORKSPACE}.epismo.ai/hub/workflows/{id}
# → https://${WORKSPACE}.epismo.ai/hub/contexts/{id}typescript
// fetch (Node.js)
const shareUrl = new URL(process.argv[2]);
const res = await fetch(shareUrl, {
redirect: "manual",
});
const location = res.headers.get("location") ?? "";
const workflowMatch = location.match(/\/hub\/workflows\/([^/?#]+)/);
const contextMatch = location.match(/\/hub\/contexts\/([^/?#]+)/);
// use whichever matches; id = decodeURIComponent(match[1])| Redirect path | Resource type |
|---|---|
| |
| |
Use the resolved with on any surface. If the original share URL is on a workspace subdomain, keep using that host when handing the link back to the user.
idget packSelective Fetch Pattern
searchidtitle- Scan — or
search packto get a title list.search track - Select — identify relevant items from the titles. Skip clearly unrelated ones.
- Fetch — or
get pack --fullfor each selected item to load full content.get track
get pack| Mode | Flag | Returns |
|---|---|---|
| Outline (default) | (none) | |
| Full | | complete content including all blocks / steps |
To load a single block or step instead of the full pack:
bash
# context pack — fetch one block
epismo pack get --id <id> --block-id <block-id>
# workflow pack — fetch specific steps
epismo pack get --id <id> --step-id <step-id-1>,<step-id-2>Pack Reuse Scan Order
Before creating any new pack, scan in this order to avoid duplicating something that already exists:
- +
visibility=["private"]— your own packs firstquery=<topic> - +
like="liked"— packs you bookmarkedquery=<topic> - +
visibility=["public"]— community packsquery=<topic>
If a close match is found, prefer over creating new.
get packPagination
All calls return page size 20. For large result sets, iterate and merge results.
searchpage=1, 2, 3...bash
epismo pack search --type context --filter '{"visibility":["public"]}' --page 2
epismo track search --type task --filter '{"status":["todo"]}' --page 2Stop iterating when a page returns fewer than 20 results.
Error Handling
| Error | Action |
|---|---|
| Stop. Check balance and purchase credits — see Credit Purchase. |
| Re-check accessible projects and resource ownership. |
| Re-authenticate: run |
| Confirm the resource ID. It may have been deleted or the share token may have expired. |
Rate limit / | Wait and retry with backoff. Inform user if persistent. |
| Timeout | Retry once. If persistent, reduce payload size or split the operation. |
Source of Truth
Repository:
https://github.com/epismoai/skills