From eaa75b01c417fa76ffaefd11082ec55ddc690f00 Mon Sep 17 00:00:00 2001 From: irresi Date: Wed, 15 Jul 2026 15:24:25 -0700 Subject: [PATCH 1/2] fix(skills): make remember skill's project scoping transport-safe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The membase-remember skill ships to every client via the one-command installer (npx plugins add copies skills/ into each client's plugin cache). It instructed all clients to read the membase://project MCP resource, but that resource only exists on the stdio server (Claude plugin), where it resolves the slug from process.cwd(). Remote-HTTP clients (Cursor, Codex, VS Code) connect to the hosted server, which has no client filesystem and does not expose the resource — so the documented happy path hard-failed with MCP -32602 on every project-scoped save. Rewrite the guidance to be transport-safe: derive the project slug from the repository (git remote or dir name) and pass it to add_memory, or omit it when unknown; keep membase://project as a documented Claude-plugin-only optimization. Skill-only change (no bundle rebuild). Verified live on Codex (remote MCP): the same store task that previously fired list_mcp_resources ('Unexpected response type') and read_mcp_resource(membase://project) (-32602) now makes zero resource calls and stores in one add_memory call with the correct project slug. --- skills/remember/SKILL.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/skills/remember/SKILL.md b/skills/remember/SKILL.md index 9934f2f..4c12025 100644 --- a/skills/remember/SKILL.md +++ b/skills/remember/SKILL.md @@ -12,8 +12,13 @@ Use `add_memory` when the user shares durable context worth remembering: - decisions and corrections - recurring technical setup or workflow facts -When storing repository-specific context through MCP, read `membase://project` -and pass the project slug explicitly. +When storing repository-specific context, scope it to the project by passing a +`project` slug to `add_memory`. Derive the slug from the repository — its git +remote name or the working-directory name (e.g. `aristoapp/membase-plugin-mcp` +→ `membase-plugin-mcp`). If you can't determine a slug, omit `project` rather +than guessing. On the Claude Code plugin only, the `membase://project` resource +returns the already-resolved slug; other clients (remote MCP) do not expose it, +so don't depend on reading it. Do not store: From 6ab509001b6e0715813b10474efa14afe8b47de5 Mon Sep 17 00:00:00 2001 From: irresi Date: Wed, 15 Jul 2026 15:28:31 -0700 Subject: [PATCH 2/2] fix(skills): align remember slug example with server resolveProjectSlug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Independent review caught a real correctness bug in the first cut: the example 'aristoapp/membase-plugin-mcp -> membase-plugin-mcp' dropped the org and kept only the basename, but the plugin's resolveProjectSlug normalizes the FULL git-remote URL path (owner/repo, '/' -> '-'), yielding 'aristoapp-membase-plugin-mcp'. A remote client following the old example would scope to a different slug than the Claude plugin on the same repo and silently split memories across transports — defeating the cross-tool continuity the fix is meant to preserve. Describe the exact normalization (remote URL path, lowercased, non-alphanumeric runs -> single '-') with a correct worked example, and clarify it's the remote URL, not a remote name. Verified live on Codex: a fresh session now runs 'git remote get-url origin' and produces project 'aristoapp-membase-plugin-mcp', matching the plugin's own auto-resolution. --- skills/remember/SKILL.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/skills/remember/SKILL.md b/skills/remember/SKILL.md index 4c12025..6629da2 100644 --- a/skills/remember/SKILL.md +++ b/skills/remember/SKILL.md @@ -13,12 +13,15 @@ Use `add_memory` when the user shares durable context worth remembering: - recurring technical setup or workflow facts When storing repository-specific context, scope it to the project by passing a -`project` slug to `add_memory`. Derive the slug from the repository — its git -remote name or the working-directory name (e.g. `aristoapp/membase-plugin-mcp` -→ `membase-plugin-mcp`). If you can't determine a slug, omit `project` rather -than guessing. On the Claude Code plugin only, the `membase://project` resource -returns the already-resolved slug; other clients (remote MCP) do not expose it, -so don't depend on reading it. +`project` slug to `add_memory`. Derive the slug the same way the plugin does, so +memories align across clients: take the repo's git remote URL path +(`owner/repo`, minus host and `.git`) — or the working-directory name if there's +no remote — lowercase it, and replace every run of non-alphanumeric characters +with a single `-` (e.g. `https://github.com/aristoapp/membase-plugin-mcp.git` +→ `aristoapp-membase-plugin-mcp`). If you can't determine a slug, omit `project` +rather than guessing. On the Claude Code plugin only, the `membase://project` +resource returns this already-resolved slug; other clients (remote MCP) do not +expose it, so don't depend on reading it. Do not store: