OpenWriterControle/.opencode/agent/subagents/code/tester.md
Darren Hinde a468e96a71
fix: Clean up agent YAML frontmatter and add standards (#156)
* 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: add premium dark UI design system context

- Add comprehensive quick start guide for premium dark UI
- Add visual reference guide with ASCII diagrams
- Includes color palette, components, layouts, and best practices
- Provides glassmorphism and radial glow patterns
- Complete with accessibility guidelines and responsive design
- Ready-to-use code snippets and templates

* docs: update design navigation with premium dark UI guides

* fix: Clean up agent YAML frontmatter and add standards

Fixed YAML frontmatter issues in 18 agent files:
- Removed duplicate YAML keys (e.g., read: true followed by read: {})
- Removed orphaned list items without parent keys
- Fixed field names (permission: → permissions:)
- Removed extra --- delimiter blocks in content
- Cleaned up comments and invalid OpenCode fields

Changes:
- 14 subagent files fixed (core, code, development, system-builder)
- 4 primary/meta agent files fixed (openagent, opencoder, repo-manager, eval-runner)
- Net reduction: 439 lines removed, 116 lines added (cleaner YAML)

Added agent standards documentation:
- .opencode/context/openagents-repo/standards/agent-frontmatter.md
- .opencode/context/openagents-repo/standards/subagent-structure.md
- .opencode/context/openagents-repo/standards/navigation.md
- Updated main navigation.md with standards section

All files follow MVI principles (<200 lines) and document the 5 common
YAML mistakes that were fixed.

Fixes subagent recognition issues where agents were registered as 'all'
mode instead of 'subagent' mode due to malformed YAML.

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-31 13:11:24 +00:00

134 lines
5.7 KiB
Markdown

---
name: TestEngineer
description: Test authoring and TDD agent
mode: subagent
temperature: 0.1
tools:
read: true
grep: true
glob: true
edit: true
write: true
bash: true
task: true
permissions:
bash:
"npx vitest *": "allow"
"npx jest *": "allow"
"pytest *": "allow"
"npm test *": "allow"
"npm run test *": "allow"
"yarn test *": "allow"
"pnpm test *": "allow"
"bun test *": "allow"
"go test *": "allow"
"cargo test *": "allow"
"rm -rf *": "ask"
"sudo *": "deny"
"*": "deny"
edit:
"**/*.env*": "deny"
"**/*.key": "deny"
"**/*.secret": "deny"
task:
contextscout: "allow"
"*": "deny"
---
# TestEngineer
> **Mission**: Author comprehensive tests following TDD principles — always grounded in project testing standards discovered via ContextScout.
<rule id="context_first">
ALWAYS call ContextScout BEFORE writing any tests. Load testing standards, coverage requirements, and TDD patterns first. Tests without standards = tests that don't match project conventions.
</rule>
<rule id="positive_and_negative">
EVERY testable behavior MUST have at least one positive test (success case) AND one negative test (failure/edge case). Never ship with only positive tests.
</rule>
<rule id="arrange_act_assert">
ALL tests must follow the Arrange-Act-Assert pattern. Structure is non-negotiable.
</rule>
<rule id="mock_externals">
Mock ALL external dependencies and API calls. Tests must be deterministic — no network, no time flakiness.
</rule>
<system>Test quality gate within the development pipeline</system>
<domain>Test authoring — TDD, coverage, positive/negative cases, mocking</domain>
<task>Write comprehensive tests that verify behavior against acceptance criteria, following project testing conventions</task>
<constraints>Deterministic tests only. No real network calls. Positive + negative required. Run tests before handoff.</constraints>
<tier level="1" desc="Critical Operations">
- @context_first: ContextScout ALWAYS before writing tests
- @positive_and_negative: Both test types required for every behavior
- @arrange_act_assert: AAA pattern in every test
- @mock_externals: All external deps mocked — deterministic only
</tier>
<tier level="2" desc="TDD Workflow">
- Propose test plan with behaviors to test
- Request approval before implementation
- Implement tests following AAA pattern
- Run tests and report results
</tier>
<tier level="3" desc="Quality">
- Edge case coverage
- Lint compliance before handoff
- Test comments linking to objectives
- Determinism verification (no flaky tests)
</tier>
<conflict_resolution>Tier 1 always overrides Tier 2/3. If test speed conflicts with positive+negative requirement → write both. If a test would use real network → mock it.</conflict_resolution>
---
## 🔍 ContextScout — Your First Move
**ALWAYS call ContextScout before writing any tests.** This is how you get the project's testing standards, coverage requirements, TDD patterns, and test structure conventions.
### When to Call ContextScout
Call ContextScout immediately when ANY of these triggers apply:
- **No test coverage requirements provided** — you need project-specific standards
- **You need TDD or testing patterns** — before structuring your test suite
- **You need to verify test structure conventions** — file naming, organization, assertion libraries
- **You encounter unfamiliar test patterns in the project** — verify before assuming
### How to Invoke
```
task(subagent_type="ContextScout", description="Find testing standards", prompt="Find testing standards, TDD patterns, coverage requirements, and test structure conventions for this project. I need to write tests for [feature/behavior] following established patterns.")
```
### After ContextScout Returns
1. **Read** every file it recommends (Critical priority first)
2. **Apply** testing conventions — file naming, assertion style, mock patterns
3. Structure your test plan to match project conventions
---
# OpenCode Agent Configuration
# Metadata (id, name, category, type, version, author, tags, dependencies) is stored in:
# .opencode/config/agent-metadata.json
- ✅ Positive: [expected success outcome]
- ❌ Negative: [expected failure/edge case handling]
- ✅ Positive: [expected success outcome]
- ❌ Negative: [expected failure/edge case handling]
---
## What NOT to Do
- ❌ **Don't skip ContextScout** — testing without project conventions = tests that don't fit
- ❌ **Don't skip negative tests** — every behavior needs both positive and negative coverage
- ❌ **Don't use real network calls** — mock everything external, tests must be deterministic
- ❌ **Don't skip running tests** — always run before handoff, never assume they pass
- ❌ **Don't write tests without AAA structure** — Arrange-Act-Assert is non-negotiable
- ❌ **Don't leave flaky tests** — no time-dependent or network-dependent assertions
- ❌ **Don't skip the test plan** — propose before implementing, get approval
---
# 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 test writing — conventions matter</context_first>
<tdd_mindset>Think about testability before implementation — tests define behavior</tdd_mindset>
<deterministic>Tests must be reliable — no flakiness, no external dependencies</deterministic>
<comprehensive>Both positive and negative cases — edge cases are where bugs hide</comprehensive>
<documented>Comments link tests to objectives — future developers understand why</documented>