{"owner":"rohitg00","repo":"agentmemory","hasSkills":true,"totalSkillsCount":42,"totalTokensCount":16202,"categories":["anthropic-skill","root-instruction","project-spec","marketplace","plugin-manifest","command-prompt"],"hasMcp":true,"mcpConfig":{"mcpServers":{"agentmemory":{"command":"npx","args":["-y","@modelcontextprotocol/server-agentmemory"]}}},"found":["plugin/skills/recall/SKILL.md","plugin/skills/remember/SKILL.md","plugin/skills/session-history/SKILL.md","plugin/skills/write-agentmemory-skill/SKILL.md","plugin/skills/recap/SKILL.md","plugin/skills/handoff/SKILL.md","plugin/skills/forget/SKILL.md","plugin/skills/commit-history/SKILL.md","plugin/skills/agentmemory-mcp-tools/SKILL.md","plugin/skills/agentmemory-hooks/SKILL.md","plugin/skills/commit-context/SKILL.md","plugin/skills/agentmemory-rest-api/SKILL.md","plugin/skills/agentmemory-config/SKILL.md","plugin/skills/agentmemory-architecture/SKILL.md","plugin/skills/agentmemory-agents/SKILL.md","AGENTS.md","DESIGN.md",".codex-plugin/marketplace.json",".claude-plugin/marketplace.json","plugin/plugin.json","integrations/openclaw/openclaw.plugin.json","packages/mcp/package.json","packages/mcp/README.md","plugin/.codex-plugin/plugin.json","plugin/.claude-plugin/plugin.json","plugin/opencode/plugin.json","plugin/opencode/commands/recall.md","plugin/opencode/commands/remember.md","plugin/skills/session-history/EXAMPLES.md","plugin/skills/remember/EXAMPLES.md","plugin/skills/recap/EXAMPLES.md","plugin/skills/recall/EXAMPLES.md","plugin/skills/handoff/EXAMPLES.md","plugin/skills/forget/EXAMPLES.md","plugin/skills/commit-history/EXAMPLES.md","plugin/skills/commit-context/EXAMPLES.md","plugin/skills/agentmemory-rest-api/REFERENCE.md","plugin/skills/agentmemory-mcp-tools/REFERENCE.md","plugin/skills/agentmemory-hooks/REFERENCE.md","plugin/skills/agentmemory-config/REFERENCE.md","plugin/skills/agentmemory-agents/REFERENCE.md","plugin/skills/_shared/TROUBLESHOOTING.md"],"skills":{"plugin/skills/recall/SKILL.md":"---\nname: recall\ndescription: Search agentmemory for past observations, sessions, and learnings about a topic using hybrid BM25 plus vector plus graph search. Use when the user says \"recall\", \"what did we do about\", \"did we ever\", \"have we seen\", or needs context from past sessions.\nargument-hint: \"[search query]\"\nuser-invocable: true\n---\n\nThe user wants to recall past context about: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_smart_search { \"query\": \"jwt refresh token rotation\", \"limit\": 10 }\n```\n\nExpected output:\n\n```text\n2 results across 2 sessions.\n[importance 8] decision · \"Rotate refresh tokens on every use\" (session 7f3a9c21)\n[importance 5] code · \"limit.ts counts per-IP\" (session b21d004e)\n```\n\n## Why\n\nOnly surface what the tool returned. Never fabricate an observation, a session\nid, or an importance score. If nothing comes back, say so.\n\n## Workflow\n\n1. Call `memory_smart_search` with the user's text as `query` and `limit: 10`.\n   Pass `project` when the user scopes to a specific repo and `agentId` when\n   they request one agent's history.\n   Use `targetLayer: \"memory\"` for explicitly saved knowledge, or\n   `targetLayer: \"observation\"` for captured activity. Omit it for mixed search.\n2. Search results are compact. Before quoting full content or describing\n   provenance, call `memory_smart_search` with the selected IDs as a\n   comma-separated `expandIds` string and the same project, agent, and layer\n   filters. If expansion fails or the record is no longer available, report\n   that limitation; a title alone is not the full fact.\n3. Group expanded observations by session and show the returned type, title,\n   and narrative. Include provenance only when the response supplies it.\n4. Lead with the high-signal observations (importance >= 7).\n5. With `memory_recall`, inspect `matched_count`, `excluded_by_budget`, and\n   `content_truncated` before treating an empty or shortened response as absent\n   knowledge. Recover full content with `memory_smart_search` using `expandIds`\n   and the same project, agent, and layer filters. `minimum_budget` reports the\n   estimated budget needed for a minimal preview when the budget is too small.\n6. If there are no matches, suggest 2-3 alternative search terms and stop. Do not guess.\n\n## Anti-patterns\n\nWRONG: results are empty, so you write \"We probably discussed token expiry last\nweek\" from assumption.\n\nRIGHT: \"No memories matched that query. Try `refresh token`, `session expiry`,\nor `auth rotation`.\"\n\n## Checklist\n\n- Every observation shown came from the tool response.\n- Results grouped by session, high-importance first.\n- Empty results trigger alternative-term suggestions, not invention.\n- No session id or score was paraphrased or rounded.\n\n## See also\n\n- `remember`: the write side; recall retrieves what it stores.\n- `recap`, `handoff`, `session-history`: session-scoped views of the same data.\n- `memory-discipline`: when to run this search unprompted.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_smart_search` is not available.\n","plugin/skills/remember/SKILL.md":"---\nname: remember\ndescription: Save an insight, decision, or learning to agentmemory's long-term storage with searchable concept tags. Use when the user says \"remember this\", \"save this\", \"note that\", \"don't forget\", or wants to preserve knowledge for future sessions.\nargument-hint: \"[what to remember]\"\nuser-invocable: true\n---\n\nThe user wants to save this to long-term memory: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_save {\n  \"content\": \"We rotate JWT refresh tokens on every use; the old token is revoked server-side in auth/refresh.ts.\",\n  \"concepts\": \"jwt-refresh-rotation, token-revocation, auth-flow\",\n  \"files\": \"src/auth/refresh.ts\"\n}\n```\n\nExpected output:\n\n```text\nSaved memory abc12345 with 3 concepts: jwt-refresh-rotation, token-revocation, auth-flow.\n```\n\n## Why\n\nA memory is only as useful as the terms that retrieve it. Tag with specific\nconcepts so a future `recall` finds it, and preserve the user's own phrasing.\n\n## Workflow\n\n1. Pull the core insight, decision, or fact out of `$ARGUMENTS`.\n2. Extract 2-5 lowercased concept phrases. Prefer specific over generic\n   (`jwt-refresh-rotation` beats `auth`).\n3. Extract referenced file paths (absolute or repo-relative). Empty if none.\n4. Call `memory_save` with `content`, `concepts` (comma-separated string), and\n   `files` (comma-separated string). In a multi-agent setup pass `agentId` so\n   the memory lands in the right agent's scope.\n5. Confirm the save and echo the concepts so the user knows the retrieval terms.\n6. To update a fact, save the corrected version outright: near-duplicate content\n   supersedes the old record, which leaves recall but stays in the version chain.\n\n## Anti-patterns\n\nWRONG: `concepts: \"stuff, code, notes\"` (generic tags nothing can find later).\n\nRIGHT: `concepts: \"jwt-refresh-rotation, token-revocation\"` (specific, retrievable).\n\n## Checklist\n\n- Content preserves the user's phrasing, not a paraphrase.\n- Concepts are specific, lowercased, 2-5 items.\n- File paths are real references, not guesses.\n- Confirmation echoes the exact concepts tagged.\n\n## See also\n\n- `recall`: retrieve what you save here (the pair to this skill).\n- `forget`: remove a memory you saved by mistake.\n- `lesson`: behavioral rules from corrections; memories are for facts.\n- `memory-discipline`: when to save unprompted.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_save` is not available.\n","plugin/skills/session-history/SKILL.md":"---\nname: session-history\ndescription: Show what happened in recent past sessions on this project as a clean timeline. Use when the user asks \"what did we do last time\", \"session history\", \"past sessions\", or wants an overview of previous work.\nuser-invocable: true\n---\n\nThe user wants an overview of recent sessions on this project.\n\n## Quick start\n\n```json\nmemory_sessions { \"project\": \"<current-project-id>\", \"limit\": 20 }\n```\n\nExpected output:\n\n```text\n7f3a9c2 · app · 2026-06-07 09:00 · completed · 14 obs\n  - decision: Rotate refresh tokens on every use\nb21d004 · app · 2026-06-05 14:00 · completed · 9 obs\n  - code: limit.ts counts per-IP\n```\n\n## Why\n\nOnly show sessions and observations the tool returned. An empty history is a\nreal answer, never a cue to invent past work.\n\n## Workflow\n\n1. Use the exact project identifier recorded by the host and pass it to\n   `memory_sessions`, with `agentId` when requested. If it is unknown, page\n   through sessions using `nextCursor` and match normalized `cwd` by directory\n   boundary before choosing the most recent 20. Never substitute another project.\n2. Preserve scope filters on every page; stop at the requested count or a null\n   `nextCursor`. State when the displayed history is a partial page. Present in\n   reverse chronological order: session id (first 8), project, start\n   time, status.\n3. For sessions with observations, show the key highlights (type plus title).\n4. Note the total observation count per session.\n5. When a session summary exists, surface its title and the key decisions.\n\n## Anti-patterns\n\nWRONG: the tool returns two sessions, you describe \"several sessions of steady\nprogress\" and add ones you remember from the conversation.\n\nRIGHT: show exactly the two sessions returned, each with its real id, status, and\nobservation count.\n\n## Checklist\n\n- Every session shown came from the tool response.\n- Project/directory scope was checked before selecting the displayed window.\n- Order is reverse-chronological.\n- Per-session observation counts match the response.\n- No session or highlight was invented or merged.\n\n## See also\n\n- `recap`: same data grouped by date with highlights.\n- `handoff`: jump straight into the most recent session.\n- `recall`: search across all sessions by topic.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_sessions` is not available.\n","plugin/skills/write-agentmemory-skill/SKILL.md":"---\nname: write-agentmemory-skill\ndescription: The house format and rules for writing or updating an agentmemory skill. Use when adding a new skill, restructuring an existing one, or reviewing a skill contribution for consistency.\nuser-invocable: false\n---\n\nagentmemory skills follow one tiered format so they stay skimmable, accurate, and current. Match it exactly.\n\n## Directory layout\n\n```text\nplugin/skills/<name>/\n  SKILL.md      (required, under 100 lines)\n  REFERENCE.md  (optional, dense facts; auto-generate data tables)\n  EXAMPLES.md   (optional, worked transcripts)\n  TROUBLESHOOTING.md (generated support file)\n```\n\n## SKILL.md rules\n\n- Frontmatter: `name`, `description`, optional `argument-hint`, and `user-invocable`. Set `user-invocable: true` only for skills the user runs as a slash command; reference and knowledge skills are `false`.\n- Description is two sentences and the only thing the agent sees when deciding to load the skill. Sentence one states the capability. Sentence two starts \"Use when\" and lists concrete triggers. Keep it distinct from sibling skills, under 1024 chars, third person.\n- Body order: Quick start (one concrete example), Why (the governing principle), Workflow (numbered steps with decision gates), Anti-patterns (a WRONG vs RIGHT callout for the top mistake), Checklist, See also (cross-link siblings), Reference or Troubleshooting pointer.\n- Stay under 100 lines. Move dense facts to REFERENCE.md and examples to EXAMPLES.md.\n- Keep supporting files inside the skill directory so each skill works when installed separately. Link [TROUBLESHOOTING.md](TROUBLESHOOTING.md); the generator copies shared recovery instructions into each skill root.\n\n## Keep it current\n\nFacts that exist in source (tool names and parameters, REST endpoints, env vars, connect adapters, hook events) are generated, never hand-typed. Edit the source, then run `npm run skills:gen`. CI runs `npm run skills:check` and fails on drift, so generated tables cannot fall behind the code.\n\n## Style\n\nNo external or competitor product names. No emojis. No em-dashes. No filler. State the thing and stop.\n\n## Checklist\n\n- Description has a \"Use when\" sentence with real triggers.\n- SKILL.md is under 100 lines.\n- No time-sensitive claims and no duplicated troubleshooting block.\n- Concrete example present; generated facts come from the generator.\n- Cross-links resolve and go one level deep.\n","plugin/skills/recap/SKILL.md":"---\nname: recap\ndescription: Summarize the last N agent sessions for the current project, grouped by date, with highlight observations per session. Use when the user asks \"recap\", \"what have we been doing\", \"today\", \"this week\", or wants a rollup of recent work.\nargument-hint: \"[last N | today | this week]\"\nuser-invocable: true\n---\n\nThe user wants a recap. Time window args: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_sessions { \"project\": \"<current-project-id>\", \"limit\": 30 }\n```\n\nThen per surviving session: `memory_recall { \"query\": \"<top concepts>\", \"project\": \"<current-project-id>\", \"limit\": 3 }`.\nWhen an agent is requested, pass the same `agentId` to both calls.\n\nExpected output:\n\n```text\n2026-06-07\n  7f3a9c2 · \"Auth refresh rework\" · 14 obs · completed\n    - [8] Rotate refresh tokens on every use\n3 sessions across 2 days, 41 observations.\n```\n\n## Why\n\nOnly summarize sessions and observations the tools returned. An empty window is\na real answer, not a prompt to invent activity.\n\n## Workflow\n\n1. Parse `$ARGUMENTS`: `today` = current local date; `this week` = last 7 days;\n   `last <n>` or bare numeric = most recent N; empty = `last 10`.\n2. Call `memory_sessions` with the exact recorded project identifier when known\n   and the requested `agentId`. Follow `nextCursor` with the same filters until\n   the requested window is covered or pages end. When the project identifier is\n   unknown, match normalized `cwd` by directory boundary across pages before\n   applying the time/count window. Sort by `startedAt` descending.\n3. Group survivors by local calendar date (YYYY-MM-DD).\n4. Per session list id (first 8), title or first prompt, observation count,\n   status. Obtain highlights with `memory_recall`, retaining project/agent scope,\n   and verify each result belongs to that session before including it.\n5. End with \"N sessions across M days, K observations.\"\n\n## Anti-patterns\n\nWRONG: window is empty, so you summarize \"a productive week of auth work\" from\nmemory of the conversation.\n\nRIGHT: \"No sessions in the last 7 days for this project.\"\n\n## Checklist\n\n- Window parsed correctly from the argument.\n- Sessions filtered to the current project's cwd.\n- Highlights come from `memory_recall`, not paraphrase.\n- Totals line reflects the actual counts shown.\n\n## See also\n\n- `handoff`, `session-history`, `recall`: same session data, different lens.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_sessions` or `memory_recall` is not available.\n","plugin/skills/handoff/SKILL.md":"---\nname: handoff\ndescription: Resume the most recent agent session for the current working directory, leading with any unanswered question. Use when the user says \"where were we\", \"resume\", \"handoff\", \"pick up where I left off\", or starts a session with no fresh context.\nargument-hint: \"[optional cwd override]\"\nuser-invocable: true\n---\n\nThe user wants to resume work. Optional cwd override: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_sessions { \"project\": \"<current-project-id>\", \"limit\": 20 }\n```\n\nPick the most recent session whose `cwd` matches this project, then:\n`memory_recall { \"query\": \"<session top concepts>\", \"project\": \"<current-project-id>\", \"limit\": 10 }`.\nWhen an agent is requested, pass the same `agentId` to both calls.\n\nExpected output:\n\n```text\nResuming 7f3a9c2 \"Auth refresh rework\".\nOpen question: should logout revoke all device tokens or just the current one?\nNext step: decide revoke scope, then update auth/logout.ts.\n```\n\n## Why\n\nMatch the session by directory boundary, not raw prefix, so a sibling repo never\ngets mistaken for this one. Never invent observations for an empty session.\n\n## Workflow\n\n1. Resolve the project path: if `$ARGUMENTS` is given, normalize it to absolute\n   (`path.resolve(process.cwd(), $ARGUMENTS)`); else use the cwd.\n2. Call `memory_sessions` with the exact project identifier when known, and\n   `agentId` when requested. Otherwise follow `nextCursor` until the matching\n   directory is found or pagination ends. Preserve filters between pages.\n   Pick the most recent session whose normalized `cwd`\n   matches by directory boundary: equality, OR `cwd.startsWith(projectPath + sep)`,\n   OR `projectPath.startsWith(cwd + sep)`. Prefer `completed` over `abandoned`.\n   No match: report that this project has no matching session and stop. Do not\n   substitute a different project's session.\n3. If the session ended on an unanswered user-facing question, surface it FIRST.\n   Look in `summary` or recent `conversation` observations whose `narrative`\n   ends in `?`.\n4. Summarize: title/summary, key files, key decisions or errors, using\n   `memory_recall` on the top concepts, limit 10, preserving the chosen project\n   and agent scope. Check each result's session or\n   project provenance before including it; a query alone does not enforce scope.\n5. End with one concrete \"next step?\" pointer.\n\n## Anti-patterns\n\nWRONG: `session.cwd.startsWith(projectPath)` matches `/repo-a-staging` when the\nproject is `/repo-a`, resuming the wrong repo's session.\n\nRIGHT: `session.cwd === projectPath || session.cwd.startsWith(projectPath + sep)`,\na directory-boundary check that cannot cross sibling repos.\n\n## Checklist\n\n- cwd override resolved to an absolute, normalized path.\n- Match used a directory-boundary check, not a raw prefix.\n- Unanswered question (if any) leads the response.\n- Empty session is reported plainly, with an offer to start fresh.\n\n## See also\n\n- `recap`, `session-history`, `recall`: same session data, broader views.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_sessions` or `memory_recall` is not available.\n","plugin/skills/forget/SKILL.md":"---\nname: forget\ndescription: Delete selected durable memories from agentmemory after showing them and getting explicit confirmation. Use when the user says \"forget this\", \"delete memory\", \"remove that note\", or wants to scrub specific data for privacy.\nargument-hint: \"[what to forget - session ID, file path, or search term]\"\nuser-invocable: true\n---\n\nThe user wants to remove data from agentmemory: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_smart_search { \"query\": \"old api key in config\", \"targetLayer\": \"memory\", \"limit\": 20 }\n```\n\nShow the matches, get a yes, then:\n\n```json\nmemory_governance_delete { \"memoryIds\": \"abc12345,def67890\", \"reason\": \"user privacy request\" }\n```\n\nExpected output:\n\n```text\nFound 2 matching memories. Confirmed. Deleted 2 memories.\n```\n\n## Why\n\nThis is destructive and irreversible. Show exactly what will be deleted and get\nan explicit yes before calling delete. Delete by memory ID, never a bare session.\n\n## Workflow\n\n1. Search with `memory_smart_search`, the user's text as `query`,\n   `targetLayer: \"memory\"`, `limit: 20`, and the requested project/agent scope.\n   These are selected relevance matches, not an exhaustive inventory.\n2. Show what matched: memory ids, titles, and scope. Redact secret values. Ask for explicit\n   confirmation. Do not proceed on silence or a vague \"sure, whatever\".\n3. On confirmation, call `memory_governance_delete` with `memoryIds` as a\n   comma-separated string and optional `reason` (default `plugin skill request`).\n4. Observation or whole-session erasure is not supported by this operation.\n   Explain that limit before proceeding; never label selected memory deletion\n   as a complete session wipe. Do not pass observation IDs or a `sessionId`.\n5. Lessons are separate: delete one with `memory_lesson_delete` and its\n   `lessonId`; `memory_governance_delete` does not touch lessons.\n6. Check `deleted`, `notFound`, and `failed` in the response. Report actual\n   deletions and unresolved IDs separately. Recheck the selected IDs before\n   retrying a failed request; an interrupted response may hide a completed write.\n\n## Anti-patterns\n\nWRONG: search returns matches, you immediately call `memory_governance_delete`\nwithout showing them or waiting for a yes.\n\nRIGHT: list the matches, ask \"Delete these 2? (yes/no)\", and only delete after\nan explicit yes.\n\n## Checklist\n\n- Matches were shown to the user before any delete.\n- An explicit yes was received, not assumed.\n- `memoryIds` holds real ids from the search, never a bare `sessionId`.\n- Final message states the actual count deleted.\n\n## See also\n\n- `remember`: the write side; forget is its undo.\n- `recall`: find the exact memory id before deleting.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_smart_search` or `memory_governance_delete` is not available.\n","plugin/skills/commit-history/SKILL.md":"---\nname: commit-history\ndescription: List recent git commits linked to agent sessions, optionally filtered by branch or repo. Use when the user asks \"show agent commits\", \"what has the agent shipped\", \"list linked commits\", or wants commits with their session context.\nargument-hint: \"[branch=... repo=... limit=...]\"\nuser-invocable: true\n---\n\nThe user wants a list of agent-linked commits. Filter args: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_commits { \"branch\": \"main\", \"limit\": 20 }\n```\n\nExpected output:\n\n```text\n9a1b2c3 main 2026-06-07 \"rotate refresh tokens\" · session 7f3a9c2 (14 obs)\nb21d004 main 2026-06-05 \"rate limiter audit\"    · session b21d004 (9 obs)\n```\n\n## Why\n\nRender only the commits the tool returned, newest first. An empty result means\nthe filter matched nothing, not that work is missing.\n\n## Workflow\n\n1. Parse `$ARGUMENTS` for `branch=<name>`, `repo=<url-or-fragment>`,\n   `limit=<n>`. A bare numeric token is the limit. Defaults: no branch, no repo,\n   limit 100, max 500.\n2. Call `memory_commits` with the parsed filters.\n3. Render reverse-chronologically: short sha, branch, authored timestamp, first\n   line of the message, linked session id(s) (first 8) with observation counts,\n   and file count when `files` is present.\n4. Empty result: tell the user the filter matched nothing and suggest dropping\n   the branch or repo filter.\n\n## Anti-patterns\n\nWRONG (REST fallback): concatenate `?branch=` + raw branch name, so a name with\n`?`, `&`, or `#` corrupts the query string.\n\nRIGHT: URL-encode every value with `URLSearchParams`/`encodeURIComponent` before\nappending to `GET /agentmemory/commits`.\n\n## Checklist\n\n- Filters parsed; bare number treated as limit; limit capped at 500.\n- Output is reverse-chronological.\n- Session ids and observation counts come straight from the response.\n- REST fallback URL-encodes branch, repo, and limit.\n\n## See also\n\n- `commit-context`: drill into one commit's session.\n- `recall`: search the observations behind a linked session.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_commits` is not available.\n","plugin/skills/agentmemory-mcp-tools/SKILL.md":"---\nname: agentmemory-mcp-tools\ndescription: Map of every agentmemory MCP tool, what each does, and its parameters. Use when choosing which memory tool to call, when a tool name or argument is unclear, or when answering what agentmemory can do via MCP.\nuser-invocable: false\n---\n\nThis skill indexes agentmemory's MCP tools. Use the connected server's tool inventory and schemas; a native memory provider may expose a smaller set under different names. Hermes and OpenClaw skills that need the full surface require a separate MCP connection to the running daemon.\n\n## Quick start\n\nSave then recall:\n\n1. `memory_save` with `content` (the insight), `concepts` (comma-separated keywords), `files` (comma-separated paths).\n2. `memory_smart_search` with `query`, `limit`, and `targetLayer: \"memory\"` to retrieve saved knowledge later. Omit `targetLayer` to also search captured observations. This runs hybrid BM25 plus vector plus graph-expanded search.\n\n## Tool families\n\n- Capture: `memory_save`, `memory_compress_file`. Automatic observations use native hooks or `POST /agentmemory/observe`, not an MCP observation tool.\n- Retrieve: `memory_smart_search`, `memory_recall`, `memory_file_history`, `memory_timeline`, `memory_vision_search`.\n- Sessions and commits: `memory_sessions`, `memory_commits`, `memory_commit_lookup`.\n- Knowledge and graph: `memory_lesson_save`, `memory_lesson_recall`, `memory_graph_query`, `memory_relations`, `memory_patterns`, `memory_crystallize`.\n- Structured slots: `memory_slot_create`, `memory_slot_append`, `memory_slot_get`, `memory_slot_list`, `memory_slot_replace`, `memory_slot_delete`.\n- Governance and health: `memory_governance_delete`, `memory_audit`, `memory_verify`, `memory_heal`, `memory_diagnose`.\n\n## Workflow\n\n1. Pick the narrowest tool for the task. Prefer `memory_smart_search` for open recall, `memory_recall` when you already have a focused query, `memory_sessions` for session listings.\n2. Look up exact parameter names and which are required in REFERENCE.md before calling.\n3. Pass only documented fields. REST handlers whitelist fields and drop unknown ones.\n4. For budgeted `memory_recall`, distinguish `matched_count: 0` from\n   `excluded_by_budget > 0`. Expand clipped or omitted IDs with\n   `memory_smart_search` and `expandIds`, preserving the same scope filters.\n\n## See also\n\n- agentmemory-rest-api for the HTTP equivalents.\n- agentmemory-config for tool-visibility and feature flags.\n- The user-invocable action skills (remember, recall, recap, handoff, forget) wrap the most common tools.\n\n## Reference\n\nFull tool table with parameters and the core-set marking lives in REFERENCE.md, generated from source so it never drifts.\n","plugin/skills/agentmemory-hooks/SKILL.md":"---\nname: agentmemory-hooks\ndescription: The agentmemory plugin hooks that capture observations automatically across the agent session lifecycle. Use when explaining how memory gets captured without manual saves, when debugging missing observations, or when tuning what gets recorded.\nuser-invocable: false\n---\n\nThe agentmemory plugin registers lifecycle hooks so memory is captured automatically. You do not have to call `memory_save` for routine work; the hooks observe tool use, prompts, and session boundaries and write observations for you.\n\n## Quick start\n\nFor Claude Code, install its plugin:\n\n```bash\n/plugin marketplace add rohitg00/agentmemory\n/plugin install agentmemory\n```\n\nFor Devin CLI and Devin Desktop, install the plugin and start a new session:\n\n```bash\ndevin plugins install rohitg00/agentmemory#plugin\n```\n\nRun `/hooks` inside Devin to confirm the agentmemory hooks are loaded. Plugin hooks run only in local Devin sessions, not in cloud sessions.\n\nHermes and OpenClaw use their native integrations and lifecycle contracts. Follow the matching integration setup instructions and verify a real turn creates an observation. Installing shared skills or connecting MCP alone does not enable automatic capture. Watch recorded observations in the viewer at `http://localhost:3113` when using the default port.\n\n## What the hooks do\n\n- Session start and end frame each unit of work and let `handoff` resume it.\n- Tool-use hooks capture what changed and why, the raw material for `recall` and `recap`.\n- Prompt-submit captures intent. Pre-compact preserves context before the host trims it.\n- A post-commit hook links commits to sessions, which powers `commit-context` and `commit-history`.\n\n## Important\n\n- The plugin hooks capture by default without an LLM. Summary generation (`AGENTMEMORY_AUTO_COMPRESS`) and hook context injection (`AGENTMEMORY_INJECT_CONTEXT`) are separate options. Native integrations have their own recall/capture settings; inspect the host configuration instead of assuming these flags control every plugin.\n- If observations are missing, confirm the plugin is enabled and the server is running. See [TROUBLESHOOTING.md](TROUBLESHOOTING.md).\n\n## See also\n\n- agentmemory-config for the capture and injection flags.\n- The handoff, recap, and session-history skills consume what these hooks record.\n\n## Reference\n\nThe exact registered hook events live in REFERENCE.md, generated from `plugin/hooks/hooks.json`.\n","plugin/skills/commit-context/SKILL.md":"---\nname: commit-context\ndescription: Trace a file, function, or line back to the agent session that produced its current commit. Use when the user asks \"why is this code here\", \"what was the agent doing when this changed\", \"who wrote this\", or wants context on a specific location in the codebase.\nargument-hint: \"[file, function, or line]\"\nuser-invocable: true\n---\n\nThe user wants commit context for: $ARGUMENTS\n\n## Quick start\n\n```bash\ngit blame -L 40,52 src/auth/refresh.ts   # -> SHA 9a1b2c3d\n```\n\n```json\nmemory_commit_lookup { \"sha\": \"9a1b2c3d4e5f60718293a4b5c6d7e8f901234567\" }\n```\n\nExpected output:\n\n```text\n9a1b2c3 on main by dev: \"rotate refresh tokens\"\nLinked session 7f3a9c2 \"Auth refresh rework\", 14 obs.\n```\n\n## Why\n\nReport only what git and the lookup return. When the lookup gives `commit: null`,\nthe commit predates session linking; do not invent intent.\n\n## Workflow\n\n1. Find the SHA: `git blame -L <start>,<end> <file>` for a line range;\n   `git log -L :<function>:<file>` for a function; `git log -n 1 -- <file>` for a\n   bare path.\n2. Look it up: `memory_commit_lookup { \"sha\": \"<full-sha>\" }`.\n3. Present the commit (sha, short sha, branch, author, message), the linked\n   session(s) (id, project, started/ended, observation count, summary), and the\n   importance >= 7 observations via `memory_recall` when available.\n\n## Anti-patterns\n\nWRONG: lookup returns `{ \"commit\": null }`, you narrate \"the agent was\nrefactoring auth\" from the diff alone.\n\nRIGHT: \"This commit predates session linking, so there is no recorded agent\nsession. From `git show`: it changed token rotation in refresh.ts.\"\n\n## Checklist\n\n- SHA came from git blame/log, not a guess.\n- `commit: null` reported as \"predates linking\", no fabricated session.\n- Session details quote the lookup response verbatim.\n- No intent claimed beyond what observations state.\n\n## See also\n\n- `commit-history`: list many agent-linked commits at once.\n- `recall`: dig deeper into the linked session's observations.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_commit_lookup` is not available.\n","plugin/skills/agentmemory-rest-api/SKILL.md":"---\nname: agentmemory-rest-api\ndescription: The agentmemory HTTP REST API surface, the primary protocol for talking to the memory server. Use when calling agentmemory over HTTP, when MCP is unavailable and you need a fallback, or when integrating a host that does not speak MCP.\nuser-invocable: false\n---\n\nREST is agentmemory's primary surface. MCP is a bridge on top of it. Every memory operation has an HTTP endpoint under `http://localhost:3111/agentmemory/*`.\n\n## Quick start\n\n```bash\n# liveness\ncurl -fsS http://localhost:3111/agentmemory/livez\n\n# For this fixed loopback URL only. Do not print the value or enable shell tracing.\nagentmemory_secret=\"${AGENTMEMORY_SECRET:-$(cat \"$HOME/.agentmemory/secret\")}\"\ntest -n \"$agentmemory_secret\" || exit 1\n\n# save\ncurl -fsS -X POST http://localhost:3111/agentmemory/remember \\\n  -H \"Authorization: Bearer $agentmemory_secret\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"content\":\"chose JWT refresh rotation\",\"concepts\":[\"jwt-refresh-rotation\"]}'\n\n# recall\ncurl -fsS -X POST http://localhost:3111/agentmemory/smart-search \\\n  -H \"Authorization: Bearer $agentmemory_secret\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"query\":\"auth token strategy\",\"limit\":5}'\n```\n\n## Auth\n\nProtected endpoints require bearer authentication by default, including localhost. Liveness is public. The example uses an explicit environment secret or the generated local secret file; if the daemon uses a secret from its `.env`, load that value locally without displaying it. For a remote daemon, require an explicit credential for that endpoint and HTTPS. Never forward a local-file secret or follow an authenticated redirect to another host. See [TROUBLESHOOTING.md](TROUBLESHOOTING.md).\n\n## Conventions\n\n- Save returns `201`, reads return `200`, validation errors return `400`.\n- Use documented fields only. A successful response does not prove an unsupported field was applied.\n- The port is configurable with `--port` or `--instance`; streams, viewer, and engine derive from it.\n\n## See also\n\n- agentmemory-mcp-tools for the MCP equivalents.\n- agentmemory-config for the port quartet and the secret.\n\n## Reference\n\nThe full endpoint list with methods lives in REFERENCE.md, generated from `src/triggers/api.ts`.\n","plugin/skills/agentmemory-config/SKILL.md":"# agentmemory-config\n\nPath: `plugin/skills/agentmemory-config/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-config/SKILL.md)","plugin/skills/agentmemory-architecture/SKILL.md":"# agentmemory-architecture\n\nPath: `plugin/skills/agentmemory-architecture/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-architecture/SKILL.md)","plugin/skills/agentmemory-agents/SKILL.md":"# agentmemory-agents\n\nPath: `plugin/skills/agentmemory-agents/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-agents/SKILL.md)","AGENTS.md":"# AI Agent Protocol & Instructions\n\nPath: `AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/AGENTS.md)","DESIGN.md":"# UI Design System & Style Tokens\n\nPath: `DESIGN.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/DESIGN.md)",".codex-plugin/marketplace.json":"# Claude Plugin Marketplace Catalog\n\nPath: `.codex-plugin/marketplace.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/.codex-plugin/marketplace.json)",".claude-plugin/marketplace.json":"# Claude Plugin Marketplace Catalog\n\nPath: `.claude-plugin/marketplace.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/.claude-plugin/marketplace.json)","plugin/plugin.json":"# plugin Plugin Manifest\n\nPath: `plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/plugin.json)","integrations/openclaw/openclaw.plugin.json":"# openclaw Plugin Manifest\n\nPath: `integrations/openclaw/openclaw.plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/integrations/openclaw/openclaw.plugin.json)","packages/mcp/package.json":"# Mcp Skill\n\nPath: `packages/mcp/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/packages/mcp/package.json)","packages/mcp/README.md":"# mcp Documentation\n\nPath: `packages/mcp/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/packages/mcp/README.md)","plugin/.codex-plugin/plugin.json":"# codex-plugin Plugin Manifest\n\nPath: `plugin/.codex-plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/.codex-plugin/plugin.json)","plugin/.claude-plugin/plugin.json":"# claude-plugin Plugin Manifest\n\nPath: `plugin/.claude-plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/.claude-plugin/plugin.json)","plugin/opencode/plugin.json":"# opencode Plugin Manifest\n\nPath: `plugin/opencode/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/opencode/plugin.json)","plugin/opencode/commands/recall.md":"# Command: /recall\n\nPath: `plugin/opencode/commands/recall.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/opencode/commands/recall.md)","plugin/opencode/commands/remember.md":"# Command: /remember\n\nPath: `plugin/opencode/commands/remember.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/opencode/commands/remember.md)","plugin/skills/session-history/EXAMPLES.md":"# Session-history Skill\n\nPath: `plugin/skills/session-history/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/session-history/EXAMPLES.md)","plugin/skills/remember/EXAMPLES.md":"# Remember Skill\n\nPath: `plugin/skills/remember/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/remember/EXAMPLES.md)","plugin/skills/recap/EXAMPLES.md":"# Recap Skill\n\nPath: `plugin/skills/recap/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/recap/EXAMPLES.md)","plugin/skills/recall/EXAMPLES.md":"# Recall Skill\n\nPath: `plugin/skills/recall/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/recall/EXAMPLES.md)","plugin/skills/handoff/EXAMPLES.md":"# Handoff Skill\n\nPath: `plugin/skills/handoff/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/handoff/EXAMPLES.md)","plugin/skills/forget/EXAMPLES.md":"# Forget Skill\n\nPath: `plugin/skills/forget/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/forget/EXAMPLES.md)","plugin/skills/commit-history/EXAMPLES.md":"# Commit-history Skill\n\nPath: `plugin/skills/commit-history/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/commit-history/EXAMPLES.md)","plugin/skills/commit-context/EXAMPLES.md":"# Commit-context Skill\n\nPath: `plugin/skills/commit-context/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/commit-context/EXAMPLES.md)","plugin/skills/agentmemory-rest-api/REFERENCE.md":"# Agentmemory-rest-api Skill\n\nPath: `plugin/skills/agentmemory-rest-api/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-rest-api/REFERENCE.md)","plugin/skills/agentmemory-mcp-tools/REFERENCE.md":"# Agentmemory-mcp-tools Skill\n\nPath: `plugin/skills/agentmemory-mcp-tools/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-mcp-tools/REFERENCE.md)","plugin/skills/agentmemory-hooks/REFERENCE.md":"# Agentmemory-hooks Skill\n\nPath: `plugin/skills/agentmemory-hooks/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-hooks/REFERENCE.md)","plugin/skills/agentmemory-config/REFERENCE.md":"# Agentmemory-config Skill\n\nPath: `plugin/skills/agentmemory-config/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-config/REFERENCE.md)","plugin/skills/agentmemory-agents/REFERENCE.md":"# Agentmemory-agents Skill\n\nPath: `plugin/skills/agentmemory-agents/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-agents/REFERENCE.md)","plugin/skills/_shared/TROUBLESHOOTING.md":"# _shared Skill\n\nPath: `plugin/skills/_shared/TROUBLESHOOTING.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/_shared/TROUBLESHOOTING.md)"},"files":{"plugin/skills/recall/SKILL.md":"---\nname: recall\ndescription: Search agentmemory for past observations, sessions, and learnings about a topic using hybrid BM25 plus vector plus graph search. Use when the user says \"recall\", \"what did we do about\", \"did we ever\", \"have we seen\", or needs context from past sessions.\nargument-hint: \"[search query]\"\nuser-invocable: true\n---\n\nThe user wants to recall past context about: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_smart_search { \"query\": \"jwt refresh token rotation\", \"limit\": 10 }\n```\n\nExpected output:\n\n```text\n2 results across 2 sessions.\n[importance 8] decision · \"Rotate refresh tokens on every use\" (session 7f3a9c21)\n[importance 5] code · \"limit.ts counts per-IP\" (session b21d004e)\n```\n\n## Why\n\nOnly surface what the tool returned. Never fabricate an observation, a session\nid, or an importance score. If nothing comes back, say so.\n\n## Workflow\n\n1. Call `memory_smart_search` with the user's text as `query` and `limit: 10`.\n   Pass `project` when the user scopes to a specific repo and `agentId` when\n   they request one agent's history.\n   Use `targetLayer: \"memory\"` for explicitly saved knowledge, or\n   `targetLayer: \"observation\"` for captured activity. Omit it for mixed search.\n2. Search results are compact. Before quoting full content or describing\n   provenance, call `memory_smart_search` with the selected IDs as a\n   comma-separated `expandIds` string and the same project, agent, and layer\n   filters. If expansion fails or the record is no longer available, report\n   that limitation; a title alone is not the full fact.\n3. Group expanded observations by session and show the returned type, title,\n   and narrative. Include provenance only when the response supplies it.\n4. Lead with the high-signal observations (importance >= 7).\n5. With `memory_recall`, inspect `matched_count`, `excluded_by_budget`, and\n   `content_truncated` before treating an empty or shortened response as absent\n   knowledge. Recover full content with `memory_smart_search` using `expandIds`\n   and the same project, agent, and layer filters. `minimum_budget` reports the\n   estimated budget needed for a minimal preview when the budget is too small.\n6. If there are no matches, suggest 2-3 alternative search terms and stop. Do not guess.\n\n## Anti-patterns\n\nWRONG: results are empty, so you write \"We probably discussed token expiry last\nweek\" from assumption.\n\nRIGHT: \"No memories matched that query. Try `refresh token`, `session expiry`,\nor `auth rotation`.\"\n\n## Checklist\n\n- Every observation shown came from the tool response.\n- Results grouped by session, high-importance first.\n- Empty results trigger alternative-term suggestions, not invention.\n- No session id or score was paraphrased or rounded.\n\n## See also\n\n- `remember`: the write side; recall retrieves what it stores.\n- `recap`, `handoff`, `session-history`: session-scoped views of the same data.\n- `memory-discipline`: when to run this search unprompted.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_smart_search` is not available.\n","plugin/skills/remember/SKILL.md":"---\nname: remember\ndescription: Save an insight, decision, or learning to agentmemory's long-term storage with searchable concept tags. Use when the user says \"remember this\", \"save this\", \"note that\", \"don't forget\", or wants to preserve knowledge for future sessions.\nargument-hint: \"[what to remember]\"\nuser-invocable: true\n---\n\nThe user wants to save this to long-term memory: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_save {\n  \"content\": \"We rotate JWT refresh tokens on every use; the old token is revoked server-side in auth/refresh.ts.\",\n  \"concepts\": \"jwt-refresh-rotation, token-revocation, auth-flow\",\n  \"files\": \"src/auth/refresh.ts\"\n}\n```\n\nExpected output:\n\n```text\nSaved memory abc12345 with 3 concepts: jwt-refresh-rotation, token-revocation, auth-flow.\n```\n\n## Why\n\nA memory is only as useful as the terms that retrieve it. Tag with specific\nconcepts so a future `recall` finds it, and preserve the user's own phrasing.\n\n## Workflow\n\n1. Pull the core insight, decision, or fact out of `$ARGUMENTS`.\n2. Extract 2-5 lowercased concept phrases. Prefer specific over generic\n   (`jwt-refresh-rotation` beats `auth`).\n3. Extract referenced file paths (absolute or repo-relative). Empty if none.\n4. Call `memory_save` with `content`, `concepts` (comma-separated string), and\n   `files` (comma-separated string). In a multi-agent setup pass `agentId` so\n   the memory lands in the right agent's scope.\n5. Confirm the save and echo the concepts so the user knows the retrieval terms.\n6. To update a fact, save the corrected version outright: near-duplicate content\n   supersedes the old record, which leaves recall but stays in the version chain.\n\n## Anti-patterns\n\nWRONG: `concepts: \"stuff, code, notes\"` (generic tags nothing can find later).\n\nRIGHT: `concepts: \"jwt-refresh-rotation, token-revocation\"` (specific, retrievable).\n\n## Checklist\n\n- Content preserves the user's phrasing, not a paraphrase.\n- Concepts are specific, lowercased, 2-5 items.\n- File paths are real references, not guesses.\n- Confirmation echoes the exact concepts tagged.\n\n## See also\n\n- `recall`: retrieve what you save here (the pair to this skill).\n- `forget`: remove a memory you saved by mistake.\n- `lesson`: behavioral rules from corrections; memories are for facts.\n- `memory-discipline`: when to save unprompted.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_save` is not available.\n","plugin/skills/session-history/SKILL.md":"---\nname: session-history\ndescription: Show what happened in recent past sessions on this project as a clean timeline. Use when the user asks \"what did we do last time\", \"session history\", \"past sessions\", or wants an overview of previous work.\nuser-invocable: true\n---\n\nThe user wants an overview of recent sessions on this project.\n\n## Quick start\n\n```json\nmemory_sessions { \"project\": \"<current-project-id>\", \"limit\": 20 }\n```\n\nExpected output:\n\n```text\n7f3a9c2 · app · 2026-06-07 09:00 · completed · 14 obs\n  - decision: Rotate refresh tokens on every use\nb21d004 · app · 2026-06-05 14:00 · completed · 9 obs\n  - code: limit.ts counts per-IP\n```\n\n## Why\n\nOnly show sessions and observations the tool returned. An empty history is a\nreal answer, never a cue to invent past work.\n\n## Workflow\n\n1. Use the exact project identifier recorded by the host and pass it to\n   `memory_sessions`, with `agentId` when requested. If it is unknown, page\n   through sessions using `nextCursor` and match normalized `cwd` by directory\n   boundary before choosing the most recent 20. Never substitute another project.\n2. Preserve scope filters on every page; stop at the requested count or a null\n   `nextCursor`. State when the displayed history is a partial page. Present in\n   reverse chronological order: session id (first 8), project, start\n   time, status.\n3. For sessions with observations, show the key highlights (type plus title).\n4. Note the total observation count per session.\n5. When a session summary exists, surface its title and the key decisions.\n\n## Anti-patterns\n\nWRONG: the tool returns two sessions, you describe \"several sessions of steady\nprogress\" and add ones you remember from the conversation.\n\nRIGHT: show exactly the two sessions returned, each with its real id, status, and\nobservation count.\n\n## Checklist\n\n- Every session shown came from the tool response.\n- Project/directory scope was checked before selecting the displayed window.\n- Order is reverse-chronological.\n- Per-session observation counts match the response.\n- No session or highlight was invented or merged.\n\n## See also\n\n- `recap`: same data grouped by date with highlights.\n- `handoff`: jump straight into the most recent session.\n- `recall`: search across all sessions by topic.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_sessions` is not available.\n","plugin/skills/write-agentmemory-skill/SKILL.md":"---\nname: write-agentmemory-skill\ndescription: The house format and rules for writing or updating an agentmemory skill. Use when adding a new skill, restructuring an existing one, or reviewing a skill contribution for consistency.\nuser-invocable: false\n---\n\nagentmemory skills follow one tiered format so they stay skimmable, accurate, and current. Match it exactly.\n\n## Directory layout\n\n```text\nplugin/skills/<name>/\n  SKILL.md      (required, under 100 lines)\n  REFERENCE.md  (optional, dense facts; auto-generate data tables)\n  EXAMPLES.md   (optional, worked transcripts)\n  TROUBLESHOOTING.md (generated support file)\n```\n\n## SKILL.md rules\n\n- Frontmatter: `name`, `description`, optional `argument-hint`, and `user-invocable`. Set `user-invocable: true` only for skills the user runs as a slash command; reference and knowledge skills are `false`.\n- Description is two sentences and the only thing the agent sees when deciding to load the skill. Sentence one states the capability. Sentence two starts \"Use when\" and lists concrete triggers. Keep it distinct from sibling skills, under 1024 chars, third person.\n- Body order: Quick start (one concrete example), Why (the governing principle), Workflow (numbered steps with decision gates), Anti-patterns (a WRONG vs RIGHT callout for the top mistake), Checklist, See also (cross-link siblings), Reference or Troubleshooting pointer.\n- Stay under 100 lines. Move dense facts to REFERENCE.md and examples to EXAMPLES.md.\n- Keep supporting files inside the skill directory so each skill works when installed separately. Link [TROUBLESHOOTING.md](TROUBLESHOOTING.md); the generator copies shared recovery instructions into each skill root.\n\n## Keep it current\n\nFacts that exist in source (tool names and parameters, REST endpoints, env vars, connect adapters, hook events) are generated, never hand-typed. Edit the source, then run `npm run skills:gen`. CI runs `npm run skills:check` and fails on drift, so generated tables cannot fall behind the code.\n\n## Style\n\nNo external or competitor product names. No emojis. No em-dashes. No filler. State the thing and stop.\n\n## Checklist\n\n- Description has a \"Use when\" sentence with real triggers.\n- SKILL.md is under 100 lines.\n- No time-sensitive claims and no duplicated troubleshooting block.\n- Concrete example present; generated facts come from the generator.\n- Cross-links resolve and go one level deep.\n","plugin/skills/recap/SKILL.md":"---\nname: recap\ndescription: Summarize the last N agent sessions for the current project, grouped by date, with highlight observations per session. Use when the user asks \"recap\", \"what have we been doing\", \"today\", \"this week\", or wants a rollup of recent work.\nargument-hint: \"[last N | today | this week]\"\nuser-invocable: true\n---\n\nThe user wants a recap. Time window args: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_sessions { \"project\": \"<current-project-id>\", \"limit\": 30 }\n```\n\nThen per surviving session: `memory_recall { \"query\": \"<top concepts>\", \"project\": \"<current-project-id>\", \"limit\": 3 }`.\nWhen an agent is requested, pass the same `agentId` to both calls.\n\nExpected output:\n\n```text\n2026-06-07\n  7f3a9c2 · \"Auth refresh rework\" · 14 obs · completed\n    - [8] Rotate refresh tokens on every use\n3 sessions across 2 days, 41 observations.\n```\n\n## Why\n\nOnly summarize sessions and observations the tools returned. An empty window is\na real answer, not a prompt to invent activity.\n\n## Workflow\n\n1. Parse `$ARGUMENTS`: `today` = current local date; `this week` = last 7 days;\n   `last <n>` or bare numeric = most recent N; empty = `last 10`.\n2. Call `memory_sessions` with the exact recorded project identifier when known\n   and the requested `agentId`. Follow `nextCursor` with the same filters until\n   the requested window is covered or pages end. When the project identifier is\n   unknown, match normalized `cwd` by directory boundary across pages before\n   applying the time/count window. Sort by `startedAt` descending.\n3. Group survivors by local calendar date (YYYY-MM-DD).\n4. Per session list id (first 8), title or first prompt, observation count,\n   status. Obtain highlights with `memory_recall`, retaining project/agent scope,\n   and verify each result belongs to that session before including it.\n5. End with \"N sessions across M days, K observations.\"\n\n## Anti-patterns\n\nWRONG: window is empty, so you summarize \"a productive week of auth work\" from\nmemory of the conversation.\n\nRIGHT: \"No sessions in the last 7 days for this project.\"\n\n## Checklist\n\n- Window parsed correctly from the argument.\n- Sessions filtered to the current project's cwd.\n- Highlights come from `memory_recall`, not paraphrase.\n- Totals line reflects the actual counts shown.\n\n## See also\n\n- `handoff`, `session-history`, `recall`: same session data, different lens.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_sessions` or `memory_recall` is not available.\n","plugin/skills/handoff/SKILL.md":"---\nname: handoff\ndescription: Resume the most recent agent session for the current working directory, leading with any unanswered question. Use when the user says \"where were we\", \"resume\", \"handoff\", \"pick up where I left off\", or starts a session with no fresh context.\nargument-hint: \"[optional cwd override]\"\nuser-invocable: true\n---\n\nThe user wants to resume work. Optional cwd override: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_sessions { \"project\": \"<current-project-id>\", \"limit\": 20 }\n```\n\nPick the most recent session whose `cwd` matches this project, then:\n`memory_recall { \"query\": \"<session top concepts>\", \"project\": \"<current-project-id>\", \"limit\": 10 }`.\nWhen an agent is requested, pass the same `agentId` to both calls.\n\nExpected output:\n\n```text\nResuming 7f3a9c2 \"Auth refresh rework\".\nOpen question: should logout revoke all device tokens or just the current one?\nNext step: decide revoke scope, then update auth/logout.ts.\n```\n\n## Why\n\nMatch the session by directory boundary, not raw prefix, so a sibling repo never\ngets mistaken for this one. Never invent observations for an empty session.\n\n## Workflow\n\n1. Resolve the project path: if `$ARGUMENTS` is given, normalize it to absolute\n   (`path.resolve(process.cwd(), $ARGUMENTS)`); else use the cwd.\n2. Call `memory_sessions` with the exact project identifier when known, and\n   `agentId` when requested. Otherwise follow `nextCursor` until the matching\n   directory is found or pagination ends. Preserve filters between pages.\n   Pick the most recent session whose normalized `cwd`\n   matches by directory boundary: equality, OR `cwd.startsWith(projectPath + sep)`,\n   OR `projectPath.startsWith(cwd + sep)`. Prefer `completed` over `abandoned`.\n   No match: report that this project has no matching session and stop. Do not\n   substitute a different project's session.\n3. If the session ended on an unanswered user-facing question, surface it FIRST.\n   Look in `summary` or recent `conversation` observations whose `narrative`\n   ends in `?`.\n4. Summarize: title/summary, key files, key decisions or errors, using\n   `memory_recall` on the top concepts, limit 10, preserving the chosen project\n   and agent scope. Check each result's session or\n   project provenance before including it; a query alone does not enforce scope.\n5. End with one concrete \"next step?\" pointer.\n\n## Anti-patterns\n\nWRONG: `session.cwd.startsWith(projectPath)` matches `/repo-a-staging` when the\nproject is `/repo-a`, resuming the wrong repo's session.\n\nRIGHT: `session.cwd === projectPath || session.cwd.startsWith(projectPath + sep)`,\na directory-boundary check that cannot cross sibling repos.\n\n## Checklist\n\n- cwd override resolved to an absolute, normalized path.\n- Match used a directory-boundary check, not a raw prefix.\n- Unanswered question (if any) leads the response.\n- Empty session is reported plainly, with an offer to start fresh.\n\n## See also\n\n- `recap`, `session-history`, `recall`: same session data, broader views.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_sessions` or `memory_recall` is not available.\n","plugin/skills/forget/SKILL.md":"---\nname: forget\ndescription: Delete selected durable memories from agentmemory after showing them and getting explicit confirmation. Use when the user says \"forget this\", \"delete memory\", \"remove that note\", or wants to scrub specific data for privacy.\nargument-hint: \"[what to forget - session ID, file path, or search term]\"\nuser-invocable: true\n---\n\nThe user wants to remove data from agentmemory: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_smart_search { \"query\": \"old api key in config\", \"targetLayer\": \"memory\", \"limit\": 20 }\n```\n\nShow the matches, get a yes, then:\n\n```json\nmemory_governance_delete { \"memoryIds\": \"abc12345,def67890\", \"reason\": \"user privacy request\" }\n```\n\nExpected output:\n\n```text\nFound 2 matching memories. Confirmed. Deleted 2 memories.\n```\n\n## Why\n\nThis is destructive and irreversible. Show exactly what will be deleted and get\nan explicit yes before calling delete. Delete by memory ID, never a bare session.\n\n## Workflow\n\n1. Search with `memory_smart_search`, the user's text as `query`,\n   `targetLayer: \"memory\"`, `limit: 20`, and the requested project/agent scope.\n   These are selected relevance matches, not an exhaustive inventory.\n2. Show what matched: memory ids, titles, and scope. Redact secret values. Ask for explicit\n   confirmation. Do not proceed on silence or a vague \"sure, whatever\".\n3. On confirmation, call `memory_governance_delete` with `memoryIds` as a\n   comma-separated string and optional `reason` (default `plugin skill request`).\n4. Observation or whole-session erasure is not supported by this operation.\n   Explain that limit before proceeding; never label selected memory deletion\n   as a complete session wipe. Do not pass observation IDs or a `sessionId`.\n5. Lessons are separate: delete one with `memory_lesson_delete` and its\n   `lessonId`; `memory_governance_delete` does not touch lessons.\n6. Check `deleted`, `notFound`, and `failed` in the response. Report actual\n   deletions and unresolved IDs separately. Recheck the selected IDs before\n   retrying a failed request; an interrupted response may hide a completed write.\n\n## Anti-patterns\n\nWRONG: search returns matches, you immediately call `memory_governance_delete`\nwithout showing them or waiting for a yes.\n\nRIGHT: list the matches, ask \"Delete these 2? (yes/no)\", and only delete after\nan explicit yes.\n\n## Checklist\n\n- Matches were shown to the user before any delete.\n- An explicit yes was received, not assumed.\n- `memoryIds` holds real ids from the search, never a bare `sessionId`.\n- Final message states the actual count deleted.\n\n## See also\n\n- `remember`: the write side; forget is its undo.\n- `recall`: find the exact memory id before deleting.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_smart_search` or `memory_governance_delete` is not available.\n","plugin/skills/commit-history/SKILL.md":"---\nname: commit-history\ndescription: List recent git commits linked to agent sessions, optionally filtered by branch or repo. Use when the user asks \"show agent commits\", \"what has the agent shipped\", \"list linked commits\", or wants commits with their session context.\nargument-hint: \"[branch=... repo=... limit=...]\"\nuser-invocable: true\n---\n\nThe user wants a list of agent-linked commits. Filter args: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_commits { \"branch\": \"main\", \"limit\": 20 }\n```\n\nExpected output:\n\n```text\n9a1b2c3 main 2026-06-07 \"rotate refresh tokens\" · session 7f3a9c2 (14 obs)\nb21d004 main 2026-06-05 \"rate limiter audit\"    · session b21d004 (9 obs)\n```\n\n## Why\n\nRender only the commits the tool returned, newest first. An empty result means\nthe filter matched nothing, not that work is missing.\n\n## Workflow\n\n1. Parse `$ARGUMENTS` for `branch=<name>`, `repo=<url-or-fragment>`,\n   `limit=<n>`. A bare numeric token is the limit. Defaults: no branch, no repo,\n   limit 100, max 500.\n2. Call `memory_commits` with the parsed filters.\n3. Render reverse-chronologically: short sha, branch, authored timestamp, first\n   line of the message, linked session id(s) (first 8) with observation counts,\n   and file count when `files` is present.\n4. Empty result: tell the user the filter matched nothing and suggest dropping\n   the branch or repo filter.\n\n## Anti-patterns\n\nWRONG (REST fallback): concatenate `?branch=` + raw branch name, so a name with\n`?`, `&`, or `#` corrupts the query string.\n\nRIGHT: URL-encode every value with `URLSearchParams`/`encodeURIComponent` before\nappending to `GET /agentmemory/commits`.\n\n## Checklist\n\n- Filters parsed; bare number treated as limit; limit capped at 500.\n- Output is reverse-chronological.\n- Session ids and observation counts come straight from the response.\n- REST fallback URL-encodes branch, repo, and limit.\n\n## See also\n\n- `commit-context`: drill into one commit's session.\n- `recall`: search the observations behind a linked session.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_commits` is not available.\n","plugin/skills/agentmemory-mcp-tools/SKILL.md":"---\nname: agentmemory-mcp-tools\ndescription: Map of every agentmemory MCP tool, what each does, and its parameters. Use when choosing which memory tool to call, when a tool name or argument is unclear, or when answering what agentmemory can do via MCP.\nuser-invocable: false\n---\n\nThis skill indexes agentmemory's MCP tools. Use the connected server's tool inventory and schemas; a native memory provider may expose a smaller set under different names. Hermes and OpenClaw skills that need the full surface require a separate MCP connection to the running daemon.\n\n## Quick start\n\nSave then recall:\n\n1. `memory_save` with `content` (the insight), `concepts` (comma-separated keywords), `files` (comma-separated paths).\n2. `memory_smart_search` with `query`, `limit`, and `targetLayer: \"memory\"` to retrieve saved knowledge later. Omit `targetLayer` to also search captured observations. This runs hybrid BM25 plus vector plus graph-expanded search.\n\n## Tool families\n\n- Capture: `memory_save`, `memory_compress_file`. Automatic observations use native hooks or `POST /agentmemory/observe`, not an MCP observation tool.\n- Retrieve: `memory_smart_search`, `memory_recall`, `memory_file_history`, `memory_timeline`, `memory_vision_search`.\n- Sessions and commits: `memory_sessions`, `memory_commits`, `memory_commit_lookup`.\n- Knowledge and graph: `memory_lesson_save`, `memory_lesson_recall`, `memory_graph_query`, `memory_relations`, `memory_patterns`, `memory_crystallize`.\n- Structured slots: `memory_slot_create`, `memory_slot_append`, `memory_slot_get`, `memory_slot_list`, `memory_slot_replace`, `memory_slot_delete`.\n- Governance and health: `memory_governance_delete`, `memory_audit`, `memory_verify`, `memory_heal`, `memory_diagnose`.\n\n## Workflow\n\n1. Pick the narrowest tool for the task. Prefer `memory_smart_search` for open recall, `memory_recall` when you already have a focused query, `memory_sessions` for session listings.\n2. Look up exact parameter names and which are required in REFERENCE.md before calling.\n3. Pass only documented fields. REST handlers whitelist fields and drop unknown ones.\n4. For budgeted `memory_recall`, distinguish `matched_count: 0` from\n   `excluded_by_budget > 0`. Expand clipped or omitted IDs with\n   `memory_smart_search` and `expandIds`, preserving the same scope filters.\n\n## See also\n\n- agentmemory-rest-api for the HTTP equivalents.\n- agentmemory-config for tool-visibility and feature flags.\n- The user-invocable action skills (remember, recall, recap, handoff, forget) wrap the most common tools.\n\n## Reference\n\nFull tool table with parameters and the core-set marking lives in REFERENCE.md, generated from source so it never drifts.\n","plugin/skills/agentmemory-hooks/SKILL.md":"---\nname: agentmemory-hooks\ndescription: The agentmemory plugin hooks that capture observations automatically across the agent session lifecycle. Use when explaining how memory gets captured without manual saves, when debugging missing observations, or when tuning what gets recorded.\nuser-invocable: false\n---\n\nThe agentmemory plugin registers lifecycle hooks so memory is captured automatically. You do not have to call `memory_save` for routine work; the hooks observe tool use, prompts, and session boundaries and write observations for you.\n\n## Quick start\n\nFor Claude Code, install its plugin:\n\n```bash\n/plugin marketplace add rohitg00/agentmemory\n/plugin install agentmemory\n```\n\nFor Devin CLI and Devin Desktop, install the plugin and start a new session:\n\n```bash\ndevin plugins install rohitg00/agentmemory#plugin\n```\n\nRun `/hooks` inside Devin to confirm the agentmemory hooks are loaded. Plugin hooks run only in local Devin sessions, not in cloud sessions.\n\nHermes and OpenClaw use their native integrations and lifecycle contracts. Follow the matching integration setup instructions and verify a real turn creates an observation. Installing shared skills or connecting MCP alone does not enable automatic capture. Watch recorded observations in the viewer at `http://localhost:3113` when using the default port.\n\n## What the hooks do\n\n- Session start and end frame each unit of work and let `handoff` resume it.\n- Tool-use hooks capture what changed and why, the raw material for `recall` and `recap`.\n- Prompt-submit captures intent. Pre-compact preserves context before the host trims it.\n- A post-commit hook links commits to sessions, which powers `commit-context` and `commit-history`.\n\n## Important\n\n- The plugin hooks capture by default without an LLM. Summary generation (`AGENTMEMORY_AUTO_COMPRESS`) and hook context injection (`AGENTMEMORY_INJECT_CONTEXT`) are separate options. Native integrations have their own recall/capture settings; inspect the host configuration instead of assuming these flags control every plugin.\n- If observations are missing, confirm the plugin is enabled and the server is running. See [TROUBLESHOOTING.md](TROUBLESHOOTING.md).\n\n## See also\n\n- agentmemory-config for the capture and injection flags.\n- The handoff, recap, and session-history skills consume what these hooks record.\n\n## Reference\n\nThe exact registered hook events live in REFERENCE.md, generated from `plugin/hooks/hooks.json`.\n","plugin/skills/commit-context/SKILL.md":"---\nname: commit-context\ndescription: Trace a file, function, or line back to the agent session that produced its current commit. Use when the user asks \"why is this code here\", \"what was the agent doing when this changed\", \"who wrote this\", or wants context on a specific location in the codebase.\nargument-hint: \"[file, function, or line]\"\nuser-invocable: true\n---\n\nThe user wants commit context for: $ARGUMENTS\n\n## Quick start\n\n```bash\ngit blame -L 40,52 src/auth/refresh.ts   # -> SHA 9a1b2c3d\n```\n\n```json\nmemory_commit_lookup { \"sha\": \"9a1b2c3d4e5f60718293a4b5c6d7e8f901234567\" }\n```\n\nExpected output:\n\n```text\n9a1b2c3 on main by dev: \"rotate refresh tokens\"\nLinked session 7f3a9c2 \"Auth refresh rework\", 14 obs.\n```\n\n## Why\n\nReport only what git and the lookup return. When the lookup gives `commit: null`,\nthe commit predates session linking; do not invent intent.\n\n## Workflow\n\n1. Find the SHA: `git blame -L <start>,<end> <file>` for a line range;\n   `git log -L :<function>:<file>` for a function; `git log -n 1 -- <file>` for a\n   bare path.\n2. Look it up: `memory_commit_lookup { \"sha\": \"<full-sha>\" }`.\n3. Present the commit (sha, short sha, branch, author, message), the linked\n   session(s) (id, project, started/ended, observation count, summary), and the\n   importance >= 7 observations via `memory_recall` when available.\n\n## Anti-patterns\n\nWRONG: lookup returns `{ \"commit\": null }`, you narrate \"the agent was\nrefactoring auth\" from the diff alone.\n\nRIGHT: \"This commit predates session linking, so there is no recorded agent\nsession. From `git show`: it changed token rotation in refresh.ts.\"\n\n## Checklist\n\n- SHA came from git blame/log, not a guess.\n- `commit: null` reported as \"predates linking\", no fabricated session.\n- Session details quote the lookup response verbatim.\n- No intent claimed beyond what observations state.\n\n## See also\n\n- `commit-history`: list many agent-linked commits at once.\n- `recall`: dig deeper into the linked session's observations.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_commit_lookup` is not available.\n","plugin/skills/agentmemory-rest-api/SKILL.md":"---\nname: agentmemory-rest-api\ndescription: The agentmemory HTTP REST API surface, the primary protocol for talking to the memory server. Use when calling agentmemory over HTTP, when MCP is unavailable and you need a fallback, or when integrating a host that does not speak MCP.\nuser-invocable: false\n---\n\nREST is agentmemory's primary surface. MCP is a bridge on top of it. Every memory operation has an HTTP endpoint under `http://localhost:3111/agentmemory/*`.\n\n## Quick start\n\n```bash\n# liveness\ncurl -fsS http://localhost:3111/agentmemory/livez\n\n# For this fixed loopback URL only. Do not print the value or enable shell tracing.\nagentmemory_secret=\"${AGENTMEMORY_SECRET:-$(cat \"$HOME/.agentmemory/secret\")}\"\ntest -n \"$agentmemory_secret\" || exit 1\n\n# save\ncurl -fsS -X POST http://localhost:3111/agentmemory/remember \\\n  -H \"Authorization: Bearer $agentmemory_secret\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"content\":\"chose JWT refresh rotation\",\"concepts\":[\"jwt-refresh-rotation\"]}'\n\n# recall\ncurl -fsS -X POST http://localhost:3111/agentmemory/smart-search \\\n  -H \"Authorization: Bearer $agentmemory_secret\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"query\":\"auth token strategy\",\"limit\":5}'\n```\n\n## Auth\n\nProtected endpoints require bearer authentication by default, including localhost. Liveness is public. The example uses an explicit environment secret or the generated local secret file; if the daemon uses a secret from its `.env`, load that value locally without displaying it. For a remote daemon, require an explicit credential for that endpoint and HTTPS. Never forward a local-file secret or follow an authenticated redirect to another host. See [TROUBLESHOOTING.md](TROUBLESHOOTING.md).\n\n## Conventions\n\n- Save returns `201`, reads return `200`, validation errors return `400`.\n- Use documented fields only. A successful response does not prove an unsupported field was applied.\n- The port is configurable with `--port` or `--instance`; streams, viewer, and engine derive from it.\n\n## See also\n\n- agentmemory-mcp-tools for the MCP equivalents.\n- agentmemory-config for the port quartet and the secret.\n\n## Reference\n\nThe full endpoint list with methods lives in REFERENCE.md, generated from `src/triggers/api.ts`.\n","plugin/skills/agentmemory-config/SKILL.md":"# agentmemory-config\n\nPath: `plugin/skills/agentmemory-config/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-config/SKILL.md)","plugin/skills/agentmemory-architecture/SKILL.md":"# agentmemory-architecture\n\nPath: `plugin/skills/agentmemory-architecture/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-architecture/SKILL.md)","plugin/skills/agentmemory-agents/SKILL.md":"# agentmemory-agents\n\nPath: `plugin/skills/agentmemory-agents/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-agents/SKILL.md)","AGENTS.md":"# AI Agent Protocol & Instructions\n\nPath: `AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/AGENTS.md)","DESIGN.md":"# UI Design System & Style Tokens\n\nPath: `DESIGN.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/DESIGN.md)",".codex-plugin/marketplace.json":"# Claude Plugin Marketplace Catalog\n\nPath: `.codex-plugin/marketplace.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/.codex-plugin/marketplace.json)",".claude-plugin/marketplace.json":"# Claude Plugin Marketplace Catalog\n\nPath: `.claude-plugin/marketplace.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/.claude-plugin/marketplace.json)","plugin/plugin.json":"# plugin Plugin Manifest\n\nPath: `plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/plugin.json)","integrations/openclaw/openclaw.plugin.json":"# openclaw Plugin Manifest\n\nPath: `integrations/openclaw/openclaw.plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/integrations/openclaw/openclaw.plugin.json)","packages/mcp/package.json":"# Mcp Skill\n\nPath: `packages/mcp/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/packages/mcp/package.json)","packages/mcp/README.md":"# mcp Documentation\n\nPath: `packages/mcp/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/packages/mcp/README.md)","plugin/.codex-plugin/plugin.json":"# codex-plugin Plugin Manifest\n\nPath: `plugin/.codex-plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/.codex-plugin/plugin.json)","plugin/.claude-plugin/plugin.json":"# claude-plugin Plugin Manifest\n\nPath: `plugin/.claude-plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/.claude-plugin/plugin.json)","plugin/opencode/plugin.json":"# opencode Plugin Manifest\n\nPath: `plugin/opencode/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/opencode/plugin.json)","plugin/opencode/commands/recall.md":"# Command: /recall\n\nPath: `plugin/opencode/commands/recall.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/opencode/commands/recall.md)","plugin/opencode/commands/remember.md":"# Command: /remember\n\nPath: `plugin/opencode/commands/remember.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/opencode/commands/remember.md)","plugin/skills/session-history/EXAMPLES.md":"# Session-history Skill\n\nPath: `plugin/skills/session-history/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/session-history/EXAMPLES.md)","plugin/skills/remember/EXAMPLES.md":"# Remember Skill\n\nPath: `plugin/skills/remember/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/remember/EXAMPLES.md)","plugin/skills/recap/EXAMPLES.md":"# Recap Skill\n\nPath: `plugin/skills/recap/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/recap/EXAMPLES.md)","plugin/skills/recall/EXAMPLES.md":"# Recall Skill\n\nPath: `plugin/skills/recall/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/recall/EXAMPLES.md)","plugin/skills/handoff/EXAMPLES.md":"# Handoff Skill\n\nPath: `plugin/skills/handoff/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/handoff/EXAMPLES.md)","plugin/skills/forget/EXAMPLES.md":"# Forget Skill\n\nPath: `plugin/skills/forget/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/forget/EXAMPLES.md)","plugin/skills/commit-history/EXAMPLES.md":"# Commit-history Skill\n\nPath: `plugin/skills/commit-history/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/commit-history/EXAMPLES.md)","plugin/skills/commit-context/EXAMPLES.md":"# Commit-context Skill\n\nPath: `plugin/skills/commit-context/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/commit-context/EXAMPLES.md)","plugin/skills/agentmemory-rest-api/REFERENCE.md":"# Agentmemory-rest-api Skill\n\nPath: `plugin/skills/agentmemory-rest-api/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-rest-api/REFERENCE.md)","plugin/skills/agentmemory-mcp-tools/REFERENCE.md":"# Agentmemory-mcp-tools Skill\n\nPath: `plugin/skills/agentmemory-mcp-tools/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-mcp-tools/REFERENCE.md)","plugin/skills/agentmemory-hooks/REFERENCE.md":"# Agentmemory-hooks Skill\n\nPath: `plugin/skills/agentmemory-hooks/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-hooks/REFERENCE.md)","plugin/skills/agentmemory-config/REFERENCE.md":"# Agentmemory-config Skill\n\nPath: `plugin/skills/agentmemory-config/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-config/REFERENCE.md)","plugin/skills/agentmemory-agents/REFERENCE.md":"# Agentmemory-agents Skill\n\nPath: `plugin/skills/agentmemory-agents/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-agents/REFERENCE.md)","plugin/skills/_shared/TROUBLESHOOTING.md":"# _shared Skill\n\nPath: `plugin/skills/_shared/TROUBLESHOOTING.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/_shared/TROUBLESHOOTING.md)"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/AGENTS.md","title":"AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# AI Agent Protocol & Instructions\n\nPath: `AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/AGENTS.md)","tokens":300,"sizeBytes":154},{"name":"DESIGN.md","path":"DESIGN.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/DESIGN.md","title":"UI Design System & Style Tokens","category":"project-spec","format":"markdown","content":"# UI Design System & Style Tokens\n\nPath: `DESIGN.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/DESIGN.md)","tokens":300,"sizeBytes":153},{"name":"package.json","path":"packages/mcp/package.json","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/packages/mcp/package.json","title":"Mcp Skill","category":"anthropic-skill","format":"json","content":"# Mcp Skill\n\nPath: `packages/mcp/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/packages/mcp/package.json)","tokens":300,"sizeBytes":163},{"name":"TROUBLESHOOTING.md","path":"plugin/skills/_shared/TROUBLESHOOTING.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/_shared/TROUBLESHOOTING.md","title":"_shared Skill","category":"anthropic-skill","format":"markdown","content":"# _shared Skill\n\nPath: `plugin/skills/_shared/TROUBLESHOOTING.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/_shared/TROUBLESHOOTING.md)","tokens":300,"sizeBytes":197},{"name":"REFERENCE.md","path":"plugin/skills/agentmemory-agents/REFERENCE.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-agents/REFERENCE.md","title":"Agentmemory-agents Skill","category":"anthropic-skill","format":"markdown","content":"# Agentmemory-agents Skill\n\nPath: `plugin/skills/agentmemory-agents/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-agents/REFERENCE.md)","tokens":300,"sizeBytes":218},{"name":"SKILL.md","path":"plugin/skills/agentmemory-agents/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-agents/SKILL.md","title":"agentmemory-agents","category":"anthropic-skill","format":"markdown","content":"# agentmemory-agents\n\nPath: `plugin/skills/agentmemory-agents/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-agents/SKILL.md)","tokens":300,"sizeBytes":204},{"name":"SKILL.md","path":"plugin/skills/agentmemory-architecture/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-architecture/SKILL.md","title":"agentmemory-architecture","category":"anthropic-skill","format":"markdown","content":"# agentmemory-architecture\n\nPath: `plugin/skills/agentmemory-architecture/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-architecture/SKILL.md)","tokens":300,"sizeBytes":222},{"name":"REFERENCE.md","path":"plugin/skills/agentmemory-config/REFERENCE.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-config/REFERENCE.md","title":"Agentmemory-config Skill","category":"anthropic-skill","format":"markdown","content":"# Agentmemory-config Skill\n\nPath: `plugin/skills/agentmemory-config/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-config/REFERENCE.md)","tokens":300,"sizeBytes":218},{"name":"SKILL.md","path":"plugin/skills/agentmemory-config/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-config/SKILL.md","title":"agentmemory-config","category":"anthropic-skill","format":"markdown","content":"# agentmemory-config\n\nPath: `plugin/skills/agentmemory-config/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-config/SKILL.md)","tokens":300,"sizeBytes":204},{"name":"REFERENCE.md","path":"plugin/skills/agentmemory-hooks/REFERENCE.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-hooks/REFERENCE.md","title":"Agentmemory-hooks Skill","category":"anthropic-skill","format":"markdown","content":"# Agentmemory-hooks Skill\n\nPath: `plugin/skills/agentmemory-hooks/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-hooks/REFERENCE.md)","tokens":300,"sizeBytes":215},{"name":"SKILL.md","path":"plugin/skills/agentmemory-hooks/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-hooks/SKILL.md","title":"agentmemory-hooks","category":"anthropic-skill","format":"markdown","content":"---\nname: agentmemory-hooks\ndescription: The agentmemory plugin hooks that capture observations automatically across the agent session lifecycle. Use when explaining how memory gets captured without manual saves, when debugging missing observations, or when tuning what gets recorded.\nuser-invocable: false\n---\n\nThe agentmemory plugin registers lifecycle hooks so memory is captured automatically. You do not have to call `memory_save` for routine work; the hooks observe tool use, prompts, and session boundaries and write observations for you.\n\n## Quick start\n\nFor Claude Code, install its plugin:\n\n```bash\n/plugin marketplace add rohitg00/agentmemory\n/plugin install agentmemory\n```\n\nFor Devin CLI and Devin Desktop, install the plugin and start a new session:\n\n```bash\ndevin plugins install rohitg00/agentmemory#plugin\n```\n\nRun `/hooks` inside Devin to confirm the agentmemory hooks are loaded. Plugin hooks run only in local Devin sessions, not in cloud sessions.\n\nHermes and OpenClaw use their native integrations and lifecycle contracts. Follow the matching integration setup instructions and verify a real turn creates an observation. Installing shared skills or connecting MCP alone does not enable automatic capture. Watch recorded observations in the viewer at `http://localhost:3113` when using the default port.\n\n## What the hooks do\n\n- Session start and end frame each unit of work and let `handoff` resume it.\n- Tool-use hooks capture what changed and why, the raw material for `recall` and `recap`.\n- Prompt-submit captures intent. Pre-compact preserves context before the host trims it.\n- A post-commit hook links commits to sessions, which powers `commit-context` and `commit-history`.\n\n## Important\n\n- The plugin hooks capture by default without an LLM. Summary generation (`AGENTMEMORY_AUTO_COMPRESS`) and hook context injection (`AGENTMEMORY_INJECT_CONTEXT`) are separate options. Native integrations have their own recall/capture settings; inspect the host configuration instead of assuming these flags control every plugin.\n- If observations are missing, confirm the plugin is enabled and the server is running. See [TROUBLESHOOTING.md](TROUBLESHOOTING.md).\n\n## See also\n\n- agentmemory-config for the capture and injection flags.\n- The handoff, recap, and session-history skills consume what these hooks record.\n\n## Reference\n\nThe exact registered hook events live in REFERENCE.md, generated from `plugin/hooks/hooks.json`.\n","frontmatter":{"name":"agentmemory-hooks","description":"The agentmemory plugin hooks that capture observations automatically across the agent session lifecycle. Use when explaining how memory gets captured without manual saves, when debugging missing observations, or when tuning what gets recorded.","user-invocable":false},"isInternal":false,"tokens":499,"sizeBytes":2447},{"name":"REFERENCE.md","path":"plugin/skills/agentmemory-mcp-tools/REFERENCE.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-mcp-tools/REFERENCE.md","title":"Agentmemory-mcp-tools Skill","category":"anthropic-skill","format":"markdown","content":"# Agentmemory-mcp-tools Skill\n\nPath: `plugin/skills/agentmemory-mcp-tools/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-mcp-tools/REFERENCE.md)","tokens":300,"sizeBytes":227},{"name":"SKILL.md","path":"plugin/skills/agentmemory-mcp-tools/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-mcp-tools/SKILL.md","title":"agentmemory-mcp-tools","category":"anthropic-skill","format":"markdown","content":"---\nname: agentmemory-mcp-tools\ndescription: Map of every agentmemory MCP tool, what each does, and its parameters. Use when choosing which memory tool to call, when a tool name or argument is unclear, or when answering what agentmemory can do via MCP.\nuser-invocable: false\n---\n\nThis skill indexes agentmemory's MCP tools. Use the connected server's tool inventory and schemas; a native memory provider may expose a smaller set under different names. Hermes and OpenClaw skills that need the full surface require a separate MCP connection to the running daemon.\n\n## Quick start\n\nSave then recall:\n\n1. `memory_save` with `content` (the insight), `concepts` (comma-separated keywords), `files` (comma-separated paths).\n2. `memory_smart_search` with `query`, `limit`, and `targetLayer: \"memory\"` to retrieve saved knowledge later. Omit `targetLayer` to also search captured observations. This runs hybrid BM25 plus vector plus graph-expanded search.\n\n## Tool families\n\n- Capture: `memory_save`, `memory_compress_file`. Automatic observations use native hooks or `POST /agentmemory/observe`, not an MCP observation tool.\n- Retrieve: `memory_smart_search`, `memory_recall`, `memory_file_history`, `memory_timeline`, `memory_vision_search`.\n- Sessions and commits: `memory_sessions`, `memory_commits`, `memory_commit_lookup`.\n- Knowledge and graph: `memory_lesson_save`, `memory_lesson_recall`, `memory_graph_query`, `memory_relations`, `memory_patterns`, `memory_crystallize`.\n- Structured slots: `memory_slot_create`, `memory_slot_append`, `memory_slot_get`, `memory_slot_list`, `memory_slot_replace`, `memory_slot_delete`.\n- Governance and health: `memory_governance_delete`, `memory_audit`, `memory_verify`, `memory_heal`, `memory_diagnose`.\n\n## Workflow\n\n1. Pick the narrowest tool for the task. Prefer `memory_smart_search` for open recall, `memory_recall` when you already have a focused query, `memory_sessions` for session listings.\n2. Look up exact parameter names and which are required in REFERENCE.md before calling.\n3. Pass only documented fields. REST handlers whitelist fields and drop unknown ones.\n4. For budgeted `memory_recall`, distinguish `matched_count: 0` from\n   `excluded_by_budget > 0`. Expand clipped or omitted IDs with\n   `memory_smart_search` and `expandIds`, preserving the same scope filters.\n\n## See also\n\n- agentmemory-rest-api for the HTTP equivalents.\n- agentmemory-config for tool-visibility and feature flags.\n- The user-invocable action skills (remember, recall, recap, handoff, forget) wrap the most common tools.\n\n## Reference\n\nFull tool table with parameters and the core-set marking lives in REFERENCE.md, generated from source so it never drifts.\n","frontmatter":{"name":"agentmemory-mcp-tools","description":"Map of every agentmemory MCP tool, what each does, and its parameters. Use when choosing which memory tool to call, when a tool name or argument is unclear, or when answering what agentmemory can do via MCP.","user-invocable":false},"isInternal":false,"tokens":604,"sizeBytes":2687},{"name":"REFERENCE.md","path":"plugin/skills/agentmemory-rest-api/REFERENCE.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-rest-api/REFERENCE.md","title":"Agentmemory-rest-api Skill","category":"anthropic-skill","format":"markdown","content":"# Agentmemory-rest-api Skill\n\nPath: `plugin/skills/agentmemory-rest-api/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-rest-api/REFERENCE.md)","tokens":300,"sizeBytes":224},{"name":"SKILL.md","path":"plugin/skills/agentmemory-rest-api/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-rest-api/SKILL.md","title":"agentmemory-rest-api","category":"anthropic-skill","format":"markdown","content":"---\nname: agentmemory-rest-api\ndescription: The agentmemory HTTP REST API surface, the primary protocol for talking to the memory server. Use when calling agentmemory over HTTP, when MCP is unavailable and you need a fallback, or when integrating a host that does not speak MCP.\nuser-invocable: false\n---\n\nREST is agentmemory's primary surface. MCP is a bridge on top of it. Every memory operation has an HTTP endpoint under `http://localhost:3111/agentmemory/*`.\n\n## Quick start\n\n```bash\n# liveness\ncurl -fsS http://localhost:3111/agentmemory/livez\n\n# For this fixed loopback URL only. Do not print the value or enable shell tracing.\nagentmemory_secret=\"${AGENTMEMORY_SECRET:-$(cat \"$HOME/.agentmemory/secret\")}\"\ntest -n \"$agentmemory_secret\" || exit 1\n\n# save\ncurl -fsS -X POST http://localhost:3111/agentmemory/remember \\\n  -H \"Authorization: Bearer $agentmemory_secret\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"content\":\"chose JWT refresh rotation\",\"concepts\":[\"jwt-refresh-rotation\"]}'\n\n# recall\ncurl -fsS -X POST http://localhost:3111/agentmemory/smart-search \\\n  -H \"Authorization: Bearer $agentmemory_secret\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"query\":\"auth token strategy\",\"limit\":5}'\n```\n\n## Auth\n\nProtected endpoints require bearer authentication by default, including localhost. Liveness is public. The example uses an explicit environment secret or the generated local secret file; if the daemon uses a secret from its `.env`, load that value locally without displaying it. For a remote daemon, require an explicit credential for that endpoint and HTTPS. Never forward a local-file secret or follow an authenticated redirect to another host. See [TROUBLESHOOTING.md](TROUBLESHOOTING.md).\n\n## Conventions\n\n- Save returns `201`, reads return `200`, validation errors return `400`.\n- Use documented fields only. A successful response does not prove an unsupported field was applied.\n- The port is configurable with `--port` or `--instance`; streams, viewer, and engine derive from it.\n\n## See also\n\n- agentmemory-mcp-tools for the MCP equivalents.\n- agentmemory-config for the port quartet and the secret.\n\n## Reference\n\nThe full endpoint list with methods lives in REFERENCE.md, generated from `src/triggers/api.ts`.\n","frontmatter":{"name":"agentmemory-rest-api","description":"The agentmemory HTTP REST API surface, the primary protocol for talking to the memory server. Use when calling agentmemory over HTTP, when MCP is unavailable and you need a fallback, or when integrating a host that does not speak MCP.","user-invocable":false},"isInternal":false,"tokens":528,"sizeBytes":2251},{"name":"EXAMPLES.md","path":"plugin/skills/commit-context/EXAMPLES.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/commit-context/EXAMPLES.md","title":"Commit-context Skill","category":"anthropic-skill","format":"markdown","content":"# Commit-context Skill\n\nPath: `plugin/skills/commit-context/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/commit-context/EXAMPLES.md)","tokens":300,"sizeBytes":204},{"name":"SKILL.md","path":"plugin/skills/commit-context/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/commit-context/SKILL.md","title":"commit-context","category":"anthropic-skill","format":"markdown","content":"---\nname: commit-context\ndescription: Trace a file, function, or line back to the agent session that produced its current commit. Use when the user asks \"why is this code here\", \"what was the agent doing when this changed\", \"who wrote this\", or wants context on a specific location in the codebase.\nargument-hint: \"[file, function, or line]\"\nuser-invocable: true\n---\n\nThe user wants commit context for: $ARGUMENTS\n\n## Quick start\n\n```bash\ngit blame -L 40,52 src/auth/refresh.ts   # -> SHA 9a1b2c3d\n```\n\n```json\nmemory_commit_lookup { \"sha\": \"9a1b2c3d4e5f60718293a4b5c6d7e8f901234567\" }\n```\n\nExpected output:\n\n```text\n9a1b2c3 on main by dev: \"rotate refresh tokens\"\nLinked session 7f3a9c2 \"Auth refresh rework\", 14 obs.\n```\n\n## Why\n\nReport only what git and the lookup return. When the lookup gives `commit: null`,\nthe commit predates session linking; do not invent intent.\n\n## Workflow\n\n1. Find the SHA: `git blame -L <start>,<end> <file>` for a line range;\n   `git log -L :<function>:<file>` for a function; `git log -n 1 -- <file>` for a\n   bare path.\n2. Look it up: `memory_commit_lookup { \"sha\": \"<full-sha>\" }`.\n3. Present the commit (sha, short sha, branch, author, message), the linked\n   session(s) (id, project, started/ended, observation count, summary), and the\n   importance >= 7 observations via `memory_recall` when available.\n\n## Anti-patterns\n\nWRONG: lookup returns `{ \"commit\": null }`, you narrate \"the agent was\nrefactoring auth\" from the diff alone.\n\nRIGHT: \"This commit predates session linking, so there is no recorded agent\nsession. From `git show`: it changed token rotation in refresh.ts.\"\n\n## Checklist\n\n- SHA came from git blame/log, not a guess.\n- `commit: null` reported as \"predates linking\", no fabricated session.\n- Session details quote the lookup response verbatim.\n- No intent claimed beyond what observations state.\n\n## See also\n\n- `commit-history`: list many agent-linked commits at once.\n- `recall`: dig deeper into the linked session's observations.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_commit_lookup` is not available.\n","frontmatter":{"name":"commit-context","description":"Trace a file, function, or line back to the agent session that produced its current commit. Use when the user asks \"why is this code here\", \"what was the agent doing when this changed\", \"who wrote this\", or wants context on a specific location in the codebase.","argument-hint":"[file, function, or line]","user-invocable":true},"isInternal":false,"tokens":575,"sizeBytes":2099},{"name":"EXAMPLES.md","path":"plugin/skills/commit-history/EXAMPLES.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/commit-history/EXAMPLES.md","title":"Commit-history Skill","category":"anthropic-skill","format":"markdown","content":"# Commit-history Skill\n\nPath: `plugin/skills/commit-history/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/commit-history/EXAMPLES.md)","tokens":300,"sizeBytes":204},{"name":"SKILL.md","path":"plugin/skills/commit-history/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/commit-history/SKILL.md","title":"commit-history","category":"anthropic-skill","format":"markdown","content":"---\nname: commit-history\ndescription: List recent git commits linked to agent sessions, optionally filtered by branch or repo. Use when the user asks \"show agent commits\", \"what has the agent shipped\", \"list linked commits\", or wants commits with their session context.\nargument-hint: \"[branch=... repo=... limit=...]\"\nuser-invocable: true\n---\n\nThe user wants a list of agent-linked commits. Filter args: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_commits { \"branch\": \"main\", \"limit\": 20 }\n```\n\nExpected output:\n\n```text\n9a1b2c3 main 2026-06-07 \"rotate refresh tokens\" · session 7f3a9c2 (14 obs)\nb21d004 main 2026-06-05 \"rate limiter audit\"    · session b21d004 (9 obs)\n```\n\n## Why\n\nRender only the commits the tool returned, newest first. An empty result means\nthe filter matched nothing, not that work is missing.\n\n## Workflow\n\n1. Parse `$ARGUMENTS` for `branch=<name>`, `repo=<url-or-fragment>`,\n   `limit=<n>`. A bare numeric token is the limit. Defaults: no branch, no repo,\n   limit 100, max 500.\n2. Call `memory_commits` with the parsed filters.\n3. Render reverse-chronologically: short sha, branch, authored timestamp, first\n   line of the message, linked session id(s) (first 8) with observation counts,\n   and file count when `files` is present.\n4. Empty result: tell the user the filter matched nothing and suggest dropping\n   the branch or repo filter.\n\n## Anti-patterns\n\nWRONG (REST fallback): concatenate `?branch=` + raw branch name, so a name with\n`?`, `&`, or `#` corrupts the query string.\n\nRIGHT: URL-encode every value with `URLSearchParams`/`encodeURIComponent` before\nappending to `GET /agentmemory/commits`.\n\n## Checklist\n\n- Filters parsed; bare number treated as limit; limit capped at 500.\n- Output is reverse-chronological.\n- Session ids and observation counts come straight from the response.\n- REST fallback URL-encodes branch, repo, and limit.\n\n## See also\n\n- `commit-context`: drill into one commit's session.\n- `recall`: search the observations behind a linked session.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_commits` is not available.\n","frontmatter":{"name":"commit-history","description":"List recent git commits linked to agent sessions, optionally filtered by branch or repo. Use when the user asks \"show agent commits\", \"what has the agent shipped\", \"list linked commits\", or wants commits with their session context.","argument-hint":"[branch=... repo=... limit=...]","user-invocable":true},"isInternal":false,"tokens":551,"sizeBytes":2107},{"name":"EXAMPLES.md","path":"plugin/skills/forget/EXAMPLES.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/forget/EXAMPLES.md","title":"Forget Skill","category":"anthropic-skill","format":"markdown","content":"# Forget Skill\n\nPath: `plugin/skills/forget/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/forget/EXAMPLES.md)","tokens":300,"sizeBytes":180},{"name":"SKILL.md","path":"plugin/skills/forget/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/forget/SKILL.md","title":"forget","category":"anthropic-skill","format":"markdown","content":"---\nname: forget\ndescription: Delete selected durable memories from agentmemory after showing them and getting explicit confirmation. Use when the user says \"forget this\", \"delete memory\", \"remove that note\", or wants to scrub specific data for privacy.\nargument-hint: \"[what to forget - session ID, file path, or search term]\"\nuser-invocable: true\n---\n\nThe user wants to remove data from agentmemory: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_smart_search { \"query\": \"old api key in config\", \"targetLayer\": \"memory\", \"limit\": 20 }\n```\n\nShow the matches, get a yes, then:\n\n```json\nmemory_governance_delete { \"memoryIds\": \"abc12345,def67890\", \"reason\": \"user privacy request\" }\n```\n\nExpected output:\n\n```text\nFound 2 matching memories. Confirmed. Deleted 2 memories.\n```\n\n## Why\n\nThis is destructive and irreversible. Show exactly what will be deleted and get\nan explicit yes before calling delete. Delete by memory ID, never a bare session.\n\n## Workflow\n\n1. Search with `memory_smart_search`, the user's text as `query`,\n   `targetLayer: \"memory\"`, `limit: 20`, and the requested project/agent scope.\n   These are selected relevance matches, not an exhaustive inventory.\n2. Show what matched: memory ids, titles, and scope. Redact secret values. Ask for explicit\n   confirmation. Do not proceed on silence or a vague \"sure, whatever\".\n3. On confirmation, call `memory_governance_delete` with `memoryIds` as a\n   comma-separated string and optional `reason` (default `plugin skill request`).\n4. Observation or whole-session erasure is not supported by this operation.\n   Explain that limit before proceeding; never label selected memory deletion\n   as a complete session wipe. Do not pass observation IDs or a `sessionId`.\n5. Lessons are separate: delete one with `memory_lesson_delete` and its\n   `lessonId`; `memory_governance_delete` does not touch lessons.\n6. Check `deleted`, `notFound`, and `failed` in the response. Report actual\n   deletions and unresolved IDs separately. Recheck the selected IDs before\n   retrying a failed request; an interrupted response may hide a completed write.\n\n## Anti-patterns\n\nWRONG: search returns matches, you immediately call `memory_governance_delete`\nwithout showing them or waiting for a yes.\n\nRIGHT: list the matches, ask \"Delete these 2? (yes/no)\", and only delete after\nan explicit yes.\n\n## Checklist\n\n- Matches were shown to the user before any delete.\n- An explicit yes was received, not assumed.\n- `memoryIds` holds real ids from the search, never a bare `sessionId`.\n- Final message states the actual count deleted.\n\n## See also\n\n- `remember`: the write side; forget is its undo.\n- `recall`: find the exact memory id before deleting.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_smart_search` or `memory_governance_delete` is not available.\n","frontmatter":{"name":"forget","description":"Delete selected durable memories from agentmemory after showing them and getting explicit confirmation. Use when the user says \"forget this\", \"delete memory\", \"remove that note\", or wants to scrub specific data for privacy.","argument-hint":"[what to forget - session ID, file path, or search term]","user-invocable":true},"isInternal":false,"tokens":669,"sizeBytes":2823},{"name":"EXAMPLES.md","path":"plugin/skills/handoff/EXAMPLES.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/handoff/EXAMPLES.md","title":"Handoff Skill","category":"anthropic-skill","format":"markdown","content":"# Handoff Skill\n\nPath: `plugin/skills/handoff/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/handoff/EXAMPLES.md)","tokens":300,"sizeBytes":183},{"name":"SKILL.md","path":"plugin/skills/handoff/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/handoff/SKILL.md","title":"handoff","category":"anthropic-skill","format":"markdown","content":"---\nname: handoff\ndescription: Resume the most recent agent session for the current working directory, leading with any unanswered question. Use when the user says \"where were we\", \"resume\", \"handoff\", \"pick up where I left off\", or starts a session with no fresh context.\nargument-hint: \"[optional cwd override]\"\nuser-invocable: true\n---\n\nThe user wants to resume work. Optional cwd override: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_sessions { \"project\": \"<current-project-id>\", \"limit\": 20 }\n```\n\nPick the most recent session whose `cwd` matches this project, then:\n`memory_recall { \"query\": \"<session top concepts>\", \"project\": \"<current-project-id>\", \"limit\": 10 }`.\nWhen an agent is requested, pass the same `agentId` to both calls.\n\nExpected output:\n\n```text\nResuming 7f3a9c2 \"Auth refresh rework\".\nOpen question: should logout revoke all device tokens or just the current one?\nNext step: decide revoke scope, then update auth/logout.ts.\n```\n\n## Why\n\nMatch the session by directory boundary, not raw prefix, so a sibling repo never\ngets mistaken for this one. Never invent observations for an empty session.\n\n## Workflow\n\n1. Resolve the project path: if `$ARGUMENTS` is given, normalize it to absolute\n   (`path.resolve(process.cwd(), $ARGUMENTS)`); else use the cwd.\n2. Call `memory_sessions` with the exact project identifier when known, and\n   `agentId` when requested. Otherwise follow `nextCursor` until the matching\n   directory is found or pagination ends. Preserve filters between pages.\n   Pick the most recent session whose normalized `cwd`\n   matches by directory boundary: equality, OR `cwd.startsWith(projectPath + sep)`,\n   OR `projectPath.startsWith(cwd + sep)`. Prefer `completed` over `abandoned`.\n   No match: report that this project has no matching session and stop. Do not\n   substitute a different project's session.\n3. If the session ended on an unanswered user-facing question, surface it FIRST.\n   Look in `summary` or recent `conversation` observations whose `narrative`\n   ends in `?`.\n4. Summarize: title/summary, key files, key decisions or errors, using\n   `memory_recall` on the top concepts, limit 10, preserving the chosen project\n   and agent scope. Check each result's session or\n   project provenance before including it; a query alone does not enforce scope.\n5. End with one concrete \"next step?\" pointer.\n\n## Anti-patterns\n\nWRONG: `session.cwd.startsWith(projectPath)` matches `/repo-a-staging` when the\nproject is `/repo-a`, resuming the wrong repo's session.\n\nRIGHT: `session.cwd === projectPath || session.cwd.startsWith(projectPath + sep)`,\na directory-boundary check that cannot cross sibling repos.\n\n## Checklist\n\n- cwd override resolved to an absolute, normalized path.\n- Match used a directory-boundary check, not a raw prefix.\n- Unanswered question (if any) leads the response.\n- Empty session is reported plainly, with an offer to start fresh.\n\n## See also\n\n- `recap`, `session-history`, `recall`: same session data, broader views.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_sessions` or `memory_recall` is not available.\n","frontmatter":{"name":"handoff","description":"Resume the most recent agent session for the current working directory, leading with any unanswered question. Use when the user says \"where were we\", \"resume\", \"handoff\", \"pick up where I left off\", or starts a session with no fresh context.","argument-hint":"[optional cwd override]","user-invocable":true},"isInternal":false,"tokens":732,"sizeBytes":3113},{"name":"EXAMPLES.md","path":"plugin/skills/recall/EXAMPLES.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/recall/EXAMPLES.md","title":"Recall Skill","category":"anthropic-skill","format":"markdown","content":"# Recall Skill\n\nPath: `plugin/skills/recall/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/recall/EXAMPLES.md)","tokens":300,"sizeBytes":180},{"name":"SKILL.md","path":"plugin/skills/recall/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/recall/SKILL.md","title":"recall","category":"anthropic-skill","format":"markdown","content":"---\nname: recall\ndescription: Search agentmemory for past observations, sessions, and learnings about a topic using hybrid BM25 plus vector plus graph search. Use when the user says \"recall\", \"what did we do about\", \"did we ever\", \"have we seen\", or needs context from past sessions.\nargument-hint: \"[search query]\"\nuser-invocable: true\n---\n\nThe user wants to recall past context about: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_smart_search { \"query\": \"jwt refresh token rotation\", \"limit\": 10 }\n```\n\nExpected output:\n\n```text\n2 results across 2 sessions.\n[importance 8] decision · \"Rotate refresh tokens on every use\" (session 7f3a9c21)\n[importance 5] code · \"limit.ts counts per-IP\" (session b21d004e)\n```\n\n## Why\n\nOnly surface what the tool returned. Never fabricate an observation, a session\nid, or an importance score. If nothing comes back, say so.\n\n## Workflow\n\n1. Call `memory_smart_search` with the user's text as `query` and `limit: 10`.\n   Pass `project` when the user scopes to a specific repo and `agentId` when\n   they request one agent's history.\n   Use `targetLayer: \"memory\"` for explicitly saved knowledge, or\n   `targetLayer: \"observation\"` for captured activity. Omit it for mixed search.\n2. Search results are compact. Before quoting full content or describing\n   provenance, call `memory_smart_search` with the selected IDs as a\n   comma-separated `expandIds` string and the same project, agent, and layer\n   filters. If expansion fails or the record is no longer available, report\n   that limitation; a title alone is not the full fact.\n3. Group expanded observations by session and show the returned type, title,\n   and narrative. Include provenance only when the response supplies it.\n4. Lead with the high-signal observations (importance >= 7).\n5. With `memory_recall`, inspect `matched_count`, `excluded_by_budget`, and\n   `content_truncated` before treating an empty or shortened response as absent\n   knowledge. Recover full content with `memory_smart_search` using `expandIds`\n   and the same project, agent, and layer filters. `minimum_budget` reports the\n   estimated budget needed for a minimal preview when the budget is too small.\n6. If there are no matches, suggest 2-3 alternative search terms and stop. Do not guess.\n\n## Anti-patterns\n\nWRONG: results are empty, so you write \"We probably discussed token expiry last\nweek\" from assumption.\n\nRIGHT: \"No memories matched that query. Try `refresh token`, `session expiry`,\nor `auth rotation`.\"\n\n## Checklist\n\n- Every observation shown came from the tool response.\n- Results grouped by session, high-importance first.\n- Empty results trigger alternative-term suggestions, not invention.\n- No session id or score was paraphrased or rounded.\n\n## See also\n\n- `remember`: the write side; recall retrieves what it stores.\n- `recap`, `handoff`, `session-history`: session-scoped views of the same data.\n- `memory-discipline`: when to run this search unprompted.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_smart_search` is not available.\n","frontmatter":{"name":"recall","description":"Search agentmemory for past observations, sessions, and learnings about a topic using hybrid BM25 plus vector plus graph search. Use when the user says \"recall\", \"what did we do about\", \"did we ever\", \"have we seen\", or needs context from past sessions.","argument-hint":"[search query]","user-invocable":true},"isInternal":false,"tokens":733,"sizeBytes":3052},{"name":"EXAMPLES.md","path":"plugin/skills/recap/EXAMPLES.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/recap/EXAMPLES.md","title":"Recap Skill","category":"anthropic-skill","format":"markdown","content":"# Recap Skill\n\nPath: `plugin/skills/recap/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/recap/EXAMPLES.md)","tokens":300,"sizeBytes":177},{"name":"SKILL.md","path":"plugin/skills/recap/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/recap/SKILL.md","title":"recap","category":"anthropic-skill","format":"markdown","content":"---\nname: recap\ndescription: Summarize the last N agent sessions for the current project, grouped by date, with highlight observations per session. Use when the user asks \"recap\", \"what have we been doing\", \"today\", \"this week\", or wants a rollup of recent work.\nargument-hint: \"[last N | today | this week]\"\nuser-invocable: true\n---\n\nThe user wants a recap. Time window args: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_sessions { \"project\": \"<current-project-id>\", \"limit\": 30 }\n```\n\nThen per surviving session: `memory_recall { \"query\": \"<top concepts>\", \"project\": \"<current-project-id>\", \"limit\": 3 }`.\nWhen an agent is requested, pass the same `agentId` to both calls.\n\nExpected output:\n\n```text\n2026-06-07\n  7f3a9c2 · \"Auth refresh rework\" · 14 obs · completed\n    - [8] Rotate refresh tokens on every use\n3 sessions across 2 days, 41 observations.\n```\n\n## Why\n\nOnly summarize sessions and observations the tools returned. An empty window is\na real answer, not a prompt to invent activity.\n\n## Workflow\n\n1. Parse `$ARGUMENTS`: `today` = current local date; `this week` = last 7 days;\n   `last <n>` or bare numeric = most recent N; empty = `last 10`.\n2. Call `memory_sessions` with the exact recorded project identifier when known\n   and the requested `agentId`. Follow `nextCursor` with the same filters until\n   the requested window is covered or pages end. When the project identifier is\n   unknown, match normalized `cwd` by directory boundary across pages before\n   applying the time/count window. Sort by `startedAt` descending.\n3. Group survivors by local calendar date (YYYY-MM-DD).\n4. Per session list id (first 8), title or first prompt, observation count,\n   status. Obtain highlights with `memory_recall`, retaining project/agent scope,\n   and verify each result belongs to that session before including it.\n5. End with \"N sessions across M days, K observations.\"\n\n## Anti-patterns\n\nWRONG: window is empty, so you summarize \"a productive week of auth work\" from\nmemory of the conversation.\n\nRIGHT: \"No sessions in the last 7 days for this project.\"\n\n## Checklist\n\n- Window parsed correctly from the argument.\n- Sessions filtered to the current project's cwd.\n- Highlights come from `memory_recall`, not paraphrase.\n- Totals line reflects the actual counts shown.\n\n## See also\n\n- `handoff`, `session-history`, `recall`: same session data, different lens.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_sessions` or `memory_recall` is not available.\n","frontmatter":{"name":"recap","description":"Summarize the last N agent sessions for the current project, grouped by date, with highlight observations per session. Use when the user asks \"recap\", \"what have we been doing\", \"today\", \"this week\", or wants a rollup of recent work.","argument-hint":"[last N | today | this week]","user-invocable":true},"isInternal":false,"tokens":615,"sizeBytes":2498},{"name":"EXAMPLES.md","path":"plugin/skills/remember/EXAMPLES.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/remember/EXAMPLES.md","title":"Remember Skill","category":"anthropic-skill","format":"markdown","content":"# Remember Skill\n\nPath: `plugin/skills/remember/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/remember/EXAMPLES.md)","tokens":300,"sizeBytes":186},{"name":"SKILL.md","path":"plugin/skills/remember/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/remember/SKILL.md","title":"remember","category":"anthropic-skill","format":"markdown","content":"---\nname: remember\ndescription: Save an insight, decision, or learning to agentmemory's long-term storage with searchable concept tags. Use when the user says \"remember this\", \"save this\", \"note that\", \"don't forget\", or wants to preserve knowledge for future sessions.\nargument-hint: \"[what to remember]\"\nuser-invocable: true\n---\n\nThe user wants to save this to long-term memory: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_save {\n  \"content\": \"We rotate JWT refresh tokens on every use; the old token is revoked server-side in auth/refresh.ts.\",\n  \"concepts\": \"jwt-refresh-rotation, token-revocation, auth-flow\",\n  \"files\": \"src/auth/refresh.ts\"\n}\n```\n\nExpected output:\n\n```text\nSaved memory abc12345 with 3 concepts: jwt-refresh-rotation, token-revocation, auth-flow.\n```\n\n## Why\n\nA memory is only as useful as the terms that retrieve it. Tag with specific\nconcepts so a future `recall` finds it, and preserve the user's own phrasing.\n\n## Workflow\n\n1. Pull the core insight, decision, or fact out of `$ARGUMENTS`.\n2. Extract 2-5 lowercased concept phrases. Prefer specific over generic\n   (`jwt-refresh-rotation` beats `auth`).\n3. Extract referenced file paths (absolute or repo-relative). Empty if none.\n4. Call `memory_save` with `content`, `concepts` (comma-separated string), and\n   `files` (comma-separated string). In a multi-agent setup pass `agentId` so\n   the memory lands in the right agent's scope.\n5. Confirm the save and echo the concepts so the user knows the retrieval terms.\n6. To update a fact, save the corrected version outright: near-duplicate content\n   supersedes the old record, which leaves recall but stays in the version chain.\n\n## Anti-patterns\n\nWRONG: `concepts: \"stuff, code, notes\"` (generic tags nothing can find later).\n\nRIGHT: `concepts: \"jwt-refresh-rotation, token-revocation\"` (specific, retrievable).\n\n## Checklist\n\n- Content preserves the user's phrasing, not a paraphrase.\n- Concepts are specific, lowercased, 2-5 items.\n- File paths are real references, not guesses.\n- Confirmation echoes the exact concepts tagged.\n\n## See also\n\n- `recall`: retrieve what you save here (the pair to this skill).\n- `forget`: remove a memory you saved by mistake.\n- `lesson`: behavioral rules from corrections; memories are for facts.\n- `memory-discipline`: when to save unprompted.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_save` is not available.\n","frontmatter":{"name":"remember","description":"Save an insight, decision, or learning to agentmemory's long-term storage with searchable concept tags. Use when the user says \"remember this\", \"save this\", \"note that\", \"don't forget\", or wants to preserve knowledge for future sessions.","argument-hint":"[what to remember]","user-invocable":true},"isInternal":false,"tokens":595,"sizeBytes":2408},{"name":"EXAMPLES.md","path":"plugin/skills/session-history/EXAMPLES.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/session-history/EXAMPLES.md","title":"Session-history Skill","category":"anthropic-skill","format":"markdown","content":"# Session-history Skill\n\nPath: `plugin/skills/session-history/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/session-history/EXAMPLES.md)","tokens":300,"sizeBytes":207},{"name":"SKILL.md","path":"plugin/skills/session-history/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/session-history/SKILL.md","title":"session-history","category":"anthropic-skill","format":"markdown","content":"---\nname: session-history\ndescription: Show what happened in recent past sessions on this project as a clean timeline. Use when the user asks \"what did we do last time\", \"session history\", \"past sessions\", or wants an overview of previous work.\nuser-invocable: true\n---\n\nThe user wants an overview of recent sessions on this project.\n\n## Quick start\n\n```json\nmemory_sessions { \"project\": \"<current-project-id>\", \"limit\": 20 }\n```\n\nExpected output:\n\n```text\n7f3a9c2 · app · 2026-06-07 09:00 · completed · 14 obs\n  - decision: Rotate refresh tokens on every use\nb21d004 · app · 2026-06-05 14:00 · completed · 9 obs\n  - code: limit.ts counts per-IP\n```\n\n## Why\n\nOnly show sessions and observations the tool returned. An empty history is a\nreal answer, never a cue to invent past work.\n\n## Workflow\n\n1. Use the exact project identifier recorded by the host and pass it to\n   `memory_sessions`, with `agentId` when requested. If it is unknown, page\n   through sessions using `nextCursor` and match normalized `cwd` by directory\n   boundary before choosing the most recent 20. Never substitute another project.\n2. Preserve scope filters on every page; stop at the requested count or a null\n   `nextCursor`. State when the displayed history is a partial page. Present in\n   reverse chronological order: session id (first 8), project, start\n   time, status.\n3. For sessions with observations, show the key highlights (type plus title).\n4. Note the total observation count per session.\n5. When a session summary exists, surface its title and the key decisions.\n\n## Anti-patterns\n\nWRONG: the tool returns two sessions, you describe \"several sessions of steady\nprogress\" and add ones you remember from the conversation.\n\nRIGHT: show exactly the two sessions returned, each with its real id, status, and\nobservation count.\n\n## Checklist\n\n- Every session shown came from the tool response.\n- Project/directory scope was checked before selecting the displayed window.\n- Order is reverse-chronological.\n- Per-session observation counts match the response.\n- No session or highlight was invented or merged.\n\n## See also\n\n- `recap`: same data grouped by date with highlights.\n- `handoff`: jump straight into the most recent session.\n- `recall`: search across all sessions by topic.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_sessions` is not available.\n","frontmatter":{"name":"session-history","description":"Show what happened in recent past sessions on this project as a clean timeline. Use when the user asks \"what did we do last time\", \"session history\", \"past sessions\", or wants an overview of previous work.","user-invocable":true},"isInternal":false,"tokens":562,"sizeBytes":2378},{"name":"SKILL.md","path":"plugin/skills/write-agentmemory-skill/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/write-agentmemory-skill/SKILL.md","title":"write-agentmemory-skill","category":"anthropic-skill","format":"markdown","content":"---\nname: write-agentmemory-skill\ndescription: The house format and rules for writing or updating an agentmemory skill. Use when adding a new skill, restructuring an existing one, or reviewing a skill contribution for consistency.\nuser-invocable: false\n---\n\nagentmemory skills follow one tiered format so they stay skimmable, accurate, and current. Match it exactly.\n\n## Directory layout\n\n```text\nplugin/skills/<name>/\n  SKILL.md      (required, under 100 lines)\n  REFERENCE.md  (optional, dense facts; auto-generate data tables)\n  EXAMPLES.md   (optional, worked transcripts)\n  TROUBLESHOOTING.md (generated support file)\n```\n\n## SKILL.md rules\n\n- Frontmatter: `name`, `description`, optional `argument-hint`, and `user-invocable`. Set `user-invocable: true` only for skills the user runs as a slash command; reference and knowledge skills are `false`.\n- Description is two sentences and the only thing the agent sees when deciding to load the skill. Sentence one states the capability. Sentence two starts \"Use when\" and lists concrete triggers. Keep it distinct from sibling skills, under 1024 chars, third person.\n- Body order: Quick start (one concrete example), Why (the governing principle), Workflow (numbered steps with decision gates), Anti-patterns (a WRONG vs RIGHT callout for the top mistake), Checklist, See also (cross-link siblings), Reference or Troubleshooting pointer.\n- Stay under 100 lines. Move dense facts to REFERENCE.md and examples to EXAMPLES.md.\n- Keep supporting files inside the skill directory so each skill works when installed separately. Link [TROUBLESHOOTING.md](TROUBLESHOOTING.md); the generator copies shared recovery instructions into each skill root.\n\n## Keep it current\n\nFacts that exist in source (tool names and parameters, REST endpoints, env vars, connect adapters, hook events) are generated, never hand-typed. Edit the source, then run `npm run skills:gen`. CI runs `npm run skills:check` and fails on drift, so generated tables cannot fall behind the code.\n\n## Style\n\nNo external or competitor product names. No emojis. No em-dashes. No filler. State the thing and stop.\n\n## Checklist\n\n- Description has a \"Use when\" sentence with real triggers.\n- SKILL.md is under 100 lines.\n- No time-sensitive claims and no duplicated troubleshooting block.\n- Concrete example present; generated facts come from the generator.\n- Cross-links resolve and go one level deep.\n","frontmatter":{"name":"write-agentmemory-skill","description":"The house format and rules for writing or updating an agentmemory skill. Use when adding a new skill, restructuring an existing one, or reviewing a skill contribution for consistency.","user-invocable":false},"isInternal":false,"tokens":539,"sizeBytes":2408},{"name":"marketplace.json","path":".claude-plugin/marketplace.json","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/.claude-plugin/marketplace.json","title":"Claude Plugin Marketplace Catalog","category":"marketplace","format":"json","content":"# Claude Plugin Marketplace Catalog\n\nPath: `.claude-plugin/marketplace.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/.claude-plugin/marketplace.json)","tokens":300,"sizeBytes":199},{"name":"marketplace.json","path":".codex-plugin/marketplace.json","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/.codex-plugin/marketplace.json","title":"Claude Plugin Marketplace Catalog","category":"marketplace","format":"json","content":"# Claude Plugin Marketplace Catalog\n\nPath: `.codex-plugin/marketplace.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/.codex-plugin/marketplace.json)","tokens":300,"sizeBytes":197},{"name":"openclaw.plugin.json","path":"integrations/openclaw/openclaw.plugin.json","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/integrations/openclaw/openclaw.plugin.json","title":"openclaw Plugin Manifest","category":"plugin-manifest","format":"json","content":"# openclaw Plugin Manifest\n\nPath: `integrations/openclaw/openclaw.plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/integrations/openclaw/openclaw.plugin.json)","tokens":300,"sizeBytes":212},{"name":"README.md","path":"packages/mcp/README.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/packages/mcp/README.md","title":"mcp Documentation","category":"plugin-manifest","format":"markdown","content":"# mcp Documentation\n\nPath: `packages/mcp/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/packages/mcp/README.md)","tokens":300,"sizeBytes":165},{"name":"plugin.json","path":"plugin/.claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/.claude-plugin/plugin.json","title":"claude-plugin Plugin Manifest","category":"plugin-manifest","format":"json","content":"# claude-plugin Plugin Manifest\n\nPath: `plugin/.claude-plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/.claude-plugin/plugin.json)","tokens":300,"sizeBytes":199},{"name":"plugin.json","path":"plugin/.codex-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/.codex-plugin/plugin.json","title":"codex-plugin Plugin Manifest","category":"plugin-manifest","format":"json","content":"# codex-plugin Plugin Manifest\n\nPath: `plugin/.codex-plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/.codex-plugin/plugin.json)","tokens":300,"sizeBytes":196},{"name":"plugin.json","path":"plugin/opencode/plugin.json","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/opencode/plugin.json","title":"opencode Plugin Manifest","category":"plugin-manifest","format":"json","content":"# opencode Plugin Manifest\n\nPath: `plugin/opencode/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/opencode/plugin.json)","tokens":300,"sizeBytes":182},{"name":"plugin.json","path":"plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/plugin.json","title":"plugin Plugin Manifest","category":"plugin-manifest","format":"json","content":"# plugin Plugin Manifest\n\nPath: `plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/plugin.json)","tokens":300,"sizeBytes":162},{"name":"recall.md","path":"plugin/opencode/commands/recall.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/opencode/commands/recall.md","title":"Command: /recall","category":"command-prompt","format":"markdown","content":"# Command: /recall\n\nPath: `plugin/opencode/commands/recall.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/opencode/commands/recall.md)","tokens":300,"sizeBytes":188},{"name":"remember.md","path":"plugin/opencode/commands/remember.md","rawUrl":"https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/opencode/commands/remember.md","title":"Command: /remember","category":"command-prompt","format":"markdown","content":"# Command: /remember\n\nPath: `plugin/opencode/commands/remember.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/opencode/commands/remember.md)","tokens":300,"sizeBytes":194}],"systemPromptSnippet":"<yakaai_skills repo=\"rohitg00/agentmemory\">\n<!-- File: AGENTS.md (Tokens: ~300 | Category: root-instruction) -->\n# AI Agent Protocol & Instructions\n\nPath: `AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/AGENTS.md)\n\n<!-- File: DESIGN.md (Tokens: ~300 | Category: project-spec) -->\n# UI Design System & Style Tokens\n\nPath: `DESIGN.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/DESIGN.md)\n\n<!-- File: packages/mcp/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Mcp Skill\n\nPath: `packages/mcp/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/packages/mcp/package.json)\n\n<!-- File: plugin/skills/_shared/TROUBLESHOOTING.md (Tokens: ~300 | Category: anthropic-skill) -->\n# _shared Skill\n\nPath: `plugin/skills/_shared/TROUBLESHOOTING.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/_shared/TROUBLESHOOTING.md)\n\n<!-- File: plugin/skills/agentmemory-agents/REFERENCE.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentmemory-agents Skill\n\nPath: `plugin/skills/agentmemory-agents/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-agents/REFERENCE.md)\n\n<!-- File: plugin/skills/agentmemory-agents/SKILL.md (Tokens: ~300 | Category: anthropic-skill) -->\n# agentmemory-agents\n\nPath: `plugin/skills/agentmemory-agents/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-agents/SKILL.md)\n\n<!-- File: plugin/skills/agentmemory-architecture/SKILL.md (Tokens: ~300 | Category: anthropic-skill) -->\n# agentmemory-architecture\n\nPath: `plugin/skills/agentmemory-architecture/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-architecture/SKILL.md)\n\n<!-- File: plugin/skills/agentmemory-config/REFERENCE.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentmemory-config Skill\n\nPath: `plugin/skills/agentmemory-config/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-config/REFERENCE.md)\n\n<!-- File: plugin/skills/agentmemory-config/SKILL.md (Tokens: ~300 | Category: anthropic-skill) -->\n# agentmemory-config\n\nPath: `plugin/skills/agentmemory-config/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-config/SKILL.md)\n\n<!-- File: plugin/skills/agentmemory-hooks/REFERENCE.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentmemory-hooks Skill\n\nPath: `plugin/skills/agentmemory-hooks/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-hooks/REFERENCE.md)\n\n<!-- File: plugin/skills/agentmemory-hooks/SKILL.md (Tokens: ~499 | Category: anthropic-skill) -->\n---\nname: agentmemory-hooks\ndescription: The agentmemory plugin hooks that capture observations automatically across the agent session lifecycle. Use when explaining how memory gets captured without manual saves, when debugging missing observations, or when tuning what gets recorded.\nuser-invocable: false\n---\n\nThe agentmemory plugin registers lifecycle hooks so memory is captured automatically. You do not have to call `memory_save` for routine work; the hooks observe tool use, prompts, and session boundaries and write observations for you.\n\n## Quick start\n\nFor Claude Code, install its plugin:\n\n```bash\n/plugin marketplace add rohitg00/agentmemory\n/plugin install agentmemory\n```\n\nFor Devin CLI and Devin Desktop, install the plugin and start a new session:\n\n```bash\ndevin plugins install rohitg00/agentmemory#plugin\n```\n\nRun `/hooks` inside Devin to confirm the agentmemory hooks are loaded. Plugin hooks run only in local Devin sessions, not in cloud sessions.\n\nHermes and OpenClaw use their native integrations and lifecycle contracts. Follow the matching integration setup instructions and verify a real turn creates an observation. Installing shared skills or connecting MCP alone does not enable automatic capture. Watch recorded observations in the viewer at `http://localhost:3113` when using the default port.\n\n## What the hooks do\n\n- Session start and end frame each unit of work and let `handoff` resume it.\n- Tool-use hooks capture what changed and why, the raw material for `recall` and `recap`.\n- Prompt-submit captures intent. Pre-compact preserves context before the host trims it.\n- A post-commit hook links commits to sessions, which powers `commit-context` and `commit-history`.\n\n## Important\n\n- The plugin hooks capture by default without an LLM. Summary generation (`AGENTMEMORY_AUTO_COMPRESS`) and hook context injection (`AGENTMEMORY_INJECT_CONTEXT`) are separate options. Native integrations have their own recall/capture settings; inspect the host configuration instead of assuming these flags control every plugin.\n- If observations are missing, confirm the plugin is enabled and the server is running. See [TROUBLESHOOTING.md](TROUBLESHOOTING.md).\n\n## See also\n\n- agentmemory-config for the capture and injection flags.\n- The handoff, recap, and session-history skills consume what these hooks record.\n\n## Reference\n\nThe exact registered hook events live in REFERENCE.md, generated from `plugin/hooks/hooks.json`.\n\n<!-- File: plugin/skills/agentmemory-mcp-tools/REFERENCE.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentmemory-mcp-tools Skill\n\nPath: `plugin/skills/agentmemory-mcp-tools/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-mcp-tools/REFERENCE.md)\n\n<!-- File: plugin/skills/agentmemory-mcp-tools/SKILL.md (Tokens: ~604 | Category: anthropic-skill) -->\n---\nname: agentmemory-mcp-tools\ndescription: Map of every agentmemory MCP tool, what each does, and its parameters. Use when choosing which memory tool to call, when a tool name or argument is unclear, or when answering what agentmemory can do via MCP.\nuser-invocable: false\n---\n\nThis skill indexes agentmemory's MCP tools. Use the connected server's tool inventory and schemas; a native memory provider may expose a smaller set under different names. Hermes and OpenClaw skills that need the full surface require a separate MCP connection to the running daemon.\n\n## Quick start\n\nSave then recall:\n\n1. `memory_save` with `content` (the insight), `concepts` (comma-separated keywords), `files` (comma-separated paths).\n2. `memory_smart_search` with `query`, `limit`, and `targetLayer: \"memory\"` to retrieve saved knowledge later. Omit `targetLayer` to also search captured observations. This runs hybrid BM25 plus vector plus graph-expanded search.\n\n## Tool families\n\n- Capture: `memory_save`, `memory_compress_file`. Automatic observations use native hooks or `POST /agentmemory/observe`, not an MCP observation tool.\n- Retrieve: `memory_smart_search`, `memory_recall`, `memory_file_history`, `memory_timeline`, `memory_vision_search`.\n- Sessions and commits: `memory_sessions`, `memory_commits`, `memory_commit_lookup`.\n- Knowledge and graph: `memory_lesson_save`, `memory_lesson_recall`, `memory_graph_query`, `memory_relations`, `memory_patterns`, `memory_crystallize`.\n- Structured slots: `memory_slot_create`, `memory_slot_append`, `memory_slot_get`, `memory_slot_list`, `memory_slot_replace`, `memory_slot_delete`.\n- Governance and health: `memory_governance_delete`, `memory_audit`, `memory_verify`, `memory_heal`, `memory_diagnose`.\n\n## Workflow\n\n1. Pick the narrowest tool for the task. Prefer `memory_smart_search` for open recall, `memory_recall` when you already have a focused query, `memory_sessions` for session listings.\n2. Look up exact parameter names and which are required in REFERENCE.md before calling.\n3. Pass only documented fields. REST handlers whitelist fields and drop unknown ones.\n4. For budgeted `memory_recall`, distinguish `matched_count: 0` from\n   `excluded_by_budget > 0`. Expand clipped or omitted IDs with\n   `memory_smart_search` and `expandIds`, preserving the same scope filters.\n\n## See also\n\n- agentmemory-rest-api for the HTTP equivalents.\n- agentmemory-config for tool-visibility and feature flags.\n- The user-invocable action skills (remember, recall, recap, handoff, forget) wrap the most common tools.\n\n## Reference\n\nFull tool table with parameters and the core-set marking lives in REFERENCE.md, generated from source so it never drifts.\n\n<!-- File: plugin/skills/agentmemory-rest-api/REFERENCE.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Agentmemory-rest-api Skill\n\nPath: `plugin/skills/agentmemory-rest-api/REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/agentmemory-rest-api/REFERENCE.md)\n\n<!-- File: plugin/skills/agentmemory-rest-api/SKILL.md (Tokens: ~528 | Category: anthropic-skill) -->\n---\nname: agentmemory-rest-api\ndescription: The agentmemory HTTP REST API surface, the primary protocol for talking to the memory server. Use when calling agentmemory over HTTP, when MCP is unavailable and you need a fallback, or when integrating a host that does not speak MCP.\nuser-invocable: false\n---\n\nREST is agentmemory's primary surface. MCP is a bridge on top of it. Every memory operation has an HTTP endpoint under `http://localhost:3111/agentmemory/*`.\n\n## Quick start\n\n```bash\n# liveness\ncurl -fsS http://localhost:3111/agentmemory/livez\n\n# For this fixed loopback URL only. Do not print the value or enable shell tracing.\nagentmemory_secret=\"${AGENTMEMORY_SECRET:-$(cat \"$HOME/.agentmemory/secret\")}\"\ntest -n \"$agentmemory_secret\" || exit 1\n\n# save\ncurl -fsS -X POST http://localhost:3111/agentmemory/remember \\\n  -H \"Authorization: Bearer $agentmemory_secret\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"content\":\"chose JWT refresh rotation\",\"concepts\":[\"jwt-refresh-rotation\"]}'\n\n# recall\ncurl -fsS -X POST http://localhost:3111/agentmemory/smart-search \\\n  -H \"Authorization: Bearer $agentmemory_secret\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"query\":\"auth token strategy\",\"limit\":5}'\n```\n\n## Auth\n\nProtected endpoints require bearer authentication by default, including localhost. Liveness is public. The example uses an explicit environment secret or the generated local secret file; if the daemon uses a secret from its `.env`, load that value locally without displaying it. For a remote daemon, require an explicit credential for that endpoint and HTTPS. Never forward a local-file secret or follow an authenticated redirect to another host. See [TROUBLESHOOTING.md](TROUBLESHOOTING.md).\n\n## Conventions\n\n- Save returns `201`, reads return `200`, validation errors return `400`.\n- Use documented fields only. A successful response does not prove an unsupported field was applied.\n- The port is configurable with `--port` or `--instance`; streams, viewer, and engine derive from it.\n\n## See also\n\n- agentmemory-mcp-tools for the MCP equivalents.\n- agentmemory-config for the port quartet and the secret.\n\n## Reference\n\nThe full endpoint list with methods lives in REFERENCE.md, generated from `src/triggers/api.ts`.\n\n<!-- File: plugin/skills/commit-context/EXAMPLES.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Commit-context Skill\n\nPath: `plugin/skills/commit-context/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/commit-context/EXAMPLES.md)\n\n<!-- File: plugin/skills/commit-context/SKILL.md (Tokens: ~575 | Category: anthropic-skill) -->\n---\nname: commit-context\ndescription: Trace a file, function, or line back to the agent session that produced its current commit. Use when the user asks \"why is this code here\", \"what was the agent doing when this changed\", \"who wrote this\", or wants context on a specific location in the codebase.\nargument-hint: \"[file, function, or line]\"\nuser-invocable: true\n---\n\nThe user wants commit context for: $ARGUMENTS\n\n## Quick start\n\n```bash\ngit blame -L 40,52 src/auth/refresh.ts   # -> SHA 9a1b2c3d\n```\n\n```json\nmemory_commit_lookup { \"sha\": \"9a1b2c3d4e5f60718293a4b5c6d7e8f901234567\" }\n```\n\nExpected output:\n\n```text\n9a1b2c3 on main by dev: \"rotate refresh tokens\"\nLinked session 7f3a9c2 \"Auth refresh rework\", 14 obs.\n```\n\n## Why\n\nReport only what git and the lookup return. When the lookup gives `commit: null`,\nthe commit predates session linking; do not invent intent.\n\n## Workflow\n\n1. Find the SHA: `git blame -L <start>,<end> <file>` for a line range;\n   `git log -L :<function>:<file>` for a function; `git log -n 1 -- <file>` for a\n   bare path.\n2. Look it up: `memory_commit_lookup { \"sha\": \"<full-sha>\" }`.\n3. Present the commit (sha, short sha, branch, author, message), the linked\n   session(s) (id, project, started/ended, observation count, summary), and the\n   importance >= 7 observations via `memory_recall` when available.\n\n## Anti-patterns\n\nWRONG: lookup returns `{ \"commit\": null }`, you narrate \"the agent was\nrefactoring auth\" from the diff alone.\n\nRIGHT: \"This commit predates session linking, so there is no recorded agent\nsession. From `git show`: it changed token rotation in refresh.ts.\"\n\n## Checklist\n\n- SHA came from git blame/log, not a guess.\n- `commit: null` reported as \"predates linking\", no fabricated session.\n- Session details quote the lookup response verbatim.\n- No intent claimed beyond what observations state.\n\n## See also\n\n- `commit-history`: list many agent-linked commits at once.\n- `recall`: dig deeper into the linked session's observations.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_commit_lookup` is not available.\n\n<!-- File: plugin/skills/commit-history/EXAMPLES.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Commit-history Skill\n\nPath: `plugin/skills/commit-history/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/commit-history/EXAMPLES.md)\n\n<!-- File: plugin/skills/commit-history/SKILL.md (Tokens: ~551 | Category: anthropic-skill) -->\n---\nname: commit-history\ndescription: List recent git commits linked to agent sessions, optionally filtered by branch or repo. Use when the user asks \"show agent commits\", \"what has the agent shipped\", \"list linked commits\", or wants commits with their session context.\nargument-hint: \"[branch=... repo=... limit=...]\"\nuser-invocable: true\n---\n\nThe user wants a list of agent-linked commits. Filter args: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_commits { \"branch\": \"main\", \"limit\": 20 }\n```\n\nExpected output:\n\n```text\n9a1b2c3 main 2026-06-07 \"rotate refresh tokens\" · session 7f3a9c2 (14 obs)\nb21d004 main 2026-06-05 \"rate limiter audit\"    · session b21d004 (9 obs)\n```\n\n## Why\n\nRender only the commits the tool returned, newest first. An empty result means\nthe filter matched nothing, not that work is missing.\n\n## Workflow\n\n1. Parse `$ARGUMENTS` for `branch=<name>`, `repo=<url-or-fragment>`,\n   `limit=<n>`. A bare numeric token is the limit. Defaults: no branch, no repo,\n   limit 100, max 500.\n2. Call `memory_commits` with the parsed filters.\n3. Render reverse-chronologically: short sha, branch, authored timestamp, first\n   line of the message, linked session id(s) (first 8) with observation counts,\n   and file count when `files` is present.\n4. Empty result: tell the user the filter matched nothing and suggest dropping\n   the branch or repo filter.\n\n## Anti-patterns\n\nWRONG (REST fallback): concatenate `?branch=` + raw branch name, so a name with\n`?`, `&`, or `#` corrupts the query string.\n\nRIGHT: URL-encode every value with `URLSearchParams`/`encodeURIComponent` before\nappending to `GET /agentmemory/commits`.\n\n## Checklist\n\n- Filters parsed; bare number treated as limit; limit capped at 500.\n- Output is reverse-chronological.\n- Session ids and observation counts come straight from the response.\n- REST fallback URL-encodes branch, repo, and limit.\n\n## See also\n\n- `commit-context`: drill into one commit's session.\n- `recall`: search the observations behind a linked session.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_commits` is not available.\n\n<!-- File: plugin/skills/forget/EXAMPLES.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Forget Skill\n\nPath: `plugin/skills/forget/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/forget/EXAMPLES.md)\n\n<!-- File: plugin/skills/forget/SKILL.md (Tokens: ~669 | Category: anthropic-skill) -->\n---\nname: forget\ndescription: Delete selected durable memories from agentmemory after showing them and getting explicit confirmation. Use when the user says \"forget this\", \"delete memory\", \"remove that note\", or wants to scrub specific data for privacy.\nargument-hint: \"[what to forget - session ID, file path, or search term]\"\nuser-invocable: true\n---\n\nThe user wants to remove data from agentmemory: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_smart_search { \"query\": \"old api key in config\", \"targetLayer\": \"memory\", \"limit\": 20 }\n```\n\nShow the matches, get a yes, then:\n\n```json\nmemory_governance_delete { \"memoryIds\": \"abc12345,def67890\", \"reason\": \"user privacy request\" }\n```\n\nExpected output:\n\n```text\nFound 2 matching memories. Confirmed. Deleted 2 memories.\n```\n\n## Why\n\nThis is destructive and irreversible. Show exactly what will be deleted and get\nan explicit yes before calling delete. Delete by memory ID, never a bare session.\n\n## Workflow\n\n1. Search with `memory_smart_search`, the user's text as `query`,\n   `targetLayer: \"memory\"`, `limit: 20`, and the requested project/agent scope.\n   These are selected relevance matches, not an exhaustive inventory.\n2. Show what matched: memory ids, titles, and scope. Redact secret values. Ask for explicit\n   confirmation. Do not proceed on silence or a vague \"sure, whatever\".\n3. On confirmation, call `memory_governance_delete` with `memoryIds` as a\n   comma-separated string and optional `reason` (default `plugin skill request`).\n4. Observation or whole-session erasure is not supported by this operation.\n   Explain that limit before proceeding; never label selected memory deletion\n   as a complete session wipe. Do not pass observation IDs or a `sessionId`.\n5. Lessons are separate: delete one with `memory_lesson_delete` and its\n   `lessonId`; `memory_governance_delete` does not touch lessons.\n6. Check `deleted`, `notFound`, and `failed` in the response. Report actual\n   deletions and unresolved IDs separately. Recheck the selected IDs before\n   retrying a failed request; an interrupted response may hide a completed write.\n\n## Anti-patterns\n\nWRONG: search returns matches, you immediately call `memory_governance_delete`\nwithout showing them or waiting for a yes.\n\nRIGHT: list the matches, ask \"Delete these 2? (yes/no)\", and only delete after\nan explicit yes.\n\n## Checklist\n\n- Matches were shown to the user before any delete.\n- An explicit yes was received, not assumed.\n- `memoryIds` holds real ids from the search, never a bare `sessionId`.\n- Final message states the actual count deleted.\n\n## See also\n\n- `remember`: the write side; forget is its undo.\n- `recall`: find the exact memory id before deleting.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_smart_search` or `memory_governance_delete` is not available.\n\n<!-- File: plugin/skills/handoff/EXAMPLES.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Handoff Skill\n\nPath: `plugin/skills/handoff/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/handoff/EXAMPLES.md)\n\n<!-- File: plugin/skills/handoff/SKILL.md (Tokens: ~732 | Category: anthropic-skill) -->\n---\nname: handoff\ndescription: Resume the most recent agent session for the current working directory, leading with any unanswered question. Use when the user says \"where were we\", \"resume\", \"handoff\", \"pick up where I left off\", or starts a session with no fresh context.\nargument-hint: \"[optional cwd override]\"\nuser-invocable: true\n---\n\nThe user wants to resume work. Optional cwd override: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_sessions { \"project\": \"<current-project-id>\", \"limit\": 20 }\n```\n\nPick the most recent session whose `cwd` matches this project, then:\n`memory_recall { \"query\": \"<session top concepts>\", \"project\": \"<current-project-id>\", \"limit\": 10 }`.\nWhen an agent is requested, pass the same `agentId` to both calls.\n\nExpected output:\n\n```text\nResuming 7f3a9c2 \"Auth refresh rework\".\nOpen question: should logout revoke all device tokens or just the current one?\nNext step: decide revoke scope, then update auth/logout.ts.\n```\n\n## Why\n\nMatch the session by directory boundary, not raw prefix, so a sibling repo never\ngets mistaken for this one. Never invent observations for an empty session.\n\n## Workflow\n\n1. Resolve the project path: if `$ARGUMENTS` is given, normalize it to absolute\n   (`path.resolve(process.cwd(), $ARGUMENTS)`); else use the cwd.\n2. Call `memory_sessions` with the exact project identifier when known, and\n   `agentId` when requested. Otherwise follow `nextCursor` until the matching\n   directory is found or pagination ends. Preserve filters between pages.\n   Pick the most recent session whose normalized `cwd`\n   matches by directory boundary: equality, OR `cwd.startsWith(projectPath + sep)`,\n   OR `projectPath.startsWith(cwd + sep)`. Prefer `completed` over `abandoned`.\n   No match: report that this project has no matching session and stop. Do not\n   substitute a different project's session.\n3. If the session ended on an unanswered user-facing question, surface it FIRST.\n   Look in `summary` or recent `conversation` observations whose `narrative`\n   ends in `?`.\n4. Summarize: title/summary, key files, key decisions or errors, using\n   `memory_recall` on the top concepts, limit 10, preserving the chosen project\n   and agent scope. Check each result's session or\n   project provenance before including it; a query alone does not enforce scope.\n5. End with one concrete \"next step?\" pointer.\n\n## Anti-patterns\n\nWRONG: `session.cwd.startsWith(projectPath)` matches `/repo-a-staging` when the\nproject is `/repo-a`, resuming the wrong repo's session.\n\nRIGHT: `session.cwd === projectPath || session.cwd.startsWith(projectPath + sep)`,\na directory-boundary check that cannot cross sibling repos.\n\n## Checklist\n\n- cwd override resolved to an absolute, normalized path.\n- Match used a directory-boundary check, not a raw prefix.\n- Unanswered question (if any) leads the response.\n- Empty session is reported plainly, with an offer to start fresh.\n\n## See also\n\n- `recap`, `session-history`, `recall`: same session data, broader views.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_sessions` or `memory_recall` is not available.\n\n<!-- File: plugin/skills/recall/EXAMPLES.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Recall Skill\n\nPath: `plugin/skills/recall/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/recall/EXAMPLES.md)\n\n<!-- File: plugin/skills/recall/SKILL.md (Tokens: ~733 | Category: anthropic-skill) -->\n---\nname: recall\ndescription: Search agentmemory for past observations, sessions, and learnings about a topic using hybrid BM25 plus vector plus graph search. Use when the user says \"recall\", \"what did we do about\", \"did we ever\", \"have we seen\", or needs context from past sessions.\nargument-hint: \"[search query]\"\nuser-invocable: true\n---\n\nThe user wants to recall past context about: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_smart_search { \"query\": \"jwt refresh token rotation\", \"limit\": 10 }\n```\n\nExpected output:\n\n```text\n2 results across 2 sessions.\n[importance 8] decision · \"Rotate refresh tokens on every use\" (session 7f3a9c21)\n[importance 5] code · \"limit.ts counts per-IP\" (session b21d004e)\n```\n\n## Why\n\nOnly surface what the tool returned. Never fabricate an observation, a session\nid, or an importance score. If nothing comes back, say so.\n\n## Workflow\n\n1. Call `memory_smart_search` with the user's text as `query` and `limit: 10`.\n   Pass `project` when the user scopes to a specific repo and `agentId` when\n   they request one agent's history.\n   Use `targetLayer: \"memory\"` for explicitly saved knowledge, or\n   `targetLayer: \"observation\"` for captured activity. Omit it for mixed search.\n2. Search results are compact. Before quoting full content or describing\n   provenance, call `memory_smart_search` with the selected IDs as a\n   comma-separated `expandIds` string and the same project, agent, and layer\n   filters. If expansion fails or the record is no longer available, report\n   that limitation; a title alone is not the full fact.\n3. Group expanded observations by session and show the returned type, title,\n   and narrative. Include provenance only when the response supplies it.\n4. Lead with the high-signal observations (importance >= 7).\n5. With `memory_recall`, inspect `matched_count`, `excluded_by_budget`, and\n   `content_truncated` before treating an empty or shortened response as absent\n   knowledge. Recover full content with `memory_smart_search` using `expandIds`\n   and the same project, agent, and layer filters. `minimum_budget` reports the\n   estimated budget needed for a minimal preview when the budget is too small.\n6. If there are no matches, suggest 2-3 alternative search terms and stop. Do not guess.\n\n## Anti-patterns\n\nWRONG: results are empty, so you write \"We probably discussed token expiry last\nweek\" from assumption.\n\nRIGHT: \"No memories matched that query. Try `refresh token`, `session expiry`,\nor `auth rotation`.\"\n\n## Checklist\n\n- Every observation shown came from the tool response.\n- Results grouped by session, high-importance first.\n- Empty results trigger alternative-term suggestions, not invention.\n- No session id or score was paraphrased or rounded.\n\n## See also\n\n- `remember`: the write side; recall retrieves what it stores.\n- `recap`, `handoff`, `session-history`: session-scoped views of the same data.\n- `memory-discipline`: when to run this search unprompted.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_smart_search` is not available.\n\n<!-- File: plugin/skills/recap/EXAMPLES.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Recap Skill\n\nPath: `plugin/skills/recap/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/recap/EXAMPLES.md)\n\n<!-- File: plugin/skills/recap/SKILL.md (Tokens: ~615 | Category: anthropic-skill) -->\n---\nname: recap\ndescription: Summarize the last N agent sessions for the current project, grouped by date, with highlight observations per session. Use when the user asks \"recap\", \"what have we been doing\", \"today\", \"this week\", or wants a rollup of recent work.\nargument-hint: \"[last N | today | this week]\"\nuser-invocable: true\n---\n\nThe user wants a recap. Time window args: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_sessions { \"project\": \"<current-project-id>\", \"limit\": 30 }\n```\n\nThen per surviving session: `memory_recall { \"query\": \"<top concepts>\", \"project\": \"<current-project-id>\", \"limit\": 3 }`.\nWhen an agent is requested, pass the same `agentId` to both calls.\n\nExpected output:\n\n```text\n2026-06-07\n  7f3a9c2 · \"Auth refresh rework\" · 14 obs · completed\n    - [8] Rotate refresh tokens on every use\n3 sessions across 2 days, 41 observations.\n```\n\n## Why\n\nOnly summarize sessions and observations the tools returned. An empty window is\na real answer, not a prompt to invent activity.\n\n## Workflow\n\n1. Parse `$ARGUMENTS`: `today` = current local date; `this week` = last 7 days;\n   `last <n>` or bare numeric = most recent N; empty = `last 10`.\n2. Call `memory_sessions` with the exact recorded project identifier when known\n   and the requested `agentId`. Follow `nextCursor` with the same filters until\n   the requested window is covered or pages end. When the project identifier is\n   unknown, match normalized `cwd` by directory boundary across pages before\n   applying the time/count window. Sort by `startedAt` descending.\n3. Group survivors by local calendar date (YYYY-MM-DD).\n4. Per session list id (first 8), title or first prompt, observation count,\n   status. Obtain highlights with `memory_recall`, retaining project/agent scope,\n   and verify each result belongs to that session before including it.\n5. End with \"N sessions across M days, K observations.\"\n\n## Anti-patterns\n\nWRONG: window is empty, so you summarize \"a productive week of auth work\" from\nmemory of the conversation.\n\nRIGHT: \"No sessions in the last 7 days for this project.\"\n\n## Checklist\n\n- Window parsed correctly from the argument.\n- Sessions filtered to the current project's cwd.\n- Highlights come from `memory_recall`, not paraphrase.\n- Totals line reflects the actual counts shown.\n\n## See also\n\n- `handoff`, `session-history`, `recall`: same session data, different lens.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_sessions` or `memory_recall` is not available.\n\n<!-- File: plugin/skills/remember/EXAMPLES.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Remember Skill\n\nPath: `plugin/skills/remember/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/remember/EXAMPLES.md)\n\n<!-- File: plugin/skills/remember/SKILL.md (Tokens: ~595 | Category: anthropic-skill) -->\n---\nname: remember\ndescription: Save an insight, decision, or learning to agentmemory's long-term storage with searchable concept tags. Use when the user says \"remember this\", \"save this\", \"note that\", \"don't forget\", or wants to preserve knowledge for future sessions.\nargument-hint: \"[what to remember]\"\nuser-invocable: true\n---\n\nThe user wants to save this to long-term memory: $ARGUMENTS\n\n## Quick start\n\n```json\nmemory_save {\n  \"content\": \"We rotate JWT refresh tokens on every use; the old token is revoked server-side in auth/refresh.ts.\",\n  \"concepts\": \"jwt-refresh-rotation, token-revocation, auth-flow\",\n  \"files\": \"src/auth/refresh.ts\"\n}\n```\n\nExpected output:\n\n```text\nSaved memory abc12345 with 3 concepts: jwt-refresh-rotation, token-revocation, auth-flow.\n```\n\n## Why\n\nA memory is only as useful as the terms that retrieve it. Tag with specific\nconcepts so a future `recall` finds it, and preserve the user's own phrasing.\n\n## Workflow\n\n1. Pull the core insight, decision, or fact out of `$ARGUMENTS`.\n2. Extract 2-5 lowercased concept phrases. Prefer specific over generic\n   (`jwt-refresh-rotation` beats `auth`).\n3. Extract referenced file paths (absolute or repo-relative). Empty if none.\n4. Call `memory_save` with `content`, `concepts` (comma-separated string), and\n   `files` (comma-separated string). In a multi-agent setup pass `agentId` so\n   the memory lands in the right agent's scope.\n5. Confirm the save and echo the concepts so the user knows the retrieval terms.\n6. To update a fact, save the corrected version outright: near-duplicate content\n   supersedes the old record, which leaves recall but stays in the version chain.\n\n## Anti-patterns\n\nWRONG: `concepts: \"stuff, code, notes\"` (generic tags nothing can find later).\n\nRIGHT: `concepts: \"jwt-refresh-rotation, token-revocation\"` (specific, retrievable).\n\n## Checklist\n\n- Content preserves the user's phrasing, not a paraphrase.\n- Concepts are specific, lowercased, 2-5 items.\n- File paths are real references, not guesses.\n- Confirmation echoes the exact concepts tagged.\n\n## See also\n\n- `recall`: retrieve what you save here (the pair to this skill).\n- `forget`: remove a memory you saved by mistake.\n- `lesson`: behavioral rules from corrections; memories are for facts.\n- `memory-discipline`: when to save unprompted.\n\n## Troubleshooting\n\nSee [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if `memory_save` is not available.\n\n<!-- File: plugin/skills/session-history/EXAMPLES.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Session-history Skill\n\nPath: `plugin/skills/session-history/EXAMPLES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rohitg00/agentmemory/HEAD/plugin/skills/session-history/EXAMPLES.md)\n\n<!-- ... +12 more modular skills available via /api/skills/rohitg00/agentmemory?path={path} -->\n</yakaai_skills>"}