skills/sdd-explore/SKILL.md
Investigates and analyzes an idea or codebase area before committing to changes. Pure research, no writes. Trigger: /sdd-explore <topic>, explore, investigate codebase, research feature, analyze before changing.
npx skillsauth add fearovex/claude-config sdd-exploreInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Investigates and analyzes an idea or area of the codebase before committing to changes.
Triggers: /sdd-explore <topic>, explore, investigate codebase, analyze before changing, research feature
The exploration phase is optional but valuable. Its goal is to understand the terrain before proposing changes. It creates no code and modifies nothing. It only reads and analyzes.
Use it when:
When the orchestrator launches this sub-agent, it resolves the skill path using:
1. .claude/skills/sdd-explore/SKILL.md (project-local — highest priority)
2. ~/.claude/skills/sdd-explore/SKILL.md (global catalog — fallback)
Project-local skills override the global catalog. See docs/SKILL-RESOLUTION.md for the full algorithm.
Follow skills/_shared/sdd-phase-common.md Section F (Project Context Load) and Section G (Spec Context Preload). Both are non-blocking.
This sub-step is non-blocking: any failure (missing file, unreadable file, no slug) MUST produce
at most an INFO-level note. This sub-step MUST NOT produce status: blocked or status: failed.
mem_search(query: "sdd/<slug>/proposal").INFO: no pre-seeded proposal found — proceeding without handoff context.mem_get_observation(id). Treat its content as supplemental intent enrichment:
Handoff context loaded from engram: sdd/<slug>/proposal## Handoff Context section in the exploration output
(placed before ## Current State) summarizing:
I classify what type of exploration is needed:
This step is non-blocking: any failure (git unavailable, no working tree, empty diff) MUST produce at most an INFO-level note. This step MUST NOT produce status: blocked or status: failed.
git status --short to identify modified, staged, and untracked files in the current working tree.modified, staged, deleted, or untracked.## Branch Diff section.If git is unavailable or diff is empty: log INFO: branch diff unavailable or empty — skipping Branch Diff section and include an empty ## Branch Diff section with that note.
Output format:
## Branch Diff
Files modified in current branch relevant to this change:
- path/to/file.ts (modified)
- path/to/other.ts (staged, pending deletion)
- path/to/new-file.ts (untracked)
This step is non-blocking: any failure MUST produce at most an INFO-level note.
Search engram for prior archived changes related to this topic:
mem_search(query: "sdd/archive-report", project: "{project}")
Filter results by keyword overlap with the current change slug. For each related result, retrieve via mem_get_observation(id) to check outcome.
Write output to the ## Prior Attempts section.
Output format:
## Prior Attempts
Prior archived changes related to this topic:
- auth-flow-v1: COMPLETED
- auth-flow-v2: ABANDONED
[or: "No prior attempts found."]
This step is non-blocking: contradictions are informational and MUST NOT cause status: blocked or status: failed. At most, contradictions may cause status: warning.
ai-context/ filesINFO (minimal), WARNING (notable), CRITICAL (breaking)## Contradiction Analysis section.ok unless contradictions are severe enough to set status: warning.Output format:
## Contradiction Analysis
Contradictions detected between user intent and existing context:
- Item: [feature or behavior name]
Status: CERTAIN|UNCERTAIN — [explanation of what contradicts what]
Severity: INFO|WARNING|CRITICAL
Resolution: [suggested resolution or "Requires user confirmation"]
[or: "No contradictions detected."]
I read real code following this hierarchy:
ai-context/architecture.md if it exists (to understand past decisions)For each possible approach I generate a comparison table:
| Approach | Pros | Cons | Effort | Risk | | ---------- | ---- | ---- | --------------- | --------------- | | [Option A] | | | Low/Medium/High | Low/Medium/High | | [Option B] | | | | |
Pre-save naming check (non-blocking):
If <change-name> starts with explore-, warn before writing:
Note: The change name "[change-name]" starts with "explore-".
Standalone explore folders (e.g. explore-fy-topic) are not part of a full SDD planning cycle
and will not be automatically cleaned up or archived.
If you intend this as a full SDD change, use a descriptive slug and continue with /sdd-propose:
/sdd-propose <description> <- starts the planning cycle from proposal
If you intend this as a one-off investigation, proceed as-is.
This warning is informational only — writing proceeds regardless of the name.
If invoked as /sdd-explore <change-name>, I persist the exploration artifact.
Write: Call mem_save with topic_key: sdd/{change-name}/explore, type: architecture, project: {project}, content = full exploration markdown. Do NOT write any file.
INFO: no change name — skipping artifact persistence and skip.Persisted artifact (compact — only what downstream phases consume):
# Exploration: [topic]
## Current State
[2-3 sentence summary of what currently exists in the codebase]
## Branch Diff
- [path/to/file] (modified|staged|deleted|untracked)
[or: "No relevant changes in current branch."]
## Prior Attempts
- [slug]: [outcome]
[or: "None found."]
## Contradiction Analysis
- [Item]: [CERTAIN|UNCERTAIN] — [one-line explanation]
[or: "No contradictions detected."]
## Recommendation
[Recommended approach in 1-2 sentences]
## Ready for Proposal
[Yes/No — and why if No]
Conversational output (shown to user but NOT persisted):
The full analysis — including Affected Areas table, Analyzed Approaches with pros/cons/effort/risk, Identified Risks with mitigations, Open Questions, and Handoff Context — is presented in the conversational response to the orchestrator. This content is ephemeral and does not need to survive across sessions.
{
"status": "ok|warning|blocked",
"summary": "Analysis of [topic]: [2-3 lines of the main finding]",
"artifacts": ["engram:sdd/{change-name}/explore"],
"next_recommended": ["sdd-propose"],
"risks": ["[risk if found]"]
}
business
Turns an already-investigated customer issue into a short, non-technical engineering-to-CS brief: one natural message that leads with the finding (root cause, real scope, open question), ready to paste into Slack for the support team. Trigger: /support-brief, support brief, brief for support, resumen soporte.
development
Parks the current Claude Code session before going to sleep. Analyzes the conversation, writes a handoff document to docs/handoffs/ in the current project, mirrors the same summary to engram tagged with the session ID, and prints the exact `claude --resume <id>` command for tomorrow. Zero interaction — runs end-to-end on a single invocation. Trigger: /night-park, night park, park session, me voy a dormir, guardar sesion.
testing
Interactive creator for a project feature: scaffolds the domain knowledge markdown at ai-context/features/<slug>.md AND the antenna skill at .claude/skills/<slug>/SKILL.md, both from the canonical templates. Also registers the antenna in the project's CLAUDE.md. Trigger: /feature-define <name>, define feature, documentar funcionalidad, nueva feature.
data-ai
Generates a short, non-technical, informal English summary of an already-investigated customer issue, ready to paste into Slack/email for support, CX, or ops teammates. Trigger: /customer-summary, customer summary, resumir customer issue, slack summary.