context-pack
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseContext Pack
上下文包
Store and retrieve context through Epismo context packs — so knowledge survives tool switches, session ends, and team handoffs.
The unit of organization is a block inside a pack. The goal is one well-structured pack per topic, grown over time by adding and refining blocks — not many small packs.
For Epismo connection setup, CLI/MCP surface conventions, scope model, share URL resolution, and error handling, see Epismo Basics.
Surface selection: CLI and MCP connect to the same Epismo service. Use CLI if available; fall back to MCP if not. Never use both in the same session.
通过Epismo上下文包存储和检索上下文——让知识在工具切换、会话结束和团队交接后得以保留。
组织的基本单元是包内的block(模块)。目标是每个主题对应一个结构清晰的包,通过添加和优化模块逐步完善,而非创建大量小型包。
关于Epismo连接设置、CLI/MCP界面约定、范围模型、共享URL解析和错误处理,请查看Epismo基础。
界面选择: CLI和MCP连接到同一Epismo服务。优先使用CLI;若不可用则退而使用MCP。同一会话中切勿同时使用两者。
Commands
命令
| Command | Natural language triggers | → |
|---|---|---|
| pack this, save this, summarize session | PACK |
| new pack, start fresh, hand off a task, share project status | NEW |
| publish this, make this public, publish a guide, share with community | PUBLISH |
| get this ID, load this ID, restore from ID, read alias, open alias | GET |
| what context do I have, load my context, search | FIND |
| edit this pack, update my last pack | UPDATE |
| reorganize blocks, split this, clean up | ORGANIZE |
| — | unclear intent | Ask once |
| 命令 | 自然语言触发词 | → |
|---|---|---|
| pack this, save this, summarize session | PACK |
| new pack, start fresh, hand off a task, share project status | NEW |
| publish this, make this public, publish a guide, share with community | PUBLISH |
| get this ID, load this ID, restore from ID, read alias, open alias | GET |
| what context do I have, load my context, search | FIND |
| edit this pack, update my last pack | UPDATE |
| reorganize blocks, split this, clean up | ORGANIZE |
| — | 意图不明确 | 询问一次 |
Operations (context packs)
操作(上下文包)
| Operation | CLI | MCP |
|---|---|---|
| | |
| | |
| | |
| | |
| | |
| | |
| | — |
| | — |
| | — |
| | — |
| 操作 | CLI | MCP |
|---|---|---|
| | |
| | |
| | |
| | |
| | |
| | |
| | — |
| | — |
| | — |
| | — |
PACK
PACK
Goal: save current context as a block inside the right pack. Find an existing pack and add or refine a block; create a new pack only when nothing relevant exists.
目标: 将当前上下文保存为对应包内的一个模块。查找现有包并添加或优化模块;仅当无相关包存在时才创建新包。
Step 1 — Find the right pack
步骤1 — 找到对应包
Infer 2–4 topic keywords from the current session. Search private packs (titles only — one fast call).
search packtype: contextquery: <inferred topic>filter: { visibility: ["private"] }| Result | Action |
|---|---|
| One clear match | Fetch it → add or update a block → upsert |
| Multiple candidates | Show titles and IDs → ask user to pick |
| No match | Proceed as NEW |
从当前会话中推断2-4个主题关键词。搜索私有包(仅标题——快速调用)。
search packtype: contextquery: <推断的主题>filter: { visibility: ["private"] }| 结果 | 操作 |
|---|---|
| 唯一明确匹配项 | 获取包 → 添加或更新模块 → 插入更新 |
| 多个候选包 | 显示标题和ID → 请求用户选择 |
| 无匹配项 | 按NEW流程处理 |
Step 2 — Identify the right block
步骤2 — 确定对应模块
get pack- Update an existing block — if the new content belongs to a block that already exists (e.g., decisions, next steps), integrate it there. Rewrite the block so it reads as a coherent whole, not as an append.
- Add a new block — if the new content is a distinct topic not covered by any existing block.
The pack should read well from scratch at any point. Do not leave stale or contradicted information in place.
get pack- 更新现有模块 — 如果新内容属于已存在的模块(如决策、下一步计划),则整合到该模块中。重写模块使其内容连贯,而非简单追加。
- 添加新模块 — 如果新内容是现有模块未覆盖的独立主题。
包在任何时候都应易于从头阅读。请勿保留过时或矛盾的信息。
Step 3 — Update and return
步骤3 — 更新并返回
update packjson
{
"id": "<existing-id>",
"content": "<top-level summary or intro — does not include block content>",
"blocks": [
{ "op": "update", "id": "<existing-block-id>", "title": "<block-title>", "content": "<updated block content>" },
{ "op": "add", "title": "<new-block-title>", "content": "<new block content>" }
]
}- Omitted fields are left unchanged. Omitting means no block changes.
"blocks" - updates an existing block by ID.
"op": "update"adds a new block."op": "add"deletes a block by ID (only"op": "remove"needed)."id" - at the top level is a brief intro or summary. Block content lives in
"content", not in the top-level"blocks[]"."content"
context <context-id> <context-title>
block <block-id> <block-title>update packjson
{
"id": "<existing-id>",
"content": "<顶级摘要或介绍——不包含模块内容>",
"blocks": [
{ "op": "update", "id": "<existing-block-id>", "title": "<block-title>", "content": "<updated block content>" },
{ "op": "add", "title": "<new-block-title>", "content": "<new block content>" }
]
}- 省略的字段保持不变。省略表示不修改模块。
"blocks" - 按ID更新现有模块。
"op": "update"添加新模块。"op": "add"按ID删除模块(仅需"op": "remove")。"id" - 顶级是简短的介绍或摘要。模块内容位于
"content"中,而非顶级"blocks[]"。"content"
context <context-id> <context-title>
block <block-id> <block-title>NEW
NEW
Goal: create a fresh pack with an initial block structure. Use when no relevant pack exists, or when the content is clearly a separate topic.
目标: 创建一个带有初始模块结构的新包。当无相关包存在,或内容明显属于独立主题时使用。
Step 1 — Design the block structure
步骤1 — 设计模块结构
Before writing, decide how the content divides into blocks. Each block should be focused enough to update independently and broad enough to stay relevant over time.
Design for selective fetch. Because blocks can be loaded individually with , a well-split pack lets future sessions load only what they need without pulling the whole pack. Aim for blocks where any one block answers a distinct question on its own.
--block-id| Use case | Starting blocks |
|---|---|
| Session / tool handoff | Context, Decisions, Next Steps |
| Source summary (YouTube, blog, paper) | Source, Summary, Key Takeaways, Reuse Notes |
| Project memory / working context | Purpose, Constraints, Decisions, References |
| Prompt or instruction pack | When To Use This, Inputs, Instructions, Output Expectations |
| Project status | Summary, Progress, Blockers |
| Team rules or plan | Purpose, Rules, Plan |
| Task handoff | Current State, What Remains, Context for Recipient |
Good block boundaries: topic changes, audience changes, or update frequency changes (e.g., "Decisions" is stable; "Next Steps" changes every session — keep them separate).
For templates, see Content Templates.
编写前,确定内容如何划分为模块。每个模块应足够聚焦,可独立更新;同时足够宽泛,能长期保持相关性。
为选择性获取设计。 因为可以通过单独加载模块,结构合理的包能让后续会话仅加载所需内容,无需获取整个包。目标是每个模块能独立回答一个明确的问题。
--block-id| 使用场景 | 初始模块建议 |
|---|---|
| 会话/工具交接 | 上下文、决策、下一步计划 |
| 资源摘要(YouTube、博客、论文) | 来源、摘要、关键要点、复用提示 |
| 项目记忆/工作上下文 | 目的、约束条件、决策、参考资料 |
| 提示词或指令包 | 使用场景、输入、指令、输出预期 |
| 项目状态 | 摘要、进展、阻塞点 |
| 团队规则或计划 | 目的、规则、计划 |
| 任务交接 | 当前状态、剩余工作、接收方上下文 |
合理的模块边界:主题变化、受众变化或更新频率变化(例如,“决策”模块稳定;“下一步计划”模块每次会话都会变化——应分开)。
模板请查看内容模板。
Step 2 — Write
步骤2 — 编写内容
Content rules:
- Each block is self-contained — no "see above" references
- Prefer scannable structure: bullets, short paragraphs, and small tables only when they help
- Include IDs, URLs, and precise names so the reader can act without searching
- Title: infer from session topic. Do not ask unless genuinely ambiguous.
内容规则:
- 每个模块独立完整——避免“参见上文”的引用
- 优先采用易于扫描的结构:项目符号、短段落,仅在必要时使用小型表格
- 包含ID、URL和精确名称,让读者无需搜索即可采取行动
- 标题: 从会话主题推断。除非确实存在歧义,否则无需询问用户。
Step 3 — Publish
步骤3 — 发布
Default . Use PUBLISH to go public.
privatecreate packjson
{
"title": "<title>",
"content": "<top-level summary or intro>",
"type": "context",
"visibility": "private",
"blocks": [
{ "title": "<block-title>", "content": "<block content>" },
{ "title": "<block-title>", "content": "<block content>" }
]
}- Blocks are passed as a separate array — not embedded in the top-level
"blocks[]"string."content" - at the top level is a brief intro only. All substantive content belongs in blocks.
"content"
| Who needs it | | Access target |
|---|---|---|
| Just me | | omit |
| My team | | |
context <context-id> <context-title>
block <block-id> <block-title>默认(私有)。使用PUBLISH转为公开。
privatecreate packjson
{
"title": "<title>",
"content": "<顶级摘要或介绍>",
"type": "context",
"visibility": "private",
"blocks": [
{ "title": "<block-title>", "content": "<block content>" },
{ "title": "<block-title>", "content": "<block content>" }
]
}- 模块作为独立的数组传递——不要嵌入到顶级
"blocks[]"字符串中。"content" - 顶级仅为简短介绍。所有实质性内容都应放在模块中。
"content"
| 受众 | | 访问目标 |
|---|---|---|
| 仅自己 | | 省略 |
| 我的团队 | | |
context <context-id> <context-title>
block <block-id> <block-title>PUBLISH
PUBLISH
Goal: make a pack publicly discoverable. Always requires explicit user confirmation before writing.
Two paths:
| Situation | Path |
|---|---|
| Existing private pack worth sharing | Promote — change visibility to |
| New content written for a broad audience | Create new public pack |
目标: 让包可被公开发现。写入前始终需要用户明确确认。
两种路径:
| 场景 | 路径 |
|---|---|
| 现有私有包值得分享 | 升级——将可见性改为 |
| 为广泛受众创作的新内容 | 创建新的公开包 |
Promote: private → public
升级:私有→公开
- — fetch the pack. Run the Public Review Gate. Flag issues before proceeding.
get pack - Confirm with user: "Publish '{title}' () as public under category
{id}?"{category} - :
update pack
json
{
"id": "<id>",
"visibility": "public",
"category": "<category>"
}- — 获取包。运行公开审核门槛。继续前标记问题。
get pack - 向用户确认:“是否将'{title}'()作为
{id}分类下的公开包发布?”{category} - :
update pack
json
{
"id": "<id>",
"visibility": "public",
"category": "<category>"
}Create new public
创建新公开包
Write for an external reader using the public guide template in Content Templates. Content must be self-contained and pass the Public Review Gate.
Choose category carefully — it determines how people find this pack. See Category Reference.
Confirm with user, then :
create packjson
{
"title": "<title>",
"content": "<content>",
"type": "context",
"visibility": "public",
"category": "<category>"
}Return ID, title, and share URL. For share URL resolution, see Epismo Basics — Resolving Share URLs.
context <context-id> <context-title>
share https://epismo.ai/hub/contexts/<id>使用内容模板中的公开指南模板为外部读者编写内容。内容必须独立完整,并通过公开审核门槛。
谨慎选择分类——它决定了人们如何找到这个包。查看分类参考。
向用户确认后,执行:
create packjson
{
"title": "<title>",
"content": "<content>",
"type": "context",
"visibility": "public",
"category": "<category>"
}返回ID、标题和共享URL。关于共享URL解析,请查看Epismo基础——解析共享URL。
context <context-id> <context-title>
share https://epismo.ai/hub/contexts/<id>GET
GET
Goal: fetch a pack by ID, alias, or explicit read/open target.
目标: 通过ID、别名或明确的读取/打开目标获取包。
Route intent before resolving
解析前先路由意图
Prefer alias-first unless the input is obviously a search query.
| Input pattern | Route | Why |
|---|---|---|
| GET | Explicit retrieval |
| FIND | Explicit discovery |
| Bare UUID | GET | IDs are unambiguous |
| Short ambiguous phrase | GET | Try alias first, then search if it misses |
| Obvious search query, question, or long descriptive phrase | FIND | Discovery intent is clearer than alias intent |
Resolve the input
解析输入
- UUID → .
get pack --id - or one compact token like
@handle/name→weekly-handoff; if it misses, run FIND with the same text.get pack --alias - Short phrase like → try
auth refactor handofffirst; if it misses, run FIND.get pack --alias - Question, explicit search wording, or long descriptive text → FIND first.
- always counts as retrieval intent.
get/read/open/use <target>
get packidalias--full--block-idRead the most relevant block first. Continue from there without re-reading history.
- UUID → 。
get pack --id - 或类似
@handle/name的紧凑标识 →weekly-handoff;如果失败,使用相同文本执行FIND。get pack --alias - 短短语如→ 先尝试
auth refactor handoff;如果失败,执行FIND。get pack --alias - 问题、明确的搜索措辞或长描述性文本 → 先执行FIND。
- 始终视为检索意图。
get/read/open/use <target>
get packidalias--full--block-id先读取最相关的模块。从该模块继续,无需重新读取历史。
FIND
FIND
Goal: discover the right pack when the ID is not known.
search pack- ,
type: context,query: <topic>filter: { visibility: ["private"] } - ,
type: context,query: <topic>filter: { like: "liked" } - ,
type: context,query: <topic>filter: { visibility: ["public"] }
Present the title list; if the match is clear, immediately.
get packFor filter keys and search recipes, see Search & Discovery.
目标: 在未知ID的情况下找到正确的包。
search pack- ,
type: context,query: <topic>filter: { visibility: ["private"] } - ,
type: context,query: <topic>filter: { like: "liked" } - ,
type: context,query: <topic>filter: { visibility: ["public"] }
展示标题列表;如果匹配明确,立即执行。
get pack关于过滤键和搜索方案,请查看搜索与发现。
UPDATE
UPDATE
Goal: edit an existing pack directly.
目标: 直接编辑现有包。
ID or alias known
已知ID或别名
Always fetch before writing.
get packupdate packidopFor :
update <alias> based on this conversation- merge new context into the right existing blocks
- rewrite blocks coherently instead of appending raw notes
- add a new block only for a distinct new topic
写入前始终先获取包。
get packidopupdate pack对于:
update <alias> based on this conversation- 将新上下文合并到对应的现有模块中
- 连贯重写模块,而非追加原始笔记
- 仅为全新的独立主题添加新模块
ID unknown
未知ID
- —
search pack,type: context,query: <inferred topic>filter: { visibility: ["private"] } - One clear match → fetch and update without asking.
- Multiple candidates → show titles and IDs, ask the user to pick.
- No match → fall back to NEW.
"Last pack" shortcut: search private context packs and take the first result from the default recent-first outline.
- —
search pack,type: context,query: <推断的主题>filter: { visibility: ["private"] } - 唯一明确匹配项 → 获取并更新,无需询问用户。
- 多个候选包 → 显示标题和ID,请求用户选择。
- 无匹配项 → 退而执行NEW。
“上一个包”快捷方式: 搜索私有上下文包,从默认的“最近优先”大纲中选取第一个结果。
ORGANIZE
ORGANIZE
Goal: improve the block structure of an existing pack.
The most common need is not managing many packs — it's making the blocks inside one pack cleaner and more useful.
目标: 优化现有包的模块结构。
最常见的需求不是管理多个包——而是让单个包内的模块更清晰、更有用。
Actions
操作
| Situation | Action |
|---|---|
| A block has grown too large or covers multiple topics | Split — divide into two focused blocks, rewrite each |
| Two blocks overlap or one has become redundant | Merge — combine into one coherent block, remove the other |
| A block is no longer relevant | Remove — delete the block from the pack |
| The whole pack is no longer needed | Delete — delete the pack (needs approval) |
All changes are applied via using fields. Use for new blocks, for existing ones, to delete a block by ID. requires explicit user approval.
update packop"op": "add""op": "update""op": "remove"delete pack| 场景 | 操作 |
|---|---|
| 模块过大或涵盖多个主题 | 拆分 — 拆分为两个聚焦模块,分别重写 |
| 两个模块重叠或其中一个已冗余 | 合并 — 合并为一个连贯模块,移除另一个 |
| 模块不再相关 | 移除 — 从包中删除该模块 |
| 整个包不再需要 | 删除 — 删除包(需用户批准) |
所有变更通过使用字段应用。使用添加新模块,更新现有模块,按ID删除模块。需要用户明确批准。
update packop"op": "add""op": "update""op": "remove"delete packWrite Safety
写入安全
- Default private — ,
pack, andnewalways write private. Use PUBLISH to go public.update - No silent writes — if scope is unclear, ask once before writing.
- Approval required — public publication, deletion, and overwriting another owner's pack require explicit user confirmation before writing.
For the full approval matrix, see Visibility & Sharing — Approval Boundary.
- 默认私有 — 、
pack和new始终写入私有包。使用PUBLISH转为公开。update - 无静默写入 — 如果范围不明确,写入前询问一次。
- 需要批准 — 公开发布、删除包或覆盖其他所有者的包需要用户明确确认后才能写入。
完整的批准矩阵请查看可见性与共享——批准边界。
Operation Output
操作输出
After every operation, return in this order:
- Context and block — always return both ID and title at each level that was affected
- What changed — one sentence
- Next action — single most useful next step (omit if none)
context <context-id> <context-title>
block <block-id> <block-title> # when a specific block was created or updatedSkip analysis and evidence unless the user asked for it.
每次操作后,按以下顺序返回:
- 上下文和模块 — 始终返回受影响层级的ID和标题
- 变更内容 — 一句话说明
- 下一步操作 — 最有用的单个后续步骤(若无则省略)
context <context-id> <context-title>
block <block-id> <block-title> # 当特定模块被创建或更新时显示除非用户要求,否则跳过分析和证据。
Source of Truth
事实来源
Repository:
https://github.com/epismoai/skills仓库:
https://github.com/epismoai/skills