以 Coder@m4c 身份领取统一台账 P-20260701-mindraw-codex-plugin-entry 的 M4C-MCPE-01,把 MEXP10 从 PM 规格推进到 m4c 侧可执行的 Codex plugin shell / project canvas entry。
目标入口:用户在 Codex 项目中说 Open the Mindraw canvas for this project. 后,插件以当前项目为 projectRoot,发现或创建 MindrawCanvas/,维护最新创建画布 registry,提供只读预览侧边栏和 编辑 入口交给 Mindraw 桌面 App。
~/plugins/mindraw Codex plugin scaffold。mindraw-open-canvas skill 已包含触发语 Open the Mindraw canvas for this project.。projectRoot,不会把 plugin 目录当项目根。MindrawCanvas/ latest-created registry 已实现:默认重复打开最后 / 最新创建画布;mtime 不影响选择。.mindraw 包内部,而是返回 MINDRAW_CANVAS_CREATE_API_REQUIRED。MINDRAW_PREVIEW_SOURCE_REQUIRED;有 approved preview artifact 的 fixture 下,sidebar GET /api/preview、pan / zoom / reset / 编辑 入口 smoke 通过。M4C-MCPE-01 标为 Partial complete / BLOCKED_FOR_PM_GATE_ON_MINDRAW_CAPABILITY。03-O 正式证据,commit:add4795 docs: record M4C MCPE plugin shell。/Users/ar/plugins/mindraw。/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/K2.项目管理/联调QA/2026-07-01-M4C-MCPE-01PluginShell.md。/Users/ar/Projects/ExcalidrawX/02-P/plan-progress.markdown 的 P-20260701-mindraw-codex-plugin-entry。add4795。SAFE,score 0,issues 0。03-O 状态:提交后 clean。变更前:
~/plugins/mindraw 不存在。mindraw-open-canvas skill、project canvas service 或 MEXP10 QA 证据。变更后:
~/plugins/mindraw/.codex-plugin/plugin.json~/plugins/mindraw/.mcp.json~/plugins/mindraw/package.json~/plugins/mindraw/README.md~/plugins/mindraw/lib/project-canvas.mjs~/plugins/mindraw/mcp/server.mjs~/plugins/mindraw/scripts/mindraw-canvas-service.mjs~/plugins/mindraw/scripts/start-canvas.sh~/plugins/mindraw/scripts/start-mcp.sh~/plugins/mindraw/skills/mindraw-open-canvas/SKILL.md范围边界:
~/plugins/mindraw,不属于 m4c 03-O Git 根。03-O 只提交正式 QA 和索引。p.mindrawforcodex/02-P 继续作为过程 QA 证据,不纳入 m4c Git。.gitignore,只输出 MindrawCanvas/ 忽略建议。.mindraw 包内部 drawing.excalidraw、manifest.json 或 .assets/。M4C-MCPE-01 只能作为 plugin shell / guard / QA 收口,不能宣称 MEXP10 完整 PASS。MINDRAW_CANVAS_CREATE_API_REQUIREDMINDRAW_PREVIEW_SOURCE_REQUIREDMINDRAW_OPEN_PACKAGE_API_REQUIREDMD-MCPE-01,由 Mindraw 补 create / preview / open capability 后再进入 PM-MCPE-GATE。插件目录:
/Users/ar/plugins/mindraw/.codex-plugin/plugin.json/Users/ar/plugins/mindraw/.mcp.json/Users/ar/plugins/mindraw/package.json/Users/ar/plugins/mindraw/README.md/Users/ar/plugins/mindraw/lib/project-canvas.mjs/Users/ar/plugins/mindraw/mcp/server.mjs/Users/ar/plugins/mindraw/scripts/mindraw-canvas-service.mjs/Users/ar/plugins/mindraw/scripts/start-canvas.sh/Users/ar/plugins/mindraw/scripts/start-mcp.sh/Users/ar/plugins/mindraw/skills/mindraw-open-canvas/SKILL.mdm4c 正式输出区:
/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/C1.source/CODEGRAPH.md/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/K2.项目管理/README.md/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/03-O/K2.项目管理/联调QA/2026-07-01-M4C-MCPE-01PluginShell.md过程与台账:
/Users/ar/Projects/ExcalidrawX/02-P/plan-progress.markdown/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/INDEX.md/Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP10-CodexPluginEntry/qa/npm check:PASS。用途:复验 Mindraw Codex plugin shell、SkillSpector gate、MCP stdio 和 sidebar preview service。
前置条件:
/Users/ar/plugins/mindraw。设置 / 验证命令:
npm run --prefix /Users/ar/plugins/mindraw check
node /Users/ar/plugins/mindraw/scripts/mindraw-canvas-service.mjs smoke --report /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP10-CodexPluginEntry/qa/m4c-mcpe-01-plugin-shell-smoke.json
python3 /Users/ar/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py /Users/ar/plugins/mindraw
skillspector scan /Users/ar/plugins/mindraw/skills/mindraw-open-canvas --no-llm --format markdown --output /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP10-CodexPluginEntry/qa/m4c-mcpe-01-skillspector.md
skillspector scan /Users/ar/plugins/mindraw/skills/mindraw-open-canvas --no-llm --format json --output /Users/ar/Projects/ExcalidrawX/p.mindrawforcodex/02-P/MEXP10-CodexPluginEntry/qa/m4c-mcpe-01-skillspector.json
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"inspect_mindraw_project_canvas","arguments":{"projectRoot":"/tmp/mindraw-mcp-smoke-project"}}}' | /Users/ar/plugins/mindraw/scripts/start-mcp.sh
Sidebar service fixture smoke:
tmp=$(mktemp -d /tmp/mindraw-service-smoke.XXXXXX)
mkdir -p "$tmp/MindrawCanvas/26.0701-01.mindraw"
printf '%s\n' '<svg xmlns="http://www.w3.org/2000/svg" width="400" height="240"><rect width="400" height="240" fill="white"/><text x="24" y="48" font-size="24">Preview</text></svg>' > "$tmp/MindrawCanvas/26.0701-01.mindraw/preview.svg"
node /Users/ar/plugins/mindraw/scripts/mindraw-canvas-service.mjs serve --project-root "$tmp" --port 43229
另一个终端验证:
curl -fsS http://127.0.0.1:43229/api/state
curl -fsS http://127.0.0.1:43229/
curl -fsS -D /tmp/mindraw-preview-headers.txt -o /tmp/mindraw-preview.svg http://127.0.0.1:43229/api/preview
清理 / 恢复:
# 停止 service 进程:在运行 server 的终端按 Ctrl-C。
rm -rf "$tmp"
搜索关键词:M4C-MCPE-01、mindraw-open-canvas、MINDRAW_CANVAS_CREATE_API_REQUIRED、MINDRAW_PREVIEW_SOURCE_REQUIRED、MINDRAW_OPEN_PACKAGE_API_REQUIRED。
PM-MCPE-GATE,验证真实 install / reload 和真实项目目录行为。MD-MCPE-01 时直接沿用本轮三个 blocker 作为 Mindraw 侧最小能力清单。