OpenWriterControle/.opencode/context/core/workflows/task-delegation.md
Darren Hinde 9625e43d92
feat: OpenCode-compliant agents with centralized metadata system (#151)
* 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>
2026-01-31 02:15:12 +00:00

15 KiB

Delegation Context Template

Quick Reference

Process: Discover → Propose → Approve → Init Session → Persist Context → Delegate → Cleanup

Location: .tmp/sessions/{YYYY-MM-DD}-{task-slug}/context.md

Key Principle: ContextScout discovers paths. The orchestrator persists them into context.md AFTER approval. Downstream agents read from context.md — no re-discovery.


When to Create a Session

Only create a session when:

  • User has approved the proposed approach (never before)
  • Task requires delegation to TaskManager or working agents
  • Task is complex enough to need shared context (4+ files, >60min)

For simple tasks (1-3 files, direct execution): skip session creation entirely.


The Flow

Stage 1: DISCOVER   → ContextScout finds paths (read-only, nothing written)
Stage 2: PROPOSE    → Show user lightweight summary (nothing written)
Stage 3: APPROVE    → User says yes. NOW we can write.
Stage 4: INIT       → Create session dir + context.md (persist discovered paths here)
Stage 5: DELEGATE   → Pass session path to TaskManager / working agents
Stage 6: CLEANUP    → Ask user, then delete session dir

Template Structure

Location: .tmp/sessions/{YYYY-MM-DD}-{task-slug}/context.md

# Task Context: {Task Name}

Session ID: {YYYY-MM-DD}-{task-slug}
Created: {ISO timestamp}
Status: in_progress

## Current Request
{What user asked for — verbatim or close paraphrase}

## Context Files (Standards to Follow)
These are the paths ContextScout discovered. Downstream agents load these for coding standards, patterns, and conventions.
- .opencode/context/core/standards/code-quality.md
- .opencode/context/core/standards/test-coverage.md
- {other paths discovered by ContextScout}

## Reference Files (Source Material to Look At)
These are project files relevant to the task — NOT standards. Downstream agents reference these to understand existing code, config, or structure.
- {e.g. package.json}
- {e.g. src/existing-module.ts}

## External Context Fetched
These are live documentation files fetched from external libraries via ExternalScout. Subagents should reference these instead of re-fetching.
- `.tmp/external-context/{package-name}/{topic}.md` — {description}
- `.tmp/external-context/{package-name}/{topic}.md` — {description}

**Important**: These files are read-only and cached for reference. Do not modify them.

## Components
{The functional units identified during proposal}
- {Component 1} — {what it does}
- {Component 2} — {what it does}

## Constraints
{Technical constraints, preferences, compatibility notes, version requirements}

## Exit Criteria
- [ ] {specific, measurable completion condition}
- [ ] {specific, measurable completion condition}

## Progress
- [ ] Session initialized
- [ ] Tasks created (if using TaskManager)
- [ ] Implementation complete
- [ ] Tests passing
- [ ] Handoff complete

Delegation Process

Step 1: Discover (before approval)

  • Call ContextScout. Capture the returned file paths.
  • Call ExternalScout if external libraries involved.
  • Do NOT write anything to disk.

Step 2: Propose (before approval)

  • Show user a lightweight summary of approach + discovered context.
  • Do NOT create session or plan docs.

Step 3: Approve (gate)

  • Wait for explicit user approval.
  • If rejected or redirected → back to Step 1.

Step 4: Init Session (first writes, only after approval)

  • Create .tmp/sessions/{YYYY-MM-DD}-{task-slug}/
  • Write context.md using the template above.
  • CRITICAL: Populate ## Context Files with the paths ContextScout discovered in Step 1. This is the handoff point — if you skip this, downstream agents lose the context.
  • Populate ## Reference Files with any project source files relevant to the task.

Step 5: Delegate with context path

task(
  subagent_type="TaskManager",  // or CoderAgent, TestEngineer, etc.
  description="{brief description}",
  prompt="Load context from .tmp/sessions/{session-id}/context.md

          Read the context file for full requirements, standards, and constraints.
          {specific instructions for this subagent}"
)

Step 6: Cleanup after completion

  • Ask user: "Task complete. Clean up session files at .tmp/sessions/{session-id}/?"
  • If approved: Delete session directory.

Semantic Rules for Task JSONs

When TaskManager creates subtask JSONs, it MUST follow these rules:

Field Contains Example
context_files Standards only — paths to coding conventions, patterns, security rules .opencode/context/core/standards/code-quality.md
reference_files Source material only — project files to look at for existing patterns src/auth/existing-service.ts, package.json
external_context External docs only — cached documentation from external libraries (read-only) .tmp/external-context/drizzle-orm/modular-schemas.md

Never mix them. A downstream agent reading context_files expects "rules to follow." A downstream agent reading reference_files expects "files to understand." A downstream agent reading external_context expects "cached external docs to reference" (read-only). Mixing them causes confusion about what to follow vs. what to reference vs. what to read.


What Downstream Agents Expect

Agent What it reads What it does with it
TaskManager context.md (full session) Extracts context_files + reference_files + external_context, puts them into subtask JSONs
CoderAgent subtask JSON (context_files + reference_files + external_context) Loads standards, references source files, reads external docs, implements
TestEngineer session context.md path (passed in prompt) Knows what standards were applied, reads external context, writes tests accordingly
CodeReviewer session context.md path (passed in prompt) Knows what standards were applied, reviews against them, considers external context
OpenFrontendSpecialist session context.md path (passed in prompt) Follows 4-stage design workflow (Layout → Theme → Animation → Implementation)

Key:

  • TestEngineer and CodeReviewer should ALWAYS receive the session context path when delegated. This way they review against the same standards that were used during implementation — not whatever they independently discover.
  • All agents should read external_context files to understand external library patterns and requirements — this avoids re-fetching and ensures consistency.
  • OpenFrontendSpecialist should be used for UI/UX design work - See workflows/design-iteration.md for when to delegate vs execute directly.

When to Delegate to Specialists

OpenFrontendSpecialist - UI/UX Design

✅ STRONGLY RECOMMENDED to delegate when:

  • Creating new UI/UX designs (landing pages, dashboards, app interfaces)
  • Building design systems (component libraries, themes, style guides)
  • Complex layouts requiring responsive design
  • Visual polish work (animations, transitions, micro-interactions)
  • Brand-focused pages (marketing, product showcases)
  • Accessibility-critical UI (forms, navigation, interactive components)

Delegation pattern:

task(
  subagent_type="OpenFrontendSpecialist",
  description="Design {feature} UI",
  prompt="Load context from .tmp/sessions/{session-id}/context.md
  
  Design a {feature} following the 4-stage workflow:
  
  CRITICAL: Create design plan file at .tmp/design-plans/{project}-{feature}.md BEFORE starting
  
  Stages:
  1. Stage 0: Create design plan file (MANDATORY FIRST)
  2. Stage 1: Layout (ASCII wireframe) → Update plan file
  3. Stage 2: Theme (design system, colors) → Update plan file
  4. Stage 3: Animation (micro-interactions) → Update plan file
  5. Stage 4: Implementation (single HTML file) → Update plan file
  
  Requirements:
  - {requirement 1}
  - {requirement 2}
  
  Plan file preserves context across stages and allows user to review/edit.
  Request approval between each stage.
  Update plan file after each stage and user feedback."
)

Why delegate?

  • Follows structured 4-stage design workflow with approval gates
  • Produces polished, accessible, production-ready UI
  • Handles responsive design, OKLCH colors, semantic HTML
  • Creates single-file HTML prototypes for quick iteration

See: workflows/design-iteration.md for full workflow details

TestEngineer - Test Authoring

Delegate when:

  • Writing comprehensive test suites
  • TDD workflows (tests before implementation)
  • Complex test scenarios (edge cases, error handling)
  • Integration tests across multiple components

Delegation pattern:

task(
  subagent_type="TestEngineer",
  description="Write tests for {feature}",
  prompt="Load context from .tmp/sessions/{session-id}/context.md
  
  Write comprehensive tests for {feature}
  
  Files to test:
  - {file 1}
  - {file 2}
  
  Follow test coverage standards from context."
)

CodeReviewer - Quality Assurance

Delegate when:

  • Reviewing complex implementations
  • Security-critical code review
  • Pre-merge quality checks
  • Architecture validation

Delegation pattern:

task(
  subagent_type="CodeReviewer",
  description="Review {feature} implementation",
  prompt="Load context from .tmp/sessions/{session-id}/context.md
  
  Review {feature} implementation against standards
  
  Files to review:
  - {file 1}
  - {file 2}
  
  Focus on: security, performance, maintainability"
)

CoderAgent - Focused Implementation

Delegate when:

  • Implementing atomic subtasks from TaskManager
  • Isolated feature work (single component/module)
  • Following specific implementation specs

Delegation pattern:

task(
  subagent_type="CoderAgent",
  description="Implement {subtask}",
  prompt="Load context from .tmp/sessions/{session-id}/context.md
  
  Implement subtask: {subtask description}
  
  Follow the implementation spec exactly.
  Mark subtask as complete when done."
)

Context Caching for Repeated Patterns

For repeated task types (e.g., "write tests", "code review", "documentation"), cache discovered context to avoid re-discovery overhead.

When to Cache

Cache context when:

  • Same task type appears multiple times in a session
  • Same context files are needed repeatedly
  • Multiple subtasks use identical standards
  • Parallel tasks need the same context

Cache Structure

.tmp/sessions/{session-id}/
├── context.md (main session context)
├── .cache/
│   ├── test-coverage.md (cached from .opencode/context/core/standards/test-coverage.md)
│   ├── code-quality.md (cached from .opencode/context/core/standards/code-quality.md)
│   └── code-review.md (cached from .opencode/context/core/workflows/code-review.md)
└── .manifest.json (tracks cache status)

Cache Manifest

{
  "session_id": "2026-01-28-parallel-tests",
  "created_at": "2026-01-28T14:30:22Z",
  "cache": {
    "test-coverage.md": {
      "source": ".opencode/context/core/standards/test-coverage.md",
      "cached_at": "2026-01-28T14:30:25Z",
      "used_by": ["subtask_01", "subtask_02", "subtask_03"],
      "status": "valid"
    },
    "code-quality.md": {
      "source": ".opencode/context/core/standards/code-quality.md",
      "cached_at": "2026-01-28T14:30:26Z",
      "used_by": ["subtask_01", "subtask_02"],
      "status": "valid"
    }
  }
}

Cache Invalidation Rules

Cache is INVALID when:

  • Source file has been modified (check timestamp)
  • Session is older than 24 hours
  • Context file version has changed
  • User explicitly requests cache refresh

Cache is VALID when:

  • Source file timestamp matches cached timestamp
  • Session is less than 24 hours old
  • No version changes detected
  • Multiple tasks in same session use same context

Implementation Pattern

Step 1: Check Cache

// Before delegating to subagent
IF cache exists AND cache is valid:
  USE cached context file
  SKIP re-reading from .opencode/context/
ELSE:
  READ from .opencode/context/
  CACHE the file

Step 2: Cache Hit Example

Session: 2026-01-28-parallel-tests

Task 1: Write component A
  → Load test-coverage.md (CACHE MISS)
  → Cache it at .tmp/sessions/.../cache/test-coverage.md
  
Task 2: Write component B
  → Load test-coverage.md (CACHE HIT)
  → Use cached version (faster)
  
Task 3: Write tests
  → Load test-coverage.md (CACHE HIT)
  → Use cached version (faster)

Step 3: Cache Miss Example

Session: 2026-01-28-parallel-tests

Task 1: Write code
  → Load code-quality.md (CACHE MISS)
  → Cache it
  
Task 2: Code review
  → Load code-review.md (CACHE MISS)
  → Cache it
  
Task 3: Write more code
  → Load code-quality.md (CACHE HIT)
  → Use cached version

Benefits

  • Faster execution: Avoid re-reading same files
  • Reduced I/O: Fewer file system operations
  • Better performance: Especially for parallel tasks
  • Consistent context: All tasks use same version

Example: Parallel Tasks with Caching

// Session initialization
session_id = "2026-01-28-parallel-tests"
context_cache = {}

// Task 1: Write component A (parallel)
task(
  subagent_type="CoderAgent",
  description="Write component A",
  prompt="Load context from .tmp/sessions/{session_id}/context.md
          Use cached context if available at .tmp/sessions/{session_id}/.cache/"
)

// Task 2: Write component B (parallel)
task(
  subagent_type="CoderAgent",
  description="Write component B",
  prompt="Load context from .tmp/sessions/{session_id}/context.md
          Use cached context if available at .tmp/sessions/{session_id}/.cache/"
)

// Task 3: Write tests (depends on 1+2)
task(
  subagent_type="TestEngineer",
  description="Write tests",
  prompt="Load context from .tmp/sessions/{session_id}/context.md
          Use cached context if available at .tmp/sessions/{session_id}/.cache/"
)

// Result: Tasks 1 & 2 cache context, Task 3 uses cache (faster)

Monitoring Cache

Track cache effectiveness:

{
  "cache_stats": {
    "total_reads": 15,
    "cache_hits": 9,
    "cache_misses": 6,
    "hit_rate": "60%",
    "time_saved": "2.3 seconds"
  }
}

Best Practices

✅ Do:

  • Cache context for repeated task types
  • Validate cache before using
  • Invalidate cache when source changes
  • Monitor cache hit rate
  • Clean up cache with session

❌ Don't:

  • Cache external context (always fetch fresh)
  • Cache for single-task sessions (overhead not worth it)
  • Ignore cache invalidation rules
  • Mix cached and fresh context in same task