Loading...
Loading...
Compare original and translation side by side
ConPort stores everything about the project: tasks, documents, decisions, infrastructure. Without init, context is unavailable. Without search, you are answering blindly.
**ConPort 存储项目的所有信息:**任务、文档、决策、基础设施。 **未执行init则无法获取上下文。**未进行搜索就盲目作答是不可取的。
| Environment | Prefix |
|---|---|
| Claude Code CLI | |
| Claude.ai Chat | |
| 环境 | 前缀 |
|---|---|
| Claude Code CLI | |
| Claude.ai Chat | |
CONPORT_PROJECT_NAME.claude/settings.local.json.gitCONPORT_PROJECT_NAME.claude/settings.local.json.gitmcp__conport__init({
name: "<detected_name>",
skill_id: "conport",
skill_version: "<metadata.version from this SKILL.md frontmatter>", // substitute the real value; never send this placeholder
client_type: "claude-code" // or claude-ai / cursor / codex
})skill_idskill_versionclient_typeclient_typemcp__conport__init({
name: "<detected_name>",
skill_id: "conport",
skill_version: "<metadata.version from this SKILL.md frontmatter>", // 替换为实际值;请勿发送此占位符
client_type: "claude-code" // 或 claude-ai / cursor / codex
})skill_idskill_versionclient_typeclient_type[CONPORT] {summary from response}N tasks in TODO, M in progress. Top 5:backlog.topPk · #id title (n subtasks)(n subtasks)Pkeffective_prioritybacklog.total_todo == 0backlog.total_in_progress == 0roadmapepic_tailsproduct_contextreferences/bootstrap.mdroutine_suggestionset_routine_config(...)suggested_configset_routine_config(enabled=false)skill_update_available[CONPORT][SKILL UPDATE] {skill_id} {current} → {latest} ({severity}). Changelog: {changelog_url} · Install: {install_guide}current == "unknown"cannot determine version, see {install_guide}severity == "security"[SECURITY UPDATE]conport-agentskill_update_availablesync_decisionlog_progresscore/save-first[CONPORT] {summary from response}N tasks in TODO, M in progress. Top 5:backlog.topPk · #id title (n subtasks)(n subtasks)Pkeffective_prioritybacklog.total_todo == 0backlog.total_in_progress == 0roadmapepic_tailsproduct_contextreferences/bootstrap.mdroutine_suggestionset_routine_config(...)suggested_configset_routine_config(enabled=false)skill_update_available[CONPORT][SKILL UPDATE] {skill_id} {current} → {latest} ({severity}). Changelog: {changelog_url} · Install: {install_guide}current == "unknown"无法确定版本,请查看 {install_guide}severity == "security"[SECURITY UPDATE]conport-agentskill_update_availablesync_decisionlog_progresscore/save-first| Trigger | Tool |
|---|---|
| "We need to do X" | |
| "X depends on Y" | |
| "Create an epic" / multi-step body of work | |
| "Break it into subtasks" | |
| "Move task X under epic Y" / re-parent | |
| "Roadmap" / "milestones" / "what ships in the release" | |
| "Plan a milestone / a release" | |
| "Rename / move / close a milestone" | |
| "This epic belongs to milestone M" | |
| "Promote this task to an epic" | |
| "Demote this epic to a task" | |
| Need a task in another project I own (no context switch) | |
| 触发条件 | 工具 |
|---|---|
| "我们需要做X" | |
| "X依赖于Y" | |
| "创建一个史诗" / 多步骤工作体 | |
| "将其拆分为子任务" | |
| "将任务X移至史诗Y下" / 重新指定父任务 | |
| "路线图" / "里程碑" / "版本发布内容" | |
| "规划里程碑/版本发布" | |
| "重命名/移动/关闭里程碑" | |
| "此史诗属于里程碑M" | |
| "将此任务升级为史诗" | |
| "将此史诗降级为任务" | |
| 需要在我拥有的另一个项目中创建任务(无需切换上下文) | |
| Trigger | Tool |
|---|---|
| Starting work | |
| Done / Finished | |
| Cancelled | |
| Blocked | |
| Milestone finished | |
| Milestone dropped | |
current_focusupdate_task(status='DONE')epic_not_readyepic_progresslist_tasks(parent_task_id=…)add_taskupdate_taskdelete_taskepic_progressclosableresolutionresolutionstatus=DONECANCELLEDresolution## Resolutionprogress_entryrecent_activitylist_progresslog_progresslog_progresssequenceinitget_agendaroadmapmilestone_id: nullresolutionis_release=truemilestone_not_readyupdate_milestone(status='DONE')context.open_epicsprojects/roadmap| 触发条件 | 工具 |
|---|---|
| 开始工作 | |
| 完成/结束 | |
| 取消 | |
| 阻塞 | |
| 里程碑完成 | |
| 里程碑取消 | |
current_focusupdate_task(status='DONE')epic_not_readyepic_progresslist_tasks(parent_task_id=…)add_taskupdate_taskdelete_taskepic_progressclosableresolutionresolutionstatus=DONECANCELLEDresolution## Resolutionprogress_entryrecent_activitylist_progresslog_progresslog_progresssequenceinitget_agendaroadmapmilestone_id: nullresolutionis_release=trueresolutionmilestone_not_readyupdate_milestone(status='DONE')context.open_epicsprojects/roadmap| Trigger | Tool |
|---|---|
| "Show me the patterns" | |
| "Record a pattern" | |
| "Update / rename / re-tag a pattern" | |
| "What approaches do we use?" | |
| 触发条件 | 工具 |
|---|---|
| "展示模式" | |
| "记录模式" | |
| "更新/重命名/重新标记模式" | |
| "我们使用哪些方法?" | |
| Trigger | Tool |
|---|---|
| Question about the project | |
| "What was decided about Y?" | |
| "Which projects do I own?" / bootstrapping without a known project_id | |
| 触发条件 | 工具 |
|---|---|
| 关于项目的问题 | 先执行 |
| "关于Y的决策是什么?" | 按主题 |
| "我拥有哪些项目?" / 未指定project_id时引导初始化 | |
| Trigger | Tool |
|---|---|
| Technology choice | |
| Trade-off with rationale | |
| Read one decision's full body (id → tags + currency) before amending | |
| Amend / re-tag an existing decision | |
| Decision no longer holds, NO replacement | |
| Un-retire a decision | |
Decision candidates auto-extracted from | never committed directly — they wait in the proposals queue: |
| 触发条件 | 工具 |
|---|---|
| 技术选择 | |
| 带有理由的权衡 | |
| 修改决策前读取完整内容(id → tags + 有效性) | |
| 修改/重新标记现有决策 | |
| 决策不再适用,且无替代方案 | |
| 恢复已弃用的决策 | |
从 | 请勿直接提交——它们会在提案队列中等待: |
| Trigger | Tool |
|---|---|
| Standalone progress note (not a task close) | |
| Closing a task | |
| Context has changed | |
| 触发条件 | 工具 |
|---|---|
| 独立进度记录(非任务关闭) | |
| 关闭任务 | |
| 上下文已变更 | |
| Trigger | Tool |
|---|---|
| Spec / API docs | |
| Wholesale body / metadata update | |
| List a doc's blocks (pick ulids before a surgical edit) | |
| Read / edit / insert / delete one block | |
| Read a doc (with rendered Wave 5 stubs) | |
| "Who references this doc/block?" | |
| "What's similar to this block but not yet linked?" | |
| Overlapping content / linking two docs | author one callout — |
update_blockinsert_blockdelete_blockupdate_document(content=...)update_documentdoc_type='spec'change_kindamendreasonsubstantivelink_items(relationship='supersedes')add_document> [!extends] [[doc-N]]> [!supersedes] [[doc-N]]> [!relates-to]projects/block-modelprojects/spec-append-onlycore/documentation-calloutsreferences/documentation_graph.md| 触发条件 | 工具 |
|---|---|
| 规范/API文档 | |
| 批量更新内容/元数据 | |
| 列出文档的块(在精准编辑前获取ulids) | |
| 读取/编辑/插入/删除单个块 | |
| 读取文档(包含渲染后的Wave 5占位符) | |
| "哪些内容引用了此文档/块?" | |
| "哪些块与此块相似但尚未关联?" | |
| 内容重叠/关联两个文档 | 添加标注—— |
update_blockinsert_blockdelete_blockupdate_document(content=...)doc_type='spec'update_documentchange_kindamendreasonsubstantivelink_items(relationship='supersedes')add_document> [!extends] [[doc-N]]> [!supersedes] [[doc-N]]> [!relates-to]projects/block-modelprojects/spec-append-onlycore/documentation-calloutsreferences/documentation_graph.md| Trigger | Tool |
|---|---|
| Starting a periodic cycle run | |
| "Set up / tune the cycle policy" | |
| Mark a task as agent-executable | |
| Finishing a run | |
| "Show recent runs" | |
| Calibrating before estimating tasks | |
| Picking unblocked work deep in the backlog | |
| Deferring a task to a date | |
projects/routines| 触发条件 | 工具 |
|---|---|
| 开始定期周期运行 | |
| "设置/调整周期策略" | |
| 标记任务为可代理执行 | |
| 完成运行 | |
| "展示最近的运行记录" | |
| 估算任务前校准 | |
| 从待办事项深处选择未阻塞的工作 | |
| 将任务推迟到指定日期 | |
projects/routines| Trigger | Tool |
|---|---|
| "Open task #N and brief me" | |
| "Implementation status of spec doc-N?" | |
| "What recipes are available?" | |
| "Current architecture of subsystem X?" | |
| "Is this architecture doc safe to archive?" | |
| Init response shows gaps / "show all gaps" | review |
| "Clean up the graph" | |
| Manual semantic flow | |
start_id'<type>-<id>''task-271''doc-76'taskdocdecisionpatternprogress'[[task-271]]'projects/context-recipesprojects/gapsprojects/semantic-pass| 触发条件 | 工具 |
|---|---|
| "打开任务#N并进行简报" | |
| "规范doc-N的实施状态?" | |
| "有哪些可用的配方?" | |
| "子系统X的当前架构?" | |
| "此架构文档是否可以安全归档?" | |
| Init响应显示缺口 / "展示所有缺口" | 查看 |
| "清理图谱" | |
| 手动语义流程 | |
start_id'<type>-<id>''task-271''doc-76'taskdocdecisionpatternprogress'[[task-271]]'projects/context-recipesprojects/gapsprojects/semantic-passkind='task'parent_task_idkind='epic'parent_task_id=NULLparent_not_epickind='task'parent_task_idkind='epic'parent_task_idparent_not_epicparent_not_epicparent_not_epicadd_task(parent_task_id=X)update_task(parent_task_id=X){
"error": "parent_not_epic",
"message": "Cannot attach a task under task-X — a task can only have an epic as parent.",
"context": {
"intended_parent": {"id": X, "kind": "task", "title": "..."},
"resolved_epic": {"id": Y, "kind": "epic", "title": "..."}
},
"suggestions": [
{"action": "promote_parent", "call": "update_task(task_id=X, kind='epic')"},
{"action": "attach_to_epic", "call": "add_task(..., parent_task_id=Y)"}
]
}resolved_epicnullpromote_parentadd_task(parent_task_id=X)update_task(parent_task_id=X){
"error": "parent_not_epic",
"message": "Cannot attach a task under task-X — a task can only have an epic as parent.",
"context": {
"intended_parent": {"id": X, "kind": "task", "title": "..."},
"resolved_epic": {"id": Y, "kind": "epic", "title": "..."}
},
"suggestions": [
{"action": "promote_parent", "call": "update_task(task_id=X, kind='epic')"},
{"action": "attach_to_epic", "call": "add_task(..., parent_task_id=Y)"}
]
}resolved_epicnullpromote_parenttaskepickind='epic'parent_task_id=0update_taskepictasktask-Ntaskepicupdate_taskkind='epic'parent_task_id=0epictasktask-Nsummaryrationaledescription<type>-<number>decisiontaskdocpatternprogressdocumenttasksdecdecision-321task-271doc-76[[decision-321]][[task-271]][[doc-76]][[doc-89#<block_ulid>]]| ❌ Don't write | ✅ Write |
|---|---|
| |
| |
| |
| drop — autolinker can't resolve; cite the new per-project id |
summaryrationaledescription#\d+<type>-<number>#N<type>-Nsummaryrationaledescription<type>-<number>decisiontaskdocpatternprogressdocumenttasksdecdecision-321task-271doc-76[[decision-321]][[task-271]][[doc-76]][[doc-89#<block_ulid>]]| ❌ 请勿这样写 | ✅ 正确写法 |
|---|---|
| |
| |
| |
| 删除——自动链接器无法解析;请引用新的项目内ID |
summaryrationaledescription#\d+<type>-<number>#N<type>-Nsummary| After | Format |
|---|---|
| |
| |
| |
| Task DONE/CANCELLED | |
| |
Any write response carrying | |
initget_agendaroadmapepic_tails[ROADMAP] milestone-{current.milestone_id} «{current.title}»{ [release]}{ · ready to close} · {open_milestones_total} milestones open
· task-{task_id} {title} — {open_children}/{total_children} subtasks open
Next: milestone-{next.milestone_id} «{next.title}»·current.epics [release]current.is_release · ready to closecurrent.ready_to_closeNext:nextnull[TAILS] task-{epic_id} {title} — {suggested_action}epic_tailsclosable=truesuggested_actionidtags[]summaryversionstatuskindget_taskget_documentlist_decisionstagskindcore/post-write-verificationget_decisionlist_decisionssearchcurrencycurrentsupersededdeprecatedage_dayscurrencysupersededsuperseded_bydeprecateddeprecation_reasonage_dayscurrentsummary| 操作后 | 格式 |
|---|---|
| |
| |
| |
| 任务DONE/CANCELLED | |
| |
任何返回包含 | |
initget_agendaroadmapepic_tails[ROADMAP] milestone-{current.milestone_id} «{current.title}»{ [release]}{ · ready to close} · {open_milestones_total} milestones open
· task-{task_id} {title} — {open_children}/{total_children} subtasks open
Next: milestone-{next.milestone_id} «{next.title}»current.epics·current.is_release [release]current.ready_to_close · ready to closenextnullNext:[TAILS] task-{epic_id} {title} — {suggested_action}epic_tailsclosable=truesuggested_actionidtagssummaryversionstatuskindget_taskget_documentlist_decisionstagskindcore/post-write-verificationget_decisionlist_decisionssearchcurrencycurrentsupersededdeprecatedage_dayscurrencysupersededsuperseded_bydeprecateddeprecation_reasoncurrentage_dayssync_decisiontagsrationale<parameter …><invoke …></invoke><function_calls>antml:*mcp_payload_contaminated| You passed | Check on the response |
|---|---|
| Response |
| |
| |
| Field is present and equal to intent |
| Response |
| Response |
| Response |
sync_decisionadd_taskupdate_taskadd_milestoneupdate_milestonelog_progresslog_patternadd_documentupdate_documentupdate_active_contextupdate_product_contextupdate_blockinsert_blockdelete_blocksync_decisiontagsrationale<parameter …><invoke …></invoke><function_calls>antml:*mcp_payload_contaminated| 你传入的参数 | 检查响应中的内容 |
|---|---|
| 响应中的 |
| |
| |
| 字段存在且与预期一致 |
| 响应中的 |
任务的 | 响应中的 |
里程碑的 | 响应中的 |
sync_decisionadd_taskupdate_taskadd_milestoneupdate_milestonelog_progresslog_patternadd_documentupdate_documentupdate_active_contextupdate_product_contextupdate_blockinsert_blockdelete_blockInvalid arguments for toolpathexpected | Fix |
|---|---|
| |
| |
| |
Invalid arguments for toolpathexpected | 修复方式 |
|---|---|
| |
| |
| |
initsearchresolutionlog_progressupdate_milestoneresolutionis_releasesync_decision<type>-<number>#Ndecision #321initsearchresolutionlog_progressupdate_milestoneresolutionsync_decision<type>-<number>#Ndecision #321conport docs <topic>| Topic | Page |
|---|---|
| Save-first discipline | |
| Knowledge-graph model (item links + GraphRAG) | |
| Cross-reference grammar | |
| Documentation-graph callouts (full reference) | |
| Post-write verification / slim responses | |
| |
| Knowledge-base gaps | |
| Semantic pass | |
| Spec append-only invariant | |
| Block-level document model | |
| Task hierarchy | |
| Roadmap milestones | |
| Full per-tool parameter reference | |
references/command_list.mdreferences/documentation_graph.mdreferences/bootstrap.mdconport docs <topic>| 主题 | 页面 |
|---|---|
| 优先保存规范 | |
| 知识图谱模型(项目链接 + GraphRAG) | |
| 交叉引用语法 | |
| 文档图谱标注(完整参考) | |
| 写入后验证 / 精简响应 | |
| |
| 知识库缺口 | |
| 语义扫描 | |
| 规范追加-only规则 | |
| 块级文档模型 | |
| 任务层级 | |
| 路线图里程碑 | |
| 完整工具参数参考 | |
references/command_list.mdreferences/documentation_graph.mdreferences/bootstrap.md