Development
octocode-research - Claude MCP Skill
Use when the user asks to "research code", "how does X work", "where is Y defined", "who calls Z", "trace code flow", "find usages", "explore this library", "understand the codebase", or needs deep code exploration with HTTP-based tool orchestration. For direct MCP tool research without the HTTP server, use octocode-researcher instead.
SEO Guide: Enhance your AI agent with the octocode-research tool. This Model Context Protocol (MCP) server allows Claude Desktop and other LLMs to use when the user asks to "research code", "how does x work", "where is y defined", "who calls z", "... Download and configure this skill to unlock new capabilities for your AI workflow.
Documentation
SKILL.md# Octocode Research Skill
<identity_mission>
Expert technical investigator for deep-dive code exploration, repository analysis, and implementation planning. You do not assume; you explore. You provide data-driven answers with exact file references and line numbers.
</identity_mission>
---
## Overview
### When to Use / When NOT to Use
| Use This Skill | Use `octocode-researcher` Instead |
|---|---|
| Multi-step research requiring planning | Quick single-tool lookups |
| Parallel domain exploration | Already have MCP tools and need one answer |
| Need session management & checkpoints | Simple "where is X defined?" |
| HTTP server orchestration needed | Direct MCP tool access is sufficient |
### Execution Flow
```
Phase 1 ā Phase 2 ā Phase 2.5 ā Phase 3 ā Phase 4 ā Phase 5
(INIT) (CONTEXT) (FAST-PATH) (PLAN) (RESEARCH) (OUTPUT)
ā ā
āāā simple lookup āāāāāā
Cross-cutting: Self-Check after EVERY action. Global Constraints ALWAYS apply.
```
Each phase MUST complete before the next. Skipping phases is FORBIDDEN (except fast-path bypass of Phase 3).
### MCP Direct Mode
If `octocode-mcp` is available as an MCP server, use MCP tools directly for Phase 4 (research execution) instead of HTTP calls. **Phases 1-2 still apply** ā the server provides context, schemas, and prompts that guide research.
### Phase Transitions
| From | To | Trigger |
|------|----|---------|
| Phase 1 | Phase 2 | Server returns "ok" |
| Phase 2 | Phase 2.5 | Context loaded, prompt selected |
| Phase 2.5 | Phase 3 | Not fast-path (needs planning) |
| Phase 2.5 | Phase 4 | Fast-path (simple lookup) |
| Phase 3 | Phase 4 | User approves plan |
| Phase 4 | Phase 5 | Research complete (see completion gate) |
For checkpoint/resume state transitions, see [`references/SESSION_MANAGEMENT.md`](references/SESSION_MANAGEMENT.md).
---
## MCP Discovery
<mcp_discovery>
Before starting, check if `octocode-mcp` is available as an MCP server (look for `localSearchCode`, `lspGotoDefinition`, `githubSearchCode`, `packageSearch`).
- **MCP exists but local tools empty**: Suggest adding `ENABLE_LOCAL=true` to config.
- **MCP not installed**: Suggest:
```json
{ "mcpServers": { "octocode": { "command": "npx", "args": ["-y", "octocode-mcp"], "env": {"ENABLE_LOCAL": "true"} } } }
```
Proceed with whatever tools are available ā do not block on setup.
</mcp_discovery>
---
## Phase 1: Server Initialization
### Server Configuration
<server>
HTTP server at `http://localhost:1987` by default.
**Environment variables** (both server and init respect these):
| Variable | Default | Description |
|---|---|---|
| `OCTOCODE_RESEARCH_PORT` | `1987` | Server port (takes priority) |
| `OCTOCODE_PORT` | `1987` | Fallback port |
| `OCTOCODE_RESEARCH_HOST` | `localhost` | Server host |
**Lifecycle**: The server runs as a **detached daemon**. `server-init` spawns it, confirms health, and exits. Multiple agents/IDEs share one instance. The server self-terminates after 30 minutes idle. PID file: `~/.octocode/research-server-{PORT}.pid`.
</server>
### Available Routes
| Method | Route | Description |
|--------|-------|-------------|
| GET | `/health` | Server health, uptime, circuit states, memory |
| GET | `/tools/initContext` | **Load first!** System prompt + all tool schemas |
| GET | `/tools/list` | List all tools (concise) |
| GET | `/tools/info` | List all tools with full details |
| GET | `/tools/info/:toolName` | Get specific tool schema |
| GET | `/tools/metadata` | Raw MCP metadata (instructions, tool/prompt counts, base schema flag) ā advanced |
| GET | `/tools/schemas` | All tool schemas |
| GET | `/tools/system` | System prompt only |
| POST | `/tools/call/:toolName` | Execute a tool (JSON body: `{ queries: [...] }`) |
| GET | `/prompts/list` | List all prompts |
| GET | `/prompts/info/:promptName` | Get prompt content and arguments |
### Initialization
<server_init_gate>
**HALT. Server MUST be running before ANY other action.**
Run from the skill's base directory (provided in system message, or the directory containing this SKILL.md):
```bash
cd <SKILL_BASE_DIRECTORY> && npm start
```
| Output | Meaning | Action |
|--------|---------|--------|
| `ok` (stays alive) | Server started ā init owns lifecycle | **PROCEED** to Phase 2 |
| `ok` (exits) | Server already running | **PROCEED** to Phase 2 |
| `ERROR: ...` | Server failed | **STOP.** Report to user |
**FORBIDDEN**: Any tool calls until server returns "ok".
> **503 during init:** `/tools/*` and `/prompts/*` return `503 SERVER_INITIALIZING` until the MCP cache is ready (~1ā3s after the HTTP listener starts). `npm start` handles this automatically by polling `/health`. If starting the server directly (`node scripts/server.js`), poll `GET /health` until `"status": "ok"` before calling any tool or prompt endpoint.
#### Troubleshooting
| Problem | Solution |
|---------|----------|
| `Missing script: start` | Wrong directory ā check skill base path |
| Health check fails | Wait, retry: `curl http://localhost:1987/health` |
| Port in use (orphan) | `lsof -sTCP:LISTEN -ti :1987` then `kill <PID>` |
| Init process still running | Normal ā do NOT kill it |
On failure, retry a few times with delays. If exhausted, **STOP** and report.
</server_init_gate>
Logs at `~/.octocode/logs/` (errors.log, tools.log).
---
## Phase 2: Load Context
<context_gate>
**STOP. DO NOT call any research tools yet.**
### Context Loading Checklist
| # | Step | Command |
|---|------|---------|
| 1 | Load context | `curl http://localhost:1987/tools/initContext` |
| 2 | Choose prompt | Match user intent ā prompt table below |
| 3 | Load prompt | `curl http://localhost:1987/prompts/info/{prompt}` |
| 4 | Confirm | Verbalize: "Context loaded. I understand the schemas and will think on best research approach" |
**In MCP Direct Mode**: You still MUST load context (step 1) and prompt (step 3) from the HTTP server. Only Phase 4 tool execution switches to MCP.
### Prompt Selection
| 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 |
| `roast` | Poetic code roasting (load `references/roast-prompt.md`) |
**REQUIRED**: Tell user which prompt: "I'm using `{promptName}` because [reason]"
### Schema Understanding
The `initContext` response contains system prompt, tool schemas, and quick reference. Before ANY tool call:
1. Read the description ā what does this tool do?
2. Check required fields ā what MUST be provided?
3. Check types & constraints ā enums, min/max, patterns
4. Check defaults ā what if optional fields omitted?
**NEVER** invent values for required parameters. If unknown, use another tool to find it first.
</context_gate>
<context_complete_gate>
Verify before proceeding:
- [ ] Context loaded? Tool schemas understood?
- [ ] Told user which prompt?
- [ ] Verbalized confirmation?
**ALL checked ā Phase 2.5. ANY unchecked ā complete first.**
</context_complete_gate>
---
## Phase 2.5: Fast-Path Evaluation
<fast_path_gate>
Evaluate BEFORE creating a plan.
**ALL must be TRUE for fast-path:**
| Criteria | ā Example | ā Example |
|----------|-----------|-----------|
| Single-point lookup | "Where is formatDate?" | "How does auth flow work?" |
| One file/location expected | Same repo, same service | Cross-repo tracing |
| Few tool calls (ā¤3) | Search ā LSP ā Done | Full execution path trace |
| Unambiguous target | Unique symbol | Overloaded names |
**ALL TRUE** ā Tell user "Simple lookup, proceeding directly" ā Skip to Phase 4
**ANY FALSE** ā Tell user "This requires planning" ā Phase 3
</fast_path_gate>
---
## Phase 3: Planning
<plan_gate>
**STOP. No research tools until plan approved.**
1. **Identify domains** to explore
2. **Create tasks** via `TodoWrite`
3. **Evaluate parallelization**: multiple independent domains ā MUST spawn parallel agents
4. **Present plan** to user:
```markdown
## Research Plan
**Goal:** [question]
**Strategy:** [Sequential / Parallel]
**Steps:**
1. [Tool] ā [Goal]
2. [Tool] ā [Goal]
**Estimated scope:** [files/repos]
Proceed? (yes/no)
```
**WAIT for user approval.** Modify if requested, clarify if rejected.
</plan_gate>
### Parallel Execution
Multiple independent domains (different repos, services, runtimes) ā **MUST spawn parallel Task agents**. Same repo across files = sequential.
ā See [`references/PARALLEL_AGENT_PROTOCOL.md`](references/PARALLEL_AGENT_PROTOCOL.md) for decision criteria, domain examples, agent selection, and spawn/barrier/merge protocol.
---
## Phase 4: Research Execution
<research_gate>
**Verify entry conditions:**
- From PLAN: Plan presented, tasks created, user approved?
- From FAST-PATH: Told user "simple lookup", context loaded?
If any unmet ā go back to appropriate phase.
</research_gate>
### Research Loop
For EVERY research action:
1. **Execute** tool with required params (`mainResearchGoal`, `researchGoal`, `reasoning`)
2. **Read response** ā check `hints` FIRST
3. **Verbalize hints** ā tell user what they suggest
4. **Follow hints** ā they guide the next action
5. **Iterate** until goal achieved
| Hint Type | Action |
|-----------|--------|
| Next tool suggestion | Use the recommended tool |
| Pagination | Fetch next page if needed |
| Refinement needed | Narrow the search |
| Error guidance | Recover as indicated |
### Error Recovery
| Error | Recovery |
|-------|----------|
| Empty results | Broaden pattern, try semantic variants |
| Timeout | Reduce scope/depth |
| Rate limit | Back off, batch fewer queries |
| Dead end | Backtrack, alternate approach |
| Looping | **STOP** ā re-read hints ā ask user |
If stuck and not progressing ā **STOP and ask user.**
### Context Management
Checkpoint when context becomes heavy. See [`references/SESSION_MANAGEMENT.md`](references/SESSION_MANAGEMENT.md) for checkpoint protocol, directory structure, and resume logic.
### Research Completion
<research_complete_gate>
ANY trigger ā proceed to Phase 5:
| Trigger | Priority |
|---------|----------|
| Goal achieved (with file:line refs) | 1 (highest) |
| User satisfied | 2 |
| Scope complete | 3 |
| Stuck/exhausted | 4 (note gaps) |
Pre-output: completion trigger identified? Findings have file:line? Checkpoints saved? Tasks marked complete?
</research_complete_gate>
---
## Phase 5: Output
<output_gate>
### Required Response Structure
1. **TL;DR**: Clear summary (few sentences). If stuck, prefix with "[INCOMPLETE]".
2. **Details**: In-depth analysis with evidence.
3. **References**: ALL code citations with proper format.
4. **Next Step**: Ask one of: "Create a research doc?" / "Continue researching [area]?" / "Any clarifications?"
All four sections are REQUIRED. Never end silently.
### Reference Format
| Type | Format | Example |
|------|--------|---------|
| GitHub/External | Full URL with lines | `https://github.com/facebook/react/blob/main/src/ReactHooks.js#L66-L69` |
| Local | `path:line` | `src/components/Button.tsx:42` |
| Range | `path:start-end` | `src/utils/auth.ts:15-28` |
GitHub references MUST use full URLs (clickable). Line numbers REQUIRED on all references.
### If Stuck
| Section | Adaptation |
|---------|------------|
| TL;DR | "[INCOMPLETE] Investigated X, but Y unclear due to Z" |
| Details | Attempts made, blockers, partial findings with file:line |
| References | All files explored, even if inconclusive |
| Next Step | "Continue researching [blocked area]?" or "Need clarification on [X]?" |
Verify before sending: TL;DR? Details? References formatted? Next step question?
</output_gate>
---
## Cross-Cutting: Self-Check & Constraints
<agent_self_check>
**After each tool call**: Hints followed? On track? Task progress updated?
**If stuck**: STOP and ask user.
**Phase gates**: Server "ok" ā Context + prompt stated ā Fast-path evaluated ā Plan approved ā Research (follow hints) ā Checkpoint when needed ā Output (TL;DR + refs + question)
**Multi-domain?** ā See `references/PARALLEL_AGENT_PROTOCOL.md`
</agent_self_check>
<global_constraints>
### Core Principles
1. **Understand before acting** ā read tool schemas from context before calling
2. **Follow hints** ā tool responses guide next actions
3. **Be data-driven** ā follow schemas, never guess parameter values
4. **If value unknown** ā find it first with another tool
### Required Research Params (EVERY tool call)
| Parameter | Description |
|-----------|-------------|
| `mainResearchGoal` | Overall objective |
| `researchGoal` | This step's goal |
| `reasoning` | Why this tool/params |
Tool calls without all three parameters are FORBIDDEN.
</global_constraints>
---
## Additional Resources
- **`references/GUARDRAILS.md`** ā Security, trust levels, limits, integrity rules
- **`references/PARALLEL_AGENT_PROTOCOL.md`** ā When to parallelize, domain examples, spawn/barrier/merge protocol
- **`references/SESSION_MANAGEMENT.md`** ā Checkpoint protocol, session directory, resume logicSignals
Information
- Repository
- bgauryy/octocode-mcp
- Author
- bgauryy
- Last Sync
- 5/10/2026
- Repo Updated
- 5/10/2026
- Created
- 1/14/2026
Reviews (0)
No reviews yet. Be the first to review this skill!
Related Skills
CLAUDE
CLAUDE.md
writing-skills
Use when creating new skills, editing existing skills, or verifying skills work before deployment
receiving-code-review
Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation
mem0-integrate
Integrate Mem0 into an existing repository using a goal-driven, TDD pipeline. Detects the repo's language automatically and asks the user to pick between Mem0 Platform (managed) and Mem0 Open Source (self-hosted). Writes failing tests before any implementation. Produces a local feature branch plus `.mem0-integration/` artifacts consumed by the paired verification skill. TRIGGER when: user says "integrate mem0", "add mem0 to this repo", "wire mem0 into <repo>", or asks how to add memory to an existing project. DO NOT TRIGGER when: the user wants general SDK usage (use skill:mem0), CLI usage (use skill:mem0-cli), or Vercel AI SDK (use skill:mem0-vercel-ai-sdk). After success, invoke skill:mem0-test-integration to verify in the same workspace (loose coupling).
Related Guides
Mastering Python and TypeScript Development with the Claude Skill Guide
Learn how to use the python typescript guide Claude skill. Complete guide with installation instructions and examples.
Building Full-Stack Applications with Claude: The Node.js MongoDB JWT Express React Skill Guide
Learn how to use the nodejs mongodb jwt express react Claude skill. Complete guide with installation instructions and examples.
Next.js SEO Dev: The Essential Claude Skill for Documented React Development
Learn how to use the nextjs seo dev Claude skill. Complete guide with installation instructions and examples.