-
Gather context. Read the feature request and identify which NanoVec modules are affected (store, index, distance, simd, mcp, server).
-
Read current state. Check the existing code in affected modules to understand what exists and what needs to change:
find src/ -name '*.rs' -type f | head -30
cargo test --all-features 2>&1 | tail -5
-
Decompose into tasks. Break the feature into atomic, testable tasks. Each task must:
- Have a single domain agent owner (core, simd, mcp, testing, docs)
- Be completable independently (or have explicit dependencies)
- Include acceptance criteria (what test must pass)
- Follow TDD: specify the test before the implementation
-
Assign agents. Map each task to a domain agent based on the routing table:
- VectorStore, RecordStore, KD-Tree, distance -> core
- AVX2, NEON, portable_simd, assembly -> simd
- MCP tools, rmcp, transport, JSON-RPC -> mcp
- Tests, proptest, benchmarks, coverage -> testing
- Documentation, CHANGELOG, API docs -> docs
-
Sequence tasks. Order tasks by dependencies. Common patterns:
- Scalar implementation (core) before SIMD acceleration (simd)
- Data structure (core) before MCP tool (mcp)
- Implementation before tests (unless TDD, then reverse)
- All code before documentation (docs)
-
Write the plan. Save to docs/plans/<feature-slug>-plan.md using this format:
# Plan: <Feature Name>
## Summary
<one paragraph>
## Tasks
### Task 1: <title>
- **Agent:** <agent name>
- **Files:** <files to create or modify>
- **Depends on:** none | Task N
- **Acceptance:** <test or verification command>
### Task 2: ...
-
Present for approval. Show the plan to the developer and wait for confirmation before execution.