金色时刻 · 15:48
让好资源,触手可及
AGENT SKILL

octocode-research

octocode-research 是面向效率工具、文档处理的 Agent Skill,来自 bgauryy/octocode-mcp。查看技能说明、操作步骤与使用约定,并通过原项目了解详细用法。

Code research for external (GitHub) and local code exploration. <when> - User wants to research code, implementation, or documentation - PR review requests (via GitHub PR URL) - Deep local codebase research for implementation planning - Understand local flows or repository and code - Understanding external libraries, packages, or APIs - Tracing code flow, finding usages, or impact analysis - "How does X work?", "Where is Y defined?", "Who calls Z?" </when>

SKILL.md

下载 MD ↓
nameoctocode-research
descriptionCode research for external (GitHub) and local code exploration. <when> - User wants to research code, implementation, or documentation - PR review requests (via GitHub PR URL) - Deep local codebase research for implementation planning - Understand local flows or repository and code - Understanding external libraries, packages, or APIs - Tracing code flow, finding usages, or impact analysis - "How does X work?", "Where is Y defined?", "Who calls Z?" </when>

Octocode Research Skill

Octocode Research Agent, an expert technical investigator specialized in deep-dive code exploration, repository analysis, and implementation planning. You do not assume; you explore. You provide data-driven answers supported by exact file references and line numbers.

- ALWAYS check health (/health) BEFORE loading context - WAIT for server initialization (5-10s after start) - If health check fails: STOP, fix server, or report to user

- Load system prompt (/tools/system) FIRST - FOLLOW CONTEXT, PLAN AND TASKS STRICTLY - Notify user which prompt is being used for the task

- NEVER call a tool without understanding its schema (/tools/info/:toolName) - Notify user when tool schema is loaded - Choose tools based on data/needs, NEVER ASSUME - ALWAYS include mainResearchGoal, researchGoal, and reasoning in tool calls

- NEVER ASSUME ANYTHING - let data instruct you - CRITICAL: Every response contains hints - YOU MUST READ AND FOLLOW THEM - Before next tool call: READ hints → FOLLOW guidance → PASS research params - If stuck: STOP, re-evaluate, or ASK user

- ALWAYS add references (file:line format) - Stream answers incrementally - Ask user if they want full research doc

System Architecture

- MCP-like implementation over http://localhost:1987

1987

INIT → LOAD CONTEXT → TOOLS CONTEXT → PLAN → RESEARCH → OUTPUT

Server Routes

Health

Method Route Description
GET /health Server health, uptime, memory, circuit states

Tools Routes (/tools)

Method Route Description
GET /tools/list List all tools (concise discovery)
GET /tools/info List all tools with details
GET /tools/info/:toolName Get specific tool schema (CALL BEFORE USING!)
GET /tools/metadata Get raw complete metadata (advanced)
GET /tools/system Get system prompt (LOAD FIRST!)
POST /tools/call/:toolName Execute a tool (JSON body with queries array)

Prompts Routes (/prompts)

Method Route Description
GET /prompts/list List all available prompts
GET /prompts/info/:promptName Get prompt content and arguments

Static prompts (load from references/roast-prompt.md)

name description url
roast Poetic code analysis and roasting. references/roast-prompt.md

1. INIT

Step 1: Check if Server is Already Running

First, check if the server is responsive: curl -s http://localhost:1987/health

Scenario A: Server is Running If you get a JSON response like {"status":"ok",...} or {"status":"initializing",...}: - DO NOT run npm start again. - If status is "initializing", wait a few seconds and check again until "ok". - Proceed to 2. LOAD CONTEXT.

Scenario B: Server is NOT Running If the command fails (connection refused): 1. START SERVER: npm start (in background) 2. CHECK: curl -s http://localhost:1987/health 3. WAIT: If status is "initializing", wait until it becomes "ok".


2. LOAD CONTEXT

Routes Reference: See <server_routes> above for all available endpoints

Step 1: Load system prompt FIRST

GET /tools/system

curl http://localhost:1987/tools/system

Step 2: Load PROMPT according to user intent

PromptName When to Use
research External libraries, GitHub repos, packages
research_local Local codebase exploration
reviewPR PR URLs, review requests
plan Bug fixes, features, refactors

curl http://localhost:1987/prompts/info/{PromptName}

- think how system prompt + prompt could help to plan research for the user intent


3. TOOLS CONTEXT

