Search long-term memory, invalidate stale decisions, view decision timelines, or browse cross-project tunnels. Supports subcommands: search (default), invalidate, timeline, tunnels.
How this skill is triggered — by the user, by Claude, or both
Slash command
/rawgentic-memorypalace:recall <query> | invalidate "<subject> decided <object>" | timeline <entity> | tunnels [wing] | --project <name><query> | invalidate "<subject> decided <object>" | timeline <entity> | tunnels [wing] | --project <name>The summary Claude sees in its skill listing — used to decide when to auto-load this skill
<role>
Search your long-term memory for past decisions, discoveries, and events.
/rawgentic-memorypalace:recall <query>
/rawgentic-memorypalace:recall <query> --project <project-name>
/rawgentic-memorypalace:recall invalidate "<subject> decided <object>"
/rawgentic-memorypalace:recall timeline <entity>
/rawgentic-memorypalace:recall tunnels [wing]
Check the first word of the arguments to determine the subcommand:
invalidate → go to Section 5: Invalidate a Decisiontimeline → go to Section 6: View Timelinetunnels → go to Section 7: Browse Cross-Project TunnelsFor search queries, extract:
--project <name>: Optional. If present, filter results to this project only.If no arguments are provided, ask the user what they want to do and STOP.
Read the MEMORY_SERVER_URL from the Memory Server Configuration section of CLAUDE.md. Use the URL exactly as configured there. If no such section exists, default to http://127.0.0.1:8420.
Use the Bash tool to call the /search endpoint, substituting the URL you read:
If a project filter was specified, include the project field. Otherwise omit it.
Without project filter:
curl --silent --fail --connect-timeout 2 --max-time 10 \
-X POST "MEMORY_SERVER_URL/search" \
-H "Content-Type: application/json" \
-d '{"query": "THE_QUERY", "limit": 10}'
With project filter:
curl --silent --fail --connect-timeout 2 --max-time 10 \
-X POST "MEMORY_SERVER_URL/search" \
-H "Content-Type: application/json" \
-d '{"query": "THE_QUERY", "project": "PROJECT_NAME", "limit": 10}'
Replace THE_QUERY and PROJECT_NAME with the actual values. Escape any double quotes in the query.
Check the curl exit code to distinguish failure modes:
Exit code 7 (connection refused) — server is not running:
Memory server is not running. To start it:
1. The server starts automatically on next Claude Code session start
2. Or start manually: cd <plugin-dir> && .venv/bin/python -m rawgentic_memory.server
Exit code 22 (HTTP error, e.g. 503) — server is running but unhealthy:
Memory server is running but returned an error. The backend may not be initialized.
Check server logs at /tmp/memorypalace-server.log for details.
Any other non-zero exit — network or timeout error:
Could not reach memory server. Check that MEMORY_SERVER_URL is correct
in the Memory Server Configuration section of CLAUDE.md.
Do NOT attempt to start the server yourself. STOP after showing the appropriate message.
Parse the JSON response. The response shape is:
{
"results": [
{
"content": "...",
"project": "...",
"memory_type": "decision|event|discovery|preference|artifact",
"topic": "...",
"similarity": 0.85,
"source_file": "...",
"session_id": "...",
"timestamp": "..."
}
]
}
If results are empty: Tell the user "No memories found matching that query." and STOP.
If results exist: Display them as a numbered list:
## Memory Search Results
**Query:** "<the query>"
1. **[decision]** <topic> — <project>
<content>
_similarity: 0.85 | <timestamp>_
2. **[discovery]** <topic> — <project>
<content>
_similarity: 0.72 | <timestamp>_
...
Each result MUST show:
[decision])This ensures results from multiple projects are clearly labeled (AC4).
When the first argument is invalidate, parse the remaining text as a KG triple to invalidate.
Parsing the triple: The text after invalidate should contain: "<subject> decided <object>" (with or without quotes).
"decided" (hardcoded for v1)Example: /rawgentic-memorypalace:recall invalidate "chorestory decided use Zod" → subject=chorestory, predicate=decided, object=use Zod
If the text doesn't contain "decided", tell the user: "Expected format: /rawgentic-memorypalace:recall invalidate " decided "" and STOP.
Call the MCP tool directly:
Use the mempalace_kg_invalidate MCP tool with these parameters:
subject: the parsed subjectpredicate: "decided"object: the parsed objectDisplay confirmation:
If the tool succeeds:
Invalidated: **<subject>** decided **<object>**
This decision is now marked as historical and will be demoted in search results.
If the tool reports no matching triple:
No matching active decision found for: <subject> decided <object>
The triple may not exist or may already be invalidated.
If the MCP tool is not available (mempalace plugin not installed): tell the user "The mempalace MCP server is not connected. Ensure the mempalace plugin is installed and active." and STOP.
When the first argument is timeline, the second argument is the entity name.
If no entity name is provided, ask the user: "Which project or entity timeline do you want to see?" and STOP.
Call the MCP tool directly:
Use the mempalace_kg_timeline MCP tool with:
entity: the entity nameDisplay the timeline in chronological order (oldest to newest):
| # | Date | Decision | Status |
|---|---|---|---|
| 1 | 2026-01-15 | decided: use PostgreSQL | current |
| 2 | 2026-02-20 | decided: use Zod | invalidated |
| 3 | 2026-03-01 | decided: use Valibot | current |
Each entry MUST show:
current: true, "invalidated" if current: falseIf the timeline is empty: "No decision history found for ." and STOP.
If the MCP tool is not available: tell the user "The mempalace MCP server is not connected. Ensure the mempalace plugin is installed and active." and STOP.
When the first argument is tunnels, the optional second argument is a wing (project) name.
Read the MEMORY_SERVER_URL from the Memory Server Configuration section of CLAUDE.md. Default to http://127.0.0.1:8420.
Call the tunnels endpoint:
If a wing name is provided:
curl --silent --fail --connect-timeout 2 --max-time 10 \
"MEMORY_SERVER_URL/tunnels?wing=WING_NAME"
If no wing name is provided, use the current active project from the rawgentic workspace. Determine this by reading .rawgentic_workspace.json and finding the most recently used active project.
Display results:
Parse the JSON response. The response shape is:
{
"tunnels": [
{
"shared_topic": "documentation",
"connected_wings": ["chorestory", "grocusave", "rawgentic"],
"drawer_count": 18729
}
]
}
Format as a table:
| # | Shared Topic | Connected Projects | Memories |
|---|---|---|---|
| 1 | documentation | chorestory, grocusave, rawgentic | 18,729 |
| 2 | testing | chorestory, nillerkgames | 342 |
If no tunnels found: "No cross-project topic tunnels found for ." and STOP.
Handle server errors the same as Section 3. STOP after displaying.
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
npx claudepluginhub 3d-stories/rawgentic-memorypalace --plugin rawgentic-memorypalace