Best for
- Use when exploring a repo, discovering architecture, onboarding to a new codebase, or analyzing design patterns.
yonatangross/orchestkit/src/skills/explore/SKILL.md
Multi-angle codebase exploration spawning 3-5 parallel agents for code structure, data flow, architecture patterns, and health assessment. Generates ASCII visualizations, import graphs, and design pattern detection with cross-session memory storage. Use when exploring a repo, discovering architecture, onboarding to a new codebase, or analyzing design patterns.
Decision brief
Multi-angle codebase exploration using 3-5 parallel agents.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Declared | Source record | Install path and trigger |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/yonatangross/orchestkit --skill "src/skills/explore"Inspect the Agent Skill "explore" from https://github.com/yonatangross/orchestkit/blob/4e5c1327b7d7902022ee69328e12db1f6a88f390/src/skills/explore/SKILL.md at commit 4e5c1327b7d7902022ee69328e12db1f6a88f390. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Opus 5: Exploration agents use native adaptive thinking for deeper pattern recognition across large codebases.
Read $CLAUDEEFFORT to scale exploration depth before any other decision.
BEFORE creating tasks, clarify what the user wants to explore:
Review the “STEP 0b: Select Orchestration Mode” section in the pinned source before continuing.
TaskCreate(subject="Initial file search", activeForm="Searching files") id=2 TaskCreate(subject="Check knowledge graph", activeForm="Checking memory") id=3 TaskCreate(subject="Launch exploration agents", activeForm="Dispatching explorers") id=4 TaskCreate(subject="Assess code he…
Permission review
The documentation asks the agent to run terminal commands or scripts.
node "${CLAUDE_PLUGIN_ROOT}/skills/explore/scripts/render-spec.mjs" .claude/chain/explore-dashboard.json --checkThe documentation asks the agent to run terminal commands or scripts.
node "${CLAUDE_PLUGIN_ROOT}/skills/explore/scripts/render-spec.mjs" .claude/chain/explore-dashboard.jsonEvidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 95/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 223 | Source | Repository attention, not individual Skill quality |
| Compatibility | 1 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Multi-angle codebase exploration using 3-5 parallel agents.
/ork:explore authentication
Opus 5: Exploration agents use native adaptive thinking for deeper pattern recognition across large codebases.
Read $CLAUDE_EFFORT to scale exploration depth before any other decision.
# CC 2.1.120+ env var; explicit --effort= overrides
EFFORT = os.environ.get("CLAUDE_EFFORT")
for token in "$ARGUMENTS".split():
if token.startswith("--effort="):
EFFORT = token.split("=", 1)[1]
EFFORT = EFFORT or "high" # default
| Effort | Agent count | Phases | Time |
|---|---|---|---|
low | 1 (structure-only) | 1, 2, 8 | ~1 min |
medium | 2 (structure + data flow) | 1, 2, 3 (subset), 8 | ~3 min |
high (default) | 4 (full parallel team) | 1–8 | ~6 min |
xhigh (Opus 5) | 5 (+ uncertainty pass on health scores) | 1–8 + caveats | ~8 min |
Override gate: if the user passes --effort=high explicitly while $CLAUDE_EFFORT is low, the flag wins. /ork:doctor warns when xhigh is requested without Opus 5.
BEFORE creating tasks, clarify what the user wants to explore:
AskUserQuestion(
questions=[{
"question": "What aspect do you want to explore?",
"header": "Focus",
"options": [
{"label": "Full exploration (Recommended)", "description": "Code structure + data flow + architecture + health assessment"},
{"label": "Quick scan", "description": "Find relevant files + structure, skip deep analysis"},
{"label": "Data flow", "description": "Trace how data moves through the system"},
{"label": "Architecture patterns", "description": "Identify design patterns and integrations"}
],
"multiSelect": false
}]
)
Based on answer, adjust workflow:
# memory is alwaysLoad in .mcp.json (CC 2.1.121+, #1541) — probe below kept as fallback for older CC:
ToolSearch(query="select:mcp__memory__search_nodes")
Write(".claude/chain/capabilities.json", { memory, timestamp })
if capabilities.memory:
mcp__memory__search_nodes({ query: "architecture decisions for {path}" })
# Enrich exploration with past decisions
After exploration completes, write results for downstream skills:
Write(".claude/chain/exploration.json", JSON.stringify({
"phase": "explore", "skill": "explore",
"timestamp": now(), "status": "completed",
"outputs": {
"architecture_map": { ... },
"patterns_found": ["repository", "service-layer"],
"complexity_hotspots": ["src/auth/", "src/payments/"]
}
}))
Choose Agent Teams (mesh) or Task tool (star):
ORCHESTKIT_FORCE_TASK_TOOL=1 → Task tool (override)| Aspect | Task Tool | Agent Teams |
|---|---|---|
| Discovery sharing | Lead synthesizes after all complete | Explorers share discoveries as they go |
| Cross-referencing | Lead connects dots | Data flow explorer alerts architecture explorer |
| Cost | ~150K tokens | ~400K tokens |
| Best for | Quick/focused searches | Deep full-codebase exploration |
Fallback: If Agent Teams encounters issues, fall back to Task tool for remaining exploration.
Model cost (CC 2.1.198+): the built-in Explore agent inherits the session model capped at Opus — it no longer runs on haiku. From a premium-model session (Opus, Fable), budget Explore fan-outs at Opus rates; there is no knob to pin the built-in Explore back to haiku. ork's own explorer agents can still pin a cheaper model via frontmatter.
BEFORE doing ANYTHING else, create tasks to show progress:
# 1. Create main task IMMEDIATELY
TaskCreate(subject="Explore: {topic}", description="Deep codebase exploration for {topic}", activeForm="Exploring {topic}")
# 2. Create subtasks for each phase
TaskCreate(subject="Initial file search", activeForm="Searching files") # id=2
TaskCreate(subject="Check knowledge graph", activeForm="Checking memory") # id=3
TaskCreate(subject="Launch exploration agents", activeForm="Dispatching explorers") # id=4
TaskCreate(subject="Assess code health (0-10)", activeForm="Assessing code health") # id=5
TaskCreate(subject="Map dependency hotspots", activeForm="Mapping dependencies") # id=6
TaskCreate(subject="Add product perspective", activeForm="Adding product context") # id=7
TaskCreate(subject="Generate exploration report", activeForm="Generating report") # id=8
# 3. Set dependencies for sequential phases
TaskUpdate(taskId="3", addBlockedBy=["2"]) # Memory check needs file search first
TaskUpdate(taskId="4", addBlockedBy=["3"]) # Agents need memory context
TaskUpdate(taskId="5", addBlockedBy=["4"]) # Health needs exploration done
TaskUpdate(taskId="6", addBlockedBy=["4"]) # Hotspots need exploration done
TaskUpdate(taskId="7", addBlockedBy=["4"]) # Product needs exploration done
TaskUpdate(taskId="8", addBlockedBy=["5", "6", "7"]) # Report needs all analysis done
# 4. Update status as you progress
TaskUpdate(taskId="2", status="in_progress") # When starting
TaskUpdate(taskId="2", status="completed") # When done — repeat for each subtask
| Phase | Activities | Output |
|---|---|---|
| 1. Initial Search | Grep, Glob for matches | File locations |
| 2. Memory Check | Search knowledge graph | Prior context |
| 3. Deep Exploration | 4 parallel explorers | Multi-angle analysis |
| 4. AI System (if applicable) | LangGraph, prompts, RAG | AI-specific findings |
| 5. Code Health | Rate code 0-10 | Quality scores |
| 6. Dependency Hotspots | Identify coupling | Hotspot visualization |
| 7. Product Perspective | Business context | Findability suggestions |
| 8. Report Generation | Compile findings | Actionable report |
Output findings incrementally as each phase completes — don't batch until the report:
| After Phase | Show User |
|---|---|
| 1. Initial Search | File matches, grep results |
| 2. Memory Check | Prior decisions and relevant context |
| 3. Deep Exploration | Each explorer agent's findings as they return |
| 5. Code Health | Health score with dimension breakdown |
For Phase 3 parallel agents, output each agent's findings as soon as it returns — don't wait for all 4 explorers. Early findings from one agent may answer the user's question before remaining agents complete, allowing early termination.
# PARALLEL - Quick searches
Grep(pattern="$ARGUMENTS[0]", output_mode="files_with_matches")
Glob(pattern="**/*$ARGUMENTS[0]*")
mcp__memory__search_nodes(query="$ARGUMENTS[0]")
mcp__memory__search_nodes(query="architecture")
Load Read("${CLAUDE_PLUGIN_ROOT}/skills/explore/rules/exploration-agents.md") for Task tool mode prompts.
Load Read("${CLAUDE_PLUGIN_ROOT}/skills/explore/rules/agent-teams-mode.md") for Agent Teams alternative.
For AI/ML topics, add exploration of: LangGraph workflows, prompt templates, RAG pipeline, caching strategies.
Load Read("${CLAUDE_PLUGIN_ROOT}/skills/explore/rules/code-health-assessment.md") for agent prompt. Load Read("${CLAUDE_PLUGIN_ROOT}/skills/explore/references/code-health-rubric.md") for scoring criteria.
Load Read("${CLAUDE_PLUGIN_ROOT}/skills/explore/rules/dependency-hotspot-analysis.md") for agent prompt. Load Read("${CLAUDE_PLUGIN_ROOT}/skills/explore/references/dependency-analysis.md") for metrics.
Load Read("${CLAUDE_PLUGIN_ROOT}/skills/explore/rules/product-perspective.md") for agent prompt. Load Read("${CLAUDE_PLUGIN_ROOT}/skills/explore/references/findability-patterns.md") for best practices.
Load Read("${CLAUDE_PLUGIN_ROOT}/skills/explore/references/exploration-report-template.md").
Parse --render= from $ARGUMENTS. Default is both.
| Mode | Behavior |
|---|---|
markdown | Current behavior — markdown report only. No spec emitted. |
json-render | Emit .claude/chain/explore-dashboard.json only. Skip markdown report. |
both | Emit spec and markdown. Default — gives the human a report and downstream skills a structured handoff. |
When emitting a spec:
Read("${CLAUDE_PLUGIN_ROOT}/skills/explore/references/dashboard-spec.md"). Reference example: references/dashboard-example.json.Card, StatGrid, DataTable, StatusBadge, BarMeter, Heatmap, Markdown..claude/chain/explore-dashboard.json with compact JSON (no indentation) — minimizes token cost for downstream consumers.node "${CLAUDE_PLUGIN_ROOT}/skills/explore/scripts/render-spec.mjs" .claude/chain/explore-dashboard.json --check
If validation fails (exit ≠ 0), do not emit — fall back to markdown-only and surface the error to the user. Never write a partial or invalid spec.
--render=both, render the markdown view from the spec for consistency:node "${CLAUDE_PLUGIN_ROOT}/skills/explore/scripts/render-spec.mjs" .claude/chain/explore-dashboard.json
Pipe the output into the user-facing markdown report (or use it as-is). This guarantees the JSON spec and markdown report stay in sync — a single source of truth.
Why this matters: Downstream skills (/ork:fix-issue, /ork:implement, /ork:create-pr) parse .claude/chain/explore-dashboard.json directly instead of re-reading 3000-token markdown. Measured: spec ≈ 580 tokens for the same content. Backwards-compatible: old chained workflows that read markdown keep working in both mode.
After the session synthesis lands, optionally invoke scripts/post_explore_summary.py <session-dir> to auto-emit a notebook-backed summary of the exploration. Self-skips on every non-happy-path so it never breaks the run:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/explore/scripts/post_explore_summary.py "$CLAUDE_JOB_DIR"
Auto-skip conditions (all exit 0, all WARN-logged):
| Skip reason | Trigger |
|---|---|
signal absent | len(dirs_scanned) < 3 (or field missing on explore-output.json) |
yg-mcp-core not importable | yg-mcp-core>=0.3.0 not installed (orchestkit is public; yg-mcp-core lives on private pypi.yonyon.ai — HQ-only) |
hq-content MCP unreachable | MCP server down OR .mcp.json doesn't define hq-content |
Session dir must contain explore-output.json (with dirs_scanned: list[str], optional synthesis: str, required notebook_id: str). Handoff JSON at <session-dir>/explore-summary.json records status (fired / skipped) and summary_path on success.
Mirrors the /ork:brainstorm post-synth podcast pattern from PR #1889. Closes orchestkit#1893.
Oversized reads (CC 2.1.144+): Read returns a
[PARTIAL view]truncated first page (not a hard error) when a whole-file read exceeds the token limit. When traversing large files, detect that notice and re-read with explicitoffset/limitto page through the rest — never treat the partial as the full file.
When context fills (CC 2.1.141+): Use the rewind menu's "Summarize up to here" to compress earlier turns while keeping recent context, instead of restarting. Reactive compaction (CC 2.1.142+) now sizes the first summarize to the actual overflow, so a second mid-turn pass is rare.
Set a completion condition with /goal (CC 2.1.139+) and this skill will keep working across turns until the condition is met. Works in interactive, -p, and Remote Control. The overlay panel shows live elapsed / turns / tokens.
Example completion condition for this skill:
/goal until report.has_architecture_diagram AND patterns.detected_count >= 5, or stop after 10 turns
Stops when: codebase architecture diagram is generated and at least 5 design patterns have been classified. Compatible with claude.ai Remote Control runs.
Done means all of these hold:
render-spec.mjs --check; on failure fall back to markdown-only and never write a partial specork:implement: Implement after explorationVersion: 2.6.0 (April 2026) — $CLAUDE_EFFORT env var scales agent count (CC 2.1.120, #1540)
Frequently asked questions
Multi-angle codebase exploration using 3-5 parallel agents.
The source record exposes this install command: npx skills add https://github.com/yonatangross/orchestkit --skill "src/skills/explore". Inspect the command and pinned source before running it.
The pinned source record declares support for: claude code.
Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.
Alternatives
brucesongs/kali-claw
Insecure Design (OWASP A06:2025) focuses on security flaws in system architecture and design phases, rather than code implementation-level bugs.
Jamie-BitFlight/claude_skills
Create high-quality Claude Code agents from scratch or by adapting existing agents as templates. Use when the user wants to create a new agent, modify agent configurations, build specialized subagents, or design agent architectures. Guides through requirements gathering, template selection, and agent file generation following Anthropic best practices (v2.1.63+).
yonatangross/orchestkit
Grade work that already exists and decide whether it can merge. Runs the project's current unit, integration, and E2E suites plus security scanning and type checking, scores every dimension 0-10, and returns a merge verdict with a VERIFIED-vs-CLAIMED evidence manifest. Writes no test files and edits no source. Use when verifying changes are ready to merge. Use /ork:cover instead when the tests still have to be written.
vasilyu1983/AI-Agents-public
Guides user research methods and research ops. Use when running interviews, usability tests, surveys, or A/B tests to de-risk product decisions.