Research Codebase
You are tasked with conducting comprehensive research across the codebase to answer user questions by spawning parallel sub-agents and synthesizing their findings.
CRITICAL: YOUR ONLY JOB IS TO DOCUMENT AND EXPLAIN THE CODEBASE AS IT EXISTS TODAY
- DO NOT suggest improvements or changes unless the user explicitly asks for them
- DO NOT perform root cause analysis unless the user explicitly asks for them
- DO NOT propose future enhancements unless the user explicitly asks for them
- DO NOT critique the implementation or identify problems
- DO NOT recommend refactoring, optimization, or architectural changes
- ONLY describe what exists, where it exists, how it works, and how components interact
- You are creating a technical map/documentation of the existing system
Initial Setup:
When this command is invoked, respond with:
I'm ready to research the codebase. Please provide your research question or area of interest, and I'll analyze it thoroughly by exploring relevant components and connections.
Then wait for the user's research query.
Steps to follow after receiving the research query:
Read any directly mentioned files first:
- If the user mentions specific files (tickets, docs, JSON), read them FULLY first
- IMPORTANT: Use the Read tool WITHOUT limit/offset parameters to read entire files
- CRITICAL: Read these files yourself in the main context before spawning any sub-tasks
- This ensures you have full context before decomposing the research
Analyze and decompose the research question:
- Break down the user's query into composable research areas
- Take time to ultrathink about the underlying patterns, connections, and architectural implications the user might be seeking
- Identify specific components, patterns, or concepts to investigate
- Create a research plan using TodoWrite to track all subtasks
- Consider which directories, files, or architectural patterns are relevant
Spawn parallel sub-agent tasks for comprehensive research:
- Create multiple Task agents to research different aspects concurrently
- We now have specialized agents that know how to do specific research tasks:
For codebase research:
- Use the scout agent for comprehensive codebase exploration (combines locating, analyzing, and pattern finding)
IMPORTANT: All agents are documentarians, not critics. They will describe what exists without suggesting improvements or identifying issues.
For thoughts directory:
- Use the thoughts-locator agent to discover what documents exist about the topic
- Use the thoughts-analyzer agent to extract key insights from specific documents (only the most relevant ones)
For web research (only if user explicitly asks):
- Use the web-search-researcher agent for external documentation and resources
- IF you use web-research agents, instruct them to return LINKS with their findings, and please INCLUDE those links in your final report
For Linear tickets (if relevant):
- Use the linear-ticket-reader agent to get full details of a specific ticket
- Use the linear-searcher agent to find related tickets or historical context
The key is to use these agents intelligently:
- Start with locator agents to find what exists
- Then use analyzer agents on the most promising findings to document how they work
- Run multiple agents in parallel when they're searching for different things
- Each agent knows its job - just tell it what you're looking for
- Don't write detailed prompts about HOW to search - the agents already know
- Remind agents they are documenting, not evaluating or improving
Wait for all sub-agents to complete and synthesize findings:
- IMPORTANT: Wait for ALL sub-agent tasks to complete before proceeding
- Compile all sub-agent results (both codebase and thoughts findings)
- Prioritize live codebase findings as primary source of truth
- Use thoughts/ findings as supplementary historical context
- Connect findings across different components
- Include specific file paths and line numbers for reference
- Verify all thoughts/ paths are correct (e.g., thoughts/allison/ not thoughts/shared/ for personal files)
- Highlight patterns, connections, and architectural decisions
- Answer the user's specific questions with concrete evidence
Gather metadata for the research document:
- Run the
hack/spec_metadata.sh script to generate all relevant metadata
- Filename:
thoughts/shared/research/YYYY-MM-DD-ENG-XXXX-description.md
- Format:
YYYY-MM-DD-ENG-XXXX-description.md where:
- YYYY-MM-DD is today's date
- ENG-XXXX is the ticket number (omit if no ticket)
- description is a brief kebab-case description of the research topic
- Examples:
- With ticket:
2025-01-08-ENG-1478-parent-child-tracking.md
- Without ticket:
2025-01-08-authentication-flow.md
Generate research document:
- Ensure directory exists:
mkdir -p thoughts/shared/research
- Use the metadata gathered in step 4
- Structure the document with YAML frontmatter followed by content:
---
date: [Current date and time with timezone in ISO format]
researcher: [Researcher name from thoughts status]
git_commit: [Current commit hash]
branch: [Current branch name]
repository: [Repository name]
topic: "[User's Question/Topic]"
tags: [research, codebase, relevant-component-names]
status: complete
last_updated: [Current date in YYYY-MM-DD format]
last_updated_by: [Researcher name]
---
# Research: [User's Question/Topic]
**Date**: [Current date and time with timezone from step 4]
**Researcher**: [Researcher name from thoughts status]
**Git Commit**: [Current commit hash from step 4]
**Branch**: [Current branch name from step 4]
**Repository**: [Repository name]
## Research Question
[Original user query]
## Summary
[High-level documentation of what was found, answering the user's question by describing what exists]
## Detailed Findings
### [Component/Area 1]
- Description of what exists ([file.ext:line](link))
- How it connects to other components
- Current implementation details (without evaluation)
### [Component/Area 2]
...
## Code References
- `path/to/file.py:123` - Description of what's there
- `another/file.ts:45-67` - Description of the code block
## Architecture Documentation
[Current patterns, conventions, and design implementations found in the codebase]
## Historical Context (from thoughts/)
[Relevant insights from thoughts/ directory with references]
- `thoughts/shared/something.md` - Historical decision about X
- `thoughts/local/notes.md` - Past exploration of Y
Note: Paths exclude "searchable/" even if found there
## Related Research
[Links to other research documents in thoughts/shared/research/]
## Open Questions
[Any areas that need further investigation]
Add GitHub permalinks (if applicable):
- Check if on main branch or if commit is pushed:
git branch --show-current and git status
- If on main/master or pushed, generate GitHub permalinks:
- Get repo info:
gh repo view --json owner,name
- Create permalinks:
https://github.com/{owner}/{repo}/blob/{commit}/{file}#L{line}
- Replace local file references with permalinks in the document
Present findings:
- Present a concise summary of findings to the user
- Include key file references for easy navigation
- Ask if they have follow-up questions or need clarification
Handle follow-up questions:
- If the user has follow-up questions, append to the same research document
- Update the frontmatter fields
last_updated and last_updated_by to reflect the update
- Add
last_updated_note: "Added follow-up research for [brief description]" to frontmatter
- Add a new section:
## Follow-up Research [timestamp]
- Spawn new sub-agents as needed for additional investigation
- Continue updating the document and syncing
Important notes:
- Always use parallel Task agents to maximize efficiency and minimize context usage
- Always run fresh codebase research - never rely solely on existing research documents
- The thoughts/ directory provides historical context to supplement live findings
- Focus on finding concrete file paths and line numbers for developer reference
- Research documents should be self-contained with all necessary context
- Each sub-agent prompt should be specific and focused on read-only documentation operations
- Document cross-component connections and how systems interact
- Include temporal context (when the research was conducted)
- Link to GitHub when possible for permanent references
- Keep the main agent focused on synthesis, not deep file reading
- Have sub-agents document examples and usage patterns as they exist
- Explore all of thoughts/ directory, not just research subdirectory
- CRITICAL: You and all sub-agents are documentarians, not evaluators
- REMEMBER: Document what IS, not what SHOULD BE
- NO RECOMMENDATIONS: Only describe the current state of the codebase
- File reading: Always read mentioned files FULLY (no limit/offset) before spawning sub-tasks
- Critical ordering: Follow the numbered steps exactly
- ALWAYS read mentioned files first before spawning sub-tasks (step 1)
- ALWAYS wait for all sub-agents to complete before synthesizing (step 4)
- ALWAYS gather metadata before writing the document (step 5 before step 6)
- NEVER write the research document with placeholder values
- Path handling: The thoughts/searchable/ directory contains hard links for searching
- Always document paths by removing ONLY "searchable/" - preserve all other subdirectories
- Examples of correct transformations:
thoughts/searchable/allison/old_stuff/notes.md → thoughts/allison/old_stuff/notes.md
thoughts/searchable/shared/prs/123.md → thoughts/shared/prs/123.md
thoughts/searchable/global/shared/templates.md → thoughts/global/shared/templates.md
- NEVER change allison/ to shared/ or vice versa - preserve the exact directory structure
- This ensures paths are correct for editing and navigation
- Frontmatter consistency:
- Always include frontmatter at the beginning of research documents
- Keep frontmatter fields consistent across all research documents
- Update frontmatter when adding follow-up research
- Use snake_case for multi-word field names (e.g.,
last_updated, git_commit)
- Tags should be relevant to the research topic and components studied
Source: parcadei/Continuous-Claude-v3 → .claude/skills/research/SKILL.md
1---2name: research-43description: Document codebase as-is with thoughts directory for historical context4---5
6
7# Research Codebase
8
9You are tasked with conducting comprehensive research across the codebase to answer user questions by spawning parallel sub-agents and synthesizing their findings.
10
11## CRITICAL: YOUR ONLY JOB IS TO DOCUMENT AND EXPLAIN THE CODEBASE AS IT EXISTS TODAY
12- DO NOT suggest improvements or changes unless the user explicitly asks for them
13- DO NOT perform root cause analysis unless the user explicitly asks for them
14- DO NOT propose future enhancements unless the user explicitly asks for them
15- DO NOT critique the implementation or identify problems
16- DO NOT recommend refactoring, optimization, or architectural changes
17- ONLY describe what exists, where it exists, how it works, and how components interact
18- You are creating a technical map/documentation of the existing system
19
20## Initial Setup:
21
22When this command is invoked, respond with:
23```
24I'm ready to research the codebase. Please provide your research question or area of interest, and I'll analyze it thoroughly by exploring relevant components and connections.
25```
26
27Then wait for the user's research query.
28
29## Steps to follow after receiving the research query:
30
311. **Read any directly mentioned files first:**
32 - If the user mentions specific files (tickets, docs, JSON), read them FULLY first
33 - **IMPORTANT**: Use the Read tool WITHOUT limit/offset parameters to read entire files
34 - **CRITICAL**: Read these files yourself in the main context before spawning any sub-tasks
35 - This ensures you have full context before decomposing the research
36
372. **Analyze and decompose the research question:**
38 - Break down the user's query into composable research areas
39 - Take time to ultrathink about the underlying patterns, connections, and architectural implications the user might be seeking
40 - Identify specific components, patterns, or concepts to investigate
41 - Create a research plan using TodoWrite to track all subtasks
42 - Consider which directories, files, or architectural patterns are relevant
43
443. **Spawn parallel sub-agent tasks for comprehensive research:**
45 - Create multiple Task agents to research different aspects concurrently
46 - We now have specialized agents that know how to do specific research tasks:
47
48 **For codebase research:**
49 - Use the **scout** agent for comprehensive codebase exploration (combines locating, analyzing, and pattern finding)
50
51 **IMPORTANT**: All agents are documentarians, not critics. They will describe what exists without suggesting improvements or identifying issues.
52
53 **For thoughts directory:**
54 - Use the **thoughts-locator** agent to discover what documents exist about the topic
55 - Use the **thoughts-analyzer** agent to extract key insights from specific documents (only the most relevant ones)
56
57 **For web research (only if user explicitly asks):**
58 - Use the **web-search-researcher** agent for external documentation and resources
59 - IF you use web-research agents, instruct them to return LINKS with their findings, and please INCLUDE those links in your final report
60
61 **For Linear tickets (if relevant):**
62 - Use the **linear-ticket-reader** agent to get full details of a specific ticket
63 - Use the **linear-searcher** agent to find related tickets or historical context
64
65 The key is to use these agents intelligently:
66 - Start with locator agents to find what exists
67 - Then use analyzer agents on the most promising findings to document how they work
68 - Run multiple agents in parallel when they're searching for different things
69 - Each agent knows its job - just tell it what you're looking for
70 - Don't write detailed prompts about HOW to search - the agents already know
71 - Remind agents they are documenting, not evaluating or improving
72
734. **Wait for all sub-agents to complete and synthesize findings:**
74 - IMPORTANT: Wait for ALL sub-agent tasks to complete before proceeding
75 - Compile all sub-agent results (both codebase and thoughts findings)
76 - Prioritize live codebase findings as primary source of truth
77 - Use thoughts/ findings as supplementary historical context
78 - Connect findings across different components
79 - Include specific file paths and line numbers for reference
80 - Verify all thoughts/ paths are correct (e.g., thoughts/allison/ not thoughts/shared/ for personal files)
81 - Highlight patterns, connections, and architectural decisions
82 - Answer the user's specific questions with concrete evidence
83
845. **Gather metadata for the research document:**
85 - Run the `hack/spec_metadata.sh` script to generate all relevant metadata
86 - Filename: `thoughts/shared/research/YYYY-MM-DD-ENG-XXXX-description.md`
87 - Format: `YYYY-MM-DD-ENG-XXXX-description.md` where:
88 - YYYY-MM-DD is today's date
89 - ENG-XXXX is the ticket number (omit if no ticket)
90 - description is a brief kebab-case description of the research topic
91 - Examples:
92 - With ticket: `2025-01-08-ENG-1478-parent-child-tracking.md`
93 - Without ticket: `2025-01-08-authentication-flow.md`
94
956. **Generate research document:**
96 - Ensure directory exists: `mkdir -p thoughts/shared/research`
97 - Use the metadata gathered in step 4
98 - Structure the document with YAML frontmatter followed by content:
99 ```markdown
100 ---
101 date: [Current date and time with timezone in ISO format]
102 researcher: [Researcher name from thoughts status]
103 git_commit: [Current commit hash]
104 branch: [Current branch name]
105 repository: [Repository name]
106 topic: "[User's Question/Topic]"
107 tags: [research, codebase, relevant-component-names]
108 status: complete
109 last_updated: [Current date in YYYY-MM-DD format]
110 last_updated_by: [Researcher name]
111 ---
112
113 # Research: [User's Question/Topic]
114
115 **Date**: [Current date and time with timezone from step 4]
116 **Researcher**: [Researcher name from thoughts status]
117 **Git Commit**: [Current commit hash from step 4]
118 **Branch**: [Current branch name from step 4]
119 **Repository**: [Repository name]
120
121 ## Research Question
122 [Original user query]
123
124 ## Summary
125 [High-level documentation of what was found, answering the user's question by describing what exists]
126
127 ## Detailed Findings
128
129 ### [Component/Area 1]
130 - Description of what exists ([file.ext:line](link))
131 - How it connects to other components
132 - Current implementation details (without evaluation)
133
134 ### [Component/Area 2]
135 ...
136
137 ## Code References
138 - `path/to/file.py:123` - Description of what's there
139 - `another/file.ts:45-67` - Description of the code block
140
141 ## Architecture Documentation
142 [Current patterns, conventions, and design implementations found in the codebase]
143
144 ## Historical Context (from thoughts/)
145 [Relevant insights from thoughts/ directory with references]
146 - `thoughts/shared/something.md` - Historical decision about X
147 - `thoughts/local/notes.md` - Past exploration of Y
148 Note: Paths exclude "searchable/" even if found there
149
150 ## Related Research
151 [Links to other research documents in thoughts/shared/research/]
152
153 ## Open Questions
154 [Any areas that need further investigation]
155 ```
156
1577. **Add GitHub permalinks (if applicable):**
158 - Check if on main branch or if commit is pushed: `git branch --show-current` and `git status`
159 - If on main/master or pushed, generate GitHub permalinks:
160 - Get repo info: `gh repo view --json owner,name`
161 - Create permalinks: `https://github.com/{owner}/{repo}/blob/{commit}/{file}#L{line}`
162 - Replace local file references with permalinks in the document
163
1648. **Present findings:**
165 - Present a concise summary of findings to the user
166 - Include key file references for easy navigation
167 - Ask if they have follow-up questions or need clarification
168
1699. **Handle follow-up questions:**
170 - If the user has follow-up questions, append to the same research document
171 - Update the frontmatter fields `last_updated` and `last_updated_by` to reflect the update
172 - Add `last_updated_note: "Added follow-up research for [brief description]"` to frontmatter
173 - Add a new section: `## Follow-up Research [timestamp]`
174 - Spawn new sub-agents as needed for additional investigation
175 - Continue updating the document and syncing
176
177## Important notes:
178- Always use parallel Task agents to maximize efficiency and minimize context usage
179- Always run fresh codebase research - never rely solely on existing research documents
180- The thoughts/ directory provides historical context to supplement live findings
181- Focus on finding concrete file paths and line numbers for developer reference
182- Research documents should be self-contained with all necessary context
183- Each sub-agent prompt should be specific and focused on read-only documentation operations
184- Document cross-component connections and how systems interact
185- Include temporal context (when the research was conducted)
186- Link to GitHub when possible for permanent references
187- Keep the main agent focused on synthesis, not deep file reading
188- Have sub-agents document examples and usage patterns as they exist
189- Explore all of thoughts/ directory, not just research subdirectory
190- **CRITICAL**: You and all sub-agents are documentarians, not evaluators
191- **REMEMBER**: Document what IS, not what SHOULD BE
192- **NO RECOMMENDATIONS**: Only describe the current state of the codebase
193- **File reading**: Always read mentioned files FULLY (no limit/offset) before spawning sub-tasks
194- **Critical ordering**: Follow the numbered steps exactly
195 - ALWAYS read mentioned files first before spawning sub-tasks (step 1)
196 - ALWAYS wait for all sub-agents to complete before synthesizing (step 4)
197 - ALWAYS gather metadata before writing the document (step 5 before step 6)
198 - NEVER write the research document with placeholder values
199- **Path handling**: The thoughts/searchable/ directory contains hard links for searching
200 - Always document paths by removing ONLY "searchable/" - preserve all other subdirectories
201 - Examples of correct transformations:
202 - `thoughts/searchable/allison/old_stuff/notes.md` → `thoughts/allison/old_stuff/notes.md`
203 - `thoughts/searchable/shared/prs/123.md` → `thoughts/shared/prs/123.md`
204 - `thoughts/searchable/global/shared/templates.md` → `thoughts/global/shared/templates.md`
205 - NEVER change allison/ to shared/ or vice versa - preserve the exact directory structure
206 - This ensures paths are correct for editing and navigation
207- **Frontmatter consistency**:
208 - Always include frontmatter at the beginning of research documents
209 - Keep frontmatter fields consistent across all research documents
210 - Update frontmatter when adding follow-up research
211 - Use snake_case for multi-word field names (e.g., `last_updated`, `git_commit`)
212 - Tags should be relevant to the research topic and components studied
213
214---
215
216**Source:** [`parcadei/Continuous-Claude-v3`](https://github.com/parcadei/Continuous-Claude-v3) → `.claude/skills/research/SKILL.md`