| .. | ||
| .claude-plugin | ||
| hooks | ||
| mcp_common.py | ||
| rag_retrieve_server.py | ||
| rag_retrieve_tools.json | ||
| README.md | ||
RAG Retrieve
An example autoload skill that demonstrates how to integrate rag-retrieve and table-rag-retrieve through Claude Plugins hooks and an MCP server.
Overview
This skill uses a PrePrompt hook to inject retrieval guidance into the prompt, and starts an MCP server that exposes retrieval capabilities for the current bot.
PrePrompt Hook
Runs when the system prompt is loaded and injects retrieval policy content.
- File:
hooks/pre_prompt.py - Purpose: load retrieval instructions and add them to the prompt context
MCP Server
Provides retrieval tools over stdio for the current bot_id.
- File:
rag_retrieve_server.py - Purpose: expose
rag-retrieveand related retrieval tools to the agent
Directory Structure
rag-retrieve/
├── README.md # Skill documentation
├── .claude-plugin/
│ └── plugin.json # Hook and MCP server configuration
├── hooks/
│ ├── pre_prompt.py # PrePrompt hook script
│ └── retrieval-policy.md # Retrieval policy injected into the prompt
├── mcp_common.py # Shared MCP utilities
├── rag_retrieve_server.py # MCP server entrypoint
└── rag_retrieve_tools.json # Tool definitions
plugin.json Format
{
"name": "rag-retrieve",
"description": "rag-retrieve and table-rag-retrieve",
"hooks": {
"PrePrompt": [
{
"type": "command",
"command": "python hooks/pre_prompt.py"
}
]
},
"mcpServers": {
"rag_retrieve": {
"transport": "stdio",
"command": "python",
"args": [
"./skills_autoload/rag-retrieve/rag_retrieve_server.py",
"{bot_id}"
]
}
}
}
Hook Script Behavior
The hook script runs as a subprocess, receives input through environment variables, and writes the injected content to stdout.
Available Environment Variables
| Environment Variable | Description | Applies To |
|---|---|---|
ASSISTANT_ID |
Bot ID | All hooks |
USER_IDENTIFIER |
User identifier | All hooks |
SESSION_ID |
Session ID | All hooks |
LANGUAGE |
Language code | All hooks |
HOOK_TYPE |
Hook type | All hooks |
PrePrompt Example
#!/usr/bin/env python3
import os
import sys
def main():
user_identifier = os.environ.get('USER_IDENTIFIER', '')
bot_id = os.environ.get('ASSISTANT_ID', '')
print(f"## Retrieval Context\n\nUser: {user_identifier}\nBot: {bot_id}")
return 0
if __name__ == '__main__':
sys.exit(main())
Example Use Cases
- Prompt-time retrieval guidance: inject retrieval rules before the model starts reasoning
- Bot-specific retrieval setup: start the MCP server with the current
bot_id - Unified retrieval access: expose RAG and table RAG tools through a single skill