context-map
Generate a map of all files relevant to a task before making changes. Works from a short or vague task description: expands it into concrete search seeds, locates code with rag-rat / codebase-memory /
SKILL.mdskills/context-map/SKILL.md
GitHubContext Map
Before implementing any changes, map the files the task touches. Input may be one vague sentence: expand it into seeds, find anchors (code the task most directly changes), then expand outward from them. Every path in the map must be verified; absence of search results is not proof of absence.
Task
{{task_description}}
Workflow
Tool per question: tool-selection.md. Never cat whole files — outline first, read excerpts. Run independent searches in parallel.
| # | Phase | Action | Gate |
|---|---|---|---|
| 0 | Expand task | No tools. Write down: nouns → candidate symbols; verbs → behaviors; synonyms/naming variants (snake/camel, plural, abbrev); layer guess (UI/API/service/data/config/infra/docs); task type (feature/fix/refactor/config/docs); unknowns | seeds listed before any search |
| 1 | Memory + orientation | Parallel: memory_query/memory_search on top 2-3 seeds (prior decisions, gotchas); repo_brief/get_architecture (scope with path if obvious); read AGENTS.md/CLAUDE.md rules for touched file types |
constraints noted |
| 2 | Locate anchors | semantic_search/search_graph per concept seed (parallel); symbol_lookup/find_symbol per exact name; grep literals (config keys, error messages, CLI flags, env vars) |
1-5 anchors; confirmed = hit by 2+ independent searches, else "uncertain" |
| 3 | Clarify if blocked | AskUserQuestion (several → grilling), offering found candidates as options. Only when: anchors split across unrelated areas; zero anchors after synonyms; task type changes map materially. Otherwise state the assumption and continue |
no stalling on answerable defaults |
| 4 | Expand from anchors | Per anchor, parallel: dependents (find_callers/trace_path inbound, depth 2); dependencies (trace_callees/outbound, depth 1-2, keep only contracts the change could break); impact_surface on changed signatures; outline files for exact functions; string-level consumers; implementations |
public/exported/cross-module hits flagged; depth cut-off noted |
| 5 | Tests | find_callers/trace_path inbound with include_tests: true; name/path match (test_<mod>, <mod>.test.*, __tests__/, tests/); grep anchor names under test dirs |
none found → record "no coverage" as risk, never invent a test |
| 6 | Reference patterns | 1-3 existing implementations of the same kind of change: semantic_search on the pattern ("another hook that blocks on lint failure"), not the domain; search_graph by same label/decorator/base; query_graph for "all X that do Y"; prefer recent, most-imported |
patterns cited by path |
| 7 | Verify + assemble | check_index_coverage or direct outline on every cited path (drop or mark "unverified"); grep anchor names/config keys in *.json|yaml|toml|md (indexers skip them); fill risks from evidence; list Assumptions + Not Checked; fill output-template.md; run validator |
validator exits 0; Risk Assessment evidence-based |
Phase 4 detail
- String-level consumers: the call graph misses tool names, config keys, CLI names referenced as strings (hooks, prompts, docs,
pyproject.tomlentry points).search_code/grepthe anchor name, modefiles. - Implementations/overrides:
find_implementationswhen the anchor is an interface, base class, or hook. - Stop at depth 2 unless blast radius is still growing.
Output
Fill output-template.md: Task Interpretation, Files to Modify, Dependencies, Test Files, Reference Patterns, Prior Decisions / Gotchas, Risk Assessment, Not Checked. ≤ 10 rows per table, ranked by impact.
Validation
Save the map (e.g. context-map.md) and run the gate before handing it over. Fix every ERROR; fix or justify every WARN.
python3 skills/context-map/scripts/validate_context_map.py context-map.md --root . [--strict]
Checks: required sections, exact table columns, no placeholder rows, valid Task type: + Anchors:, checkbox risks, cited paths exist. Exit 0 pass, 1 violations, 2 usage error.
Do not proceed with implementation until this map is reviewed.
Reference files
| File | Contents |
|---|---|
| tool-selection.md | question → rag-rat / codebase-memory / serena tool table + rules |
| output-template.md | verbatim map template the validator enforces |
| validate_context_map.py | deterministic structure check for the finished map |