* chore: bump version to v0.8.0
* chore: update version to 0.7.1 instead of 0.8.0
* docs: expand comparison table with Oh My OpenCode and additional features
* backup: development context before reorganization
* refactor(context): reorganize development folder
- Remove 7 duplicate files (ui/design files exist in ui/web/)
- Remove 2 redundant READMEs (use navigation.md instead)
- Move react-patterns.md to frontend/react/
- Create frontend/react/navigation.md
- Update 4 navigation files (development, ui, frontend, frontend/react)
- Update developer profile (4 path changes: ui-styling-standards, design-systems, design-assets, animation-patterns)
- Update 3 core context files (visual-development.md, design-iteration.md, file-locations.md)
Result: 29 context files (down from 36), no duplicates, clean structure
Refs: REORGANIZATION_PLAN.md, REORGANIZATION_SUMMARY.md
* docs(context): add frontend delegation guide
- Create when-to-delegate.md with clear decision criteria
- Decision matrix for when to delegate vs. handle directly
- Common patterns and examples
- Red flags and green flags
- Frontend-specialist capabilities reference
- Update frontend and development navigation files
Helps orchestrators decide when to delegate UI work to frontend-specialist subagent.
* feat: enhance developer and advanced profiles with UI, development, and system builder context
- Developer profile: Add UI/UX patterns, development principles, design systems, React patterns, animation patterns, styling standards, and design assets
- Full profile: Add same UI/development context as developer profile for consistency
- Advanced profile: Add comprehensive system builder context including templates, guides, context system standards, and repository management context
- Update profile descriptions to reflect new capabilities
- All context files verified to exist and are properly referenced
* fix: remove duplicate context entries with incorrect paths
- Remove duplicate design-assets, ui-styling-standards, clean-code, animation-patterns, design-systems, react-patterns, and api-design entries that pointed to wrong paths
- Remove non-existent development-readme and mastra-ai-readme entries
- Keep only correct entries with proper file paths
- All registry paths now validated and correct
* feat: add add-context command to registry and all profiles
- Register add-context command in registry.json
- Add command:add-context to all 5 profiles (essential, developer, business, full, advanced)
- Update add-context.md to mention external-context files in .tmp/ directory
- Fix command dependencies to use context IDs instead of full paths
- All registry paths and dependencies validated
* feat: enhance add-context with external context file management
- Add Stage 0: Detect external context files in .tmp/
- Offer options to extract, manage, or harvest external files
- Extract patterns from external context files for use in project intelligence
- Provide management options: update, remove, clean, or harvest
- Add examples showing external context extraction and management
- Update troubleshooting with external context file handling
- Integrate with /context harvest command for permanent context organization
* fix: comprehensive context system audit and restructuring
- Fix 6 command documentation inconsistencies in add-context.md
* Correct /add-context vs /context harvest command references
* Simplify Stage 0 workflow from 4 to 2 options
* Update examples to match actual behavior
* Remove non-existent operations from delegation section
* Fix troubleshooting Q&A section
- Restructure registry.json with 4 major improvements
* Replace 31 duplicate 'navigation' IDs with unique IDs per subfolder
- core-navigation, development-navigation, openagents-repo-navigation, etc.
* Add context:openagents-repo/* to developer and full profiles
- Developers now have repo-specific guides and examples
* Remove context:to-be-consumed/* from essential, developer, business, full
- Keep only in advanced profile for system builders
* Properly scope mastra-ai context via wildcard patterns
Validation Results:
- Registry: 220/220 paths valid, 0 missing dependencies
- Profiles: All appropriately scoped with no duplicate IDs
- Standards: MVI compliance, frontmatter, structure verified
- No regressions: All tests passing
Fixes issues with context organization, command consistency, and profile coverage.
* feat: make agents OpenCode-compliant with centralized metadata system
- Remove invalid OpenCode fields from agent frontmatter (id, category, type, version, author, tags, dependencies, context, permissions)
- Keep only valid OpenCode fields (name, description, mode, temperature, tools, permission)
- Create centralized metadata file (.opencode/config/agent-metadata.json) for registry metadata
- Update auto-detect script to merge frontmatter + metadata into registry
- Fix YAML parsing errors (orphaned list items after valid fields)
- Add comprehensive documentation for new metadata system
- All 27 agents now OpenCode-compliant and callable by name
Fixes validation errors:
- Extra inputs are not permitted (9 fields)
- Invalid temperature type (string instead of number)
Benefits:
- OpenCode validation passes without errors
- Registry maintains complete metadata (id, name, category, tags, dependencies)
- Single source of truth for agent metadata
- Easier to maintain and update dependencies
- Backward compatible with existing tools
* fix: correct context dependency IDs to match registry
- Update context dependencies to use actual registry IDs
- Fix: context:core/standards/code → context:standards-code
- Fix: context:core/workflows/task-delegation → context:workflows-delegation
- Fix: context:delegation → context:delegation-ref
- Fix: context:review → context:review-ref
- Fix: invalid dependency in agent-metadata.md documentation
- All registry validation now passes
* chore: add navigation files and update workflow context
- Add navigation.md files for all context directories
- Update design-iteration.md and task-delegation.md workflows
- Clean up backup files from metadata fixes
* fix: install dependencies in validate-registry workflow
The validation script requires the 'glob' package which is in devDependencies.
CI was failing because dependencies were never installed before running validation.
* fix: show validation errors in CI logs
Use tee to display validation output in logs while also saving to file.
This makes debugging CI failures much easier.
* fix: remove duplicate pull_request trigger
The workflow was running twice (pull_request + pull_request_target) causing
duplicate checks. Keep only pull_request_target to support bot PRs and allow
writing to PR branches.
* chore: trigger CI re-run with fixed workflow
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
13 KiB
Core Concept: Agent Metadata System
Purpose: Understanding the centralized metadata system for OpenAgents Control
Priority: CRITICAL - Load this before working with agent metadata
What Is the Agent Metadata System?
The agent metadata system separates OpenCode-compliant agent configuration from OpenAgents Control registry metadata. This solves the problem of OpenCode validation errors when agents contain fields that aren't part of the OpenCode agent schema.
Key Principle: Agent frontmatter contains ONLY valid OpenCode fields. All other metadata lives in a centralized file.
The Problem We Solved
Before (Validation Errors)
Agent frontmatter contained fields that OpenCode doesn't recognize:
---
id: opencoder # ❌ Not valid OpenCode field
name: OpenCoder # ❌ Not valid OpenCode field
category: core # ❌ Not valid OpenCode field
type: core # ❌ Not valid OpenCode field
version: 1.0.0 # ❌ Not valid OpenCode field
author: opencode # ❌ Not valid OpenCode field
tags: [development, coding] # ❌ Not valid OpenCode field
dependencies: [] # ❌ Not valid OpenCode field
description: "..." # ✅ Valid OpenCode field
mode: primary # ✅ Valid OpenCode field
temperature: 0.1 # ✅ Valid OpenCode field
tools: {...} # ✅ Valid OpenCode field
permission: {...} # ✅ Valid OpenCode field
---
Result: OpenCode validation errors:
Extra inputs are not permitted, field: 'id', value: 'opencoder'
Extra inputs are not permitted, field: 'category', value: 'core'
Extra inputs are not permitted, field: 'type', value: 'core'
... (9 validation errors)
After (Clean Separation)
Agent frontmatter (.opencode/agent/core/opencoder.md):
---
# Metadata stored in: .opencode/config/agent-metadata.json
description: "Orchestration agent for complex coding, architecture, and multi-file refactoring"
mode: primary
temperature: 0.1
tools: {...}
permission: {...}
---
Centralized metadata (.opencode/config/agent-metadata.json):
{
"agents": {
"opencoder": {
"id": "opencoder",
"name": "OpenCoder",
"category": "core",
"type": "agent",
"version": "1.0.0",
"author": "opencode",
"tags": ["development", "coding", "implementation"],
"dependencies": [
"subagent:documentation",
"subagent:coder-agent",
"context:core/standards/code"
]
}
}
}
Result: ✅ No validation errors, clean separation of concerns
Valid OpenCode Agent Fields
Based on OpenCode documentation, these are the ONLY valid frontmatter fields:
Required Fields
description- When to use this agent (required)mode- Agent type:primary,subagent, orall(defaults toall)
Optional Fields
model- Model override (e.g.,anthropic/claude-sonnet-4-20250514)temperature- Response randomness (0.0-1.0)maxSteps- Max agentic iterationsdisable- Set totrueto disable agentprompt- Custom prompt file path (e.g.,{file:./prompts/build.txt})hidden- Hide from @ autocomplete (subagents only)tools- Tool access configurationpermission- Permission rules for tools
Example Valid Frontmatter
---
description: "Code review agent with security focus"
mode: subagent
model: anthropic/claude-sonnet-4-20250514
temperature: 0.1
tools:
read: true
grep: true
glob: true
write: false
edit: false
permission:
bash:
"*": ask
"git *": allow
edit: deny
---
Centralized Metadata File
Location: .opencode/config/agent-metadata.json
Schema
{
"$schema": "https://opencode.ai/schemas/agent-metadata.json",
"schema_version": "1.0.0",
"description": "Centralized metadata for OpenAgents Control agents",
"agents": {
"agent-id": {
"id": "agent-id",
"name": "Agent Name",
"category": "core|development|content|data|product|learning|meta",
"type": "agent|subagent",
"version": "1.0.0",
"author": "opencode",
"tags": ["tag1", "tag2"],
"dependencies": [
"subagent:subagent-id",
"context:path/to/context"
]
}
},
"defaults": {
"agent": {
"version": "1.0.0",
"author": "opencode",
"type": "agent",
"tags": []
},
"subagent": {
"version": "1.0.0",
"author": "opencode",
"type": "subagent",
"tags": []
}
}
}
Metadata Fields
| Field | Required | Description | Example |
|---|---|---|---|
id |
Yes | Unique identifier (kebab-case) | "opencoder" |
name |
Yes | Display name | "OpenCoder" |
category |
Yes | Agent category | "core" |
type |
Yes | Component type | "agent" or "subagent" |
version |
Yes | Version number | "1.0.0" |
author |
Yes | Author identifier | "opencode" |
tags |
No | Discovery tags | ["development", "coding"] |
dependencies |
No | Component dependencies | ["subagent:tester"] |
How It Works
1. Agent Creation
When creating a new agent:
Step 1: Create agent file with ONLY valid OpenCode fields
# Create agent file
touch .opencode/agent/category/my-agent.md
---
description: "My agent description"
mode: subagent
temperature: 0.2
tools:
read: true
write: true
---
# Agent prompt content here
Step 2: Add metadata to .opencode/config/agent-metadata.json
{
"agents": {
"my-agent": {
"id": "my-agent",
"name": "My Agent",
"category": "development",
"type": "subagent",
"version": "1.0.0",
"author": "opencode",
"tags": ["custom", "helper"],
"dependencies": ["context:core/standards/code"]
}
}
}
Step 3: Run auto-detect to update registry
./scripts/registry/auto-detect-components.sh --auto-add
The auto-detect script:
- Reads frontmatter from agent file (description, mode, etc.)
- Reads metadata from
agent-metadata.json(id, name, tags, dependencies) - Merges both into registry.json entry
2. Auto-Detect Integration
The auto-detect script (scripts/registry/auto-detect-components.sh) has been enhanced to:
- Extract frontmatter - Read description from agent file
- Lookup metadata - Check
agent-metadata.jsonfor agent ID - Merge data - Combine frontmatter + metadata
- Update registry - Write complete entry to registry.json
Code snippet (from auto-detect script):
# Check if agent-metadata.json exists and merge metadata from it
local metadata_file="$REPO_ROOT/.opencode/config/agent-metadata.json"
if [ -f "$metadata_file" ] && command -v jq &> /dev/null; then
# Try to find metadata for this agent ID
local metadata_entry
metadata_entry=$(jq -r ".agents[\"$id\"] // empty" "$metadata_file" 2>/dev/null)
if [ -n "$metadata_entry" ] && [ "$metadata_entry" != "null" ]; then
# Merge name, tags, dependencies from metadata
# ...
fi
fi
3. Registry Output
The registry.json entry contains merged data:
{
"id": "opencoder",
"name": "OpenCoder",
"type": "agent",
"path": ".opencode/agent/core/opencoder.md",
"description": "Orchestration agent for complex coding...",
"category": "core",
"tags": ["development", "coding", "implementation"],
"dependencies": [
"subagent:documentation",
"subagent:coder-agent",
"context:core/standards/code"
]
}
Workflow
Adding a New Agent
# 1. Create agent file (OpenCode-compliant frontmatter only)
vim .opencode/agent/category/my-agent.md
# 2. Add metadata entry
vim .opencode/config/agent-metadata.json
# 3. Update registry
./scripts/registry/auto-detect-components.sh --auto-add
# 4. Validate
./scripts/registry/validate-registry.sh
Updating Agent Metadata
To update OpenCode configuration (tools, permissions, temperature):
# Edit agent file frontmatter
vim .opencode/agent/category/my-agent.md
To update registry metadata (tags, dependencies, version):
# Edit metadata file
vim .opencode/config/agent-metadata.json
# Re-run auto-detect
./scripts/registry/auto-detect-components.sh --auto-add
Updating Dependencies
Add a dependency:
{
"agents": {
"my-agent": {
"dependencies": [
"subagent:tester",
"context:core/standards/code",
"subagent:new-dependency" // ← Add here
]
}
}
}
Then run:
./scripts/registry/auto-detect-components.sh --auto-add
./scripts/registry/validate-registry.sh
Benefits
✅ OpenCode Compliance
- Agent frontmatter contains ONLY valid OpenCode fields
- No validation errors from OpenCode
- Agents work correctly with OpenCode CLI
✅ Registry Compatibility
- Registry still has all metadata (id, name, category, tags, dependencies)
- Auto-detect script merges frontmatter + metadata
- Backward compatible with existing tools
✅ Single Source of Truth
- Metadata centralized in one file
- Easy to update dependencies across multiple agents
- Clear separation: OpenCode config vs. registry metadata
✅ Maintainability
- Update dependencies in one place
- Consistent metadata across all agents
- Easy to add new metadata fields
✅ Validation
- OpenCode validates frontmatter (no extra fields)
- Registry validator checks dependencies exist
- Clear error messages when metadata is missing
Migration Guide
Migrating Existing Agents
Step 1: Identify agents with extra fields
# Find agents with invalid OpenCode fields
grep -r "^id:\|^name:\|^category:\|^type:\|^version:\|^author:\|^tags:\|^dependencies:" .opencode/agent/
Step 2: Extract metadata to agent-metadata.json
For each agent:
- Copy
id,name,category,type,version,author,tags,dependenciesto metadata file - Remove these fields from agent frontmatter
- Keep ONLY valid OpenCode fields in frontmatter
Step 3: Update registry
# Remove old entries
jq 'del(.components.agents[] | select(.id == "agent-id"))' registry.json > tmp.json && mv tmp.json registry.json
# Re-add with new metadata
./scripts/registry/auto-detect-components.sh --auto-add
Step 4: Validate
./scripts/registry/validate-registry.sh
Best Practices
Agent Frontmatter
✅ DO:
- Keep frontmatter minimal (only OpenCode fields)
- Add comment pointing to metadata file
- Use consistent formatting
❌ DON'T:
- Add custom fields to frontmatter
- Duplicate metadata in both places
- Skip the metadata file
Metadata File
✅ DO:
- Keep metadata file in version control
- Update metadata when adding/removing dependencies
- Use consistent naming (kebab-case for IDs)
- Document why dependencies exist
❌ DON'T:
- Forget to update metadata when creating agents
- Leave orphaned entries (agents that don't exist)
- Skip validation after updates
Dependencies
✅ DO:
- Declare ALL dependencies (subagents, contexts)
- Use correct format:
type:id - Validate dependencies exist in registry
❌ DON'T:
- Reference components without declaring dependency
- Use invalid dependency formats
- Forget to update when dependencies change
Troubleshooting
OpenCode Validation Errors
Problem: Extra inputs are not permitted, field: 'id'
Solution: Remove invalid fields from agent frontmatter, add to metadata file
# 1. Edit agent file - remove id, name, category, type, version, author, tags, dependencies
vim .opencode/agent/category/agent.md
# 2. Add to metadata file
vim .opencode/config/agent-metadata.json
# 3. Update registry
./scripts/registry/auto-detect-components.sh --auto-add
Missing Metadata
Problem: Auto-detect can't find metadata for agent
Solution: Add entry to agent-metadata.json
{
"agents": {
"agent-id": {
"id": "agent-id",
"name": "Agent Name",
"category": "core",
"type": "agent",
"version": "1.0.0",
"author": "opencode",
"tags": [],
"dependencies": []
}
}
}
Registry Out of Sync
Problem: Registry has old metadata
Solution: Remove entry and re-run auto-detect
# Remove old entry
jq 'del(.components.agents[] | select(.id == "agent-id"))' registry.json > tmp.json && mv tmp.json registry.json
# Re-add with current metadata
./scripts/registry/auto-detect-components.sh --auto-add
Related Files
- OpenCode Agent Docs: https://opencode.ai/docs/agents/
- Registry System:
.opencode/context/openagents-repo/core-concepts/registry.md - Adding Agents:
.opencode/context/openagents-repo/guides/adding-agent.md - Dependencies:
.opencode/context/openagents-repo/quality/registry-dependencies.md
Last Updated: 2026-01-31
Version: 1.0.0