epismo-basics
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseEpismo Basics
Epismo 基础
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
所有Epismo skill的共享参考文档,涵盖连接方式、界面规范、范围、共享URL解析及错误处理。
基于此构建的Skills:
- 项目追踪 — 任务、目标、笔记、规划
- 工作流包 — 工作流包的发现与发布
- 上下文包 — 上下文包、会话移交
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.
CLI和MCP是同一Epismo服务的两种接口——使用相同的账户、相同的数据、相同的工具。一个Epismo账户仅对应一套服务,二者的区别仅在于连接方式。
**若两种方式均可用,优先使用CLI。**若仅MCP可用,则使用MCP。切勿在同一会话中同时使用两者。
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.aiCLI(优先选择):
bash
epismo login --email you@example.com # OTP流程(默认,无需浏览器)
epismo login --browser # 基于浏览器的流程
epismo whoami # 验证登录状态MCP:在客户端中添加作为MCP服务器。认证通过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.
| 界面 | 模式 | 示例 |
|---|---|---|
| | |
| | |
MCP工具名称 = 将CLI命令中的空格和连字符替换为下划线后的名称。不同界面的概念性负载相同;CLI标志会映射为API/MCP使用的JSON结构。
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 pack包可通过短别名而非完整ID获取。在命令中,任何接受的位置都可传入(或MCP中的参数)。如需创建和管理别名,请查看包别名。
get pack--id--alias <name>aliasCLI Input Conventions
CLI输入规范
- — inline JSON
--input '<json>' - — from file
--input @path/to/file.json - — from stdin
--input - - Explicit flags override fields in .
--input
- — 内联JSON
--input '<json>' - — 从文件读取
--input @path/to/file.json - — 从标准输入读取
--input - - 显式标志会覆盖中的字段。
--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_TOKENbash
epismo workspace list
epismo workspace use --workspace-id <workspace-id> # 设置默认工作区
epismo workspace current # 查看已保存的默认工作区(无需网络)工作区选择仅支持CLI。所有CLI命令会自动从、已保存的默认工作区,再到个人空间解析工作区。在MCP中,工作区范围隐含在OAuth令牌中。
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[]
- — 顶级访问边界。所有操作均在活跃工作区内进行。
workspace - — 将私有搜索或写入权限缩小到活跃工作区内的特定项目。
targets.projectIds[] - /
targets.userIds[]— 在变更调用中向特定人员授予私有写入权限。targets.emails[] - — 搜索时,包含直接针对当前用户的私有项;默认值为
targets.self。true - CLI搜索/写入标志如、
--project-ids、--user-ids和--emails是构建--self对象的便捷标志。targets - 搜索时,若省略,则使用当前上下文的默认私有范围;
targets.projectIds会显式禁用项目目标。targets.projectIds: []
当用户提及“我的项目”时,需先解析以下两层再进行写入:
- 活跃工作区
- 通过指定的目标项目
targets.projectIds[]
Resolving Share URLs
共享URL解析
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
undefined共享URL通过HTTP重定向解析为无需凭证的资源。
- 公共包通常使用。
https://epismo.ai/share/{token} - 内部/私有工作区包可能使用。
https://{workspace}.epismo.ai/share/{token} - 不要假设主机始终是根域名;保留共享URL中的原始主机。
bash
undefinedcurl
curl示例
curl -s -o /dev/null -w "%{redirect_url}" "https://epismo.ai/share/${TOKEN}"
curl -s -o /dev/null -w "%{redirect_url}" "https://epismo.ai/share/${TOKEN}"
internal/private packs may redirect from a workspace subdomain instead
内部/私有包可能从工作区子域名重定向
curl -s -o /dev/null -w "%{redirect_url}" "https://${WORKSPACE}.epismo.ai/share/${TOKEN}"
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/workflows/{id}
→ https://${WORKSPACE}.epismo.ai/hub/contexts/{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 pack
```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\/([^/?#]+)/);
// 使用匹配到的结果;id = decodeURIComponent(match[1])| 重定向路径 | 资源类型 |
|---|---|
| |
| |
使用解析后的在任意界面执行命令。若原始共享URL位于工作区子域名,则在将链接返回给用户时保留该主机。
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
undefinedsearchidtitle- 扫描 — 使用或
search pack获取标题列表。search track - 选择 — 从标题中识别相关项,跳过明显无关的内容。
- 获取 — 对每个选中项执行或
get pack --full以加载完整内容。get track
get pack| 模式 | 标志 | 返回内容 |
|---|---|---|
| 大纲(默认) | (无) | |
| 完整 | | 完整内容,包括所有块/步骤 |
若要加载单个块或步骤而非完整包:
bash
undefinedcontext pack — fetch one block
上下文包 — 获取单个块
epismo pack get --id <id> --block-id <block-id>
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>
undefinedepismo pack get --id <id> --step-id <step-id-1>,<step-id-2>
undefinedPack 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 pack创建任何新包之前,请按以下顺序扫描,避免重复已存在的内容:
- +
visibility=["private"]— 先查看自己的包query=<topic> - +
like="liked"— 查看你已收藏的包query=<topic> - +
visibility=["public"]— 查看社区包query=<topic>
若找到匹配度高的包,优先使用而非创建新包。
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.
所有调用返回的页面大小为20。对于大型结果集,请迭代并合并结果。
searchpage=1, 2, 3...bash
epismo pack search --type context --filter '{"visibility":["public"]}' --page 2
epismo track search --type task --filter '{"status":["todo"]}' --page 2当某一页返回的结果少于20条时,停止迭代。
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. |
| 错误 | 操作 |
|---|---|
| 停止操作。检查余额并购买积分——查看积分购买。 |
| 重新检查可访问的项目和资源所有权。 |
| 重新认证:执行 |
| 确认资源ID。该资源可能已被删除,或共享令牌已过期。 |
Rate limit / | 等待后重试并使用退避策略。若问题持续,告知用户。 |
| Timeout | 重试一次。若问题持续,减小负载大小或拆分操作。 |
Source of Truth
权威来源
Repository:
https://github.com/epismoai/skills仓库地址:
https://github.com/epismoai/skills