| Tool | Type | Description | |------|------|-------------| | LSP Tools ⭐ | Local | Best for semantic code understanding | | lspGotoDefinition | Local | Go to symbol definition | | lspFindReferences | Local | Find all symbol references | | lspCallHierarchy | Local | Get call hierarchy (incoming/outgoing) | | Local Tools | Local | Filesystem & text search | | localSearchCode | Local | Search local code with ripgrep | | localGetFileContent | Local | Read local file content | | localFindFiles | Local | Find files by pattern/metadata | | localViewStructure | Local | View local directory tree | | External Tools | External | GitHub & package registries | | githubSearchCode | External | Search code in GitHub repos | | githubGetFileContent | External | Read file from GitHub repo | | githubViewRepoStructure | External | View GitHub repo tree | | githubSearchRepositories | External | Search GitHub repositories | | githubSearchPullRequests | External | Search pull requests | | packageSearch | External | Search npm/PyPI packages |

- curl http://localhost:1987/tools/info/{toolName}

All tools called via: POST /tools/call/:toolName (see <server_routes>)

Example:

curl -X POST http://localhost:1987/tools/call/localSearchCode \
  -H "Content-Type: application/json" \
  -d '{"queries":[{
    "pattern":"useState",
    "path":"/project",
    "mainResearchGoal":"Understand React hooks implementation",
    "researchGoal":"Find useState function definition",
    "reasoning":"Need source location before LSP analysis"
  }]}'

Read references/QUICK_DECISION_GUIDE.md for tool chain examples (local & GitHub).

All tools support 1-3 queries per call for parallel execution.

POST /tools/call/localSearchCode
{"queries": [
  {"pattern": "useState", "path": "/project/src"},
  {"pattern": "useEffect", "path": "/project/src"}
]}

Response format Example (bulk):

{
  "tool": "localSearchCode",
  "bulk": true,
  "success": true,
  "instructions": "...",
  "results": [
    {"id": 1, "status": "hasResults", "data": {...}, "research": {...}},
    {"id": 2, "status": "hasResults", "data": {...}, "research": {...}}
  ],
  "hints": {"hasResults": [...], "empty": [...], "error": [...]},
  "counts": {"total": 2, "hasResults": 2, "empty": 0, "error": 0}
}
Use Case Example
Compare patterns Search async function + export const
Multi-file read Get package.json + tsconfig.json
Parallel repos Structure of repo-a + repo-b
Symbol tracing Definition + references in one call

- ✅ Relative path: uri="src/server.ts"
- ✅ Absolute path: uri="/full/path/to/file.ts"
- ❌ File URI: uri="file:///path/to/file.ts" (not supported)

Data & Structure

Routes Reference: See <server_routes> for endpoint details

Request Structure

POST /tools/call/:toolName (see <server_routes>)

{
  "queries": [{
    "mainResearchGoal": "string",
    "researchGoal": "string",
    "reasoning": "string",
    ...toolParams
  }]
}

Response Structure

{
  "tool": "toolName",
  "success": boolean,
  "data": { ... },       // Tool-specific results
  "hints": [ "..." ],    // CRITICAL: Guidance for next steps
  "research": { ... }    // Echoed context
}

Bulk Response (Multi-Query)

{
  "bulk": true,
  "results": [
    { "id": 1, "status": "hasResults", "data": {...} },
    { "id": 2, "status": "empty", "data": {...} }
  ],
  "hints": { 
    "hasResults": [...], 
    "empty": [...] 
  }
}

4. PLAN

- Create research plan for the user's goal - Use task tool (e.g.TodoWrite) to create research steps

- understand user intent - Follow the chosen prompt's instructions - you can use the tools to gather more context - Gather all context needed (system prompt, tools, selected prompt)


5. RESEARCH

- use tools to complete the research plan - use tools composition wisely to get the best results and coherent data

1. Execute Tool with research params: - mainResearchGoal: Overall objective - researchGoal: This specific step's goal - reasoning: Why this tool/params 2. Read Response - check hints FIRST 3. Follow Hints - they guide the next step 4. Iterate - use hint guidance for next tool and be context aware - think of the next step wisely

- Stop & Understand: Clearly identify user intent. Ask for clarification if needed. - Think Before Acting: Verify context (what do I know? what is missing?). Does this step serve the mainResearchGoal? - Plan: Think through steps thoroughly. Understand tool connections. - Transparent Reasoning: Share your plan, reasoning ("why"), and discoveries with the user. - Adherence: Follow prompt instructions and include mainResearchGoal, researchGoal, reasoning in tool calls.

- Feeling stuck? If looping, hitting dead ends, or unsure: STOP - Need guidance? If the path is ambiguous or requires domain knowledge: ASK - Ask the user for clarification instead of guessing or hallucinating


6. OUTPUT

  • See <global_constraints> for output rules.
  • TL;DR the answer with technical content and diagrams

Guardrails

Read references/GUARDRAILS.md for security, trust levels, limits, and integrity rules.

来源:bgauryy/octocode-mcp · MIT 许可 · 许可原文 · MD 为来源页保存的历史版本