Explore
Overview
Turn a task's code references into a fact checklist the main agent can act on without re-reading the repo.
Core principle: the repo owns facts; the user owns decisions. Read everything the task names; verify everything the user asserts; deliver a checklist, not an opinion.
Who reads
The main agent dispatches a background explore subagent and tells it to load this skill. The subagent is read-only: no design, no questions to the user, no code. If you are that subagent, this skill is your entire task — follow it exactly.
When to Use
- Task names code to change or reference: "refactor X", "model after Y", "reuse Z's pattern"
- The prompt contains technical assertions to verify (signatures, fields, SQL, types, "try not to update" style constraints)
- Refactor / legacy rework / reuse, where guessing the code shape would waste grill questions
When NOT to use: brand-new code with no anchors; bugfix with known root cause (debug); mechanical rename.
Trigger threshold (anchors trigger, width decides dispatch)
- Trigger: any task that names existing code — a method/class to change, a table/SQL, or a "reuse / model-after" pointer — gets an explore pass. No threshold below that.
- Dispatch width: one anchor, obvious chain (≤ 1 method + 1 table) → the main agent reads inline. Wide chain (multiple tables + referenced classes + data consumers) → dispatch a background subagent.
- The threshold is a rule, not a judgment call — decide by counting anchors, then dispatch.
The Iron Law (non-negotiable)
READ EVERYTHING THE TASK NAMES. VERIFY EVERYTHING THE USER ASSERTS.
Deliver facts only. If the repo can't answer it, it's a blocker — never guess.
Workflow
- Parse anchors — every named method/class/table/config/SQL + every "reuse / model-after" pointer.
- Read the full chain — target method → referenced classes → Mappers/entities/XML → the data's consumers (e.g., existing Redis retry consumers) → relevant config. Read implementations, not just signatures, when behavior matters.
- Verify assertions — each technical claim in the prompt → ✓ consistent / ✗ contradicts, with file:line evidence.
- Map conflicts — constraint vs repo reality (e.g., "try not to update" vs no status field → re-run duplicates).
- Deliver the fact checklist — the format below, nothing else. Compact: it lives in session history, grill consumes it directly, and write-spec folds it into the Current state section.
Deliverable: Fact Checklist
### 1. Anchors
- <method>: exists ✓ — current behavior: <2 lines>
- <referenced class>: <signature/usage, 2 lines>
- <table> → Entity X; fields: <relevant fields>
### 2. Assertion check
- "<user's claim>": ✗ actual <thing> returns <X> (file:line)
### 3. Conflicts
- "<soft constraint>" ↔ <repo reality> → <consequence> → grill Q<#>
### 4. Judgment calls for grill (one line each: question + why the repo can't answer)
- <idempotency / redis fallback / acceptance …>
### 5. Blockers
- <not found in repo; main agent decides whether to ask the user>
Rules: no design opinions (grill's job); no user-directed questions; missing anchor = blocker.
Small-task fallback (main agent)
One anchor, obvious chain → read inline. Dispatch the subagent when the chain is wide (multiple tables + referenced classes + consumers).
Rationalization Table
| Excuse |
Reality |
| "I know what does" |
You know what you assume. Read it. |
| "I'll ask the user if this field exists" |
Facts → explore. Decisions → ask. Blockers only for what the repo truly lacks. |
| "I'll add a design note here" |
Facts and opinions mix → grill trusts the wrong thing. |
| "This task is small, skip exploring" |
The trigger threshold is a rule — anchors present = explore. Inline reading still costs almost nothing. |
Red Flags
- Checklist contains recommendations or "should we…?" questions (that's grill's output channel)
- Assertion check empty despite claims in the prompt
- Anchor listed but not read (no evidence lines)
- User asked a question; subagent answered — subagents deliver facts, never decisions
Checklist
1---2name: explore3description: Use when a task modifies or references existing code — refactors, legacy rework, reusing a pattern, or when the prompt names specific methods/classes/tables. Harvests repo facts and verifies the user's technical claims before any design or code, so grill only asks judgment calls.4---56# Explore78## Overview910Turn a task's code references into a **fact checklist** the main agent can act on without re-reading the repo.1112**Core principle: the repo owns facts; the user owns decisions. Read everything the task names; verify everything the user asserts; deliver a checklist, not an opinion.**1314## Who reads1516The main agent dispatches a background **explore subagent** and tells it to load this skill. The subagent is read-only: no design, no questions to the user, no code. If you are that subagent, this skill is your entire task — follow it exactly.1718## When to Use1920- Task names code to change or reference: "refactor X", "model after Y", "reuse Z's pattern"21- The prompt contains technical assertions to verify (signatures, fields, SQL, types, "try not to update" style constraints)22- Refactor / legacy rework / reuse, where guessing the code shape would waste grill questions2324**When NOT to use:** brand-new code with no anchors; bugfix with known root cause (debug); mechanical rename.2526## Trigger threshold (anchors trigger, width decides dispatch)2728- **Trigger:** any task that names existing code — a method/class to change, a table/SQL, or a "reuse / model-after" pointer — gets an explore pass. No threshold below that.29- **Dispatch width:** one anchor, obvious chain (≤ 1 method + 1 table) → the main agent reads inline. Wide chain (multiple tables + referenced classes + data consumers) → dispatch a background subagent.30- The threshold is a rule, not a judgment call — decide by counting anchors, then dispatch.3132## The Iron Law (non-negotiable)3334```35READ EVERYTHING THE TASK NAMES. VERIFY EVERYTHING THE USER ASSERTS.36Deliver facts only. If the repo can't answer it, it's a blocker — never guess.37```3839## Workflow40411. **Parse anchors** — every named method/class/table/config/SQL + every "reuse / model-after" pointer.422. **Read the full chain** — target method → referenced classes → Mappers/entities/XML → the data's consumers (e.g., existing Redis retry consumers) → relevant config. Read implementations, not just signatures, when behavior matters.433. **Verify assertions** — each technical claim in the prompt → ✓ consistent / ✗ contradicts, with file:line evidence.444. **Map conflicts** — constraint vs repo reality (e.g., "try not to update" vs no status field → re-run duplicates).455. **Deliver the fact checklist** — the format below, nothing else. Compact: it lives in session history, grill consumes it directly, and write-spec folds it into the Current state section.4647## Deliverable: Fact Checklist4849```50### 1. Anchors51- <method>: exists ✓ — current behavior: <2 lines>52- <referenced class>: <signature/usage, 2 lines>53- <table> → Entity X; fields: <relevant fields>5455### 2. Assertion check56- "<user's claim>": ✗ actual <thing> returns <X> (file:line)5758### 3. Conflicts59- "<soft constraint>" ↔ <repo reality> → <consequence> → grill Q<#>6061### 4. Judgment calls for grill (one line each: question + why the repo can't answer)62- <idempotency / redis fallback / acceptance …>6364### 5. Blockers65- <not found in repo; main agent decides whether to ask the user>66```6768Rules: no design opinions (grill's job); no user-directed questions; missing anchor = blocker.6970## Small-task fallback (main agent)7172One anchor, obvious chain → read inline. Dispatch the subagent when the chain is wide (multiple tables + referenced classes + consumers).7374## Rationalization Table7576| Excuse | Reality |77|---|---|78| "I know what <referenced class> does" | You know what you assume. Read it. |79| "I'll ask the user if this field exists" | Facts → explore. Decisions → ask. Blockers only for what the repo truly lacks. |80| "I'll add a design note here" | Facts and opinions mix → grill trusts the wrong thing. |81| "This task is small, skip exploring" | The trigger threshold is a rule — anchors present = explore. Inline reading still costs almost nothing. |8283## Red Flags8485- Checklist contains recommendations or "should we…?" questions (that's grill's output channel)86- Assertion check empty despite claims in the prompt87- Anchor listed but not read (no evidence lines)88- User asked a question; subagent answered — subagents deliver facts, never decisions8990## Checklist9192- [ ] All anchors read (target + references + tables + consumers)93- [ ] Every user assertion marked ✓/✗ with evidence94- [ ] Conflicts surfaced (constraint vs repo fact)95- [ ] Judgment calls framed for grill to ask one at a time96- [ ] No opinions, no user questions, no code