بنقرة واحدة
research
// Conducts deep technical research for Aha Loop stories. Use before implementing stories involving unfamiliar libraries or architectural decisions. Triggers on: research this, investigate, explore options, compare alternatives.
// Conducts deep technical research for Aha Loop stories. Use before implementing stories involving unfamiliar libraries or architectural decisions. Triggers on: research this, investigate, explore options, compare alternatives.
Designs system architecture and selects technology stack based on vision analysis. Use after vision analysis for technical decisions. Triggers on: design architecture, select tech stack, choose framework.
Defines God Committee member behavior and responsibilities with oversight authority. Use when operating as a committee member. Triggers on: god committee, committee observation, council discussion.
Logs AI thoughts and decisions for human observability. Applies continuously throughout all tasks to maintain transparency.
Generates Product Requirements Documents (PRD) for new features. Use when planning features or starting projects. Triggers on: create prd, write prd, plan feature, requirements, spec out.
Creates and manages project roadmaps with milestones and PRD queues. Use after architecture is defined for project planning. Triggers on: create roadmap, plan milestones, organize prds.
Parses and analyzes project vision to extract structured requirements. Use at project start to understand goals, scope, and constraints. Triggers on: analyze vision, parse project goals, understand requirements.
| name | research |
| description | Conducts deep technical research for Aha Loop stories. Use before implementing stories involving unfamiliar libraries or architectural decisions. Triggers on: research this, investigate, explore options, compare alternatives. |
Conduct thorough technical research before implementation to ensure high-quality, informed decisions.
When running in workspace mode, all paths are relative to .aha-loop/ directory:
.aha-loop/research/ (not scripts/aha-loop/research/).aha-loop/knowledge/ (not knowledge/).aha-loop/.vendor/ (not .vendor/)The orchestrator will provide the actual paths in the prompt context.
researchTopics fieldresearchCompleted: true in prd.jsonRead the current story from prd.json and extract:
researchTopics - explicit topics to investigateAlso check:
learnings field for follow-up research needsknowledge/project/gotchas.md for related known issuesFor any third-party library research, fetch the source:
# Fetch specific library
./scripts/aha-loop/fetch-source.sh rust tokio 1.35.0
# Or fetch all project dependencies
./scripts/aha-loop/fetch-source.sh --from-deps
After fetching, the source will be at .vendor/<ecosystem>/<name>-<version>/
When researching or recommending libraries, always check for and prefer the latest stable version unless there's a specific compatibility reason not to.
Query the package registry for latest version:
# Rust (crates.io)
curl -s "https://crates.io/api/v1/crates/tokio" | jq '.crate.max_stable_version'
# Or use cargo
cargo search tokio --limit 1
# Node.js (npm)
npm view react version
# Python (PyPI)
pip index versions requests 2>/dev/null | head -1
Verify stability:
Check compatibility:
Always document version decisions:
## Version Decision: [Library Name]
**Selected Version:** X.Y.Z
**Latest Available:** X.Y.Z (as of YYYY-MM-DD)
**Reason:** [Why this version was chosen]
**Compatibility Notes:**
- Works with [other dependency] v[X.Y]
- Requires [language] v[X.Y]+
Only use older versions when:
Always document the reason in knowledge/project/decisions.md:
### ADR: Using [Library] v[Old] instead of v[New]
**Context:** [Why we're not using latest]
**Decision:** Pin to v[Old]
**Consequences:** [What we're missing, when to revisit]
Reading Order (Most Important First):
src/lib.rs, src/main.rssrc/index.ts, index.js__init__.py, main.pymod.rs files or directory structureReading Tips:
examples/ directory for usage patternstests/ for edge cases and proper usageSearch for:
Use MCP tools like context7 for up-to-date documentation.
When multiple solutions exist, create a comparison:
| Criterion | Option A | Option B | Option C |
|---|---|---|---|
| Performance | ... | ... | ... |
| API Ergonomics | ... | ... | ... |
| Maintenance Status | ... | ... | ... |
| Bundle Size | ... | ... | ... |
| Learning Curve | ... | ... | ... |
Include a recommendation with reasoning.
Save to: scripts/aha-loop/research/[story-id]-research.md
# Research Report: [Story ID] - [Story Title]
**Date:** YYYY-MM-DD
**Status:** Complete | Needs Follow-up
## Research Topics
1. [Topic from researchTopics array]
2. ...
## Findings
### Topic 1: [Name]
**Summary:** Brief answer to the research question
**Source Code Analysis:**
- Library: [name] v[version]
- Key File: `.vendor/rust/tokio-1.35.0/src/runtime/mod.rs`
- Relevant Code: Lines 123-189
- Pattern Observed: [description]
**Documentation Notes:**
- [Key insight from docs]
- [Another insight]
**Code Example:**
```[language]
// Example from source or docs
...
| Criterion | Option A | Option B | Recommendation |
|---|---|---|---|
| ... | ... | ... | ... |
Recommendation: [Option X] because [reasoning]
Based on research, the story should be implemented as follows:
The following should be added to knowledge base:
To knowledge/project/patterns.md:
To knowledge/domain/[topic]/:
---
## Updating Knowledge Base
### Project Knowledge (`knowledge/project/`)
Add patterns specific to THIS project:
- How this codebase uses a library
- Project-specific conventions discovered
- Gotchas specific to this codebase
### Domain Knowledge (`knowledge/domain/`)
Add reusable technical knowledge:
- Library usage patterns (applicable to any project)
- Comparison documents
- Best practices
**Create new topic directories as needed:**
knowledge/domain/ └── [topic-name]/ ├── README.md # Overview ├── patterns.md # Common patterns ├── gotchas.md # Known issues └── examples/ # Code examples
---
## Source Code Reading Report
When you read library source code, document your findings:
```markdown
## Source Code Analysis: [Library] v[Version]
### Module Structure
src/ ├── lib.rs # Main entry, exports public API ├── runtime/ # Async runtime implementation │ ├── mod.rs # Module exports │ └── scheduler.rs # Task scheduling └── sync/ # Synchronization primitives
### Key Types
- `Runtime` (src/runtime/mod.rs:45) - Main runtime struct
- `Handle` (src/runtime/handle.rs:23) - Runtime handle for spawning
### Key Functions
- `Runtime::new()` (L89-L120) - Creates new runtime with default config
- `spawn()` (L156-L189) - Spawns a new async task
### Usage Patterns from Tests
From `tests/runtime.rs:34`:
```rust
let rt = Runtime::new().unwrap();
rt.block_on(async {
// ...
});
spawn_blocking for CPU-heavy tasksblock_on from async context
---
## Checklist
Before marking research complete:
- [ ] All `researchTopics` investigated
- [ ] Library source code fetched and key files read (if applicable)
- [ ] Web search performed for documentation and best practices
- [ ] Alternatives compared (if multiple options exist)
- [ ] Research report saved to `scripts/aha-loop/research/`
- [ ] Knowledge base updated with reusable findings
- [ ] Implementation recommendations documented
- [ ] `researchCompleted: true` set in prd.json