Orchestrated multi-agent research with architectural enforcement, parallel execution, and comprehensive audit trails.
FAQ
claude-multi-agent-research-system-skill is a Claude Code plugin with 3 hand-picked skills for automation work, indexed on Flowy. Install it with the command on its page. It includes multi-agent-researcher, semantic-search, spec-workflow-orchestrator. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
$ npx -y skills add ahmedibrahim085/Claude-Multi-Agent-Research-System-Skill --agent claude-code
Orchestrated multi-agent research with architectural enforcement, parallel execution, and comprehensive audit trails.
A tri-skill platform with smart routing, auto-indexing, and compound request detection:
| Skill | Purpose | Agents |
|---|---|---|
| multi-agent-researcher | Comprehensive topic investigation | researcher, report-writer |
| spec-workflow-orchestrator | Planning from ideation to dev-ready specs | spec-analyst, spec-architect, spec-planner |
| semantic-search | RAG-powered semantic code search (finds code by meaning, not keywords) | semantic-search-reader, semantic-search-indexer |
Key Features:
Quick Examples:
research quantum computing fundamentals β multi-agent-researcher
plan a task management PWA with offline β spec-workflow-orchestrator
find authentication logic in the codebase β semantic-search
research auth methods and build login page β asks which skill to use
See Planning Workflow and CHANGELOG.md for details.
Required for All Features:
python3 command available in PATH
python3 --version (should show 3.8 or higher)Additional for Semantic-Search Skill (optional):
The semantic-search skill implements RAG (Retrieval-Augmented Generation) - an AI technique that finds relevant code by understanding meaning rather than matching keywords. It converts code into vector embeddings and uses semantic similarity to retrieve contextually relevant chunks when you ask questions in natural language.
google/embeddinggemma-300m (768 dimensions)~/.claude_code_search/models/β Fully Supported:
mps:0 device for optimal performanceIndex Type: Uses IndexFlatIP (FAISS) - simple, reliable, cross-platform compatible
Choose one installation method based on your needs:
π Quick Decision Guide:
| Scenario | Installation Method |
|---|---|
| Add skills to one existing project | Option 1: Project Skills |
| Make skills available to all projects | Option 2: Personal Skills |
| Explore this repository standalone | Option 3: Standalone Usage |
Use Case: Add multi-agent research, planning, and semantic search to an existing Claude Code project.
How It Works: Claude Code auto-discovers skills in .claude/skills/ directory. No manual configuration needed.
# Navigate to your existing project
cd ~/my-existing-project
# Clone into .claude/skills/ directory
mkdir -p .claude/skills
cd .claude/skills
git clone https://github.com/ahmedibrahim085/Claude-Multi-Agent-Research-System-Skill.git
Optional: Enable semantic-search skill
Note: The multi-agent-researcher and spec-workflow-orchestrator skills work immediately. Only install if you want semantic code search.
# Clone Python library to standard location (one-time, 30 seconds)
git clone https://github.com/FarhanAliRaza/claude-context-local.git ~/.local/share/claude-context-local
That's it! Start Claude Code in your project:
cd ~/my-existing-project
claude
The SessionStart hook will automatically initialize all skills.
Optional: Import Orchestration Rules
If you want to use this project's orchestration rules (auto-skill-activation hooks) in your existing project:
# Add to your project's .claude/CLAUDE.md
@import .claude/skills/Claude-Multi-Agent-Research-System-Skill/.claude/CLAUDE.md
This imports the trigger keyword system that auto-activates skills based on your requests (e.g., "research X" β multi-agent-researcher, "plan feature Y" β spec-workflow-orchestrator).
Use Case: Make skills available to all your Claude Code projects (system-wide installation).
How It Works: Claude Code auto-discovers skills in ~/.claude/skills/ and makes them available to every project.
# Clone into personal skills directory
mkdir -p ~/.claude/skills
cd ~/.claude/skills
git clone https://github.com/ahmedibrahim085/Claude-Multi-Agent-Research-System-Skill.git
# Optional: Enable semantic-search
git clone https://github.com/FarhanAliRaza/claude-context-local.git ~/.local/share/claude-context-local
That's it! Skills are now available in every Claude Code project:
cd ~/any-project
claude
# Skills automatically available
Note: Personal skills don't include project-specific hooks or CLAUDE.md rules. You'll need to manually invoke skills using the Skill tool or add @import statements to individual projects.
Use Case: Explore this repository as a dedicated research/planning workspace.
git clone https://github.com/ahmedibrahim085/Claude-Multi-Agent-Research-System-Skill.git
cd Claude-Multi-Agent-Research-System-Skill
# Optional: Enable semantic-search
git clone https://github.com/FarhanAliRaza/claude-context-local.git ~/.local/share/claude-context-local
# Start Claude Code
claude
Full Experience: This option includes:
/research-topic, /plan-feature, /project-status, /verify-structure)Automatic Initialization: The SessionStart hook runs on every claude command and:
files/research_notes/, files/reports/, logs/)No Manual Configuration: Hooks are pre-configured in .claude/settings.json and work out-of-the-box.
First-Time Semantic Search: The embedding model (~1.2GB) downloads automatically on first use (10-30 minutes). Subsequent uses are instant. Model cached at ~/.claude_code_search/models/.
Semantic Search Details:
sys.path.insert()uv neededLicense Note: claude-context-local is GPL-3.0. Our project imports it via PYTHONPATH (dynamic linking), preserving our Apache 2.0 license. See docs/architecture/MCP-DEPENDENCY-STRATEGY.md for details.
Important: Do not duplicate hooks in settings.local.json to avoid duplicate hook executions.
For Option 2 (Personal Skills) and when integrating skills into existing projects, add the following to your project's .claude/CLAUDE.md to help Claude understand the available skills:
## Multi-Agent Research System Skills
This project has access to 3 specialized skills with hook-based auto-activation:
| Skill | Purpose | Trigger |
|-------|---------|---------|
| multi-agent-researcher | Research requiring 2+ sources, synthesis | "research...", "investigate..." |
| spec-workflow-orchestrator | Feature planning, specs, ADRs | "plan...", "design...", "spec..." |
| semantic-search | Find code by meaning, not keywords | "find...", "where is...", "how does..." |
**Usage**: Skills auto-activate via hooks when trigger keywords detected.
Manual invocation: Use `/research-topic`, `/plan-feature`, or `/semantic-search`.
**Documentation**: See skill SKILL.md files for detailed workflows.
Automated Setup: Run python3 setup.py --repair to automatically add skill instructions to your project's CLAUDE.md.
If you already have semantic-search prerequisites from another project:
The semantic-search skill uses global shared components (Python library + embedding model). If you've used this skill in any project before, new projects automatically detect and reuse these components.
Expected Flow:
$ git clone https://github.com/ahmedibrahim085/Claude-Multi-Agent-Research-System-Skill.git
$ cd Claude-Multi-Agent-Research-System-Skill
$ claude
# Output (automatic):
π Detecting semantic-search prerequisites...
β Semantic-search prerequisites found (using global components)
π Indexing project in background...
π Session logs: logs/session_...
# You can start working immediately!
# Index completes in background (~3-10 min)
What Gets Auto-Detected:
| Component | Location | Size |
|---|---|---|
| Python library | ~/.local/share/claude-context-local/ | ~500KB |
| Embedding model | ~/.claude_code_search/models/ | ~1.2GB |
| Project index | ~/.claude_code_search/projects/{project}_{hash}/ | Per-project |
If Auto-Detection Fails (verify-setup diagnostic):
# Quick diagnostic (5 checks, instant)
.claude/skills/semantic-search/scripts/verify-setup
# Full prerequisite check (25 checks, ~10 sec)
.claude/skills/semantic-search/scripts/check-prerequisites
Quick Answer: This project uses orchestrated multi-agent research instead of single-query web search.
Direct Approach (typing "tell me about quantum computing"):
You β Claude β 1-2 WebSearch calls β Summary
Time: 30-60 seconds
Depth: Limited to what fits in single response
Sources: 2-3 quick sources
This Skill (typing "research quantum computing"):
You β Orchestrator β Decomposes into 3-4 subtopics
β Spawns 4 researcher agents (parallel)
β Each does multi-source research
β Report-writer synthesizes findings
β Comprehensive cross-referenced report
Time: 5-8 minutes
Depth: Multi-source, peer-reviewed quality
Sources: 8-15 authoritative sources per topic
Audit Trail: Session logs + research notes + final report
When to Use This Skill:
| Scenario | Use This Skill | Use Direct Approach |
|---|---|---|
| In-depth research (2+ sources needed) | β Yes | β Too shallow |
| Comprehensive coverage important | β Yes | β Incomplete |
| Need audit trail for compliance | β Yes | β No logs |
| Quick factual question | β Overkill | β Yes |
| Simple documentation lookup | β Too slow | β Yes |
Example Comparison:
Direct: "What is quantum entanglement?"
β 45 seconds
β 1 paragraph summary
β 2 sources
This Skill: "research quantum entanglement"
β 6 minutes
β 4 research notes (foundations, experiments, applications, implications)
β 1 synthesis report cross-referencing all findings
β 12 authoritative sources
β Complete session logs
Bottom Line: Use this when you need comprehensive, well-researched, auditable findings. Use direct questions for quick factual lookups.
Try this example:
research quantum computing fundamentals
What Happens:
files/research_notes/Expected Timing:
| Stage | First Run | Subsequent Runs |
|---|---|---|
| Setup (directory creation, session init) | ~2-3 seconds | ~1 second |
| Research (4 agents in parallel) | 3-5 minutes | 3-5 minutes |
| Synthesis (report-writer) | 1-2 minutes | 1-2 minutes |
| Total | 5-8 minutes | 4-6 minutes |
First-Time Setup Messages:
On your very first run, you'll see:
π§ First-time setup detected
β
Created settings.local.json from template
β
Created directories: files/research_notes/, files/reports/, logs/
π Session logs initialized: logs/session_20251216_150000_*
Expected Output:
π Session logs initialized: logs/session_YYYYMMDD_HHMMSS_{transcript.txt,tool_calls.jsonl,state.json}
# Research Complete: Quantum Computing Fundamentals
Comprehensive research completed with 3 specialized researchers.
## Key Findings
1. [Finding from researcher 1]
2. [Finding from researcher 2]
3. [Finding from researcher 3]
## Files Generated
**Research Notes**: `files/research_notes/`
- quantum-computing-fundamentals-basics_YYYYMMDD-HHMMSS.md
- quantum-computing-fundamentals-hardware_YYYYMMDD-HHMMSS.md
- quantum-computing-fundamentals-algorithms_YYYYMMDD-HHMMSS.md
**Final Report**: `files/reports/quantum-computing-fundamentals_YYYYMMDD-HHMMSS.md`
Where to Find Results:
files/research_notes/{subtopic}_YYYYMMDD-HHMMSS.mdfiles/reports/{topic}_YYYYMMDD-HHMMSS.mdlogs/session_YYYYMMDD_HHMMSS_{transcript.txt,tool_calls.jsonl,state.json}What If Something Fails?:
Import errors on startup:
python3 setup.py --repair
Research produces no results:
echo $ANTHROPIC_API_KEYcat logs/session_*_transcript.txt | tail -50Takes longer than expected:
Ctrl+C and use partial resultsfiles/research_notes/ for individual findingsDirect approach:
User: "Tell me about quantum computing"
β Claude does 1-2 WebSearch calls
β Returns summary from top results
β Limited depth, single perspective
This orchestrated approach:
User: "Research quantum computing"
β Decomposes into 3-4 subtopics (basics, hardware, algorithms, applications)
β Spawns 3-4 researcher agents in parallel
β Each agent conducts focused, multi-source research
β Report-writer synthesizes comprehensive findings
β Cross-referenced, authoritative sources
When direct tools are sufficient: Single factual questions ("What is X?"), quick documentation lookups, specific URL fetches.
The Model Context Protocol (MCP)[2] is Anthropic's open standard for connecting AI systems to data sources through servers.
MCP Approach (agent as MCP server):
This Orchestrated Approach:
allowed-tools constraint[4]Example:
MCP Approach:
User: "research quantum computing"
β Claude calls researcher-mcp-tool (maybe)
β Claude writes synthesis itself (no delegation enforcement)
β May skip decomposition or parallel execution
β Workflow depends on prompt compliance
This Approach:
User: "research quantum computing"
β Orchestrator MUST decompose (Phase 1)
β Orchestrator MUST spawn researchers in parallel (Phase 2)
β Orchestrator CANNOT write synthesis - lacks Write tool (architectural constraint)
β Orchestrator MUST delegate to report-writer agent (Phase 3)
β Workflow enforced by architecture, not prompts
Sequential Approach (original SDK pattern[5]):
Parallel Orchestration (this project):
Additional benefits:
# From SKILL.md frontmatter:
allowed-tools: Task, Read, Glob, TodoWrite
# Note: Write is deliberately excluded
Every tool call is logged to:
transcript.txt - human-readable session logtool_calls.jsonl - structured JSON for analysisEnables:
Before synthesis:
This architecture is overkill for:
Use direct tools (WebSearch, WebFetch) for these instead.
Use this architecture when:
The orchestrated multi-agent workflow has four enforced phases:
Orchestrator:
Example:
Query: "Research quantum computing"
β Subtopics:
1. Theoretical foundations (qubits, superposition, entanglement)
2. Hardware implementations (superconducting, ion trap, topological)
3. Algorithms & applications (Shor's, Grover's, VQE, QAOA)
Orchestrator spawns all researchers simultaneously:
# Conceptual (actual implementation uses Task tool)
spawn_parallel([
researcher(topic="Theoretical foundations", context="quantum computing"),
researcher(topic="Hardware implementations", context="quantum computing"),
researcher(topic="Algorithms & applications", context="quantum computing")
])
Each researcher:
files/research_notes/{subtopic-slug}.mdParallelism: Claude Code supports up to 10 concurrent tasks[6]; excess tasks are queued.
β οΈ Architectural Enforcement Active
The orchestrator does not have Write tool access (see allowed-tools in SKILL.md). This architectural constraint physically prevents the orchestrator from writing synthesis reports.
Enforced workflow:
files/reports/{topic}_{timestamp}.md (Write tool)Cannot be bypassed: Attempting to write reports from orchestrator results in tool permission error.
Orchestrator:
The spec-workflow-orchestrator skill provides comprehensive project planning from ideation to development-ready specifications.
User: "build a task tracker app"
β
1. ANALYZE β spec-analyst gathers requirements
β User stories with acceptance criteria
β Functional/non-functional requirements
β
2. ARCHITECT β spec-architect designs system
β Component architecture
β Technology recommendations
β Architecture Decision Records (ADRs)
β
3. PLAN β spec-planner breaks down tasks
β Implementation tasks with dependencies
β Complexity estimates
β Suggested implementation order
β
4. VALIDATE β Quality gate (85% threshold)
docs/projects/{project-slug}/| File | Content |
|---|---|
docs/projects/{slug}/requirements.md | User stories, acceptance criteria |
docs/projects/{slug}/architecture.md | System design, components |
docs/projects/{slug}/tasks.md | Implementation tasks with dependencies |
docs/adrs/*.md | Architecture Decision Records |
# Archive a project
.claude/utils/archive_project.sh task-tracker-pwa
# List archives
.claude/utils/list_archives.sh task-tracker-pwa
# Restore from archive
.claude/utils/restore_archive.sh task-tracker-pwa 20251120-103602
# Manage workflow state
.claude/utils/workflow_state.sh set "task-tracker-pwa" "refinement" "Add offline"
.claude/utils/workflow_state.sh get "mode"
.claude/utils/workflow_state.sh show
.claude/utils/workflow_state.sh clear
See PRODUCTION_READY_SUMMARY.md for detailed implementation status.
RAG (Retrieval-Augmented Generation) combines two AI capabilities to provide intelligent, context-aware responses:
Retrieval: Search a knowledge base for relevant information using semantic similarity
Augmentation: Provides retrieved context to the language model for accurate responses
Why RAG for Code Search?
Traditional keyword search fails when code uses different terminology:
"authentication" β Misses signin(), verifyUser(), auth_middleware"database" β Misses Repository, ORM, queryBuilder, DataSource"error handling" β Misses try/catch, Result<T>, Exception, panicRAG understands meaning, not just words:
"find authentication logic"signin, verify, authorizeReal Example:
Traditional grep: "authentication" β 12 matches, 8 false positives (documentation, comments)
Semantic RAG: "auth logic" β 15 semantically relevant code chunks, 0 false positives
Semantic-search is automatically activated when your prompt contains these patterns (37+ keywords):
Search Operations (18 keywords):
"search for", "find", "locate", "show me", "where is"
"look for", "get me", "retrieve", "fetch", "discover"
"search code", "code search", "find code"
"show implementation", "find implementation"
"what code", "which files"
Code Discovery (10 keywords):
"how does", "what does", "explain"
"similar to", "like this code", "resembles"
"examples of", "patterns for"
"find similar", "similar files"
Index Operations (9 keywords):
"reindex", "index", "rebuild index"
"update index", "incremental reindex"
"index status", "check index"
"what's indexed", "indexed projects"
Examples:
β
"search for authentication logic" β semantic-search-reader
β
"find database query patterns" β semantic-search-reader
β
"reindex the project" β semantic-search-indexer
β
"show me error handling code" β semantic-search-reader
β
"find similar implementations to auth.py" β semantic-search-reader
β
"what's the index status?" β semantic-search-indexer
β
"how does the login system work" β semantic-search-reader
Note: Full trigger list in .claude/skills/skill-rules.json (semantic-search section, 69 keywords + 27 patterns)
The semantic-search skill uses two specialized agents with distinct responsibilities:
| Agent | Operations | Triggers | Prerequisites | Output |
|---|---|---|---|---|
| semantic-search-indexer | Build/update vector database | index, reindex, status, incremental-reindex | None (creates index if missing) | FAISS index, cache files, state tracking |
| semantic-search-reader | Search and retrieve code | search, find-similar, list-projects | Project must be indexed (auto-triggers indexer if needed) | Ranked code chunks with relevance scores |
Indexer Operations:
Reader Operations:
"find authentication logic")"similar to auth.py")Auto-Triggering:
The RAG system operates in two main modes: Index Building (offline, happens once or on changes) and Search & Retrieval (online, happens on each query).
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SEMANTIC-SEARCH RAG WORKFLOW β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
PHASE 1: INDEX BUILDING (Offline - Once per project, updates on changes)
βββββββββββββββ ββββββββββββββββ βββββββββββββββββ
β Code Files βββββββΆβ Chunking βββββββΆβ Embeddings β
β (.py, .js, β β (functions, β β (768-dim β
β .ts, etc) β β classes, β β vectors) β
βββββββββββββββ β blocks) β βββββββββ¬ββββββββ
ββββββββββββββββ β
15+ languages β
βΌ
βββββββββββββββββ
β FAISS Index β
β (IndexFlatIP) β
β + Cache β
βββββββββββββββββ
Merkle tree tracks
changes for smart
incremental updates
PHASE 2-4: SEARCH & RETRIEVAL (Online - Every query)
βββββββββββββββββββ ββββββββββββββββ ββββββββββββββ
β User Query βββββββΆβ Query βββββββΆβ Vector β
β "find auth β β Embedding β β Search β
β logic" β β (same model) β β (cosine β
βββββββββββββββββββ ββββββββββββββββ β similarityβ
ββββββββ¬ββββββ
β
βΌ
βββββββββββββββββββ ββββββββββββββββ ββββββββββββββ
β Claude + ββββββββ Retrieved ββββββββ Ranked β
β Context β β Chunks β β Results β
β (Augmented β β (with file β β (Top-k β
β Response) β β paths) β β similar) β
βββββββββββββββββββ ββββββββββββββββ ββββββββββββββ
When it runs: First use, file changes (5-min cooldown), session start
Process:
Code Chunking: Splits code files into meaningful chunks
Embedding Generation: Converts chunks into 768-dimensional vectors
google/embeddinggemma-300m (1.2GB, one-time download)Vector Storage: Builds FAISS index for fast similarity search
Smart Caching: Merkle tree tracks file changes
Output: ~/.claude_code_search/projects/{project}/index.faiss + metadata
When it runs: Every search query
Process:
Trigger Detection: Hook identifies semantic-search intent
"find authentication logic"Agent Selection: Routes to semantic-search-reader
Query Embedding: Converts natural language query to vector
embeddinggemma-300m)"find authentication logic" β 768-dim vectorProcess:
Vector Similarity Search: Compares query vector with all code vectors
similarity = dot(query_vec, code_vec) / (||query_vec|| * ||code_vec||)Ranking: Orders results by relevance score
Context Extraction: Retrieves full chunk content with metadata
src/auth/login.pyOutput: Ranked list of code chunks with file locations
Process:
Context Assembly: Combines query + retrieved chunks
"find authentication logic"LLM Augmentation: Claude receives query + context
Response Generation: Claude provides accurate, project-specific answer
Example Output:
Claude: I found your authentication logic across 3 files:
1. src/auth/login.py:45-67 - Main login function with JWT generation
2. src/middleware/auth.ts:12-34 - Express middleware for token validation
3. src/utils/tokens.py:78-95 - Token refresh and expiration handling
The login flow uses JWT tokens with 24-hour expiration...
Automatic Index Management
Smart Caching & Performance
Cross-Platform Compatibility
Multi-Language Support
Large Codebase Support
Comprehensive Decision Tracing
Semantic Understanding (Not Just Keywords)
Traditional grep:
$ grep -r "authentication" .
# Finds: 12 matches
# Misses: signin(), verifyUser(), auth_middleware, validateToken()
# False positives: Comments, documentation, variable names
Semantic RAG:
You: "find authentication logic"
# Finds: All auth-related code regardless of terminology
# Includes: login(), signin(), authenticate(), verifyUser(),
# auth_middleware, validateToken(), checkSession()
# Zero false positives: Only actual implementation code
Massive Token Savings
No False Positives
"error" matches comments, strings, logs, tests"error handling patterns" retrieves only actual error handling codeNatural Language Queries
"how does login work", "where are API calls made"Context-Aware Results
The project includes a comprehensive test suite following a 3-layer architecture for AI agent systems:
| Layer | Tests | Purpose |
|---|---|---|
| Infrastructure | 158 | Hook behavior (148), utilities (10) |
| Behavior | 22 | Agent structure, file validation |
| Integration | Manual | Deliverable format, ADR compliance (require skill output) |
| Quality | Manual | Human evaluation of content quality |
# Layer 1: Infrastructure tests (tests/common/)
python3 tests/common/e2e_hook_test.py
./tests/common/test_production_implementation.sh
# Layer 2: Structural validation
./tests/common/test_agent_structure.sh
./tests/spec-workflow/test_deliverable_structure.sh integration-test-hello-world
python3 tests/spec-workflow/test_adr_format.py integration-test-hello-world
# Integration: API-based E2E (requires ANTHROPIC_API_KEY)
python3 tests/spec-workflow/test_skill_integration.py --dry-run # Without API
python3 tests/spec-workflow/test_skill_integration.py --quick # With API
See tests/TEST_ARCHITECTURE.md for detailed documentation on:
Total: 180 automated tests (run without user input)
.
βββ .claude/
β βββ agents/ # Agent definitions
β β βββ researcher.md # Research skill
β β βββ report-writer.md # Research skill
β β βββ spec-analyst.md # Planning skill (v2.2.0)
β β βββ spec-architect.md # Planning skill (v2.2.0)
β β βββ spec-planner.md # Planning skill (v2.2.0)
β βββ commands/ # Slash commands (v2.2.0)
β β βββ plan-feature.md
β β βββ project-status.md
β β βββ research-topic.md
β β βββ verify-structure.md
β βββ hooks/ # Python hook scripts
β β βββ user-prompt-submit.py # Universal skill activation (v2.2.0)
β β βββ session-start.py
β β βββ post-tool-use-track-research.py
β βββ skills/
β β βββ multi-agent-researcher/
β β β βββ SKILL.md
β β βββ spec-workflow-orchestrator/ # (v2.2.0)
β β β βββ SKILL.md
β β βββ skill-rules.json # Trigger configuration
β βββ utils/ # Production utilities (v2.2.0)
β β βββ archive_project.sh
β β βββ restore_archive.sh
β β βββ list_archives.sh
β β βββ workflow_state.sh
β β βββ detect_next_version.sh
β βββ settings.json # Hooks configuration (committed)
β βββ settings.local.json # User overrides (gitignored)
β βββ config.json # Path & research configuration
βββ files/
β βββ research_notes/ # Individual researcher outputs
β βββ reports/ # Synthesis reports
βββ docs/
β βββ projects/ # Planning outputs (v2.2.0)
β βββ adrs/ # Architecture Decision Records (v2.2.0)
βββ logs/ # Session logs + state
β βββ session_*_{transcript,tool_calls,state}.*
β βββ state/current.json # Active skill pointer
βββ setup.py # Interactive setup script
Complete reference of all files and their roles:
| File/Directory | Purpose | Type | User Action |
|---|---|---|---|
| Core Skill Files | |||
.claude/skills/multi-agent-researcher/SKILL.md | Skill definition with allowed-tools constraint that enforces workflow | Skill Definition | View/Customize |
.claude/skills/spec-workflow-orchestrator/SKILL.md | Planning orchestrator (v2.2.0) | Skill Definition | View/Customize |
.claude/agents/researcher.md | Instructions for researcher agents (web research, note-taking) | Agent Definition | View/Customize |
.claude/agents/report-writer.md | Instructions for report-writer agent (synthesis, cross-referencing) | Agent Definition | View/Customize |
.claude/agents/spec-analyst.md | Requirements gathering (v2.2.0) | Agent Definition | View/Customize |
.claude/agents/spec-architect.md | System design (v2.2.0) | Agent Definition | View/Customize |
.claude/agents/spec-planner.md | Task breakdown (v2.2.0) | Agent Definition | View/Customize |
| Hook System (Enforcement & Tracking) | |||
.claude/hooks/user-prompt-submit.py | Universal skill activation (v2.2.0) | Hook Script | Advanced Only |
.claude/hooks/post-tool-use-track-research.py | Logs every tool call, identifies agents, enforces quality gates | Hook Script | Advanced Only |
.claude/hooks/session-start.py | Auto-creates directories, restores sessions, displays status | Hook Script | Advanced Only |
.claude/settings.json | Registers hooks with Claude Code (committed to repo) | Settings | Caution |
.claude/settings.local.json | User-specific overrides (gitignored, optional) | Settings | Optional |
Key:
Configured in .claude/config.json:
{
"paths": {
"research_notes": "files/research_notes",
"reports": "files/reports",
"logs": "logs",
"state": "logs/state"
},
"logging": {
"enabled": true,
"format": "flat",
"log_tool_calls": true
},
"research": {
"max_parallel_researchers": 4,
"require_synthesis_delegation": true,
"quality_gates_enabled": true
}
}
Override configuration without editing config.json:
Path Overrides:
export RESEARCH_NOTES_DIR=/custom/path/notes # Default: files/research_notes
export REPORTS_DIR=/custom/path/reports # Default: files/reports
export LOGS_DIR=/custom/path/logs # Default: logs
export STATE_DIR=/custom/path/state # Default: logs/state
Research Settings:
export MAX_PARALLEL_RESEARCHERS=2 # Default: 4 (range: 1-10)
Logging Settings:
export LOGGING_ENABLED=false # Default: true
Priority Order (highest to lowest):
.claude/config.json valuesUsage Example:
# Customize paths for this session
export RESEARCH_NOTES_DIR=/tmp/research
export REPORTS_DIR=/tmp/reports
export MAX_PARALLEL_RESEARCHERS=2
# Start Claude Code with custom config
claude
Verification:
# Test that env vars are loaded
python3 -c "import sys; sys.path.insert(0, '.claude/utils'); \
from config_loader import load_config; \
import os; os.environ['RESEARCH_NOTES_DIR'] = '/test'; \
print(load_config()['paths']['research_notes'])"
# Should output: /test
Then restart Claude Code to apply changes.
The semantic-search skill implements RAG (Retrieval-Augmented Generation) for intelligent code search. It converts code into vector embeddings to find semantically similar content based on meaning, not just keyword matching:
Model Details:
google/embeddinggemma-300m (768-dimensional embeddings)~/.claude_code_search/models/models--google--embeddinggemma-300mFirst-Time Usage:
You: "search for user authentication logic"
Claude: Starting semantic search...
[Downloads model: 10-30 minutes]
Indexing project files...
Search complete.
Subsequent Usage:
You: "search for database queries"
Claude: Starting semantic search...
[Uses cached model: ~2 seconds]
Search complete.
Storage Requirements:
~/.claude_code_search/models/)~/.claude_code_search/projects/{project}/)Manual Model Management:
# Check if model is downloaded
ls -lh ~/.claude_code_search/models/models--google--embeddinggemma-300m/
# Check model size
du -sh ~/.claude_code_search/models/
# Remove model (will re-download on next use)
rm -rf ~/.claude_code_search/models/
# Remove all indexes (safe, will rebuild on demand)
rm -rf ~/.claude_code_search/projects/
Performance Notes:
mps:0 deviceTroubleshooting:
~/.claude_code_search/models/ and retryFor custom configuration:
python3 setup.py # Interactive setup with prompts
python3 setup.py --verify # Check setup without changes
python3 setup.py --repair # Auto-fix issues
The setup script allows you to:
Three settings files work together - understanding their roles prevents configuration errors:
| File | Purpose | Location | User Action | Committed to Git |
|---|---|---|---|---|
.claude/settings.json | Golden configuration (hooks, permissions, tools) | Project root | β DO NOT EDIT | β Yes |
.claude/settings.template.json | Template for first-time setup | Project root | β DO NOT EDIT | β Yes |
.claude/settings.local.json | User-specific overrides (gitignored) | Project root | β Safe to customize | β No (gitignored) |
How They Work Together:
claude run: session-start.py hook copies settings.template.json β settings.local.jsonsettings.json (hooks) + settings.local.json (overrides)settings.json, NOT settings.local.jsonβ οΈ CRITICAL: Do NOT Duplicate Hooks
If you create or edit .claude/settings.local.json, REMOVE any hooks section:
{
"// WRONG - This will break things": "",
"hooks": {
"UserPromptSubmit": ".../.claude/hooks/user-prompt-submit.py"
}
}
Why? Hooks are already in settings.json. Duplicating them causes:
Safe settings.local.json Example:
{
"permissions": {
"allowedDomains": ["example.com", "mycompany.com"]
}
}
When to Edit Each File:
settings.json: Never (managed by project maintainers)settings.template.json: Never (template only)settings.local.json: Customize paths/permissions (no hooks!)Common issues and solutions for first-time users:
Symptom: After cloning, you see β οΈ Semantic-search prerequisites not found even though you have prerequisites installed from another project.
Cause: The state file may have stale data from git or the check-prerequisites script isn't finding global components.
Solution - Quick Diagnostic:
# Run quick verification (5 checks)
.claude/skills/semantic-search/scripts/verify-setup
# If issues found, run full check
.claude/skills/semantic-search/scripts/check-prerequisites
Solution - Manual State Reset:
# Delete stale state file (will regenerate on next session)
rm -f logs/state/semantic-search-prerequisites.json
# Restart Claude Code
claude
# Should now show: β Semantic-search prerequisites found
Expected Output After Fix:
π Detecting semantic-search prerequisites...
β Semantic-search prerequisites found (using global components)
π Indexing project in background...
Symptoms:
ImportError: No module named 'state_manager'ImportError: No module named 'session_logger'logs/ directorySolution:
python3 setup.py --repair
This validates and fixes:
Manual Verification:
# Check Python version
python3 --version # Should show 3.8+
# Check utility modules exist
ls -la .claude/utils/*.py
# Check hooks are executable
ls -la .claude/hooks/*.py # Should show -rwxr-xr-x
# Test session-start hook manually
python3 .claude/hooks/session-start.py
Symptom: Error during semantic-search: "Failed to import dependencies" or "claude-context-local is not installed"
Solution: Clone the Python library:
git clone https://github.com/FarhanAliRaza/claude-context-local.git \
~/.local/share/claude-context-local
# Verify installation
ls -la ~/.local/share/claude-context-local/
Important: No venv, no pip install, no uv needed. Just clone!
Symptom 1: Slow first semantic-search (10-30 minutes)
Solution: This is NORMAL - the 1.2GB embedding model downloads automatically on first use. Subsequent searches are instant (~2 seconds).
Symptom 2: Download fails or hangs
Solutions:
# Check disk space (needs 1.5GB+)
df -h ~
# Check internet connection
curl -I https://huggingface.co
# Remove corrupted download and retry
rm -rf ~/.claude_code_search/models/
# Then retry semantic-search
Symptoms:
logs/ directorySolutions:
Check settings.json exists:
cat .claude/settings.json | head -20
# Should show hooks configuration
Check hooks are executable:
ls -la .claude/hooks/*.py
# Should show -rwxr-xr-x (executable)
Manually test hooks:
python3 .claude/hooks/session-start.py
# Should create directories and show status
Check for Python errors:
python3 -c "import sys; sys.path.insert(0, '.claude/utils'); import state_manager"
# Should return no errors
Symptoms:
files/reports/Possible Causes & Solutions:
API quota exceeded:
# Check API key is set
echo $ANTHROPIC_API_KEY # Should not be empty
Web search disabled:
# Check permissions in settings.json
grep -A5 '"permissions"' .claude/settings.json
# Should show WebSearch allowed
Write permissions:
# Check directories are writable
ls -ld files/research_notes/ files/reports/
# Should show drwxr-xr-x (writable)
Review session logs:
# Check latest session for errors
cat logs/session_*_transcript.txt | tail -50
# Look for "Error" or "β οΈ" messages
Symptom: Research takes longer than expected (>10 minutes)
Possible Causes:
Not a Problem: Research quality > speed. You can interrupt with Ctrl+C and use partial results from files/research_notes/.
Optimization Tips:
# Reduce parallel researchers in config.json
# Change from 4 to 2 for slower connections
"max_parallel_researchers": 2
Symptoms:
Solution - Clear state (safe to delete):
# Remove all state files
rm -f logs/state/*.json logs/session_*
# Restart Claude Code - fresh state will be created
claude
What gets reset:
What's preserved:
Symptoms:
Solution - Start Claude Code from project root:
# WRONG - Don't start from parent or subdirectory
cd ~/projects/
claude # β Wrong working directory
# RIGHT - Start from project root
cd ~/projects/Claude-Multi-Agent-Research-System-Skill/
claude # β
Correct
Why: All paths in config.json are relative to project root. Hooks use Path(__file__).parent.parent.parent to find project root.
Symptom: Semantic-search commands fail or produce no results
Diagnostic Checklist:
# 1. Check claude-context-local is installed
ls -la ~/.local/share/claude-context-local/
# Should show directories: merkle/, chunking/, embeddings/
# 2. Check embedding model is downloaded
ls -la ~/.claude_code_search/models/models--google--embeddinggemma-300m/
# Should show model files (1.2GB total)
# 3. Check project is indexed
ls -la ~/.claude_code_search/projects/*/
# Should show index files for your project
# 4. Test indexing manually
python3 .claude/skills/semantic-search/scripts/incremental-reindex $(pwd)
# Should show indexing progress
# 5. Test search manually
python3 .claude/skills/semantic-search/scripts/search $(pwd) "test query"
# Should return results
Symptom: Semantic-search fails with git-related errors
Solution: Install git:
# macOS
brew install git
# Linux (Debian/Ubuntu)
sudo apt-get install git
# Linux (RHEL/CentOS)
sudo yum install git
# Verify
git --version
Why needed: Semantic-search uses git rev-parse to find project root.
Enable detailed logging:
# Check config.json has logging enabled
grep -A3 '"logging"' .claude/config.json
Review session logs:
ls -lt logs/session_* | head -3
# Check most recent session logs
Run full diagnostic:
python3 setup.py --verify
# Shows detailed system status
Check prerequisites:
python3 --version # 3.8+
git --version # Any version
which bash # /bin/bash or similar
df -h ~ # >1.5GB free
ADR-001: Direct Script vs Agent for Auto-Reindex (Full ADR | Quick Reference)
Decision: Use direct bash scripts for automatic reindex operations (session start, post-write hooks)
Key Metrics:
Agent Use: Reserved for manual operations where intelligence and rich output add value (user explicitly invokes reindex, troubleshooting, diagnostics)
This project adapts the multi-agent research pattern from Anthropic's research-agent demo[5] for Claude Code's skill system.
| Feature | Reference (Python SDK) | This Project (Claude Code) |
|---|---|---|
| Platform | Python Agent SDK (standalone) | Claude Code Skill (integrated) |
| Hooks | Python SDK hooks (HookMatcher) | Shell-based hooks (Python scripts) |
| Enforcement | Behavioral (via prompts) | Architectural (via allowed-tools ~95% reliability)[4] |
| Logging | SDK-managed with parent_tool_use_id | Custom hooks with heuristic agent detection |
| Agent Identification | SDK's parent_tool_use_id field | File path + tool usage heuristics |
| Configuration | Python code | JSON config + environment variables |
| Deployment | Standalone Python app | Claude Code skill + hooks |
| Session Logs | Nested directories | Flat structure (configurable) |
| Setup | Manual installation | Automatic first-time setup |
Use Reference Implementation If:
Use This Implementation If:
allowed-tools ConstraintFrom .claude/skills/multi-agent-researcher/SKILL.md:
---
name: multi-agent-researcher
allowed-tools: Task, Read, Glob, TodoWrite
---
When this skill is active, Claude can only use the listed tools[4]. The Write tool is deliberately excluded, making it architecturally impossible for the orchestrator to write synthesis reports.
Reliability: ~95% (cannot be bypassed through prompt injection).
From .claude/skills/spec-workflow-orchestrator/SKILL.md:
---
name: spec-workflow-orchestrator
allowed-tools: Task, Read, Glob, TodoWrite, Write, Edit
---
Spec skill has Write access - enforcement is via quality gates (85% threshold), not tool restriction. Orchestrator delegates to spec-analyst β spec-architect β spec-planner sequentially, validating each deliverable before proceeding.
Research Skill - Implemented in hooks:
# Detect orchestrator bypassing report-writer
if synthesis_phase and tool == "Write" and agent == "orchestrator":
violation = "Orchestrator attempted to write synthesis report"
log_violation(violation)
Spec Skill - 85% threshold scoring (100 points total):
| Criteria | Points | Applies To |
|---|---|---|
| Completeness | 25 | All deliverables |
| Technical Depth | 25 | Architecture, ADRs |
| Actionability | 25 | Tasks, requirements |
| Clarity | 25 | All deliverables |
Max 3 iterations per agent. Below threshold β feedback loop β retry.
Tracks active skill and workflow progression for the dual-skill platform.
Current State (logs/state/current.json ~100 bytes):
currentSkill: Which skill is active (multi-agent-researcher or spec-workflow-orchestrator)currentResearch: Active research session details (if research skill)Session History (logs/session_*_state.json):
skillInvocations[]: All skill activations this session (both skills)researchSessions[]: Completed research sessionsEnables:
currentSkill before activating another skillWhy Split Architecture? Claude Code's Read tool has 25K token limit. A single persistent file would fail at ~359 skill invocations. Split keeps current.json tiny (~100 bytes) while session files are bounded per-session.
The hook system is the foundation of enforcement and tracking. Without hooks, this system wouldn't workβallowed-tools constraints prevent unauthorized actions, but hooks provide logging, quality gates, and session management.
Claude Code fires hooks at specific lifecycle events:
Our hooks are registered in .claude/settings.json:
{
"hooks": {
"UserPromptSubmit": [{
"hooks": [{
"type": "command",
"command": "python3 \"$CLAUDE_PROJECT_DIR/.claude/hooks/user-prompt-submit.py\""
}]
}],
"PostToolUse": [{
"hooks": [{
"type": "command",
"command": "python3 \"$CLAUDE_PROJECT_DIR/.claude/hooks/post-tool-use-track-research.py\""
}]
}],
"SessionStart": [{
"hooks": [{
"type": "command",
"command": "python3 \"$CLAUDE_PROJECT_DIR/.claude/hooks/session-start.py\""
}]
}]
}
}
Runs BEFORE every user prompt is processed to enforce skill activation.
Responsibilities:
post-tool-use-track-research.py)Runs after EVERY tool call to provide comprehensive tracking and enforcement.
Responsibilities:
Agent Identification
# Heuristics to identify which agent made the call
if tool == "Task" and "subagent_type" in input:
agent = "orchestrator"
elif file_path.startswith("files/research_notes/"):
agent = "researcher"
elif file_path.startswith("files/reports/"):
agent = "report-writer"
Logging
transcript.txt with human-readable formattool_calls.jsonl with structured JSONQuality Gate Enforcement
# Detect workflow violations
if synthesis_phase and tool == "Write" and agent == "orchestrator":
violation = "Orchestrator attempted synthesis (should use report-writer)"
log_violation(violation)
Skill & Phase Tracking
logs/state/current.json with active skilllogs/session_*_state.jsonExample log entry:
[10:57:22] ORCHESTRATOR β Task β
Input: {"subagent_type": "researcher", "description": "Research quantum computing"}
Output: Success (2.4 KB)
Duration: 1250ms
session-start.py)Runs once when Claude Code session begins.
Responsibilities:
Auto-Setup
# Create directories if missing
create_directory("files/research_notes/")
create_directory("files/reports/")
create_directory("logs/")
create_directory("logs/state/")
Session Initialization
session_20251118_105714)transcript.txt, tool_calls.jsonl, state.json)Session Restoration (if previous session was interrupted)
logs/state/current.json for active skillExample output:
π Session logs initialized: logs/session_20251118_105714_{transcript.txt,tool_calls.jsonl,state.json}
β
All directories exist
β
Hooks configured correctly
The combination of hooks and allowed-tools creates robust enforcement:
| Component | Role | Reliability |
|---|---|---|
allowed-tools: Task, Read, Glob, TodoWrite | Prevents orchestrator from writing reports | ~95% (architectural) |
| PostToolUse quality gates | Detects if violation somehow occurs | ~100% (catches everything) |
| Session state tracking | Verifies all workflow phases complete | ~100% (checks existence) |
Together: ~99%+ enforcement reliability with full audit trail.
User: "research quantum computing"
β
UserPromptSubmit hook fires (v2.2.0)
β Detects research trigger
β Injects skill enforcement reminder
β
SessionStart hook fires
β Creates directories
β Initializes session logs
β Displays status
β
Orchestrator decomposes query
β
Orchestrator spawns researchers (Task tool)
β PostToolUse hook fires
β Identifies agent: orchestrator
β Logs: Task call
β Updates phase: research (in progress)
β
Each researcher conducts research (WebSearch, Write tools)
β PostToolUse hook fires (multiple times)
β Identifies agent: researcher (via file path heuristic)
β Logs: WebSearch + Write calls
β Tracks: research note paths
β
All researchers complete
β
Orchestrator spawns report-writer (Task tool)
β PostToolUse hook fires
β Identifies agent: orchestrator
β Logs: Task call
β Updates phase: synthesis (in progress)
β
Report-writer synthesizes (Read, Write tools)
β PostToolUse hook fires (multiple times)
β Identifies agent: report-writer (via file path heuristic)
β Logs: Read + Write calls
β Updates phase: synthesis (complete)
β
Session ends
β
All tool calls logged β
All phases tracked β
Audit trail complete β
Same pattern for Planning Skill: Replace "research X" β "plan X", researchers β spec-analyst/architect/planner, report-writer β quality gate validation. State tracks currentSkill: spec-workflow-orchestrator.
Without hooks: allowed-tools would prevent violations, but you'd have no logs, no tracking, no session management, no quality gate verification.
With hooks: Complete observability + enforcement + automation.
logs/
βββ session_20251118_105714_transcript.txt # Human-readable
βββ session_20251118_105714_tool_calls.jsonl # Structured JSON
βββ session_20251118_105714_state.json # Session skill/research history
βββ state/
βββ current.json # Active skill pointer (~100 bytes)
Benefits of flat structure:
grep, jq)Research Agent Session Log
Session ID: session_20251118_105714
Started: 2025-11-18T10:57:14.369265
================================================================================
[10:57:22] ORCHESTRATOR β Task β
Input: {"subagent_type": "researcher", "description": "Research theoretical foundations", ...}
Output: Success (2.4 KB)
Duration: 1250ms
[10:58:45] RESEARCHER β WebSearch β
Input: {"query": "quantum computing qubits superposition"}
Output: Found 10 results
Duration: 850ms
[11:02:10] ORCHESTRATOR β Task β
Input: {"subagent_type": "report-writer", ...}
Output: Success (15.2 KB)
Duration: 3400ms
Since Claude Code doesn't provide parent_tool_use_id (SDK feature), agents are identified via:
files/research_notes/ β researcher; files/reports/ β report-writersubagent_type β orchestratorAccuracy: ~90% (trade-off for not requiring SDK).
This project adapts the multi-agent research pattern for Claude Code's skill system, combining patterns from multiple production-proven projects:
DevFlow by Mathew Taylor[8]
allowed-tools constraintstate.jsonClaude-Flow by ruvnet[9]
TDD-Guard by nizos[10]
claude-code-infrastructure-showcase by diet103[11]
skill-rules.json configurationAll projects are MIT, Apache-2.0, or GPL-3.0 licensed and used in compliance with their terms.
Created by Ahmed Maged GitHub: @ahmedibrahim085
This project was conceived, architected, and guided at every step by Ahmed Maged. Implementation was assisted by Claude Code, but all architectural decisions, design choices, and strategic direction came from the author.
Special Acknowledgments:
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
[1] Anthropic. "Introducing Agent Skills." Anthropic News, October 16, 2025. https://www.anthropic.com/news/skills
[2] Anthropic. "Introducing the Model Context Protocol." Anthropic News, November 2024. https://www.anthropic.com/news/model-context-protocol
[3] Anthropic. "Agent Skills - Claude Code Docs." Accessed November 2025. https://code.claude.com/docs/en/skills
[4] Willison, Simon. "Claude Skills are awesome, maybe a bigger deal than MCP." Simon Willison's Weblog, October 16, 2025. https://simonwillison.net/2025/Oct/16/claude-skills/
[5] Anthropic. "How we built our multi-agent research system." Anthropic Engineering Blog, 2025. https://www.anthropic.com/engineering/multi-agent-research-system
[6] "Multi-Agent Orchestration: Running 10+ Claude Instances in Parallel (Part 3)." DEV Community, 2025. https://dev.to/bredmond1019/multi-agent-orchestration-running-10-claude-instances-in-parallel-part-3-29da
[7] Greyling, Cobus. "Orchestrating Parallel AI Agents." Medium, 2025. https://cobusgreyling.medium.com/orchestrating-parallel-ai-agents-dab96e5f2e61
[8] Taylor, Mathew. "DevFlow - Agentic Feature Management." GitHub Repository. https://github.com/mathewtaylor/devflow
[9] ruvnet. "Claude-Flow - Agent Orchestration Platform." GitHub Repository. https://github.com/ruvnet/claude-flow
[10] nizos. "TDD-Guard - TDD Enforcement for Claude Code." GitHub Repository. https://github.com/nizos/tdd-guard
[11] diet103. "Claude Code Infrastructure Showcase." GitHub Repository. https://github.com/diet103/claude-code-infrastructure-showcase
[12] FarhanAliRaza. "claude-context-local - Local Context for Claude." GitHub Repository. https://github.com/FarhanAliRaza/claude-context-local
β Star this repo if you find it useful!
.claude/
agents/
report-writer.md
researcher.md
semantic-search-indexer.md
semantic-search-reader.md
spec-analyst.md
spec-architect.md
spec-planner.md
CLAUDE.md
CLAUDE.md.backup
commands/
plan-feature.md
project-status.md
research-topic.md
verify-structure.md
config.json
hooks/
first-prompt-reindex.py
HOOKS_SETUP.md
post-tool-use-track-research.py
session-end.py
session-start.py
stop.py
user-prompt-submit.py
logs/
session_20251202_105556_tool_calls.jsonl
session_20251202_105556_transcript.txt
session_20251202_105608_tool_calls.jsonl
session_20251202_105608_transcript.txt
session_20251202_105619_tool_calls.jsonl
session_20251202_105619_transcript.txt
session_20251202_105623_tool_calls.jsonl
session_20251202_105623_transcript.txt
session_20251202_105629_tool_calls.jsonl
session_20251202_105629_transcript.txt
session_20251202_105635_tool_calls.jsonl
session_20251202_105635_transcript.txt
session_20251202_105641_tool_calls.jsonl
session_20251202_105641_transcript.txt
session_20251202_105645_tool_calls.jsonl
session_20251202_105645_transcript.txt
session_20251202_105653_tool_calls.jsonl
session_20251202_105653_transcript.txt
session_20251202_105657_tool_calls.jsonl
session_20251202_105657_transcript.txt
session_20251202_105705_tool_calls.jsonl
session_20251202_105705_transcript.txt
session_20251202_105711_tool_calls.jsonl
session_20251202_105711_transcript.txt
session_20251202_114602_tool_calls.jsonl
session_20251202_114602_transcript.txt
session_20251202_114610_tool_calls.jsonl
session_20251202_114610_transcript.txt
session_20251202_114622_tool_calls.jsonl
session_20251202_114622_transcript.txt
session_20251202_114623_tool_calls.jsonl
session_20251202_114623_transcript.txt
session_20251202_114628_tool_calls.jsonl
session_20251202_114628_transcript.txt
session_20251202_114640_tool_calls.jsonl
session_20251202_114640_transcript.txt
session_20251202_114646_tool_calls.jsonl
session_20251202_114646_transcript.txt
session_20251202_114657_tool_calls.jsonl
session_20251202_114657_transcript.txt
session_20251202_114703_tool_calls.jsonl
session_20251202_114703_transcript.txt
session_20251202_114714_tool_calls.jsonl
session_20251202_114714_transcript.txt
session_20251202_114723_tool_calls.jsonl
session_20251202_114723_transcript.txt
session_20251202_114734_tool_calls.jsonl
session_20251202_114734_transcript.txt
session_20251202_114739_tool_calls.jsonl
session_20251202_114739_transcript.txt
session_20251202_114750_tool_calls.jsonl
session_20251202_114750_transcript.txt
session_20251202_114755_tool_calls.jsonl
session_20251202_114755_transcript.txt
session_20251202_114805_tool_calls.jsonl
session_20251202_114805_transcript.txt
session_20251202_114806_tool_calls.jsonl
session_20251202_114806_transcript.txt
session_20251202_114817_tool_calls.jsonl
session_20251202_114817_transcript.txt
session_20251202_114828_tool_calls.jsonl
session_20251202_114828_transcript.txt
session_20251202_114829_tool_calls.jsonl
session_20251202_114829_transcript.txt
session_20251202_114836_tool_calls.jsonl
session_20251202_114836_transcript.txt
session_20251202_114847_tool_calls.jsonl
session_20251202_114847_transcript.txt
session_20251202_114848_tool_calls.jsonl
session_20251202_114848_transcript.txt
session_20251202_114859_tool_calls.jsonl
session_20251202_114859_transcript.txt
session_20251202_114900_tool_calls.jsonl
session_20251202_114900_transcript.txt
session_20251202_114906_tool_calls.jsonl
session_20251202_114906_transcript.txt
session_20251202_114919_tool_calls.jsonl
session_20251202_114919_transcript.txt
session_20251202_114920_tool_calls.jsonl
session_20251202_114920_transcript.txt
session_20251202_114928_tool_calls.jsonl
session_20251202_114928_transcript.txt
session_20251202_114940_tool_calls.jsonl
session_20251202_114940_transcript.txt
session_20251202_114941_tool_calls.jsonl
session_20251202_114941_transcript.txt
session_20251202_114952_tool_calls.jsonl
session_20251202_114952_transcript.txt
session_20251202_115004_tool_calls.jsonl
session_20251202_115004_transcript.txt
session_20251202_115013_tool_calls.jsonl
session_20251202_115013_transcript.txt
session_20251202_115027_tool_calls.jsonl
session_20251202_115027_transcript.txt
session_20251202_115039_tool_calls.jsonl
session_20251202_115039_transcript.txt
session_20251202_115040_tool_calls.jsonl
session_20251202_115040_transcript.txt
session_20251202_115046_tool_calls.jsonl
session_20251202_115046_transcript.txt
session_20251202_115059_tool_calls.jsonl
session_20251202_115059_transcript.txt
session_20251202_115106_tool_calls.jsonl
session_20251202_115106_transcript.txt
session_20251202_115118_tool_calls.jsonl
session_20251202_115118_transcript.txt
session_20251202_115119_tool_calls.jsonl
session_20251202_115119_transcript.txt
session_20251202_115126_tool_calls.jsonl
session_20251202_115126_transcript.txt
session_20251202_115127_tool_calls.jsonl
session_20251202_115127_transcript.txt
session_20251202_115139_tool_calls.jsonl
session_20251202_115139_transcript.txt
session_20251202_115147_tool_calls.jsonl
session_20251202_115147_transcript.txt
session_20251202_115200_tool_calls.jsonl
session_20251202_115200_transcript.txt
session_20251202_115206_tool_calls.jsonl
session_20251202_115206_transcript.txt
settings.json
settings.template.json
skills/
multi-agent-researcher/
examples.md
README.md
reference.md
SKILL.md
semantic-search/
.gitignore
CURRENT-STATE-BEFORE-CORRECT-POC.md
docs/
END-TO-END-HONEST-REVIEW-ALL-PHASES.md
FIXES-COMPLETION-REPORT.md
HONEST-REVIEW-PHASE1-AND-2.md
model-caching-optimization.md
phase-2-completion-report.md
phase-3-completion-report.md
phase-3-honest-review.md
phase-3-second-honest-review.md
ULTRA-DEEP-CODE-LEVEL-HONEST-REVIEW.md
MCP-INCREMENTAL-ANALYSIS.md
README.md
references/
api-stability.md
effective-queries.md
performance-tuning.md
troubleshooting.md
scripts/
check-prerequisites
find-similar
get-prerequisites-status
incremental_reindex.py
incremental-reindex
index.mcp-native.DEPRECATED
list-projects
measure_cache_performance.py
measure_incremental_performance.py
search
set-prerequisites-ready
status
verify-setup
SKILL.md
tests/
analyze_timing_breakdowns.py
measure_model_caching_impact.py
measure_phase2_performance.py
measure_phase3_validation.py
profile_bottlenecks.py
test_cache_integration.py
test_cross_session_persistence.py
test_end_to_end_cache.py
test_end_to_end_validation.py
test_faiss_segfault.py
test_find_similar.py
test_hash_determinism.py
test_incremental_cache.py
test_incremental_operations.py
test_incremental_real_poc.py
test_incremental_reindex_simple.py
test_incremental_simple.py
test_incremental_verified.py
test_incremental_with_real_components.py
test_indexidmap2_bug.py
test_integration.py
test_model_caching.py
test_search.py
test_status.py
test_utils.py
verify_cache.py
skill-rules.json
spec-workflow-orchestrator/
docs/
reference/
README.md
spec-orchestrator-original.md
examples.md
reference.md
SKILL.md
utils/
archive_project.sh
config_loader.py
detect_next_version.sh
list_archives.sh
reindex_manager.py
restore_archive.sh
session_logger.py
state_manager.py
verify_timestamp.py
workflow_state.sh
.gitignore
cache_performance_results.json
CHANGELOG.md
docs/
adrs/
.gitkeep
architecture/
ADR-001-direct-script-vs-agent-for-auto-reindex.md
auto-reindex-design-quick-reference.md
README.md
SESSION-STATE-SCHEMA.md
SKILL_USAGE_DECISION_TREE.md
configuration/
configuration-guide.md
diagnostics/
reindex-operation-logging.md
examples/
.gitkeep
guides/
maintenance-guide.md
README.md
RECOVERY-PROCEDURES.md
testing-guide.md
token-savings-guide.md
troubleshooting-guide.md
improvements/
2025-12-16-comprehensive-system-improvements-v2.md
2025-12-16-hook-and-system-improvements.md
MODERNIZATION-SUMMARY.md
plans/
.gitkeep
projects/
.gitkeep
QUICK-REFERENCE.md
release/
public-user-installation-test-report.md
RELEASE_NOTES_v2.4.0.md
RELEASE_NOTES_v2.5.1.md
RELEASE_NOTES_v2.5.2.md
RELEASE_NOTES_v2.5.3.md
RELEASE_NOTES_v2.5.4.md
standalone-installation-test-v2.4.1.md
workflows/
compound-request-handling.md
planning-workflow.md
research-workflow.md
semantic-search-hierarchy.md
files/
reports/
.gitkeep
README.md
research_notes/
.gitkeep
README.md
LICENSE
logs/
.gitkeep
PROJECT_STRUCTURE.md
README.md
scripts/
deploy-semantic-search.sh
setup.py
test-report-2025-12-16.md
test-report-final-2025-12-16.md
tests/
ARCHIVED_TESTS_MIGRATION_PLAN.md
benchmark_regex_performance.py
common/
e2e_hook_test.py
test_agent_structure.sh
test_production_implementation.sh
fast_fail_performance_evidence.json
measure_fast_fail_performance.py
research-skill/
analysis/
DUPLICATE_HOOK_CALLS_FIX.md
DUPLICATE_HOOK_VALIDATION.md
EMPIRICAL_TEST_RESULTS.md
FIX_APPROACHES_CRITICAL_ANALYSIS.md
PHASE6_CLEANUP_REPORT.md
PHASE6_IMPACT_ANALYSIS.md
PHASE6_PRODUCTION_READINESS.md
ULTRA_DEEP_ANALYSIS_TEST2_FAILURE.md
design-docs/
AGENT_TO_SKILL_CONVERSION_MAP.md
BASELINE_REPORT.md
DEPLOYMENT_INDEX.md
DESIGN_DECISIONS.md
FILE_ALLOCATION_MAP.md
IMPLEMENTATION_PLAN.md
PRODUCTION_DEPLOYMENT_ANALYSIS.md
PRODUCTION_DEPLOYMENT_EXECUTIVE_SUMMARY.md
SKILL_TO_HOOK_CONVERSION_MAP.md
lessons-learned/
HONEST_ASSESSMENT_PRE_PHASE7.md
NEW_LESSONS_PHASE1-2.md
manual/
edge-case-tests.md
integration-test-report.md
README.md
skill-execution-tests.md
phase-results/
PHASE1_TEST_RESULTS.md
PHASE2_TEST_RESULTS.md
PHASE3_TEST_RESULTS.md
PHASE4_TEST_RESULTS.md
PHASE5_INTEGRATION_RESULTS.md
PHASE6_TESTING_COMPLETE.md
TIER3_TEST_FINDINGS.md
README.md
test-scripts/
phase1-test-queries.sh
production_cleanup_inplace.sh
production_deploy_standard.sh
production_validation.sh
skills/
conftest.py
test_multi_agent_researcher.py
test_semantic_search.py
test_spec_workflow_orchestrator.py
spec-workflow/
fixtures/
generated/
integration-test-hello-world/
adrs/
ADR-001-technology-choice.md
ADR-001-test.md
ADR-002-inline-vs-external.md
ADR-003-single-file-architecture.md
ADR-004-no-build-process.md
planning/
architecture.md
requirements.md
tasks.md
manual/
edge-case-tests.md
integration-test-report.md
README.md
skill-execution-tests.md
README.md
test_adr_format.py
test_deliverable_structure.sh
test_interactive_decision.sh
test_skill_integration.py
TEST_ARCHITECTURE.md
test_concurrent_reindex.py
test_fast_fail_heuristics.py
test_kill_restart_unit.py
test_prerequisites_update.py
test_reindex_manager.py
test_state_manager.py
test_user_prompt_submit.pyΒ© 2026 Flowy Β· Free and open source
Built for Claude Code Β· Not affiliated with Anthropic
.claude/config.json | Paths, logging settings, research parameters | Config | Customize |
logs/state/current.json | Active skill pointer for dual-skill routing (~100 bytes) | State | Auto-Generated |
logs/session_*_state.json | Per-session history: skill invocations (both skills) | State | Auto-Generated |
.claude/skills/skill-rules.json | Trigger patterns for skill activation | Config | View |
| Data Outputs |
files/research_notes/*.md | Individual researcher findings (one file per subtopic) | Research Data | Auto-Generated |
files/reports/*.md | Comprehensive synthesis reports (timestamped) | Final Reports | Auto-Generated |
docs/projects/{slug}/*.md | Planning deliverables (v2.2.0) | Planning Data | Auto-Generated |
docs/adrs/*.md | Architecture Decision Records (v2.2.0) | Planning Data | Auto-Generated |
| Logs & Audit Trail |
logs/session_*_transcript.txt | Human-readable session log with agent identification | Log | Auto-Generated |
logs/session_*_tool_calls.jsonl | Structured JSON log for programmatic analysis | Log | Auto-Generated |
logs/session_*_state.json | Session skill invocations and research sessions | Log | Auto-Generated |
| Utilities |
setup.py | Interactive configuration wizard for advanced customization | Setup Script | Run When Needed |
.claude/utils/*.sh | Production utilities for planning (v2.2.0) | Scripts | Run When Needed |