From 1eb4cd154feee8a5ad0a5656970a93d454ebabca Mon Sep 17 00:00:00 2001 From: phernandez Date: Sun, 31 May 2026 11:33:54 -0500 Subject: [PATCH] fix(plugins): route UUID project refs consistently across all skills MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Codex flagged /basic-memory:remember passing a UUID primaryProject as `project` (review 4397206729) — the same routing bug already fixed in the hooks and the share skill. Rather than fix only the flagged spot, audited every project-ref site and made them all consistent: - remember: route primaryProject as project_id when it's a UUID (was the flag) - status: same for the primaryProject-scoped search_notes queries - setup: same for the schema-seed write to primaryProject share/SKILL.md and both hooks (session-start, pre-compact) already handle it. That's now every place the plugin routes to a project ref — a project ref may be a workspace-qualified name (-> project) or an external_id UUID (-> project_id), and all six sites detect and route accordingly. Plugin validates. Co-Authored-By: Claude Opus 4.8 (1M context) Signed-off-by: phernandez --- plugins/claude-code/skills/remember/SKILL.md | 4 +++- plugins/claude-code/skills/setup/SKILL.md | 3 ++- plugins/claude-code/skills/status/SKILL.md | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/plugins/claude-code/skills/remember/SKILL.md b/plugins/claude-code/skills/remember/SKILL.md index 354352ab..09543e1b 100644 --- a/plugins/claude-code/skills/remember/SKILL.md +++ b/plugins/claude-code/skills/remember/SKILL.md @@ -32,7 +32,9 @@ Capture `$ARGUMENTS` into Basic Memory as a quick note, keeping the user's words - `directory` = the resolved `rememberFolder` - `content` = the text - `tags` = `["manual-capture"]` - - `project` = `primaryProject` if set; otherwise omit it + - Route to `primaryProject` if set: pass it as `project`, or as `project_id` if + it's an `external_id` UUID (a bare UUID in `project` won't route). Omit both if + `primaryProject` isn't set. Don't overwrite an existing note unless the user explicitly asks. 4. **Confirm** in one line: what was saved and its permalink — diff --git a/plugins/claude-code/skills/setup/SKILL.md b/plugins/claude-code/skills/setup/SKILL.md index 2d033c14..b40f39cd 100644 --- a/plugins/claude-code/skills/setup/SKILL.md +++ b/plugins/claude-code/skills/setup/SKILL.md @@ -103,7 +103,8 @@ For each one: `title` = the schema's title (Session / Decision / Task), `content` = the file's full contents (including its `---` frontmatter — Basic Memory merges that into the note's frontmatter, so the `type: schema` + `entity` + `schema` definition land - intact and become resolvable by `schema_validate`), `project` = `primaryProject`. + intact and become resolvable by `schema_validate`), routed to `primaryProject` + (pass it as `project`, or as `project_id` if it's an `external_id` UUID). ### 2. Install the shared skills (if the user opted in) Run, from the project root: diff --git a/plugins/claude-code/skills/status/SKILL.md b/plugins/claude-code/skills/status/SKILL.md index 1f56a264..eaa909a1 100644 --- a/plugins/claude-code/skills/status/SKILL.md +++ b/plugins/claude-code/skills/status/SKILL.md @@ -32,6 +32,9 @@ This is a quick diagnostic — gather the facts and lay them out; don't over-inv 4. **Active tasks.** `search_notes` with `metadata_filters={"type": "task", "status": "active"}` — report just the count. +When scoping these queries to `primaryProject`, pass it as `project`, or as +`project_id` if it's an `external_id` UUID (a bare UUID in `project` won't route). + ## Present Lay it out like this (fill in real values; write "—" or a short note for anything