@geminilight/mindos 0.6.57 → 0.6.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_standalone/.mindos-build-version +1 -1
- package/_standalone/.next/BUILD_ID +1 -1
- package/_standalone/.next/app-path-routes-manifest.json +21 -21
- package/_standalone/.next/build-manifest.json +2 -2
- package/_standalone/.next/cache/.previewinfo +1 -1
- package/_standalone/.next/cache/.rscinfo +1 -1
- package/_standalone/.next/cache/config.json +3 -3
- package/_standalone/.next/prerender-manifest.json +3 -3
- package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error.html +2 -2
- package/_standalone/.next/server/app/_global-error.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/_standalone/.next/server/app/_not-found/page.js +1 -1
- package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js +2 -2
- package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/page.js +1 -1
- package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/config/route.js +1 -1
- package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/detect/route.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/route.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask/route.js +4 -4
- package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/import/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/raw/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install/route.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/monitoring/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/recent-files/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/search/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/reset-token/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/route.js +1 -1
- package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/skills/route.js +1 -1
- package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/tree-version/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changes/page.js +2 -2
- package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/page.js +1 -1
- package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/explore/page.js +2 -2
- package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/help/page.js +2 -2
- package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/login/page.js +1 -1
- package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/page.js +1 -1
- package/_standalone/.next/server/app/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/setup/page.js +2 -2
- package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/trash/page.js +3 -3
- package/_standalone/.next/server/app/trash/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/view/[...path]/page.js +3 -3
- package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/wiki/page.js +1 -1
- package/_standalone/.next/server/app/wiki/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/wiki/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app-paths-manifest.json +21 -21
- package/_standalone/.next/server/chunks/1550.js +1 -1
- package/_standalone/.next/server/chunks/1750.js +1 -1
- package/_standalone/.next/server/chunks/3484.js +1 -1
- package/_standalone/.next/server/chunks/530.js +23 -23
- package/_standalone/.next/server/chunks/6539.js +1 -1
- package/_standalone/.next/server/chunks/{2159.js → 6793.js} +2 -2
- package/_standalone/.next/server/pages/500.html +2 -2
- package/_standalone/.next/server/server-reference-manifest.js +1 -1
- package/_standalone/.next/server/server-reference-manifest.json +1 -1
- package/_standalone/.next/static/chunks/1053-fe009233cff06e72.js +29 -0
- package/_standalone/.next/static/chunks/7249-fa98ca10e9a10f39.js +11 -0
- package/_standalone/.next/static/chunks/app/{layout-b3919384ec2eb979.js → layout-7e02ddf4144b01f1.js} +11 -11
- package/_standalone/.next/static/chunks/app/page-6a6a12bd6d6812d0.js +7 -0
- package/_standalone/.next/static/chunks/app/trash/page-54cbd5c98d9de69b.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/page-ca7bdcbf27f88a46.js +12 -0
- package/_standalone/.next/trace +64 -64
- package/_standalone/__tests__/api/mcp-install.test.ts +3 -2
- package/_standalone/__tests__/ask/non-streaming-api.test.ts +281 -0
- package/_standalone/__tests__/core/skill-install-logic.test.ts +1 -0
- package/_standalone/components/agents/CustomAgentModal.tsx +32 -8
- package/_standalone/data/skills/mindos/SKILL.md +14 -9
- package/_standalone/data/skills/mindos-zh/SKILL.md +13 -4
- package/_standalone/tsconfig.tsbuildinfo +1 -1
- package/app/app/api/agents/custom/route.ts +8 -0
- package/app/app/api/ask/route.ts +171 -10
- package/app/app/api/mcp/agents/route.ts +5 -3
- package/app/app/api/settings/route.ts +9 -0
- package/app/app/api/settings/test-key/route.ts +13 -1
- package/app/components/agents/CustomAgentModal.tsx +32 -8
- package/app/data/skills/mindos/SKILL.md +14 -9
- package/app/data/skills/mindos-zh/SKILL.md +13 -4
- package/app/lib/custom-agents.ts +45 -2
- package/app/lib/i18n/modules/panels.ts +10 -2
- package/app/lib/mcp-agents.ts +10 -0
- package/bin/lib/mcp-agents.js +10 -0
- package/package.json +1 -1
- package/skills/mindos/SKILL.md +10 -4
- package/skills/mindos-max/SKILL.md +191 -0
- package/skills/mindos-max-workspace/evals/evals.json +23 -0
- package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/eval_metadata.json +11 -0
- package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/old_skill/grading.json +28 -0
- package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/old_skill/outputs/transcript.md +203 -0
- package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/with_skill/grading.json +28 -0
- package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/with_skill/outputs/transcript.md +271 -0
- package/skills/mindos-max-workspace/iteration-1/save-meeting-decision-zh/eval_metadata.json +11 -0
- package/skills/mindos-max-workspace/iteration-1/save-meeting-decision-zh/old_skill/grading.json +28 -0
- package/skills/mindos-max-workspace/iteration-1/save-meeting-decision-zh/old_skill/outputs/transcript.md +121 -0
- package/skills/mindos-max-workspace/iteration-1/save-meeting-decision-zh/with_skill/grading.json +28 -0
- package/skills/mindos-max-workspace/iteration-1/save-meeting-decision-zh/with_skill/outputs/transcript.md +168 -0
- package/skills/mindos-max-workspace/iteration-1/search-past-decision-zh/eval_metadata.json +11 -0
- package/skills/mindos-max-workspace/iteration-1/search-past-decision-zh/old_skill/grading.json +28 -0
- package/skills/mindos-max-workspace/iteration-1/search-past-decision-zh/old_skill/outputs/transcript.md +143 -0
- package/skills/mindos-max-workspace/iteration-1/search-past-decision-zh/with_skill/grading.json +28 -0
- package/skills/mindos-max-workspace/iteration-1/search-past-decision-zh/with_skill/outputs/transcript.md +233 -0
- package/skills/mindos-max-workspace/skill-snapshot/mindos-original/SKILL.md +165 -0
- package/skills/mindos-max-workspace/skill-snapshot/mindos-original/references/README.md +12 -0
- package/skills/mindos-max-workspace/skill-snapshot/mindos-original/references/post-task-hooks.md +27 -0
- package/skills/mindos-max-workspace/skill-snapshot/mindos-original/references/preference-capture.md +41 -0
- package/skills/mindos-max-workspace/skill-snapshot/mindos-original/references/sop-template.md +74 -0
- package/skills/mindos-max-workspace/skill-snapshot/mindos-original/references/write-supplement.md +119 -0
- package/skills/mindos-max-zh/SKILL.md +192 -0
- package/skills/mindos-zh/SKILL.md +11 -3
- package/_standalone/.next/static/chunks/1053-5cb008a24930e271.js +0 -29
- package/_standalone/.next/static/chunks/7249-8cd568ad23656622.js +0 -11
- package/_standalone/.next/static/chunks/app/page-6436a99cda35132b.js +0 -7
- package/_standalone/.next/static/chunks/app/trash/page-8dc388695344fdd4.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/page-b292b55305ecc021.js +0 -12
- /package/_standalone/.next/static/{zOaEtgJbdRMncnCBucULp → 2ksXveDzEcnCMRIElDkLq}/_buildManifest.js +0 -0
- /package/_standalone/.next/static/{zOaEtgJbdRMncnCBucULp → 2ksXveDzEcnCMRIElDkLq}/_ssgManifest.js +0 -0
package/bin/lib/mcp-agents.js
CHANGED
|
@@ -217,6 +217,15 @@ export const MCP_AGENTS = {
|
|
|
217
217
|
presenceCli: 'codex',
|
|
218
218
|
presenceDirs: ['~/.codex/'],
|
|
219
219
|
},
|
|
220
|
+
'antigravity': {
|
|
221
|
+
name: 'Antigravity',
|
|
222
|
+
project: '.antigravity/mcp_config.json',
|
|
223
|
+
global: '~/.gemini/antigravity/mcp_config.json',
|
|
224
|
+
key: 'mcpServers',
|
|
225
|
+
preferredTransport: 'stdio',
|
|
226
|
+
presenceCli: 'agy',
|
|
227
|
+
presenceDirs: ['~/.gemini/antigravity/'],
|
|
228
|
+
},
|
|
220
229
|
};
|
|
221
230
|
|
|
222
231
|
/**
|
|
@@ -243,6 +252,7 @@ export const SKILL_AGENT_REGISTRY = {
|
|
|
243
252
|
'roo': { mode: 'additional', skillAgentName: 'roo' },
|
|
244
253
|
'github-copilot': { mode: 'universal' },
|
|
245
254
|
'codex': { mode: 'universal' },
|
|
255
|
+
'antigravity': { mode: 'additional', skillAgentName: 'antigravity' },
|
|
246
256
|
};
|
|
247
257
|
|
|
248
258
|
export function detectAgentPresence(agentKey) {
|
package/package.json
CHANGED
package/skills/mindos/SKILL.md
CHANGED
|
@@ -4,12 +4,18 @@ description: >
|
|
|
4
4
|
Operate a MindOS knowledge base: update notes, search, organize files, execute SOPs/workflows,
|
|
5
5
|
retrospective, append CSV, cross-agent handoff, route unstructured input to the right files,
|
|
6
6
|
distill experience, sync related docs.
|
|
7
|
-
|
|
7
|
+
更新笔记, 搜索知识库, 整理文件, 执行SOP/工作流, 复盘, 追加CSV, 跨Agent交接,
|
|
8
|
+
路由非结构化输入到对应文件, 提炼经验, 同步关联文档.
|
|
8
9
|
NOT for editing app source, project docs, or paths outside the KB.
|
|
9
10
|
Core concepts: Space, Instruction (INSTRUCTION.md), Skill (SKILL.md); notes can embody both.
|
|
10
|
-
Trigger when user asks to: save or record
|
|
11
|
-
a file, organize notes, run a workflow or SOP, capture decisions from a session, append rows
|
|
12
|
-
to a table or CSV, hand off context to another agent
|
|
11
|
+
Trigger when user asks to: save or record anything, search for prior notes or context, update or
|
|
12
|
+
edit a file, organize notes, run a workflow or SOP, capture decisions from a session, append rows
|
|
13
|
+
to a table or CSV, hand off context to another agent, check if something was discussed before,
|
|
14
|
+
look up a past decision, distill lessons learned, prepare context for a meeting.
|
|
15
|
+
Also trigger on Chinese: 帮我记下来, 搜一下笔记, 更新知识库, 整理文件, 复盘, 提炼经验,
|
|
16
|
+
保存, 记录, 交接, 查一下之前的, 有没有相关笔记, 把这个存起来.
|
|
17
|
+
When the user's question implies stored context may exist (past decisions, previous discussions,
|
|
18
|
+
meeting records), consider searching MindOS even if they don't explicitly mention it.
|
|
13
19
|
---
|
|
14
20
|
|
|
15
21
|
# MindOS Skill
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mindos-max
|
|
3
|
+
description: >
|
|
4
|
+
The user's second brain — a persistent, shared knowledge base that ALL agents read from and write to.
|
|
5
|
+
MindOS is the global memory layer: decisions, meeting notes, SOPs, debugging lessons, architecture
|
|
6
|
+
choices, research findings, preferences, and conversation summaries all live here.
|
|
7
|
+
|
|
8
|
+
PROACTIVE USE — do not wait for the user to say "save to knowledge base":
|
|
9
|
+
(1) Before answering any question about past decisions, discussions, or context → search MindOS first.
|
|
10
|
+
(2) After any valuable output (decision made, bug fixed, lesson learned, meeting summarized) → offer to save it.
|
|
11
|
+
(3) When handing off to another agent or ending a session → persist key context to MindOS.
|
|
12
|
+
|
|
13
|
+
Trigger on ALL of these, even without explicit "MindOS" mention: save/record anything,
|
|
14
|
+
search prior notes, update files, organize/restructure, run SOPs or workflows, retrospective,
|
|
15
|
+
append CSV/table data, cross-agent handoff, distill experience, sync related docs, check if
|
|
16
|
+
something was discussed before, look up a past decision, find a template, prepare meeting context,
|
|
17
|
+
daily logging, track goals. Also trigger on Chinese equivalents: 帮我记下来, 搜一下笔记,
|
|
18
|
+
更新知识库, 整理文件, 复盘, 提炼经验, 保存, 记录, 交接.
|
|
19
|
+
|
|
20
|
+
When in doubt whether MindOS applies — it probably does. Check anyway.
|
|
21
|
+
NOT for editing app source code or project repos outside the KB.
|
|
22
|
+
Core concepts: Space, Instruction (INSTRUCTION.md), Skill (SKILL.md).
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# MindOS Skill
|
|
26
|
+
|
|
27
|
+
<!-- version: 3.1.0-max — aggressive global memory mode -->
|
|
28
|
+
|
|
29
|
+
> **You are the user's memory.** Every agent shares MindOS. If something is worth remembering, save it.
|
|
30
|
+
> If you need context, check MindOS first. Be proactive — don't wait to be asked.
|
|
31
|
+
|
|
32
|
+
## Proactive memory behavior
|
|
33
|
+
|
|
34
|
+
Unlike the conservative version of this skill, you should **actively look for opportunities** to use MindOS:
|
|
35
|
+
|
|
36
|
+
- **Before answering questions about past work**: If the user asks "what did we decide about X?" or "how did we handle Y?", search MindOS before guessing. Even if they don't mention MindOS, their question implies stored context exists.
|
|
37
|
+
- **After completing meaningful work**: If you just helped debug something, made an architecture decision, summarized a meeting, or resolved a complex issue — proactively ask: "Want me to save this to MindOS so the team can reference it later?"
|
|
38
|
+
- **During handoffs**: When ending a session or passing context to another agent, persist the key decisions and context to MindOS so nothing is lost.
|
|
39
|
+
- **When you notice knowledge gaps**: If you search MindOS and find nothing for a topic the user clearly has opinions about, suggest creating a note for it.
|
|
40
|
+
|
|
41
|
+
The goal: the user should never have to remember to use MindOS. You remember for them.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## CLI commands
|
|
46
|
+
|
|
47
|
+
Use `mindos file <subcommand>` for all knowledge base operations. Add `--json` for structured output.
|
|
48
|
+
|
|
49
|
+
| Operation | Command |
|
|
50
|
+
|-----------|---------|
|
|
51
|
+
| List files | `mindos file list` |
|
|
52
|
+
| Read file | `mindos file read <path>` |
|
|
53
|
+
| Write/overwrite | `mindos file write <path> --content "..."` |
|
|
54
|
+
| Create new file | `mindos file create <path> --content "..."` |
|
|
55
|
+
| Append to file | `mindos file append <path> --content "..."` |
|
|
56
|
+
| Edit section | `mindos file edit-section <path> -H "## Heading" --content "..."` |
|
|
57
|
+
| Insert after heading | `mindos file insert-heading <path> -H "## Heading" --content "..."` |
|
|
58
|
+
| Append CSV row | `mindos file append-csv <path> --row "col1,col2,col3"` |
|
|
59
|
+
| Delete file | `mindos file delete <path>` |
|
|
60
|
+
| Rename/move | `mindos file rename <old> <new>` |
|
|
61
|
+
| Search | `mindos search "query"` |
|
|
62
|
+
| Backlinks | `mindos file backlinks <path>` |
|
|
63
|
+
| Recent files | `mindos file recent --limit 10` |
|
|
64
|
+
| Git history | `mindos file history <path>` |
|
|
65
|
+
| List spaces | `mindos space list` |
|
|
66
|
+
| Create space | `mindos space create "name"` |
|
|
67
|
+
|
|
68
|
+
> **MCP users:** If you only have MCP tools (`mindos_*`), use them directly — they are self-describing via their schemas. Prefer CLI when available (lower token cost).
|
|
69
|
+
|
|
70
|
+
### CLI setup
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
npm install -g @geminilight/mindos
|
|
74
|
+
# Remote mode: mindos config set url http://<IP>:<PORT> && mindos config set authToken <token>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Rules
|
|
80
|
+
|
|
81
|
+
1. **Bootstrap first** — list the KB tree to understand structure before searching or writing.
|
|
82
|
+
2. **Default to read-only.** Only write when the user explicitly asks to save, record, organize, or edit. Lookup / summarize / quote = no writes.
|
|
83
|
+
3. **Rule precedence** (highest wins): user's current-turn instruction > `.mindos/user-preferences.md` > nearest directory `INSTRUCTION.md` > root `INSTRUCTION.md` > this SKILL's defaults.
|
|
84
|
+
4. **Multi-file edits require a plan first.** Present the full change list; execute only after approval.
|
|
85
|
+
5. After create/delete/move/rename > **sync affected READMEs** automatically.
|
|
86
|
+
6. **Read before write.** Always read a file before overwriting it. Never write based on assumptions.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## NEVER do (hard-won pitfalls)
|
|
91
|
+
|
|
92
|
+
- **NEVER write to the KB root** unless explicitly told. Root is for governance files only. New content goes under the most fitting subdirectory.
|
|
93
|
+
- **NEVER assume directory names.** Infer from the actual bootstrap tree — the KB may use Chinese names or flat layout.
|
|
94
|
+
- **NEVER use full-file overwrite for a small edit.** Use `mindos file edit-section` or `mindos file insert-heading` for targeted changes. Full rewrites destroy git diffs.
|
|
95
|
+
- **NEVER search with a single keyword.** Fire 2-4 parallel searches (synonyms, abbreviations, Chinese/English variants).
|
|
96
|
+
- **NEVER modify `INSTRUCTION.md` or `README.md` without confirmation.** Governance docs — treat as high-sensitivity.
|
|
97
|
+
- **NEVER create a file without checking siblings.** Read 1-2 files in the target directory to learn local style.
|
|
98
|
+
- **NEVER leave orphan references.** After rename/move, check backlinks and update every referring file.
|
|
99
|
+
- **NEVER skip routing confirmation for multi-file writes.** The user's mental model may differ from yours.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## MindOS concepts
|
|
104
|
+
|
|
105
|
+
- **Space** — Knowledge partitions organized the way you think. Agents follow the same structure.
|
|
106
|
+
- **Instruction** — A rules file (`INSTRUCTION.md`) all connected agents obey.
|
|
107
|
+
- **Skill** — Teaches agents how to read, write, and organize the KB.
|
|
108
|
+
|
|
109
|
+
Notes can embody both Instruction and Skill — they're just Markdown files in the tree.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Decision tree
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
User request
|
|
117
|
+
|
|
|
118
|
+
|- Lookup / summarize / quote?
|
|
119
|
+
| -> [Read-only]: search -> read -> answer with citations. No writes.
|
|
120
|
+
|
|
|
121
|
+
|- Save / record / update / organize specific content?
|
|
122
|
+
| |- Single file -> [Single-file edit]
|
|
123
|
+
| -> Multiple files or unclear -> [Multi-file routing] -- plan first
|
|
124
|
+
|
|
|
125
|
+
|- Structural change (rename / move / delete / reorganize)?
|
|
126
|
+
| -> [Structural path] -- check backlinks before and after
|
|
127
|
+
|
|
|
128
|
+
|- Procedural / repeatable task?
|
|
129
|
+
| -> [SOP path] -- find and follow existing SOP, or create one
|
|
130
|
+
|
|
|
131
|
+
|- Retrospective / distill / handoff?
|
|
132
|
+
| -> [Retrospective path]
|
|
133
|
+
|
|
|
134
|
+
-> Ambiguous?
|
|
135
|
+
-> ASK. Propose 2-3 specific options based on KB state.
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Judgment heuristics
|
|
141
|
+
|
|
142
|
+
**Save intent boundary:**
|
|
143
|
+
- "save this" / "record" / "write down" = write
|
|
144
|
+
- "search" / "summarize" / "look up" = read-only
|
|
145
|
+
- "organize" -> ask: display only, or write back?
|
|
146
|
+
|
|
147
|
+
**File location uncertainty:**
|
|
148
|
+
- Can't decide in 5 seconds -> use nearest existing directory, inform user
|
|
149
|
+
- "Just put it somewhere" -> inbox, propose classification after
|
|
150
|
+
|
|
151
|
+
**Scope creep:**
|
|
152
|
+
- Input routes to >5 files -> pause, confirm scope
|
|
153
|
+
- "Update all of these" spanning multiple topics -> split into batches
|
|
154
|
+
|
|
155
|
+
**Citation:** KB-cited facts must include the file path.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Post-task hooks
|
|
160
|
+
|
|
161
|
+
After write tasks (not simple reads), scan this table. At most 1 proposal; highest priority wins. Check `.mindos/user-preferences.md` suppression first.
|
|
162
|
+
|
|
163
|
+
| Hook | Priority | Condition |
|
|
164
|
+
|------|----------|-----------|
|
|
165
|
+
| Experience capture | high | Debugging, troubleshooting, or multi-round work |
|
|
166
|
+
| Consistency sync | high | Edited file with backlinks |
|
|
167
|
+
| SOP drift | medium | Followed SOP but diverged |
|
|
168
|
+
| Linked update | medium | Changed CSV/TODO status with related docs |
|
|
169
|
+
| Structure classification | medium | Created file in inbox/temp location |
|
|
170
|
+
| Pattern extraction | low | 3+ similar operations this session |
|
|
171
|
+
|
|
172
|
+
If a hook triggers -> read [references/post-task-hooks.md](../mindos/references/post-task-hooks.md).
|
|
173
|
+
|
|
174
|
+
## Preference capture
|
|
175
|
+
|
|
176
|
+
When user expresses a standing preference -> read [references/preference-capture.md](../mindos/references/preference-capture.md) and follow confirm-then-write flow.
|
|
177
|
+
|
|
178
|
+
## SOP authoring
|
|
179
|
+
|
|
180
|
+
When creating/rewriting an SOP -> read [references/sop-template.md](../mindos/references/sop-template.md).
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Error handling (CLI)
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
"command not found: mindos" -> npm install -g @geminilight/mindos
|
|
188
|
+
"Mind root not configured" -> mindos onboard
|
|
189
|
+
"401 Unauthorized" -> Check AUTH_TOKEN: mindos token (on server)
|
|
190
|
+
"ECONNREFUSED" -> Start server: mindos start
|
|
191
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "mindos-max",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"prompt": "我昨天跟产品经理开会讨论了一个新的用户反馈系统的方案,他们建议用NPS打分加上开放式评论,我觉得挺好的。帮我把这个决策记下来,以后其他同事问起来可以查到。",
|
|
7
|
+
"expected_output": "Agent should recognize this as a 'save decision from meeting' task, use MindOS to store the meeting note with proper structure (date, attendees implied, decision, rationale), and place it in an appropriate directory in the KB.",
|
|
8
|
+
"files": []
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": 2,
|
|
12
|
+
"prompt": "上周我记得我们讨论过API限流的方案,具体是怎么定的来着?好像是每分钟100次还是200次?我找不到了。",
|
|
13
|
+
"expected_output": "Agent should recognize this as a 'search for past decision' task, use MindOS search to find the API rate limiting discussion, and return the relevant content with file path citation.",
|
|
14
|
+
"files": []
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": 3,
|
|
18
|
+
"prompt": "I just finished debugging a really tricky race condition in our payment service - turns out the mutex wasn't being released properly in the error path. Took me 3 hours to figure out. I want to make sure the team doesn't hit this again.",
|
|
19
|
+
"expected_output": "Agent should recognize this as 'capture debugging experience/lessons learned', use MindOS to save a structured troubleshooting note with problem description, root cause, solution, and prevention tips.",
|
|
20
|
+
"files": []
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
package/skills/mindos-max-workspace/iteration-1/capture-debugging-experience-en/eval_metadata.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"eval_id": 3,
|
|
3
|
+
"eval_name": "capture-debugging-experience-en",
|
|
4
|
+
"prompt": "I just finished debugging a really tricky race condition in our payment service - turns out the mutex wasn't being released properly in the error path. Took me 3 hours to figure out. I want to make sure the team doesn't hit this again.",
|
|
5
|
+
"assertions": [
|
|
6
|
+
{"text": "Uses mindos CLI to save debugging experience note", "type": "behavioral"},
|
|
7
|
+
{"text": "Structured note includes: problem description, root cause, solution, prevention tips", "type": "content"},
|
|
8
|
+
{"text": "Bootstraps KB tree before writing", "type": "behavioral"},
|
|
9
|
+
{"text": "Recognizes this as experience capture / lessons learned scenario", "type": "behavioral"}
|
|
10
|
+
]
|
|
11
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"eval_id": 3,
|
|
3
|
+
"eval_name": "capture-debugging-experience-en",
|
|
4
|
+
"run_type": "old_skill",
|
|
5
|
+
"skill": "mindos-original",
|
|
6
|
+
"expectations": [
|
|
7
|
+
{
|
|
8
|
+
"text": "Uses mindos CLI to save debugging experience note",
|
|
9
|
+
"passed": true,
|
|
10
|
+
"evidence": "Uses `mindos file insert-heading \"engineering/debugging-experiences.md\"` in Step 5 — chose to append to existing file rather than create new."
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"text": "Structured note includes: problem description, root cause, solution, prevention tips",
|
|
14
|
+
"passed": true,
|
|
15
|
+
"evidence": "Content has Problem, Root Cause, Solution, Rule (with code review checklist), Debugging Approach, Tags sections."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"text": "Bootstraps KB tree before writing",
|
|
19
|
+
"passed": true,
|
|
20
|
+
"evidence": "Step 1 runs `mindos file list`."
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"text": "Recognizes this as experience capture / lessons learned scenario",
|
|
24
|
+
"passed": true,
|
|
25
|
+
"evidence": "Decision tree analysis identifies 'save / record' path and Experience capture hook (high priority)."
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# Transcript: Capturing Debugging Experience — Payment Service Race Condition
|
|
2
|
+
|
|
3
|
+
## User Input
|
|
4
|
+
|
|
5
|
+
> I just finished debugging a really tricky race condition in our payment service - turns out the mutex wasn't being released properly in the error path. Took me 3 hours to figure out. I want to make sure the team doesn't hit this again.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Skill Analysis
|
|
10
|
+
|
|
11
|
+
### Decision Tree Path
|
|
12
|
+
|
|
13
|
+
Following the SKILL.md decision tree:
|
|
14
|
+
|
|
15
|
+
- **Is this a lookup / summarize / quote?** → No.
|
|
16
|
+
- **Is this a save / record / update / organize?** → **Yes.** The user explicitly says "I want to make sure the team doesn't hit this again" — this is a request to record/save experience.
|
|
17
|
+
- This is a **single-file edit** (or creation) — the debugging experience needs to be captured somewhere in the KB.
|
|
18
|
+
|
|
19
|
+
### Post-Task Hook Triggered
|
|
20
|
+
|
|
21
|
+
The "Experience capture" hook (priority: high) applies because this is **debugging / troubleshooting** work. Per the hook template:
|
|
22
|
+
|
|
23
|
+
> "Record this experience to {related experience file}?" — Format: problem → cause → solution → rule
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Simulated Execution Plan
|
|
28
|
+
|
|
29
|
+
### Step 1: Bootstrap — List the KB tree
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
mindos file list
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Purpose:** Understand the KB structure before deciding where to save. Per Rule 1: "Bootstrap first — list the KB tree to understand structure before searching or writing."
|
|
36
|
+
|
|
37
|
+
**Expected output (hypothetical):**
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
/
|
|
41
|
+
├── projects/
|
|
42
|
+
│ ├── payment-service/
|
|
43
|
+
│ │ ├── README.md
|
|
44
|
+
│ │ ├── architecture.md
|
|
45
|
+
│ │ └── troubleshooting.md
|
|
46
|
+
│ └── ...
|
|
47
|
+
├── engineering/
|
|
48
|
+
│ ├── debugging-experiences.md
|
|
49
|
+
│ ├── best-practices.md
|
|
50
|
+
│ └── ...
|
|
51
|
+
├── inbox/
|
|
52
|
+
└── INSTRUCTION.md
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Step 2: Search for related files
|
|
56
|
+
|
|
57
|
+
Per the NEVER rule: "NEVER search with a single keyword. Fire 2-4 parallel searches."
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
mindos search "race condition"
|
|
61
|
+
mindos search "mutex debugging"
|
|
62
|
+
mindos search "payment service"
|
|
63
|
+
mindos search "concurrency bug"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Purpose:** Find if there's already a debugging experience file, a payment service section, or an existing concurrency-related note to append to rather than creating a duplicate.
|
|
67
|
+
|
|
68
|
+
### Step 3: Read existing files in the target directory
|
|
69
|
+
|
|
70
|
+
Per the NEVER rule: "NEVER create a file without checking siblings. Read 1-2 files in the target directory to learn local style."
|
|
71
|
+
|
|
72
|
+
Assuming the search found a relevant directory (e.g., `engineering/` or `projects/payment-service/`), read sibling files:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
mindos file read "engineering/debugging-experiences.md"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Purpose:** Learn the local style and format so the new entry matches existing conventions.
|
|
79
|
+
|
|
80
|
+
### Step 4: Determine save location
|
|
81
|
+
|
|
82
|
+
**If** a file like `engineering/debugging-experiences.md` or `projects/payment-service/troubleshooting.md` already exists:
|
|
83
|
+
→ Append to it using `insert-heading` or `append`.
|
|
84
|
+
|
|
85
|
+
**If** no suitable file exists:
|
|
86
|
+
→ Create a new file in the most fitting subdirectory.
|
|
87
|
+
|
|
88
|
+
For this simulation, I'll assume an existing `engineering/debugging-experiences.md` exists and already has entries.
|
|
89
|
+
|
|
90
|
+
### Step 5: Write the experience entry
|
|
91
|
+
|
|
92
|
+
Using the experience capture format from the post-task hook: **problem → cause → solution → rule**.
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
mindos file insert-heading "engineering/debugging-experiences.md" \
|
|
96
|
+
-H "## Experiences" \
|
|
97
|
+
--content "### Payment Service Race Condition — Mutex Not Released in Error Path
|
|
98
|
+
|
|
99
|
+
**Date:** 2026-04-07
|
|
100
|
+
**Time spent:** ~3 hours
|
|
101
|
+
**Severity:** High (potential payment inconsistency)
|
|
102
|
+
|
|
103
|
+
#### Problem
|
|
104
|
+
The payment service intermittently hung under concurrent requests. Transactions would stall and eventually time out, but only under load — never reproducible with a single request.
|
|
105
|
+
|
|
106
|
+
#### Root Cause
|
|
107
|
+
The mutex guarding the payment transaction critical section was acquired at the start of the handler but was **not released in the error path**. When an error occurred (e.g., validation failure, downstream timeout), the function returned early without calling \`mutex.Unlock()\` (or equivalent release). Subsequent requests waiting on the same mutex would block indefinitely.
|
|
108
|
+
|
|
109
|
+
Specifically:
|
|
110
|
+
- The happy path correctly released the mutex via \`defer\` or explicit unlock at the end.
|
|
111
|
+
- An early-return error branch added later bypassed the unlock.
|
|
112
|
+
- Under normal load, errors were rare enough that the mutex was eventually released by other mechanisms (process restart, timeout). Under high load, the probability of hitting the error path increased, causing cascading stalls.
|
|
113
|
+
|
|
114
|
+
#### Solution
|
|
115
|
+
1. Ensured the mutex release is handled via \`defer mutex.Unlock()\` immediately after acquisition — guaranteeing release regardless of which code path executes.
|
|
116
|
+
2. Audited all other critical sections in the payment service for the same pattern.
|
|
117
|
+
3. Added a unit test that forces an error after mutex acquisition and verifies the mutex is released.
|
|
118
|
+
|
|
119
|
+
#### Rule (for the team)
|
|
120
|
+
> **Always use defer (or try-finally / RAII) to release locks immediately after acquisition.** Never rely on explicit unlock calls scattered across multiple return paths. If your language supports it, the lock-release pair should be on adjacent lines:
|
|
121
|
+
>
|
|
122
|
+
> \`\`\`go
|
|
123
|
+
> mu.Lock()
|
|
124
|
+
> defer mu.Unlock()
|
|
125
|
+
> \`\`\`
|
|
126
|
+
>
|
|
127
|
+
> **Code review checklist item:** When reviewing any function that acquires a lock, verify that every return path (including error returns and panics) releases it. Search for early returns between Lock() and Unlock().
|
|
128
|
+
|
|
129
|
+
#### Debugging Approach (what made it hard)
|
|
130
|
+
- The bug was intermittent — only triggered under concurrent load when an error happened.
|
|
131
|
+
- Initial investigation focused on network timeouts (wrong direction).
|
|
132
|
+
- Breakthrough: added lock-acquisition logging with timestamps, which showed a lock was held for >30s — way beyond any normal transaction time.
|
|
133
|
+
- Narrowed to the specific error path by correlating the held-lock timestamp with error logs.
|
|
134
|
+
|
|
135
|
+
**Tags:** #concurrency #mutex #race-condition #payment-service #debugging"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Step 6: Verify the write
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
mindos file read "engineering/debugging-experiences.md"
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Purpose:** Confirm the entry was appended correctly and the file is well-formed.
|
|
145
|
+
|
|
146
|
+
### Step 7: Check backlinks and related files
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
mindos file backlinks "engineering/debugging-experiences.md"
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
If the payment service has its own troubleshooting doc, consider adding a cross-reference:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
mindos file insert-heading "projects/payment-service/troubleshooting.md" \
|
|
156
|
+
-H "## Known Issues" \
|
|
157
|
+
--content "- **Mutex release in error paths** — See [[engineering/debugging-experiences.md#Payment Service Race Condition]] for full write-up. Rule: always use defer/finally for lock release."
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Step 8: Post-task hook evaluation
|
|
161
|
+
|
|
162
|
+
After the write, scan the post-task hooks table:
|
|
163
|
+
|
|
164
|
+
| Hook | Triggered? | Action |
|
|
165
|
+
|------|-----------|--------|
|
|
166
|
+
| Experience capture | ✅ Already handled | This was the primary task |
|
|
167
|
+
| Consistency sync | Maybe | If backlinks exist to the edited file, propose sync |
|
|
168
|
+
| SOP drift | No | No SOP was followed |
|
|
169
|
+
| Linked update | Maybe | If a concurrency best-practices doc exists, propose update |
|
|
170
|
+
| Structure classification | No | File was placed in an existing directory |
|
|
171
|
+
| Pattern extraction | No | Single operation |
|
|
172
|
+
|
|
173
|
+
**Proposal to user (if applicable):**
|
|
174
|
+
|
|
175
|
+
> "Your engineering/best-practices.md has a concurrency section — add this mutex rule there too?"
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Summary of Commands (in order)
|
|
180
|
+
|
|
181
|
+
| # | Command | Purpose |
|
|
182
|
+
|---|---------|---------|
|
|
183
|
+
| 1 | `mindos file list` | Bootstrap: understand KB structure |
|
|
184
|
+
| 2 | `mindos search "race condition"` | Find related files (search 1/4) |
|
|
185
|
+
| 3 | `mindos search "mutex debugging"` | Find related files (search 2/4) |
|
|
186
|
+
| 4 | `mindos search "payment service"` | Find related files (search 3/4) |
|
|
187
|
+
| 5 | `mindos search "concurrency bug"` | Find related files (search 4/4) |
|
|
188
|
+
| 6 | `mindos file read "engineering/debugging-experiences.md"` | Read target file to learn style |
|
|
189
|
+
| 7 | `mindos file insert-heading "engineering/debugging-experiences.md" -H "## Experiences" --content "..."` | Write the experience entry |
|
|
190
|
+
| 8 | `mindos file read "engineering/debugging-experiences.md"` | Verify write succeeded |
|
|
191
|
+
| 9 | `mindos file backlinks "engineering/debugging-experiences.md"` | Check for files that reference this one |
|
|
192
|
+
| 10 | `mindos file insert-heading "projects/payment-service/troubleshooting.md" -H "## Known Issues" --content "..."` | Cross-reference in project-specific doc |
|
|
193
|
+
|
|
194
|
+
## Content Written
|
|
195
|
+
|
|
196
|
+
The experience entry follows the **problem → cause → solution → rule** format prescribed by the post-task hook, and includes:
|
|
197
|
+
|
|
198
|
+
- **Problem**: Observable symptoms (intermittent hangs under load)
|
|
199
|
+
- **Root Cause**: Mutex not released in error path due to early return
|
|
200
|
+
- **Solution**: Use `defer` for lock release + audit + add test
|
|
201
|
+
- **Rule**: Actionable team guideline with code review checklist item
|
|
202
|
+
- **Debugging Approach**: What made it hard and what the breakthrough was (useful for future investigators)
|
|
203
|
+
- **Tags**: For searchability within the KB
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"eval_id": 3,
|
|
3
|
+
"eval_name": "capture-debugging-experience-en",
|
|
4
|
+
"run_type": "with_skill",
|
|
5
|
+
"skill": "mindos-max",
|
|
6
|
+
"expectations": [
|
|
7
|
+
{
|
|
8
|
+
"text": "Uses mindos CLI to save debugging experience note",
|
|
9
|
+
"passed": true,
|
|
10
|
+
"evidence": "Uses `mindos file create \"engineering/debugging/payment-service-mutex-race-condition.md\"` in Step 5."
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"text": "Structured note includes: problem description, root cause, solution, prevention tips",
|
|
14
|
+
"passed": true,
|
|
15
|
+
"evidence": "Content has Problem, Symptoms, Root Cause, Solution, Prevention Rules (4 rules), Debugging Approach, Related Patterns, Tags sections."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"text": "Bootstraps KB tree before writing",
|
|
19
|
+
"passed": true,
|
|
20
|
+
"evidence": "Step 2 runs `mindos file list`."
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"text": "Recognizes this as experience capture / lessons learned scenario",
|
|
24
|
+
"passed": true,
|
|
25
|
+
"evidence": "Step 1 maps to 'Retrospective / distill' in decision tree and identifies Experience capture post-task hook."
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|