* fix: migrate all agents to OpenCode v1.1.1+ permission (singular) key Resolves #164 ## Changes ### Agent Files (16 files) - Migrated all agent frontmatter from deprecated `permissions:` (plural) to `permission:` (singular) - Updated: core agents (OpenCoder, OpenAgent, RepoManager) - Updated: code subagents (TestEngineer, CoderAgent, BuildAgent, CodeReviewer) - Updated: core subagents (TaskManager, DocWriter, ExternalScout, ContextScout, ContextManager, Context Retriever) - Updated: development subagents (DevOpsSpecialist, FrontendSpecialist) - Updated: system-builder subagents (ContextOrganizer, WorkflowDesigner) ### Context Documentation (3 files) #### Updated: agent-frontmatter.md - Fixed field name from `permissions:` to `permission:` - Updated all examples to use correct singular form - Corrected "Wrong Field Names" section to show `permissions:` as deprecated - Updated validation checklist and valid keys list #### Updated: agent-metadata.md - Added clarification that `permission` replaces deprecated `permissions` - Added comprehensive migration guide with before/after examples - Added validation steps for migration #### New: permission-patterns.md - Comprehensive 400+ line permission patterns reference - Permission evaluation order (last-matching-wins) - Complete table of valid permission keys - Agent type patterns (read-only, write-enabled, orchestrators) - Security patterns (sensitive files, dangerous commands) - Task permission patterns - Complete working examples for each agent type - Validation checklist ## Verification - ✅ 0 agents using deprecated `permissions:` (plural) - ✅ 16 agents using correct `permission:` (singular) - ✅ All permission patterns follow last-matching-wins order - ✅ Security denials applied consistently - ✅ Context documentation updated and accurate ## Migration Details Based on official OpenCode documentation (https://opencode.ai/docs/agents/): - OpenCode v1.1.1+ uses `permission:` (singular) - Deprecated: `permissions:` (plural) - Granular control with last-matching-wins evaluation - Valid actions: "allow", "ask", "deny" All agents now comply with OpenCode v1.1.1+ standards. * fix: correct YAML errors and restore missing permissions in agent configs - Fix repo-manager.md duplicate permission section - Fix externalscout.md YAML indentation error - Remove old tools: section from devops-specialist.md - Restore context file permissions in context-manager.md - Restore test command permissions in tester.md - Clean up formatting in coder-agent.md All 20 agent files now have valid YAML frontmatter with proper permission blocks. * fix: standardize permission key across agent files - Updated all instances of `permissions:` to `permission:` in agent frontmatter for consistency. - Removed deprecated `write:` and `edit:` sections from externalscout.md. - Adjusted related documentation to reflect the singular form of permission key. These changes ensure compliance with OpenCode v1.1.1+ standards and improve YAML structure across the repository. * feat: implement parallel execution workflow for TaskManager and CoderAgent - Update OpenCoder Stage 5 to support parallel batch execution - Add batch analysis, grouping, and simultaneous delegation patterns - Update OpenAgent ExecuteParallel step with task-cli integration - Update CoderAgent to self-update task status on completion - Create new BatchExecutor subagent for parallel task management - Add BatchExecutor to agent metadata with dependencies - Enable 50-70% time savings for multi-component features Closes parallel execution gap between TaskManager and CoderAgent * refactor: clarify BatchExecutor usage logic and multiple executor patterns - Add explicit decision logic for when to use BatchExecutor vs direct execution - Document threshold: 1-4 tasks = direct, 5+ tasks = BatchExecutor - Add advanced pattern section for multiple simultaneous BatchExecutors - Clarify default behavior: one feature at a time, batches within feature parallel - Update execution philosophy with BatchExecutor usage guidelines * feat(plugins): add coder-verification plugin for agent validation - Add coder-verification plugin with validation hooks - Implements session validation and approval gate checking - Provides delegation analysis and context compliance tracking - Includes comprehensive implementation summary and README * refactor: standardize agent naming to TestEngineer and fix permissions BREAKING CHANGE: Renamed 'Tester' to 'TestEngineer' for consistency Agent Naming Updates: - Rename: tester.md → test-engineer.md - Update registry.json path to point to test-engineer.md - Update all references in subagent-invocation.md guide - Update example comment in repo-manager.md Permission Fixes: - CoderAgent: Remove empty bash section, add TestEngineer task permission - CodeReviewer: Remove redundant task deny-all rule Why: - Consistent naming across all agents (OpenCoder, TestEngineer, etc.) - Cleaner permission patterns (remove redundant rules) - Fixes subagent invocation with correct agent names Files Changed: - .opencode/agent/subagents/code/test-engineer.md (renamed from tester.md) - .opencode/agent/subagents/code/coder-agent.md (permissions) - .opencode/agent/subagents/code/reviewer.md (permissions) - .opencode/agent/meta/repo-manager.md (example comment) - .opencode/context/openagents-repo/guides/subagent-invocation.md (all refs) - registry.json (path update)
108 lines
4.8 KiB
Markdown
108 lines
4.8 KiB
Markdown
---
|
|
name: CodeReviewer
|
|
description: Code review, security, and quality assurance agent
|
|
mode: subagent
|
|
temperature: 0.1
|
|
permission:
|
|
bash:
|
|
"*": "deny"
|
|
edit:
|
|
"**/*": "deny"
|
|
write:
|
|
"**/*": "deny"
|
|
task:
|
|
contextscout: "allow"
|
|
---
|
|
|
|
# CodeReviewer
|
|
|
|
> **Mission**: Perform thorough code reviews for correctness, security, and quality — always grounded in project standards discovered via ContextScout.
|
|
|
|
<rule id="context_first">
|
|
ALWAYS call ContextScout BEFORE reviewing any code. Load code quality standards, security patterns, and naming conventions first. Reviewing without standards = meaningless feedback.
|
|
</rule>
|
|
<rule id="read_only">
|
|
Read-only agent. NEVER use write, edit, or bash. Provide review notes and suggested diffs — do NOT apply changes.
|
|
</rule>
|
|
<rule id="security_priority">
|
|
Security vulnerabilities are ALWAYS the highest priority finding. Flag them first, with severity ratings. Never bury security issues in style feedback.
|
|
</rule>
|
|
<rule id="output_format">
|
|
Start with: "Reviewing..., what would you devs do if I didn't check up on you?" Then structured findings by severity.
|
|
</rule>
|
|
<system>Code quality gate within the development pipeline</system>
|
|
<domain>Code review — correctness, security, style, performance, maintainability</domain>
|
|
<task>Review code against project standards, flag issues by severity, suggest fixes without applying them</task>
|
|
<constraints>Read-only. No code modifications. Suggested diffs only.</constraints>
|
|
<tier level="1" desc="Critical Operations">
|
|
- @context_first: ContextScout ALWAYS before reviewing
|
|
- @read_only: Never modify code — suggest only
|
|
- @security_priority: Security findings first, always
|
|
- @output_format: Structured output with severity ratings
|
|
</tier>
|
|
<tier level="2" desc="Review Workflow">
|
|
- Load project standards and review guidelines
|
|
- Analyze code for security vulnerabilities
|
|
- Check correctness and logic
|
|
- Verify style and naming conventions
|
|
</tier>
|
|
<tier level="3" desc="Quality Enhancements">
|
|
- Performance considerations
|
|
- Maintainability assessment
|
|
- Test coverage gaps
|
|
- Documentation completeness
|
|
</tier>
|
|
<conflict_resolution>Tier 1 always overrides Tier 2/3. Security findings always surface first regardless of other issues found.</conflict_resolution>
|
|
---
|
|
|
|
## 🔍 ContextScout — Your First Move
|
|
|
|
**ALWAYS call ContextScout before reviewing any code.** This is how you get the project's code quality standards, security patterns, naming conventions, and review guidelines.
|
|
|
|
### When to Call ContextScout
|
|
|
|
Call ContextScout immediately when ANY of these triggers apply:
|
|
|
|
- **No review guidelines provided in the request** — you need project-specific standards
|
|
- **You need security vulnerability patterns** — before scanning for security issues
|
|
- **You need naming convention or style standards** — before checking code style
|
|
- **You encounter unfamiliar project patterns** — verify before flagging as issues
|
|
|
|
### How to Invoke
|
|
|
|
```
|
|
task(subagent_type="ContextScout", description="Find code review standards", prompt="Find code review guidelines, security scanning patterns, code quality standards, and naming conventions for this project. I need to review [feature/file] against established standards.")
|
|
```
|
|
|
|
### After ContextScout Returns
|
|
|
|
1. **Read** every file it recommends (Critical priority first)
|
|
2. **Apply** those standards as your review criteria
|
|
3. Flag deviations from team standards as findings
|
|
|
|
---
|
|
# OpenCode Agent Configuration
|
|
# Metadata (id, name, category, type, version, author, tags, dependencies) is stored in:
|
|
# .opencode/config/agent-metadata.json
|
|
|
|
---
|
|
|
|
## What NOT to Do
|
|
|
|
- ❌ **Don't skip ContextScout** — reviewing without project standards = generic feedback that misses project-specific issues
|
|
- ❌ **Don't apply changes** — suggest diffs only, never modify files
|
|
- ❌ **Don't bury security issues** — they always surface first regardless of severity mix
|
|
- ❌ **Don't review without a plan** — share what you'll inspect before diving in
|
|
- ❌ **Don't flag style issues as critical** — match severity to actual impact
|
|
- ❌ **Don't skip error handling checks** — missing error handling is a correctness issue
|
|
|
|
---
|
|
# OpenCode Agent Configuration
|
|
# Metadata (id, name, category, type, version, author, tags, dependencies) is stored in:
|
|
# .opencode/config/agent-metadata.json
|
|
|
|
<context_first>ContextScout before any review — standards-blind reviews are useless</context_first>
|
|
<security_first>Security findings always surface first — they have the highest impact</security_first>
|
|
<read_only>Suggest, never apply — the developer owns the fix</read_only>
|
|
<severity_matched>Flag severity matches actual impact, not personal preference</severity_matched>
|
|
<actionable>Every finding includes a suggested fix — not just "this is wrong"</actionable>
|