UNPKG

claude-flow

Version:

Ruflo - Enterprise AI agent orchestration for Claude Code. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration

486 lines (425 loc) 18.2 kB
/** * CLAUDE.md Generator * Generates enforceable, analyzer-optimized Claude Code configuration * with template variants for different usage patterns. * * Templates: minimal | standard | full | security | performance | solo * All templates use bullet-format rules with imperative keywords for enforceability. */ // --- Section Generators (each returns enforceable markdown) --- function behavioralRules() { return `## Behavioral Rules (Always Enforced) - Do what has been asked; nothing more, nothing less - NEVER create files unless they're absolutely necessary for achieving your goal - ALWAYS prefer editing an existing file to creating a new one - NEVER proactively create documentation files (*.md) or README files unless explicitly requested - NEVER save working files, text/mds, or tests to the root folder - Never continuously check status after spawning a swarm — wait for results - ALWAYS read a file before editing it - NEVER commit secrets, credentials, or .env files`; } function fileOrganization() { return `## File Organization - NEVER save to root folder — use the directories below - Use \`/src\` for source code files - Use \`/tests\` for test files - Use \`/docs\` for documentation and markdown files - Use \`/config\` for configuration files - Use \`/scripts\` for utility scripts - Use \`/examples\` for example code`; } function projectArchitecture(options) { return `## Project Architecture - Follow Domain-Driven Design with bounded contexts - Keep files under 500 lines - Use typed interfaces for all public APIs - Prefer TDD London School (mock-first) for new code - Use event sourcing for state changes - Ensure input validation at system boundaries ### Project Config - **Topology**: ${options.runtime.topology} - **Max Agents**: ${options.runtime.maxAgents} - **Memory**: ${options.runtime.memoryBackend} - **HNSW**: ${options.runtime.enableHNSW ? 'Enabled' : 'Disabled'} - **Neural**: ${options.runtime.enableNeural ? 'Enabled' : 'Disabled'}`; } function concurrencyRules() { return `## Concurrency: 1 MESSAGE = ALL RELATED OPERATIONS - All operations MUST be concurrent/parallel in a single message - Use Claude Code's Task tool for spawning agents, not just MCP - ALWAYS batch ALL todos in ONE TodoWrite call (5-10+ minimum) - ALWAYS spawn ALL agents in ONE message with full instructions via Task tool - ALWAYS batch ALL file reads/writes/edits in ONE message - ALWAYS batch ALL Bash commands in ONE message`; } function swarmOrchestration() { return `## Swarm Orchestration - MUST initialize the swarm using CLI tools when starting complex tasks - MUST spawn concurrent agents using Claude Code's Task tool - Never use CLI tools alone for execution — Task tool agents do the actual work - MUST call CLI tools AND Task tool in ONE message for complex work ### 3-Tier Model Routing (ADR-026) | Tier | Handler | Latency | Cost | Use Cases | |------|---------|---------|------|-----------| | **1** | Agent Booster (WASM) | <1ms | $0 | Simple transforms (var→const, add types) — Skip LLM | | **2** | Haiku | ~500ms | $0.0002 | Simple tasks, low complexity (<30%) | | **3** | Sonnet/Opus | 2-5s | $0.003-0.015 | Complex reasoning, architecture, security (>30%) | - Always check for \`[AGENT_BOOSTER_AVAILABLE]\` or \`[TASK_MODEL_RECOMMENDATION]\` before spawning agents - Use Edit tool directly when \`[AGENT_BOOSTER_AVAILABLE]\``; } function antiDriftConfig() { return `## Swarm Configuration & Anti-Drift - ALWAYS use hierarchical topology for coding swarms - Keep maxAgents at 6-8 for tight coordination - Use specialized strategy for clear role boundaries - Use \`raft\` consensus for hive-mind (leader maintains authoritative state) - Run frequent checkpoints via \`post-task\` hooks - Keep shared memory namespace for all agents \`\`\`bash npx @claude-flow/cli@latest swarm init --topology hierarchical --max-agents 8 --strategy specialized \`\`\``; } function autoStartProtocol() { return `## Swarm Protocols & Routing ### Auto-Start Swarm Protocol When the user requests a complex task, spawn agents in background and WAIT: \`\`\`javascript // STEP 1: Initialize swarm coordination Bash("npx @claude-flow/cli@latest swarm init --topology hierarchical --max-agents 8 --strategy specialized") // STEP 2: Spawn ALL agents IN BACKGROUND in a SINGLE message Task({prompt: "Research requirements...", subagent_type: "researcher", run_in_background: true}) Task({prompt: "Design architecture...", subagent_type: "system-architect", run_in_background: true}) Task({prompt: "Implement solution...", subagent_type: "coder", run_in_background: true}) Task({prompt: "Write tests...", subagent_type: "tester", run_in_background: true}) Task({prompt: "Review code quality...", subagent_type: "reviewer", run_in_background: true}) \`\`\` ### Agent Routing | Code | Task | Agents | |------|------|--------| | 1 | Bug Fix | coordinator, researcher, coder, tester | | 3 | Feature | coordinator, architect, coder, tester, reviewer | | 5 | Refactor | coordinator, architect, coder, reviewer | | 7 | Performance | coordinator, perf-engineer, coder | | 9 | Security | coordinator, security-architect, auditor | ### Task Complexity Detection - AUTO-INVOKE SWARM when task involves: 3+ files, new features, cross-module refactoring, API changes, security, or performance work - SKIP SWARM for: single file edits, simple bug fixes (1-2 lines), documentation updates, configuration changes`; } function executionRules() { return `## Swarm Execution Rules - ALWAYS use \`run_in_background: true\` for all agent Task calls - ALWAYS put ALL agent Task calls in ONE message for parallel execution - After spawning, STOP — do NOT add more tool calls or check status - Never poll TaskOutput or check swarm status — trust agents to return - When agent results arrive, review ALL results before proceeding`; } function cliCommandsTable() { return `## V3 CLI Commands ### Core Commands | Command | Subcommands | Description | |---------|-------------|-------------| | \`init\` | 4 | Project initialization | | \`agent\` | 8 | Agent lifecycle management | | \`swarm\` | 6 | Multi-agent swarm coordination | | \`memory\` | 11 | AgentDB memory with HNSW search | | \`task\` | 6 | Task creation and lifecycle | | \`session\` | 7 | Session state management | | \`hooks\` | 17 | Self-learning hooks + 12 workers | | \`hive-mind\` | 6 | Byzantine fault-tolerant consensus | ### Quick CLI Examples \`\`\`bash npx @claude-flow/cli@latest init --wizard npx @claude-flow/cli@latest agent spawn -t coder --name my-coder npx @claude-flow/cli@latest swarm init --v3-mode npx @claude-flow/cli@latest memory search --query "authentication patterns" npx @claude-flow/cli@latest doctor --fix \`\`\``; } function agentTypes() { return `## Available Agents (60+ Types) ### Core Development \`coder\`, \`reviewer\`, \`tester\`, \`planner\`, \`researcher\` ### Specialized \`security-architect\`, \`security-auditor\`, \`memory-specialist\`, \`performance-engineer\` ### Swarm Coordination \`hierarchical-coordinator\`, \`mesh-coordinator\`, \`adaptive-coordinator\` ### GitHub & Repository \`pr-manager\`, \`code-review-swarm\`, \`issue-tracker\`, \`release-manager\` ### SPARC Methodology \`sparc-coord\`, \`sparc-coder\`, \`specification\`, \`pseudocode\`, \`architecture\``; } function hooksSystem() { return `## Hooks System (27 Hooks + 12 Workers) ### Essential Hooks | Hook | Description | |------|-------------| | \`pre-task\` / \`post-task\` | Task lifecycle with learning | | \`pre-edit\` / \`post-edit\` | File editing with neural training | | \`session-start\` / \`session-end\` | Session state persistence | | \`route\` | Route task to optimal agent | | \`intelligence\` | RuVector intelligence system | | \`worker\` | Background worker management | ### 12 Background Workers | Worker | Priority | Description | |--------|----------|-------------| | \`optimize\` | high | Performance optimization | | \`audit\` | critical | Security analysis | | \`testgaps\` | normal | Test coverage analysis | | \`map\` | normal | Codebase mapping | | \`deepdive\` | normal | Deep code analysis | | \`document\` | normal | Auto-documentation | \`\`\`bash npx @claude-flow/cli@latest hooks pre-task --description "[task]" npx @claude-flow/cli@latest hooks post-task --task-id "[id]" --success true npx @claude-flow/cli@latest hooks worker dispatch --trigger audit \`\`\``; } function learningProtocol() { return `## Auto-Learning Protocol ### Before Starting Any Task \`\`\`bash npx @claude-flow/cli@latest memory search --query "[task keywords]" --namespace patterns npx @claude-flow/cli@latest hooks route --task "[task description]" \`\`\` ### After Completing Any Task Successfully \`\`\`bash npx @claude-flow/cli@latest memory store --namespace patterns --key "[pattern-name]" --value "[what worked]" npx @claude-flow/cli@latest hooks post-task --task-id "[id]" --success true --store-results true \`\`\` - ALWAYS check memory before starting new features, debugging, or refactoring - ALWAYS store patterns in memory after solving bugs, completing features, or finding optimizations`; } function memoryCommands() { return `## Memory Commands Reference \`\`\`bash # Store (REQUIRED: --key, --value; OPTIONAL: --namespace, --ttl, --tags) npx @claude-flow/cli@latest memory store --key "pattern-auth" --value "JWT with refresh" --namespace patterns # Search (REQUIRED: --query; OPTIONAL: --namespace, --limit, --threshold) npx @claude-flow/cli@latest memory search --query "authentication patterns" # List (OPTIONAL: --namespace, --limit) npx @claude-flow/cli@latest memory list --namespace patterns --limit 10 # Retrieve (REQUIRED: --key; OPTIONAL: --namespace) npx @claude-flow/cli@latest memory retrieve --key "pattern-auth" --namespace patterns \`\`\``; } function securityRulesLight() { return `## Security Rules - NEVER hardcode API keys, secrets, or credentials in source files - NEVER commit .env files or any file containing secrets - Always validate user input at system boundaries - Always sanitize file paths to prevent directory traversal - Run \`npx @claude-flow/cli@latest security scan\` after security-related changes`; } function buildAndTest() { return `## Build & Test \`\`\`bash # Build npm run build # Test npm test # Lint npm run lint \`\`\` - ALWAYS run tests after making code changes - ALWAYS verify build succeeds before committing`; } function securitySection() { return `## Security Protocol - NEVER hardcode API keys, secrets, or credentials in source files - NEVER commit .env files or any file containing secrets - Always validate all user input at system boundaries using Zod schemas - Always sanitize file paths to prevent directory traversal attacks - Always use parameterized queries — never concatenate SQL strings - Run security audit after any authentication or authorization changes ### Security Scanning \`\`\`bash npx @claude-flow/cli@latest security scan --depth full npx @claude-flow/cli@latest security audit --report npx @claude-flow/cli@latest security cve --check \`\`\` ### Security Agents - \`security-architect\` — threat modeling, architecture review - \`security-auditor\` — code audit, vulnerability detection - Use agent routing code 9 (hierarchical/specialized) for security tasks`; } function performanceSection() { return `## Performance Optimization Protocol - Always run benchmarks before and after performance changes - Always profile before optimizing — never guess at bottlenecks - Prefer algorithmic improvements over micro-optimizations - Keep HNSW search within 150x-12,500x faster target - Keep memory reduction within 50-75% target with quantization ### Performance Tooling \`\`\`bash npx @claude-flow/cli@latest performance benchmark --suite all npx @claude-flow/cli@latest performance profile --target "[component]" npx @claude-flow/cli@latest performance metrics --format table \`\`\` ### Performance Agents - \`performance-engineer\` — profiling, benchmarking, optimization - \`perf-analyzer\` — bottleneck detection, analysis - Use agent routing code 7 (hierarchical/specialized) for performance tasks`; } function intelligenceSystem() { return `## Intelligence System (RuVector) - **SONA**: Self-Optimizing Neural Architecture (<0.05ms adaptation) - **HNSW**: 150x-12,500x faster pattern search - **EWC++**: Elastic Weight Consolidation (prevents forgetting) - **Flash Attention**: 2.49x-7.47x speedup The 4-step intelligence pipeline: 1. **RETRIEVE** - Fetch relevant patterns via HNSW 2. **JUDGE** - Evaluate with verdicts (success/failure) 3. **DISTILL** - Extract key learnings via LoRA 4. **CONSOLIDATE** - Prevent catastrophic forgetting via EWC++`; } function envVars() { return `## Environment Variables \`\`\`bash CLAUDE_FLOW_CONFIG=./claude-flow.config.json CLAUDE_FLOW_LOG_LEVEL=info ANTHROPIC_API_KEY=sk-ant-... CLAUDE_FLOW_MEMORY_BACKEND=hybrid CLAUDE_FLOW_MEMORY_PATH=./data/memory \`\`\``; } function setupAndBoundary() { return `## Quick Setup \`\`\`bash claude mcp add claude-flow -- npx -y @claude-flow/cli@latest npx @claude-flow/cli@latest daemon start npx @claude-flow/cli@latest doctor --fix \`\`\` ## Claude Code vs CLI Tools - Claude Code's Task tool handles ALL execution: agents, file ops, code generation, git - CLI tools handle coordination via Bash: swarm init, memory, hooks, routing - NEVER use CLI tools as a substitute for Task tool agents ## Support - Documentation: https://github.com/ruvnet/claude-flow - Issues: https://github.com/ruvnet/claude-flow/issues`; } // --- Template Composers --- /** * Template section map — defines which sections are included per template. */ const TEMPLATE_SECTIONS = { minimal: [ behavioralRules, fileOrganization, projectArchitecture, (_opts) => buildAndTest(), (_opts) => securityRulesLight(), concurrencyRules, (_opts) => antiDriftConfig(), executionRules, (_opts) => cliCommandsTable(), (_opts) => setupAndBoundary(), ], standard: [ behavioralRules, fileOrganization, projectArchitecture, (_opts) => buildAndTest(), (_opts) => securityRulesLight(), concurrencyRules, (_opts) => swarmOrchestration(), (_opts) => antiDriftConfig(), executionRules, (_opts) => cliCommandsTable(), (_opts) => agentTypes(), (_opts) => memoryCommands(), (_opts) => setupAndBoundary(), ], full: [ behavioralRules, fileOrganization, projectArchitecture, (_opts) => buildAndTest(), (_opts) => securityRulesLight(), concurrencyRules, (_opts) => swarmOrchestration(), (_opts) => antiDriftConfig(), (_opts) => autoStartProtocol(), executionRules, (_opts) => cliCommandsTable(), (_opts) => agentTypes(), (_opts) => hooksSystem(), (_opts) => learningProtocol(), (_opts) => memoryCommands(), (_opts) => intelligenceSystem(), (_opts) => envVars(), (_opts) => setupAndBoundary(), ], security: [ behavioralRules, fileOrganization, projectArchitecture, (_opts) => buildAndTest(), concurrencyRules, (_opts) => swarmOrchestration(), (_opts) => antiDriftConfig(), executionRules, (_opts) => securitySection(), (_opts) => cliCommandsTable(), (_opts) => agentTypes(), (_opts) => memoryCommands(), (_opts) => setupAndBoundary(), ], performance: [ behavioralRules, fileOrganization, projectArchitecture, (_opts) => buildAndTest(), (_opts) => securityRulesLight(), concurrencyRules, (_opts) => swarmOrchestration(), (_opts) => antiDriftConfig(), executionRules, (_opts) => performanceSection(), (_opts) => cliCommandsTable(), (_opts) => agentTypes(), (_opts) => memoryCommands(), (_opts) => intelligenceSystem(), (_opts) => setupAndBoundary(), ], solo: [ behavioralRules, fileOrganization, projectArchitecture, (_opts) => buildAndTest(), (_opts) => securityRulesLight(), concurrencyRules, executionRules, (_opts) => cliCommandsTable(), (_opts) => memoryCommands(), (_opts) => setupAndBoundary(), ], }; // --- Public API --- /** * Generate CLAUDE.md content based on init options and template. * Template is determined by: options.runtime.claudeMdTemplate > explicit param > 'standard' */ export function generateClaudeMd(options, template) { const tmpl = template ?? options.runtime.claudeMdTemplate ?? 'standard'; const sections = TEMPLATE_SECTIONS[tmpl] ?? TEMPLATE_SECTIONS.standard; const header = `# Claude Code Configuration - Claude Flow V3\n`; const body = sections.map(fn => fn(options)).join('\n\n'); return `${header}\n${body}\n`; } /** * Generate minimal CLAUDE.md content (backward-compatible alias). */ export function generateMinimalClaudeMd(options) { return generateClaudeMd(options, 'minimal'); } /** Available template names for CLI wizard */ export const CLAUDE_MD_TEMPLATES = [ { name: 'minimal', description: 'Quick start — behavioral rules, anti-drift config, CLI reference (~120 lines)' }, { name: 'standard', description: 'Recommended — swarm orchestration, agents, memory commands (~250 lines)' }, { name: 'full', description: 'Everything — hooks, learning protocol, intelligence system (~400 lines)' }, { name: 'security', description: 'Security-focused — adds security scanning, audit protocols, CVE checks' }, { name: 'performance', description: 'Performance-focused — adds benchmarking, profiling, optimization protocols' }, { name: 'solo', description: 'Solo developer — no swarm, simple agent usage, memory commands (~150 lines)' }, ]; export default generateClaudeMd; //# sourceMappingURL=claudemd-generator.js.map