diff --git a/.agents/skills/Behavioral_RL/SKILL.md b/.agents/skills/Behavioral_RL/SKILL.md new file mode 100644 index 0000000..7583b8f --- /dev/null +++ b/.agents/skills/Behavioral_RL/SKILL.md @@ -0,0 +1,88 @@ +```markdown +# Behavioral_RL Development Patterns + +> Auto-generated skill from repository analysis + +## Overview +This skill teaches the core development patterns and workflows used in the `Behavioral_RL` repository, a TypeScript codebase focused on behavioral reinforcement learning. It covers file organization, coding conventions, import/export styles, and automated workflows for dependency management. The guide also includes best practices for writing and running tests. + +## Coding Conventions + +**File Naming** +- Use camelCase for file names. + - Example: `behavioralAgent.ts`, `rewardFunction.ts` + +**Import Style** +- Use relative imports for modules within the project. + - Example: + ```typescript + import { computeReward } from './rewardFunction'; + ``` + +**Export Style** +- Use named exports for functions, classes, and constants. + - Example: + ```typescript + // In rewardFunction.ts + export function computeReward(state: State): number { ... } + ``` + +**Commit Messages** +- Freeform style, no strict prefixing. +- Average commit message length: ~55 characters. + +## Workflows + +### Bulk Dependency Update Across Experiment Directories +**Trigger:** When you need to update core Python dependencies for all experiment runs managed by wandb. +**Command:** `/bulk-update-dependencies` + +1. Identify all wandb run directories under `wandb/*/files/`. +2. For each run directory, open the `requirements.txt` file. +3. Update the following dependencies to their new versions: `idna`, `mistune`, `ujson`, `urllib3`. +4. Save the updated `requirements.txt` in each directory. +5. Commit all updated `requirements.txt` files in a single commit. + +**Example Directory Structure:** +``` +wandb/ + run1/ + files/ + requirements.txt + run2/ + files/ + requirements.txt +``` + +**Example Update in `requirements.txt`:** +``` +idna==3.4 +mistune==2.0.4 +ujson==5.8.0 +urllib3==2.0.2 +``` + +## Testing Patterns + +- Test files follow the pattern: `*.test.*` + - Example: `behavioralAgent.test.ts` +- The specific testing framework is not detected; check the project for further details. +- Place test files alongside or near the code they test. + +**Example Test File:** +```typescript +// behavioralAgent.test.ts +import { computeReward } from './rewardFunction'; + +test('computeReward returns correct value', () => { + expect(computeReward({ score: 10 })).toBe(100); +}); +``` + +## Commands + +| Command | Purpose | +|---------------------------|-----------------------------------------------------------------| +| /bulk-update-dependencies | Update Python dependencies in all wandb experiment requirements. | + +``` \ No newline at end of file diff --git a/.agents/skills/Behavioral_RL/agents/openai.yaml b/.agents/skills/Behavioral_RL/agents/openai.yaml new file mode 100644 index 0000000..ef3339f --- /dev/null +++ b/.agents/skills/Behavioral_RL/agents/openai.yaml @@ -0,0 +1,6 @@ +interface: + display_name: "Behavioral RL" + short_description: "Repo-specific patterns and workflows for Behavioral_RL" + default_prompt: "Use the Behavioral_RL repo skill to follow existing architecture, testing, and workflow conventions." +policy: + allow_implicit_invocation: true \ No newline at end of file diff --git a/.claude/ecc-tools.json b/.claude/ecc-tools.json new file mode 100644 index 0000000..43b150d --- /dev/null +++ b/.claude/ecc-tools.json @@ -0,0 +1,227 @@ +{ + "version": "1.3", + "schemaVersion": "1.0", + "generatedBy": "ecc-tools", + "generatedAt": "2026-05-20T03:29:23.419Z", + "repo": "https://github.com/affaan-m/Behavioral_RL", + "referenceSetReadiness": { + "score": 0, + "present": 0, + "total": 7, + "items": [ + { + "id": "deep-analyzer-corpus", + "label": "Deep analyzer corpus", + "status": "missing", + "evidence": [], + "recommendation": "Add analyzer fixture, golden, benchmark, or reference-set files that can catch analyzer regressions." + }, + { + "id": "rag-evaluator", + "label": "RAG/evaluator comparison", + "status": "missing", + "evidence": [], + "recommendation": "Add retrieval or evaluator reference-set comparison fixtures with expected ranking behavior." + }, + { + "id": "pr-salvage", + "label": "PR salvage/review corpus", + "status": "missing", + "evidence": [], + "recommendation": "Add stale-PR, review-thread, reopen-flow, or salvage reference cases for queue cleanup automation." + }, + { + "id": "discussion-triage", + "label": "Discussion triage corpus", + "status": "missing", + "evidence": [], + "recommendation": "Add public discussion triage fixtures, golden cases, or reference sets for informational, answered, and no-response classifications." + }, + { + "id": "harness-compatibility", + "label": "Harness compatibility", + "status": "missing", + "evidence": [], + "recommendation": "Add cross-harness, adapter-compliance, or harness-audit evidence for Claude, Codex, OpenCode, Zed, dmux, and agent surfaces." + }, + { + "id": "security-evidence", + "label": "Security evidence", + "status": "missing", + "evidence": [], + "recommendation": "Attach security evidence such as SBOMs, SARIF, audit reports, or AgentShield evidence packs." + }, + { + "id": "ci-failure-mode", + "label": "CI failure-mode evidence", + "status": "missing", + "evidence": [], + "recommendation": "Add captured CI failure logs, dry-run fixtures, or troubleshooting docs for common workflow failure modes." + } + ] + }, + "profiles": { + "requested": "core", + "recommended": "core", + "effective": "core", + "requestedAlias": "core", + "recommendedAlias": "core", + "effectiveAlias": "core" + }, + "requestedProfile": "core", + "profile": "core", + "recommendedProfile": "core", + "effectiveProfile": "core", + "tier": "enterprise", + "requestedComponents": [ + "repo-baseline" + ], + "selectedComponents": [ + "repo-baseline" + ], + "requestedAddComponents": [], + "requestedRemoveComponents": [], + "blockedRemovalComponents": [], + "tierFilteredComponents": [], + "requestedRootPackages": [ + "runtime-core" + ], + "selectedRootPackages": [ + "runtime-core" + ], + "requestedPackages": [ + "runtime-core" + ], + "requestedAddPackages": [], + "requestedRemovePackages": [], + "selectedPackages": [ + "runtime-core" + ], + "packages": [ + "runtime-core" + ], + "blockedRemovalPackages": [], + "tierFilteredRootPackages": [], + "tierFilteredPackages": [], + "conflictingPackages": [], + "dependencyGraph": { + "runtime-core": [] + }, + "resolutionOrder": [ + "runtime-core" + ], + "requestedModules": [ + "runtime-core" + ], + "selectedModules": [ + "runtime-core" + ], + "modules": [ + "runtime-core" + ], + "managedFiles": [ + ".claude/skills/Behavioral_RL/SKILL.md", + ".agents/skills/Behavioral_RL/SKILL.md", + ".agents/skills/Behavioral_RL/agents/openai.yaml", + ".claude/identity.json", + ".codex/config.toml", + ".codex/AGENTS.md", + ".codex/agents/explorer.toml", + ".codex/agents/reviewer.toml", + ".codex/agents/docs-researcher.toml", + ".claude/homunculus/instincts/inherited/Behavioral_RL-instincts.yaml" + ], + "packageFiles": { + "runtime-core": [ + ".claude/skills/Behavioral_RL/SKILL.md", + ".agents/skills/Behavioral_RL/SKILL.md", + ".agents/skills/Behavioral_RL/agents/openai.yaml", + ".claude/identity.json", + ".codex/config.toml", + ".codex/AGENTS.md", + ".codex/agents/explorer.toml", + ".codex/agents/reviewer.toml", + ".codex/agents/docs-researcher.toml", + ".claude/homunculus/instincts/inherited/Behavioral_RL-instincts.yaml" + ] + }, + "moduleFiles": { + "runtime-core": [ + ".claude/skills/Behavioral_RL/SKILL.md", + ".agents/skills/Behavioral_RL/SKILL.md", + ".agents/skills/Behavioral_RL/agents/openai.yaml", + ".claude/identity.json", + ".codex/config.toml", + ".codex/AGENTS.md", + ".codex/agents/explorer.toml", + ".codex/agents/reviewer.toml", + ".codex/agents/docs-researcher.toml", + ".claude/homunculus/instincts/inherited/Behavioral_RL-instincts.yaml" + ] + }, + "files": [ + { + "moduleId": "runtime-core", + "path": ".claude/skills/Behavioral_RL/SKILL.md", + "description": "Repository-specific Claude Code skill generated from git history." + }, + { + "moduleId": "runtime-core", + "path": ".agents/skills/Behavioral_RL/SKILL.md", + "description": "Codex-facing copy of the generated repository skill." + }, + { + "moduleId": "runtime-core", + "path": ".agents/skills/Behavioral_RL/agents/openai.yaml", + "description": "Codex skill metadata so the repo skill appears cleanly in the skill interface." + }, + { + "moduleId": "runtime-core", + "path": ".claude/identity.json", + "description": "Suggested identity.json baseline derived from repository conventions." + }, + { + "moduleId": "runtime-core", + "path": ".codex/config.toml", + "description": "Repo-local Codex MCP and multi-agent baseline aligned with ECC defaults." + }, + { + "moduleId": "runtime-core", + "path": ".codex/AGENTS.md", + "description": "Codex usage guide that points at the generated repo skill and workflow bundle." + }, + { + "moduleId": "runtime-core", + "path": ".codex/agents/explorer.toml", + "description": "Read-only explorer role config for Codex multi-agent work." + }, + { + "moduleId": "runtime-core", + "path": ".codex/agents/reviewer.toml", + "description": "Read-only reviewer role config focused on correctness and security." + }, + { + "moduleId": "runtime-core", + "path": ".codex/agents/docs-researcher.toml", + "description": "Read-only docs researcher role config for API verification." + }, + { + "moduleId": "runtime-core", + "path": ".claude/homunculus/instincts/inherited/Behavioral_RL-instincts.yaml", + "description": "Continuous-learning instincts derived from repository patterns." + } + ], + "workflows": [], + "adapters": { + "claudeCode": { + "skillPath": ".claude/skills/Behavioral_RL/SKILL.md", + "identityPath": ".claude/identity.json", + "commandPaths": [] + }, + "codex": { + "configPath": ".codex/config.toml", + "agentsGuidePath": ".codex/AGENTS.md", + "skillPath": ".agents/skills/Behavioral_RL/SKILL.md" + } + } +} \ No newline at end of file diff --git a/.claude/homunculus/instincts/inherited/Behavioral_RL-instincts.yaml b/.claude/homunculus/instincts/inherited/Behavioral_RL-instincts.yaml new file mode 100644 index 0000000..4efaaaa --- /dev/null +++ b/.claude/homunculus/instincts/inherited/Behavioral_RL-instincts.yaml @@ -0,0 +1,303 @@ +# Instincts generated from https://github.com/affaan-m/Behavioral_RL +# Generated: 2026-05-20T03:29:45.722Z +# Version: 2.0 +# NOTE: This file supplements (does not replace) any existing curated instincts. +# High-confidence manually curated instincts should be preserved alongside these. + +--- +id: Behavioral_RL-commit-length +trigger: "when writing a commit message" +confidence: 0.6 +domain: git +source: repo-analysis +source_repo: https://github.com/affaan-m/Behavioral_RL +--- + +# Behavioral_RL Commit Length + +## Action + +Write moderate-length commit messages (~55 characters) + +## Evidence + +- Average commit message length: 55 chars +- Based on 1 commits + +--- +id: Behavioral_RL-naming-files +trigger: "when creating a new file" +confidence: 0.8 +domain: code-style +source: repo-analysis +source_repo: https://github.com/affaan-m/Behavioral_RL +--- + +# Behavioral_RL Naming Files + +## Action + +Use camelCase naming convention + +## Evidence + +- Analyzed file naming patterns in repository +- Dominant pattern: camelCase + +--- +id: Behavioral_RL-import-relative +trigger: "when importing modules" +confidence: 0.75 +domain: code-style +source: repo-analysis +source_repo: https://github.com/affaan-m/Behavioral_RL +--- + +# Behavioral_RL Import Relative + +## Action + +Use relative imports for project files + +## Evidence + +- Import analysis shows relative import pattern +- Example: import { x } from '../lib/x' + +--- +id: Behavioral_RL-export-style +trigger: "when exporting from a module" +confidence: 0.7 +domain: code-style +source: repo-analysis +source_repo: https://github.com/affaan-m/Behavioral_RL +--- + +# Behavioral_RL Export Style + +## Action + +Prefer named exports + +## Evidence + +- Export pattern analysis +- Dominant style: named + +--- +id: Behavioral_RL-test-separate +trigger: "when writing tests" +confidence: 0.8 +domain: testing +source: repo-analysis +source_repo: https://github.com/affaan-m/Behavioral_RL +--- + +# Behavioral_RL Test Separate + +## Action + +Place tests in the tests/ or __tests__/ directory, mirroring src structure + +## Evidence + +- Separate test directory pattern detected +- Tests live in dedicated test folders + +--- +id: Behavioral_RL-workflow-bulk-dependency-update-across-experiment-directories +trigger: "when doing bulk dependency update across experiment directories" +confidence: 0.55 +domain: workflow +source: repo-analysis +source_repo: https://github.com/affaan-m/Behavioral_RL +--- + +# Behavioral_RL Workflow Bulk Dependency Update Across Experiment Directories + +## Action + +Follow the bulk-dependency-update-across-experiment-directories workflow: +1. Identify all wandb run directories under wandb/*/files/ +2. Update requirements.txt in each run directory to bump specified dependencies to new versions +3. Commit all updated requirements.txt files in a single commit + +## Evidence + +- Workflow detected from commit patterns +- Frequency: ~1x per month +- Files: wandb/*/files/requirements.txt + +--- +id: behavioral_rl-instinct-camelcase-filenames +trigger: "When creating or renaming a file in the codebase" +confidence: 0.85 +domain: code-style +source: repo-analysis +source_repo: affaan-m/Behavioral_RL +--- + +# Behavioral_rl Instinct Camelcase Filenames + +## Action + +Use camelCase for file names + +## Evidence + +- Pattern in namingConventions.files: camelCase + +--- +id: behavioral_rl-instinct-camelcase-functions +trigger: "When defining a function" +confidence: 0.85 +domain: code-style +source: repo-analysis +source_repo: affaan-m/Behavioral_RL +--- + +# Behavioral_rl Instinct Camelcase Functions + +## Action + +Name the function using camelCase + +## Evidence + +- Pattern in namingConventions.functions: camelCase + +--- +id: behavioral_rl-instinct-pascalcase-classes +trigger: "When defining a class" +confidence: 0.85 +domain: code-style +source: repo-analysis +source_repo: affaan-m/Behavioral_RL +--- + +# Behavioral_rl Instinct Pascalcase Classes + +## Action + +Name the class using PascalCase + +## Evidence + +- Pattern in namingConventions.classes: PascalCase + +--- +id: behavioral_rl-instinct-screaming-constants +trigger: "When defining a constant" +confidence: 0.85 +domain: code-style +source: repo-analysis +source_repo: affaan-m/Behavioral_RL +--- + +# Behavioral_rl Instinct Screaming Constants + +## Action + +Name the constant using SCREAMING_SNAKE_CASE + +## Evidence + +- Pattern in namingConventions.constants: SCREAMING_SNAKE_CASE + +--- +id: behavioral_rl-instinct-relative-imports +trigger: "When importing modules within the codebase" +confidence: 0.8 +domain: code-style +source: repo-analysis +source_repo: affaan-m/Behavioral_RL +--- + +# Behavioral_rl Instinct Relative Imports + +## Action + +Use relative import paths + +## Evidence + +- Pattern in importStyle: relative + +--- +id: behavioral_rl-instinct-named-exports +trigger: "When exporting functions, classes, or constants" +confidence: 0.8 +domain: code-style +source: repo-analysis +source_repo: affaan-m/Behavioral_RL +--- + +# Behavioral_rl Instinct Named Exports + +## Action + +Use named exports + +## Evidence + +- Pattern in exportStyle: named + +--- +id: behavioral_rl-instinct-separate-tests +trigger: "When adding or organizing tests" +confidence: 0.8 +domain: testing +source: repo-analysis +source_repo: affaan-m/Behavioral_RL +--- + +# Behavioral_rl Instinct Separate Tests + +## Action + +Place test files in a separate directory from source code + +## Evidence + +- Pattern in architecture.testLocation: separate + +--- +id: behavioral_rl-instinct-commit-format-freeform +trigger: "When writing a commit message" +confidence: 0.7 +domain: git +source: repo-analysis +source_repo: affaan-m/Behavioral_RL +--- + +# Behavioral_rl Instinct Commit Format Freeform + +## Action + +Use a freeform commit message without enforced prefix, typically summarizing the change in a single line + +## Evidence + +- Pattern in commits.type: freeform +- Example: 'Bump the pip group across 28 directories with 4 updates' + +--- +id: behavioral_rl-instinct-bulk-dependency-update-workflow +trigger: "When updating core Python dependencies for all experiment runs managed by wandb" +confidence: 0.95 +domain: workflow +source: repo-analysis +source_repo: affaan-m/Behavioral_RL +--- + +# Behavioral_rl Instinct Bulk Dependency Update Workflow + +## Action + +Identify all wandb run directories under wandb/*/files/, update requirements.txt in each run directory to bump specified dependencies, and commit all updated requirements.txt files in a single commit + +## Evidence + +- Workflow: bulk-dependency-update-across-experiment-directories +- Example commit sequence + diff --git a/.claude/identity.json b/.claude/identity.json new file mode 100644 index 0000000..e336b39 --- /dev/null +++ b/.claude/identity.json @@ -0,0 +1,14 @@ +{ + "version": "2.0", + "technicalLevel": "technical", + "preferredStyle": { + "verbosity": "detailed", + "codeComments": true, + "explanations": true + }, + "domains": [ + "typescript" + ], + "suggestedBy": "ecc-tools-repo-analysis", + "createdAt": "2026-05-20T03:29:45.722Z" +} \ No newline at end of file diff --git a/.claude/skills/Behavioral_RL/SKILL.md b/.claude/skills/Behavioral_RL/SKILL.md new file mode 100644 index 0000000..7583b8f --- /dev/null +++ b/.claude/skills/Behavioral_RL/SKILL.md @@ -0,0 +1,88 @@ +```markdown +# Behavioral_RL Development Patterns + +> Auto-generated skill from repository analysis + +## Overview +This skill teaches the core development patterns and workflows used in the `Behavioral_RL` repository, a TypeScript codebase focused on behavioral reinforcement learning. It covers file organization, coding conventions, import/export styles, and automated workflows for dependency management. The guide also includes best practices for writing and running tests. + +## Coding Conventions + +**File Naming** +- Use camelCase for file names. + - Example: `behavioralAgent.ts`, `rewardFunction.ts` + +**Import Style** +- Use relative imports for modules within the project. + - Example: + ```typescript + import { computeReward } from './rewardFunction'; + ``` + +**Export Style** +- Use named exports for functions, classes, and constants. + - Example: + ```typescript + // In rewardFunction.ts + export function computeReward(state: State): number { ... } + ``` + +**Commit Messages** +- Freeform style, no strict prefixing. +- Average commit message length: ~55 characters. + +## Workflows + +### Bulk Dependency Update Across Experiment Directories +**Trigger:** When you need to update core Python dependencies for all experiment runs managed by wandb. +**Command:** `/bulk-update-dependencies` + +1. Identify all wandb run directories under `wandb/*/files/`. +2. For each run directory, open the `requirements.txt` file. +3. Update the following dependencies to their new versions: `idna`, `mistune`, `ujson`, `urllib3`. +4. Save the updated `requirements.txt` in each directory. +5. Commit all updated `requirements.txt` files in a single commit. + +**Example Directory Structure:** +``` +wandb/ + run1/ + files/ + requirements.txt + run2/ + files/ + requirements.txt +``` + +**Example Update in `requirements.txt`:** +``` +idna==3.4 +mistune==2.0.4 +ujson==5.8.0 +urllib3==2.0.2 +``` + +## Testing Patterns + +- Test files follow the pattern: `*.test.*` + - Example: `behavioralAgent.test.ts` +- The specific testing framework is not detected; check the project for further details. +- Place test files alongside or near the code they test. + +**Example Test File:** +```typescript +// behavioralAgent.test.ts +import { computeReward } from './rewardFunction'; + +test('computeReward returns correct value', () => { + expect(computeReward({ score: 10 })).toBe(100); +}); +``` + +## Commands + +| Command | Purpose | +|---------------------------|-----------------------------------------------------------------| +| /bulk-update-dependencies | Update Python dependencies in all wandb experiment requirements. | + +``` \ No newline at end of file diff --git a/.codex/AGENTS.md b/.codex/AGENTS.md new file mode 100644 index 0000000..6cf3a7f --- /dev/null +++ b/.codex/AGENTS.md @@ -0,0 +1,26 @@ +# ECC for Codex CLI + +This supplements the root `AGENTS.md` with a repo-local ECC baseline. + +## Repo Skill + +- Repo-generated Codex skill: `.agents/skills/Behavioral_RL/SKILL.md` +- Claude-facing companion skill: `.claude/skills/Behavioral_RL/SKILL.md` +- Keep user-specific credentials and private MCPs in `~/.codex/config.toml`, not in this repo. + +## MCP Baseline + +Treat `.codex/config.toml` as the default ECC-safe baseline for work in this repository. +The generated baseline enables GitHub, Context7, Exa, Memory, Playwright, and Sequential Thinking. + +## Multi-Agent Support + +- Explorer: read-only evidence gathering +- Reviewer: correctness, security, and regression review +- Docs researcher: API and release-note verification + +## Workflow Files + +- No dedicated workflow command files were generated for this repo. + +Use these workflow files as reusable task scaffolds when the detected repository workflows recur. \ No newline at end of file diff --git a/.codex/agents/docs-researcher.toml b/.codex/agents/docs-researcher.toml new file mode 100644 index 0000000..0daae57 --- /dev/null +++ b/.codex/agents/docs-researcher.toml @@ -0,0 +1,9 @@ +model = "gpt-5.4" +model_reasoning_effort = "medium" +sandbox_mode = "read-only" + +developer_instructions = """ +Verify APIs, framework behavior, and release-note claims against primary documentation before changes land. +Cite the exact docs or file paths that support each claim. +Do not invent undocumented behavior. +""" \ No newline at end of file diff --git a/.codex/agents/explorer.toml b/.codex/agents/explorer.toml new file mode 100644 index 0000000..732df7a --- /dev/null +++ b/.codex/agents/explorer.toml @@ -0,0 +1,9 @@ +model = "gpt-5.4" +model_reasoning_effort = "medium" +sandbox_mode = "read-only" + +developer_instructions = """ +Stay in exploration mode. +Trace the real execution path, cite files and symbols, and avoid proposing fixes unless the parent agent asks for them. +Prefer targeted search and file reads over broad scans. +""" \ No newline at end of file diff --git a/.codex/agents/reviewer.toml b/.codex/agents/reviewer.toml new file mode 100644 index 0000000..b13ed9c --- /dev/null +++ b/.codex/agents/reviewer.toml @@ -0,0 +1,9 @@ +model = "gpt-5.4" +model_reasoning_effort = "high" +sandbox_mode = "read-only" + +developer_instructions = """ +Review like an owner. +Prioritize correctness, security, behavioral regressions, and missing tests. +Lead with concrete findings and avoid style-only feedback unless it hides a real bug. +""" \ No newline at end of file diff --git a/.codex/config.toml b/.codex/config.toml new file mode 100644 index 0000000..bc1ee67 --- /dev/null +++ b/.codex/config.toml @@ -0,0 +1,48 @@ +#:schema https://developers.openai.com/codex/config-schema.json + +# ECC Tools generated Codex baseline +approval_policy = "on-request" +sandbox_mode = "workspace-write" +web_search = "live" + +[mcp_servers.github] +command = "npx" +args = ["-y", "@modelcontextprotocol/server-github"] + +[mcp_servers.context7] +command = "npx" +args = ["-y", "@upstash/context7-mcp@latest"] + +[mcp_servers.exa] +url = "https://mcp.exa.ai/mcp" + +[mcp_servers.memory] +command = "npx" +args = ["-y", "@modelcontextprotocol/server-memory"] + +[mcp_servers.playwright] +command = "npx" +args = ["-y", "@playwright/mcp@latest", "--extension"] + +[mcp_servers.sequential-thinking] +command = "npx" +args = ["-y", "@modelcontextprotocol/server-sequential-thinking"] + +[features] +multi_agent = true + +[agents] +max_threads = 6 +max_depth = 1 + +[agents.explorer] +description = "Read-only codebase explorer for gathering evidence before changes are proposed." +config_file = "agents/explorer.toml" + +[agents.reviewer] +description = "PR reviewer focused on correctness, security, and missing tests." +config_file = "agents/reviewer.toml" + +[agents.docs_researcher] +description = "Documentation specialist that verifies APIs, framework behavior, and release notes." +config_file = "agents/docs-researcher.toml" \ No newline at end of file