UNPKG

opencode-agent-kit

Version:

Multi-stack OpenCode agent toolkit — 33+ specialized AI agents, 200+ skills, 46 commands, 8 MCP servers (Nuxt, React, Node.js, Laravel, CI3, Android, Flutter, DevOps, SEO, SonarQube, and more)

248 lines (183 loc) 7.97 kB
--- name: agent-delegation-contract description: 'Structured contract template for agent-to-agent delegation: shared schema, file boundaries, interface definitions, return format, and verification protocol. Ensures reliable multi-agent collaboration.' --- # Agent Delegation Contract Standardised contract format for delegating work from the IT Leader (or any orchestrator) to a subagent. This skill replaces ad-hoc "go do this" delegation with explicit, verifiable contracts. ## Core Contract Template Every delegation MUST use this template. The subagent receives this as their full brief. ```markdown ## DELEGATION CONTRACT ### Agent @{agent-name} ### Task ID {FE-001 | BE-001 | DES-001 | DB-001 | OPS-001 | QA-001} ### Scope {exactly what files and components are in scope} ### Out of Scope (MANDATORY) {exactly what the subagent MUST NOT touch} ### Input Interface {shared types, API contracts, component props, state shape include exact types} ```typescript // Expected input shape (if applicable) interface Input { // concrete fields + types } ``` ### Expected Output {what the subagent must produce: files, types, behaviours} ```typescript // Expected output shape (if applicable) interface Output { // concrete fields + types } ``` ### Dependencies {tasks that must be done first, shared modules, data that must exist} ### Constraints {budget constraints, performance targets, security requirements, naming conventions} ### Memory Context {relevant recall from agentmemory user preferences, past decisions, conventions} ### Verification Criteria {how to verify the work is correct: build, lint, test, manual checks} ### Handoff Notes {anything else gotchas, known issues, tricky parts} ``` ## Delegation Flow ``` ┌─────────────┐ 1. Recall memory ┌─────────────┐ IT Leader ──────────────────────▶ agentmemory ◀────────────────────── 2. Load memory context └─────────────┘ 3. Fill contract ┌─────────────┐ ──────────────────────▶ Subagent 4. Execute work ◀────────────────────── 5. Return result └─────────────┘ 6. Verify contract 7. Report to user 8. Save findings to memory └─────────────┘ ``` ## Contract Sections — Detailed Rules ### 1. Agent Selection Match task to the agent whose domain covers the work. See IT Leader prompt for full agent list. | Task type | Agent | When | |-----------|-------|------| | UI component | `@designer` then `@frontend-nuxt` / `@frontend-react` | Design first, then implement | | API endpoint | `@node-developer` / `@ci3` / `@laravel` / `@java-developer` / `@go-developer` | By backend stack | | Database schema | `@database` | Schema, migration, index | | Mobile UI | `@flutter` / `@android` | Per platform | | Code review | `@reviewer` or language-specific reviewer | After implementation | | Security | `@security-reviewer` | Auth, payments, PII, file upload | | DevOps | `@devops` | CI/CD, deploy, infra | | Agent system | `@agent-engineer` | Only for building AI agents, not development orchestration | ### 2. Scope & Out-of-Scope (CRITICAL) Scope MUST be a specific list of files, directories, or behaviours. Out-of-scope MUST list what the subagent might naturally touch but must not. **Good:** ``` Scope: - src/services/notification.service.ts - src/components/NotificationBell.vue - src/composables/useNotifications.ts Out of Scope: - Auth middleware (src/middleware/auth.ts) - Database schema changes - Package.json or config files - Any file outside src/ ``` **Bad:** ``` Scope: notification feature ``` ### 3. Input Interface For frontend work: exact component props with TypeScript types. For backend work: exact request/response shapes. For database work: exact table schemas with fields and constraints. Include actual type definitions in the contract not references to other files. The subagent works in isolation and should not need to dig for types. ### 4. Expected Output Concrete deliverables with file paths: ``` Expected Output: - CREATE: src/components/NotificationBell.vue - Props: { unreadCount: number } - Emits: ['open'] - MODIFY: src/components/Header.vue - Add <NotificationBell /> between logo and profile - No other files changed ``` ### 5. Memory Context The IT Leader recalls from agentmemory and includes the relevant synthesis: ``` Memory Context: - User prefers minimal loading skeletons (just pulse animation, no text) - Project uses Nuxt UI components, not custom HTML - Past session: notification bell was planned but not implemented ``` ### 6. Verification Criteria Concrete, actionable verification steps the subagent must perform: ``` Verification Criteria: 1. [ ] TypeScript: `npx tsc --noEmit` passes with no new errors 2. [ ] Lint: `npx eslint src/` passes 3. [ ] Test: `npx vitest run src/components/NotificationBell.spec.ts` passes 4. [ ] Loading state renders <NotificationSkeleton /> 5. [ ] Error state shows <NotificationError /> with retry button 6. [ ] Empty state shows "No notifications" text ``` ## Subagent Response Contract Every subagent MUST return results in this exact format: ```markdown ## DELEGATION RESULT ### Task ID {FE-001} ### Files Changed - CREATED: src/components/NotificationBell.vue - MODIFIED: src/components/Header.vue - DELETED: (none) ### Verification Status - [x] TypeScript: passes - [x] Lint: passes - [x] Test: 3/3 passing - [x] All UI states handled (loading, error, empty, data) ### Deviations from Contract {any changes to the contract explain why} ### New Findings for Memory {anything discovered that should be saved to agentmemory: - conventions discovered - bugs encountered - decisions made } ### Blockers / Risks {anything the IT Leader should know} ``` ## Contract Violations If a subagent violates the contract (edits out-of-scope files, changes types without notice, skips verification): 1. Flag the violation clearly in the "Deviations" section 2. The IT Leader reviews and decides: accept deviation, revert, or re-delegate 3. If intentional, add reasoning to agentmemory as a learned convention ## Sequential Delegation (Chaining) When subagent B's work depends on subagent A's output: ```markdown ## DELEGATION CONTRACT — Chain ### Chain Sequence 1. @database Create schema + migration (DB-001) 2. @node-developer Build API endpoints (BE-001, depends on DB-001) 3. @frontend-nuxt Build UI (FE-001, depends on BE-001) ### Shared Contracts API contract: {swagger/openapi reference or inline types} ### Handoff Format Each subagent's output becomes the Input Interface for the next. The IT Leader runs each delegation sequentially, not in parallel. ``` **Chain Rule:** Do NOT delegate parallel work when subagents share interfaces or data dependencies. Use chaining instead. Parallel delegation is only safe when agents work on entirely independent subsystems with no shared types. ## Parallel Delegation Safety Check Before delegating in parallel, verify ALL of: - [ ] Do the agents touch different files? - [ ] Do the agents share no types/interfaces? - [ ] Do the agents share no data dependencies? - [ ] Does each agent have a clearly bounded scope? If any is NO, use chaining instead of parallel delegation.