Explore logo

Explore

Community
yonatangross
explore

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.

Overview

Publisheryonatangross
Repositoryorchestkit
Skill nameexplore
Stars
298
Forks
35
Bundled files
19
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 19 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by yonatangross on GitHub. Read the source before you install it.

Installation

Install the Explore AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/yonatangross/orchestkit/tree/main/plugins/ork/skills/explore
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/yonatangross/orchestkit.git /tmp/orchestkit
mkdir -p .claude/skills
cp -r /tmp/orchestkit/plugins/ork/skills/explore .claude/skills/explore
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Explore in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Explore on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Explore is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Codebase Exploration

Host-neutral workflow. Invoke by skill name (explore). Claude Code slash routing, YAML hook loaders, and .claude/chain live in references/claude-code.md.

Multi-angle codebase exploration using 3-5 parallel agents.

🎯 Quick Start

bash
explore authentication

Opus 5.5: Exploration agents use native adaptive thinking for deeper pattern recognition across large codebases.


STEP -0.5: Effort-Aware Agent Scaling (CC 2.1.120+)

Read $CLAUDE_EFFORT to scale exploration depth before any other decision.

python
# 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
EffortAgent countPhasesTime
low1 (structure-only)1, 2, 8~1 min
medium2 (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. doctor warns only when xhigh is configured on a model in its XHIGH_UNSUPPORTED_PREFIXES table.


STEP 0: Verify User Intent with AskUserQuestion

BEFORE creating tasks, clarify what the user wants to explore:

python
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:

  • Full exploration: All phases, all parallel agents
  • Quick scan: Files + structure only (phases 1-2), skip health/deps/product — no deep agents
  • Data flow: Focus phase 3 agents on data tracing
  • Architecture patterns: Focus on backend-system-architect agent

STEP 0b: Select Orchestration Mode

MCP Probe

python
# 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

Exploration Handoff

After exploration completes, write results for downstream skills:

python
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 Agent tool (star):

  1. Agent Teams mode (GA since CC 2.1.33) → recommended for 4+ agents
  2. Agent tool mode → for quick/single-focus exploration
  3. ORCHESTKIT_FORCE_TASK_TOOL=1 → Agent tool (override)
AspectAgent ToolAgent Teams
Discovery sharingLead synthesizes after all completeExplorers share discoveries as they go
Cross-referencingLead connects dotsData flow explorer alerts architecture explorer
Cost~150K tokens~400K tokens
Best forQuick/focused searchesDeep full-codebase exploration

Fallback: If Agent Teams encounters issues, fall back to Agent tool for remaining exploration.

Model pin: Set model="haiku" on the built-in Explore calls in Agent tool mode. This trial covers that path only. Agent Teams calls keep their existing model selection. A fork uses the parent model and shared context.


🚨 Task Management (MANDATORY)

BEFORE doing ANYTHING else, create tasks to show progress:

python
# 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

🔄 Workflow Overview

PhaseActivitiesOutput
1. Initial SearchGrep, Glob for matchesFile locations
2. Memory CheckSearch knowledge graphPrior context
3. Deep Exploration4 parallel explorersMulti-angle analysis
4. AI System (if applicable)LangGraph, prompts, RAGAI-specific findings
5. Code HealthRate code 0-10Quality scores
6. Dependency HotspotsIdentify couplingHotspot visualization
7. Product PerspectiveBusiness contextFindability suggestions
8. Report GenerationCompile findingsActionable report

Progressive Output (CC 2.1.76)

Output findings incrementally as each phase completes — don't batch until the report:

After PhaseShow User
1. Initial SearchFile matches, grep results
2. Memory CheckPrior decisions and relevant context
3. Deep ExplorationEach explorer agent's findings as they return
5. Code HealthHealth 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.


Phase 1: Initial Search

Load the repo map first. A fork skill never runs frontmatter hooks (#4683), so run the loader yourself and keep its additionalContext in mind:

bash
echo '{"tool_name":"Bash","tool_input":{}}' | node "${CLAUDE_PLUGIN_ROOT}/hooks/bin/run-hook.mjs" skill/repo-structure-indexer
python
# PARALLEL - Quick searches
Grep(pattern="$ARGUMENTS[0]", output_mode="files_with_matches")
Glob(pattern="**/*$ARGUMENTS[0]*")

Phase 2: Memory Check

python
mcp__memory__search_nodes(query="$ARGUMENTS[0]")
mcp__memory__search_nodes(query="architecture")

Phase 3: Parallel Deep Exploration (4 Agents)

Load Read("rules/exploration-agents.md") for Agent tool mode prompts.

Load Read("rules/agent-teams-mode.md") for Agent Teams alternative.

Phase 4: AI System Exploration (If Applicable)

For AI/ML topics, add exploration of: LangGraph workflows, prompt templates, RAG pipeline, caching strategies.

Phase 5: Code Health Assessment

Load Read("rules/code-health-assessment.md") for agent prompt. Load Read("references/code-health-rubric.md") for scoring criteria.

Phase 6: Dependency Hotspot Map

Load Read("rules/dependency-hotspot-analysis.md") for agent prompt. Load Read("references/dependency-analysis.md") for metrics.

Phase 7: Product Perspective

Load Read("rules/product-perspective.md") for agent prompt. Load Read("references/findability-patterns.md") for best practices.

Phase 8: Generate Report

Load Read("references/exploration-report-template.md").

Phase 8b: Emit Dashboard Spec (json-render)

Parse --render= from $ARGUMENTS. Default is both.

ModeBehavior
markdownCurrent behavior — markdown report only. No spec emitted.
json-renderEmit .claude/chain/explore-dashboard.json only. Skip markdown report.
bothEmit spec and markdown. Default — gives the human a report and downstream skills a structured handoff.

When emitting a spec:

  1. Load the format and catalog: Read("references/dashboard-spec.md"). Reference example: references/dashboard-example.json.
  2. Build the spec object using only catalog component types: Card, StatGrid, DataTable, StatusBadge, BarMeter, Heatmap, Markdown.
  3. Write to .claude/chain/explore-dashboard.json with compact JSON (no indentation) — minimizes token cost for downstream consumers.
  4. Validate before declaring success:
bash
node "${CLAUDE_SKILL_DIR}/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.

  1. For --render=both, render the markdown view from the spec for consistency:
bash
node "${CLAUDE_SKILL_DIR}/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 (fix-issue, implement, 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.

Phase 6.5 — Notebook summary (signal-fired, optional)

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:

bash
python3 ${CLAUDE_SKILL_DIR}/scripts/post_explore_summary.py "$CLAUDE_JOB_DIR"

Auto-skip conditions (all exit 0, all WARN-logged):

Skip reasonTrigger
signal absentlen(dirs_scanned) < 3 (or field missing on explore-output.json)
yg-mcp-core not importableyg-mcp-core>=0.3.0 not installed (orchestkit is public; yg-mcp-core lives on private pypi.yonyon.ai — HQ-only)
hq-content MCP unreachableMCP 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 brainstorm post-synth podcast pattern from PR #1889. Closes orchestkit#1893.

Notes for long explorations

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 explicit offset/limit to 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.

Common Exploration Queries

  • "How does authentication work?"
  • "Where are API endpoints defined?"
  • "Find all usages of EventBroadcaster"
  • "What's the workflow for content analysis?"

Running unattended with /goal

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.

Quality Bar

Done means all of these hold:

  • Every architectural or data-flow claim cites concrete evidence (file:line or a file path), not prose assertion
  • Code health is reported as 0-10 scores with a per-dimension breakdown, not a bare number
  • Dependency hotspots / coupling are named along with the files that drive them
  • The report includes an architecture or structure visualization for the explored scope
  • If a json-render spec is emitted, it passes render-spec.mjs --check; on failure fall back to markdown-only and never write a partial spec

📜 Related Skills

  • ork:implement: Implement after exploration

Version: 2.6.0 (April 2026) — $CLAUDE_EFFORT env var scales agent count (CC 2.1.120, #1540)

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Explore AI skill do?

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.

Why use Explore on TypingMind?

Because you install it once and use it with any model. Explore is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Explore in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/yonatangross/orchestkit/tree/main/plugins/ork/skills/explore. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Explore?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Explore?

As many as you like. As long as a model supports skills, you can use Explore with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Explore AI skill free?

Yes. It is published on GitHub by yonatangross under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