qwen_agent/skills_autoload/rag-retrieve
2026-04-16 20:09:02 +08:00
..
.claude-plugin add rag_retrieve-only 2026-04-16 20:09:02 +08:00
hooks add rag_retrieve autoload 2026-04-16 19:38:13 +08:00
mcp_common.py add rag_retrieve autoload 2026-04-16 19:38:13 +08:00
rag_retrieve_server.py add rag_retrieve autoload 2026-04-16 19:38:13 +08:00
rag_retrieve_tools.json add rag_retrieve autoload 2026-04-16 19:38:13 +08:00
README.md add rag_retrieve-only 2026-04-16 20:09:02 +08:00

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-retrieve and 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

  1. Prompt-time retrieval guidance: inject retrieval rules before the model starts reasoning
  2. Bot-specific retrieval setup: start the MCP server with the current bot_id
  3. Unified retrieval access: expose RAG and table RAG tools through a single skill