[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MQYP88VJ6EC560MJQACN4B":3,"skill-same:01M6MQYP88VJ6EC560MJQACN4B":59},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":6,"ownerHtmlUrl":42,"ownerBlogUrl":43,"ownerDescription":6,"updatedAt":44,"install":45,"resources":58},"01M6MQYP88VJ6EC560MJQACN4B","using-total-recall",null,"Initialize total-recall memory system and ensure session_start has been called. Use at session start or when memory features aren't working.","strvmarv\u002Ftotal-recall","strvmarv","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F458890?v=4","01M6MQY600CFX0YA5F9HQVCATP","Paul M","01M6MQY63Q75G0301CZVX76AQV",15,"MIT","https:\u002F\u002Fgithub.com\u002Fstrvmarv\u002Ftotal-recall\u002Fblob\u002Fmain\u002Fskills\u002Fusing-total-recall\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31],"recall","using total recall","recall memory","initialize","session start","memory","system","session","memory system","use","at","features","start","2026-11-10 10:12:30",false,"---\nname: using-total-recall\ndescription: Initialize total-recall memory system and ensure session_start has been called. Use at session start or when memory features aren't working.\n---\n\n# Using total-recall\n\nThis skill ensures the total-recall memory system is active for this session.\n\n## Immediate Action\n\n1. Call the total-recall `session_start` MCP tool now (if it already ran server-side, it returns cached results instantly)\n2. **If `session_start` is blocked by permissions** (e.g., in TUI fullscreen \u002F `dontAsk` mode):\n   - Tell the user: \"total-recall session_start was blocked by permissions. Your host's tool-permission settings need to allow total-recall's MCP tools to function (the exact tool name depends on how your host namespaces MCP tools). You may need to adjust permissions if you want total-recall active this session.\"\n   - On Claude Code, suggest running `\u002Ftotal-recall:commands setup` to auto-configure permissions for future sessions; other hosts don't have an automated fix yet — point the user at their host's own MCP tool-permission config.\n   - Proceed without memory features — this is degraded mode, not fatal\n3. **Announce startup** using the returned data:\n   - Report tier summary: pinned, hot, warm, cold, KB counts from `tierSummary`\n   - Report storage backend from `storage` (e.g. \"sqlite\", \"cortex\", \"postgres\"). If it shows a fallback like \"sqlite (cortex failed)\", flag this prominently.\n   - If `lastSessionAge` is present, mention when the last session was\n   - If `hints` are present, briefly surface the most relevant ones\n   - If `pinned_budget_pressure` is present in `hints`, surface it prominently: pinned entries are eating over half the context budget — suggest unpinning or trimming entries\n   - If `backgroundTasks.reindex` shows `state: \"running\"`, tell the user a one-time embedding re-index is in progress (`done`\u002F`total`): **local semantic retrieval is degraded until it completes**. It runs in the background and the server is fully usable meanwhile — re-check via the `status` tool or the next `session_start`. (This is normal after an embedding-model change or upgrade; it is not an error.)\n   - If `backgroundTasks.setup` is present (`event: \"provisioned\"`), briefly note that first-run setup finished (the memory engine was downloaded) — a one-time message\n   - Keep it to 2-3 lines max\n4. Use `hints` to inform your behavior throughout the session\n5. Incorporate the returned context to inform your responses\n\nThe built-in web UI is available at any time via `total-recall ui` (opens a local browser dashboard on port 5577 by default). It is independent of the MCP session — no AI assistant needed to use it.\n\n## Ongoing Behaviors\n\nOnce initialized, follow these behaviors throughout the session. Tool calls will be visible to the user.\n\n### Handling startup not-ready results (shim provisioning)\n\nSince the MCP bootstrap shim (`bin\u002Fstart.js`) stays connected while it provisions and starts the engine, a `tools\u002Fcall` may return a structured not-ready result **before the engine is up** instead of dropping the connection. The response shape is an MCP tool result with `isError: true` and a JSON text payload:\n\n```json\n{ \"status\": \"not_ready\", \"phase\": \"\u003Cphase>\", \"hint\": \"total-recall is still starting up; retry in a moment.\" }\n```\n\nThe key phases you will actually see:\n\n| phase | What it means | What to do |\n|---|---|---|\n| `provisioning` | First launch after a plugin update — the shim is downloading and sha256-verifying the engine binary from GitHub Releases. | Wait 5–10 seconds and retry the tool call. Self-heals; the connection stays up. |\n| `engine-restarting` | The engine crashed and the shim is restarting it. | Retry shortly (5–10 s). After repeated failures the shim reports `engine-failed`. |\n| `engine-failed` | Engine could not be started after several attempts. | Surface the phase to the user and suggest restarting the MCP host. |\n\nThe MCP connection **never drops** during provisioning — this eliminates the old `MCP error -32000: Connection closed` that would appear on first launch after a plugin update. Once the shim is proxying to the engine (`phase: \"proxying\"`), it emits `notifications\u002Ftools\u002Flist_changed` and normal operation resumes.\n\nThis is **distinct** from the engine's own `model_not_ready` error (embedding model, described below). Both use the same recovery approach: wait briefly and retry.\n\n### Handling model bootstrap errors (embedding model)\n\nWhen `session_start` returns an error response containing `\"error\": \"model_not_ready\"`, parse the JSON payload and follow the recovery flow based on `reason`:\n\n| reason | What it means | What to do |\n|---|---|---|\n| `downloading` | First-run bootstrap is in progress (loading\u002Fvalidating the ~133 MB bundled ONNX model). Another process or this one holds the lock. | Wait 5–10 seconds and call `session_start` again. Repeat up to 12 times (~2 minutes total). Surface a brief status to the user on the first retry: \"Total-recall is preparing its embedding model on first run. This is a one-time setup.\" |\n| `missing` | Bundled model not found on disk. The runtime does not download it — it must be present in the artifact (fetched + sha256-verified at build via `scripts\u002Ffetch-bge-small.sh`). | Surface the `hint` field to the user verbatim (it contains manual install instructions) and proceed without memory features for this session. |\n| `corrupted` | Model file present but failed checksum (e.g., partial install or a bad bundled file). | Call `session_start` once more in case it was a transient read. If it fails again with the same reason, surface the `hint` field to the user verbatim (it contains manual install instructions) and proceed without memory. |\n| `failed` | Other unrecoverable error preparing the model. | Surface the `hint` field verbatim to the user (manual install commands) and proceed without memory features for this session. Do NOT keep retrying — that will only delay the user. |\n\nAfter successful recovery, all subsequent total-recall behaviors (capture, retrieve, session end) should resume normally. If recovery is impossible, the assistant must continue helping the user with their actual task — memory unavailability is a degraded mode, not a fatal error.\n\n### Capture (continuous)\n\nWhen you detect these patterns in user messages, call `memory_store`:\n\n- **Correction**: \"no\", \"not that\", \"actually\", \"use X instead\" -> type \"correction\"\n- **Preference**: How the user wants things done -> type \"preference\"\n- **Decision**: Non-obvious architectural or design choices -> type \"decision\"\n- **Pin**: \"pin that\", \"never forget this\", \"keep this permanently\" -> call `memory_pin` (for new content: `memory_store` with `pinned: true`)\n- **Unpin**: \"unpin X\" -> `memory_unpin`\n\nDo NOT ask permission — just store it.\n\n**Storage constraints (apply when storing or pinning):**\n- **Pins are short directives, not reference material.** Pinned entries are capped at 500 characters. If the content is longer, distill the RULE into \u003C= 500 chars and pin the distillation; keep the full detail as a normal warm memory.\n- **Store atomic, concise memories at every tier**: one fact per entry; split compound observations into separate memories. Long reference content belongs in the knowledge base (kb_ingest), not in memories.\n\n### Retrieve (continuous)\n\nOn each user message that is a question or task request:\n\n1. Call `memory_search` with the message, searching warm tier\n2. If top score \u003C 0.5, also search cold\u002Fknowledge tier\n3. Use results to inform your response\n\n### Feedback (continuous)\n\n`memory_search` and `kb_search` now return a `retrievalId` alongside `results`.\nAfter you use retrieved memories in your work, call `memory_feedback`:\n\n- Used it → `memory_feedback({ retrievalId, used: true })`\n- Searched and nothing was relevant → `memory_feedback({ retrievalId, used: false })`\n\nReport once per search, as soon as you know the outcome. Skip the call only when\n`retrievalId` is empty. Do NOT ask permission — just report it. This is what makes\nthe Dashboard \"Retrieval quality\" metric real.\n\n### Pinned directives (continuous)\n\nPinned directives are re-asserted automatically near the live edge by the\nper-turn pinned floor (where the host supports it — see the capability matrix in\n`skills\u002Fcommands\u002FSKILL.md`). You do not need to do anything for this.\n\nAdditionally: when the user makes a **significant task switch** (a clearly new\npiece of work), call `session_refresh` once. This re-prepends the pinned block\nand refreshes hot-tier context near the current generation point. On hosts\nwithout a per-turn floor (for example Cline or Windsurf) this is the primary way pinned directives\nstay salient — so do it on task switches there especially.\n\n### Session End\n\n1. Call `session_context` to get current hot tier entries\n2. If there are 2+ hot entries, launch the `total-recall:compactor` agent with the entries as input\n3. Parse the agent's JSON decisions and execute them\n4. Call `session_end` for final bookkeeping\n\n### Rules\n\n- Let tool calls be visible — users should see that memory is working\n- ALWAYS store corrections — highest-value memories\n- ALWAYS search warm tier before answering project questions\n- NEVER modify host tool files (Claude Code memory\u002F, CLAUDE.md, etc.)\n","# Using total-recall\n\nThis skill ensures the total-recall memory system is active for this session.\n\n## Immediate Action\n\n1. Call the total-recall `session_start` MCP tool now (if it already ran server-side, it returns cached results instantly)\n2. **If `session_start` is blocked by permissions** (e.g., in TUI fullscreen \u002F `dontAsk` mode):\n   - Tell the user: \"total-recall session_start was blocked by permissions. Your host's tool-permission settings need to allow total-recall's MCP tools to function (the exact tool name depends on how your host namespaces MCP tools). You may need to adjust permissions if you want total-recall active this session.\"\n   - On Claude Code, suggest running `\u002Ftotal-recall:commands setup` to auto-configure permissions for future sessions; other hosts don't have an automated fix yet — point the user at their host's own MCP tool-permission config.\n   - Proceed without memory features — this is degraded mode, not fatal\n3. **Announce startup** using the returned data:\n   - Report tier summary: pinned, hot, warm, cold, KB counts from `tierSummary`\n   - Report storage backend from `storage` (e.g. \"sqlite\", \"cortex\", \"postgres\"). If it shows a fallback like \"sqlite (cortex failed)\", flag this prominently.\n   - If `lastSessionAge` is present, mention when the last session was\n   - If `hints` are present, briefly surface the most relevant ones\n   - If `pinned_budget_pressure` is present in `hints`, surface it prominently: pinned entries are eating over half the context budget — suggest unpinning or trimming entries\n   - If `backgroundTasks.reindex` shows `state: \"running\"`, tell the user a one-time embedding re-index is in progress (`done`\u002F`total`): **local semantic retrieval is degraded until it completes**. It runs in the background and the server is fully usable meanwhile — re-check via the `status` tool or the next `session_start`. (This is normal after an embedding-model change or upgrade; it is not an error.)\n   - If `backgroundTasks.setup` is present (`event: \"provisioned\"`), briefly note that first-run setup finished (the memory engine was downloaded) — a one-time message\n   - Keep it to 2-3 lines max\n4. Use `hints` to inform your behavior throughout the session\n5. Incorporate the returned context to inform your responses\n\nThe built-in web UI is available at any time via `total-recall ui` (opens a local browser dashboard on port 5577 by default). It is independent of the MCP session — no AI assistant needed to use it.\n\n## Ongoing Behaviors\n\nOnce initialized, follow these behaviors throughout the session. Tool calls will be visible to the user.\n\n### Handling startup not-ready results (shim provisioning)\n\nSince the MCP bootstrap shim (`bin\u002Fstart.js`) stays connected while it provisions and starts the engine, a `tools\u002Fcall` may return a structured not-ready result **before the engine is up** instead of dropping the connection. The response shape is an MCP tool result with `isError: true` and a JSON text payload:\n\n```json\n{ \"status\": \"not_ready\", \"phase\": \"\u003Cphase>\", \"hint\": \"total-recall is still starting up; retry in a moment.\" }\n```\n\nThe key phases you will actually see:\n\n| phase | What it means | What to do |\n|---|---|---|\n| `provisioning` | First launch after a plugin update — the shim is downloading and sha256-verifying the engine binary from GitHub Releases. | Wait 5–10 seconds and retry the tool call. Self-heals; the connection stays up. |\n| `engine-restarting` | The engine crashed and the shim is restarting it. | Retry shortly (5–10 s). After repeated failures the shim reports `engine-failed`. |\n| `engine-failed` | Engine could not be started after several attempts. | Surface the phase to the user and suggest restarting the MCP host. |\n\nThe MCP connection **never drops** during provisioning — this eliminates the old `MCP error -32000: Connection closed` that would appear on first launch after a plugin update. Once the shim is proxying to the engine (`phase: \"proxying\"`), it emits `notifications\u002Ftools\u002Flist_changed` and normal operation resumes.\n\nThis is **distinct** from the engine's own `model_not_ready` error (embedding model, described below). Both use the same recovery approach: wait briefly and retry.\n\n### Handling model bootstrap errors (embedding model)\n\nWhen `session_start` returns an error response containing `\"error\": \"model_not_ready\"`, parse the JSON payload and follow the recovery flow based on `reason`:\n\n| reason | What it means | What to do |\n|---|---|---|\n| `downloading` | First-run bootstrap is in progress (loading\u002Fvalidating the ~133 MB bundled ONNX model). Another process or this one holds the lock. | Wait 5–10 seconds and call `session_start` again. Repeat up to 12 times (~2 minutes total). Surface a brief status to the user on the first retry: \"Total-recall is preparing its embedding model on first run. This is a one-time setup.\" |\n| `missing` | Bundled model not found on disk. The runtime does not download it — it must be present in the artifact (fetched + sha256-verified at build via `scripts\u002Ffetch-bge-small.sh`). | Surface the `hint` field to the user verbatim (it contains manual install instructions) and proceed without memory features for this session. |\n| `corrupted` | Model file present but failed checksum (e.g., partial install or a bad bundled file). | Call `session_start` once more in case it was a transient read. If it fails again with the same reason, surface the `hint` field to the user verbatim (it contains manual install instructions) and proceed without memory. |\n| `failed` | Other unrecoverable error preparing the model. | Surface the `hint` field verbatim to the user (manual install commands) and proceed without memory features for this session. Do NOT keep retrying — that will only delay the user. |\n\nAfter successful recovery, all subsequent total-recall behaviors (capture, retrieve, session end) should resume normally. If recovery is impossible, the assistant must continue helping the user with their actual task — memory unavailability is a degraded mode, not a fatal error.\n\n### Capture (continuous)\n\nWhen you detect these patterns in user messages, call `memory_store`:\n\n- **Correction**: \"no\", \"not that\", \"actually\", \"use X instead\" -> type \"correction\"\n- **Preference**: How the user wants things done -> type \"preference\"\n- **Decision**: Non-obvious architectural or design choices -> type \"decision\"\n- **Pin**: \"pin that\", \"never forget this\", \"keep this permanently\" -> call `memory_pin` (for new content: `memory_store` with `pinned: true`)\n- **Unpin**: \"unpin X\" -> `memory_unpin`\n\nDo NOT ask permission — just store it.\n\n**Storage constraints (apply when storing or pinning):**\n- **Pins are short directives, not reference material.** Pinned entries are capped at 500 characters. If the content is longer, distill the RULE into \u003C= 500 chars and pin the distillation; keep the full detail as a normal warm memory.\n- **Store atomic, concise memories at every tier**: one fact per entry; split compound observations into separate memories. Long reference content belongs in the knowledge base (kb_ingest), not in memories.\n\n### Retrieve (continuous)\n\nOn each user message that is a question or task request:\n\n1. Call `memory_search` with the message, searching warm tier\n2. If top score \u003C 0.5, also search cold\u002Fknowledge tier\n3. Use results to inform your response\n\n### Feedback (continuous)\n\n`memory_search` and `kb_search` now return a `retrievalId` alongside `results`.\nAfter you use retrieved memories in your work, call `memory_feedback`:\n\n- Used it → `memory_feedback({ retrievalId, used: true })`\n- Searched and nothing was relevant → `memory_feedback({ retrievalId, used: false })`\n\nReport once per search, as soon as you know the outcome. Skip the call only when\n`retrievalId` is empty. Do NOT ask permission — just report it. This is what makes\nthe Dashboard \"Retrieval quality\" metric real.\n\n### Pinned directives (continuous)\n\nPinned directives are re-asserted automatically near the live edge by the\nper-turn pinned floor (where the host supports it — see the capability matrix in\n`skills\u002Fcommands\u002FSKILL.md`). You do not need to do anything for this.\n\nAdditionally: when the user makes a **significant task switch** (a clearly new\npiece of work), call `session_refresh` once. This re-prepends the pinned block\nand refreshes hot-tier context near the current generation point. On hosts\nwithout a per-turn floor (for example Cline or Windsurf) this is the primary way pinned directives\nstay salient — so do it on task switches there especially.\n\n### Session End\n\n1. Call `session_context` to get current hot tier entries\n2. If there are 2+ hot entries, launch the `total-recall:compactor` agent with the entries as input\n3. Parse the agent's JSON decisions and execute them\n4. Call `session_end` for final bookkeeping\n\n### Rules\n\n- Let tool calls be visible — users should see that memory is working\n- ALWAYS store corrections — highest-value memories\n- ALWAYS search warm tier before answering project questions\n- NEVER modify host tool files (Claude Code memory\u002F, CLAUDE.md, etc.)\n",{"name":5,"description":7},"main","7464e410c4f25ba1be946d5ab3fd20988d3a19c9","skills\u002Fusing-total-recall",5,"https:\u002F\u002Fgithub.com\u002Fstrvmarv\u002Ftotal-recall","https:\u002F\u002Fgithub.com\u002Fstrvmarv","www.linkedin.com\u002Fin\u002Fpaulmarvin","2026-11-12 04:23:34",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add strvmarv\u002Ftotal-recall --skill using-total-recall",{"tool":51,"command":52},"bunx","bunx skills add strvmarv\u002Ftotal-recall --skill using-total-recall",{"tool":54,"command":55},"pnpm","pnpm dlx skills add strvmarv\u002Ftotal-recall --skill using-total-recall","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fstrvmarv\u002Ftotal-recall\u002Fblob\u002Fmain\u002Fskills\u002Fusing-total-recall\u002FSKILL.md",true,[],[60,73,83,97],{"skillNo":61,"name":62,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":70,"publishedAt":32},"01M6MQZ4AH2W1VGD6F8Q931M0S","malformed-skill","https:\u002F\u002Fgithub.com\u002Fstrvmarv\u002Ftotal-recall\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fmalformed-skill\u002FSKILL.md",[65],{"categoryNo":66,"categoryName":67,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[71,72],"malformed skill","malformed",{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":80,"publishedAt":32},"01M6MQYZZGBCVGRPEQKM6ZZD97","ignored-skill","Tests .skillignore honoring.","https:\u002F\u002Fgithub.com\u002Fstrvmarv\u002Ftotal-recall\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fignored-skill\u002FSKILL.md",[79],{"categoryNo":66,"categoryName":67,"taxonomyType":68,"taxonomyTypeDesc":69},[81,82],"ignored skill","tests",{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":90,"publishedAt":32},"01M6MQYV98Z2J1WYZP5Q1Z7FQC","bundle-skill","Multi-file bundled skill.","https:\u002F\u002Fgithub.com\u002Fstrvmarv\u002Ftotal-recall\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fbundle-skill\u002FSKILL.md",[89],{"categoryNo":66,"categoryName":67,"taxonomyType":68,"taxonomyTypeDesc":69},[91,92,93,94,95,96],"bundle","bundle skill","file","brainstorm","testing","multi",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":32},"01M6MQYH1XW206FSVGDQ3X6Y14","total-recall:commands","Manage the total-recall memory system and govern automatic capture, retrieval, and compaction. Use when the user invokes \u002Ftotal-recall:commands, asks to search\u002Fstore\u002Fforget memories, inspect tiers, manage the knowledge base, run eval, or configure total-recall.","https:\u002F\u002Fgithub.com\u002Fstrvmarv\u002Ftotal-recall\u002Fblob\u002Fmain\u002Fskills\u002Fcommands\u002FSKILL.md",[],[104,105,19,28,21,24,106,107,108,25,109,110,111,112,113,114,115,116,27,117],"total recall:commands","commands","inspect","store","search","manage","memories","compaction","automatic","run","knowledge base","configure","knowledge","eval"]