mirror of
https://github.com/Jeuners/ECC.git
synced 2026-09-09 15:02:30 +02:00
Merge pull request #2491 from gaurav0107/fix/2477-opencode-command-agent-scope
fix(opencode): resolve command agent ids to registered opencode agents
This commit is contained in:
commit
8512dc6f42
32 changed files with 53 additions and 34 deletions
|
|
@ -184,7 +184,7 @@ Create a detailed implementation plan for: {input}
|
||||||
```markdown
|
```markdown
|
||||||
---
|
---
|
||||||
description: Create implementation plan
|
description: Create implementation plan
|
||||||
agent: everything-claude-code:planner
|
agent: planner
|
||||||
---
|
---
|
||||||
|
|
||||||
Create a detailed implementation plan for: $ARGUMENTS
|
Create a detailed implementation plan for: $ARGUMENTS
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Fix build and TypeScript errors with minimal changes
|
description: Fix build and TypeScript errors with minimal changes
|
||||||
agent: everything-claude-code:build-error-resolver
|
agent: build-error-resolver
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Save verification state and progress checkpoint
|
description: Save verification state and progress checkpoint
|
||||||
agent: everything-claude-code:build
|
agent: build
|
||||||
---
|
---
|
||||||
|
|
||||||
# Checkpoint Command
|
# Checkpoint Command
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Review code for quality, security, and maintainability
|
description: Review code for quality, security, and maintainability
|
||||||
agent: everything-claude-code:code-reviewer
|
agent: code-reviewer
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Generate and run E2E tests with Playwright
|
description: Generate and run E2E tests with Playwright
|
||||||
agent: everything-claude-code:e2e-runner
|
agent: e2e-runner
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Run evaluation against acceptance criteria
|
description: Run evaluation against acceptance criteria
|
||||||
agent: everything-claude-code:build
|
agent: build
|
||||||
---
|
---
|
||||||
|
|
||||||
# Eval Command
|
# Eval Command
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Analyze instincts and suggest or generate evolved structures
|
description: Analyze instincts and suggest or generate evolved structures
|
||||||
agent: everything-claude-code:build
|
agent: build
|
||||||
---
|
---
|
||||||
|
|
||||||
# Evolve Command
|
# Evolve Command
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Fix Go build and vet errors
|
description: Fix Go build and vet errors
|
||||||
agent: everything-claude-code:go-build-resolver
|
agent: go-build-resolver
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Go code review for idiomatic patterns
|
description: Go code review for idiomatic patterns
|
||||||
agent: everything-claude-code:go-reviewer
|
agent: go-reviewer
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Go TDD workflow with table-driven tests
|
description: Go TDD workflow with table-driven tests
|
||||||
agent: everything-claude-code:tdd-guide
|
agent: tdd-guide
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Export instincts for sharing
|
description: Export instincts for sharing
|
||||||
agent: everything-claude-code:build
|
agent: build
|
||||||
---
|
---
|
||||||
|
|
||||||
# Instinct Export Command
|
# Instinct Export Command
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Import instincts from external sources
|
description: Import instincts from external sources
|
||||||
agent: everything-claude-code:build
|
agent: build
|
||||||
---
|
---
|
||||||
|
|
||||||
# Instinct Import Command
|
# Instinct Import Command
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Show learned instincts (project + global) with confidence
|
description: Show learned instincts (project + global) with confidence
|
||||||
agent: everything-claude-code:build
|
agent: build
|
||||||
---
|
---
|
||||||
|
|
||||||
# Instinct Status Command
|
# Instinct Status Command
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Extract patterns and learnings from current session
|
description: Extract patterns and learnings from current session
|
||||||
agent: everything-claude-code:build
|
agent: build
|
||||||
---
|
---
|
||||||
|
|
||||||
# Learn Command
|
# Learn Command
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Orchestrate multiple agents for complex tasks
|
description: Orchestrate multiple agents for complex tasks
|
||||||
agent: everything-claude-code:planner
|
agent: planner
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Create implementation plan with risk assessment
|
description: Create implementation plan with risk assessment
|
||||||
agent: everything-claude-code:planner
|
agent: planner
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: List registered projects and instinct counts
|
description: List registered projects and instinct counts
|
||||||
agent: everything-claude-code:build
|
agent: build
|
||||||
---
|
---
|
||||||
|
|
||||||
# Projects Command
|
# Projects Command
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Promote project instincts to global scope
|
description: Promote project instincts to global scope
|
||||||
agent: everything-claude-code:build
|
agent: build
|
||||||
---
|
---
|
||||||
|
|
||||||
# Promote Command
|
# Promote Command
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Remove dead code and consolidate duplicates
|
description: Remove dead code and consolidate duplicates
|
||||||
agent: everything-claude-code:refactor-cleaner
|
agent: refactor-cleaner
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Fix Rust build errors and borrow checker issues
|
description: Fix Rust build errors and borrow checker issues
|
||||||
agent: everything-claude-code:rust-build-resolver
|
agent: rust-build-resolver
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Rust code review for ownership, safety, and idiomatic patterns
|
description: Rust code review for ownership, safety, and idiomatic patterns
|
||||||
agent: everything-claude-code:rust-reviewer
|
agent: rust-reviewer
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Rust TDD workflow with unit and property tests
|
description: Rust TDD workflow with unit and property tests
|
||||||
agent: everything-claude-code:tdd-guide
|
agent: tdd-guide
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Run AgentShield against agent, hook, MCP, permission, and secret surfaces.
|
description: Run AgentShield against agent, hook, MCP, permission, and secret surfaces.
|
||||||
agent: everything-claude-code:security-reviewer
|
agent: security-reviewer
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Run comprehensive security review
|
description: Run comprehensive security review
|
||||||
agent: everything-claude-code:security-reviewer
|
agent: security-reviewer
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Configure package manager preference
|
description: Configure package manager preference
|
||||||
agent: everything-claude-code:build
|
agent: build
|
||||||
---
|
---
|
||||||
|
|
||||||
# Setup Package Manager Command
|
# Setup Package Manager Command
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Generate skills from git history analysis
|
description: Generate skills from git history analysis
|
||||||
agent: everything-claude-code:build
|
agent: build
|
||||||
---
|
---
|
||||||
|
|
||||||
# Skill Create Command
|
# Skill Create Command
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Enforce TDD workflow with 80%+ coverage
|
description: Enforce TDD workflow with 80%+ coverage
|
||||||
agent: everything-claude-code:tdd-guide
|
agent: tdd-guide
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Analyze and improve test coverage
|
description: Analyze and improve test coverage
|
||||||
agent: everything-claude-code:tdd-guide
|
agent: tdd-guide
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Update codemaps for codebase navigation
|
description: Update codemaps for codebase navigation
|
||||||
agent: everything-claude-code:doc-updater
|
agent: doc-updater
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Update documentation for recent changes
|
description: Update documentation for recent changes
|
||||||
agent: everything-claude-code:doc-updater
|
agent: doc-updater
|
||||||
subtask: true
|
subtask: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
description: Run verification loop to validate implementation
|
description: Run verification loop to validate implementation
|
||||||
agent: everything-claude-code:build
|
agent: build
|
||||||
---
|
---
|
||||||
|
|
||||||
# Verify Command
|
# Verify Command
|
||||||
|
|
|
||||||
|
|
@ -77,10 +77,16 @@ if (
|
||||||
else failed++;
|
else failed++;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
test('command markdown frontmatter uses plugin-scoped agent ids', () => {
|
test('command markdown frontmatter agent ids resolve to a registered opencode agent', () => {
|
||||||
const commandsDir = path.join(opencodeDir, 'commands');
|
const commandsDir = path.join(opencodeDir, 'commands');
|
||||||
|
const registeredAgents = new Set(Object.keys(config.agent || {}));
|
||||||
|
assert.ok(registeredAgents.size > 0, 'Expected opencode.json to register at least one agent');
|
||||||
|
|
||||||
for (const entry of fs.readdirSync(commandsDir)) {
|
for (const entry of fs.readdirSync(commandsDir)) {
|
||||||
|
if (!entry.endsWith('.md')) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
const body = fs.readFileSync(path.join(commandsDir, entry), 'utf8');
|
const body = fs.readFileSync(path.join(commandsDir, entry), 'utf8');
|
||||||
const match = body.match(/^agent:\s*(.+)$/m);
|
const match = body.match(/^agent:\s*(.+)$/m);
|
||||||
|
|
||||||
|
|
@ -88,9 +94,22 @@ if (
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const agentId = match[1].trim().replace(/^['"]|['"]$/g, '');
|
||||||
|
|
||||||
|
// Regression guard for #2477: opencode registers these agents unscoped
|
||||||
|
// in opencode.json's `agent` map, so ANY namespace-scoped id
|
||||||
|
// (`<plugin>:<agent>` — e.g. the Claude Code `everything-claude-code:`
|
||||||
|
// prefix) fails to resolve ("Agent not found") and hard-breaks subtask
|
||||||
|
// commands like /code-review on opencode. Reject the whole scoped class,
|
||||||
|
// not just the one legacy prefix.
|
||||||
assert.ok(
|
assert.ok(
|
||||||
match[1].startsWith('everything-claude-code:'),
|
!agentId.includes(':'),
|
||||||
`Expected plugin-scoped agent id in ${entry}, got: ${match[1]}`
|
`${entry}: command agent must be an unscoped opencode agent id, got: ${agentId}`
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.ok(
|
||||||
|
registeredAgents.has(agentId),
|
||||||
|
`${entry}: command agent "${agentId}" is not registered in opencode.json's agent map`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue