Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
5844c18
feat(skills): add opencode-skills package with BM25 ranking
thoroc Jan 31, 2026
d564311
fix: add missing yaml dependency to opencode-skills
thoroc Feb 1, 2026
4e8d5b5
fix: remove non-existent validate:tsdoc target from skills project.json
thoroc Feb 1, 2026
7e2abbc
fix: resolve Biome linting errors in opencode-skills
thoroc Feb 1, 2026
b1dc53b
fix: address Copilot review comments - glob dependency, package clean…
thoroc Feb 1, 2026
836d5c9
refactor: remove duplicate type definitions in skill-validator.ts
thoroc Feb 1, 2026
f545fc7
chore: update lock file after adding glob dependency
thoroc Feb 1, 2026
423a9ff
fix: add missing types and exports for skill-validator tests
thoroc Feb 2, 2026
23243e2
fix: complete rewrite of types and validator to match test API
thoroc Feb 2, 2026
bca6b16
fix: correct strict mode behavior in skill validator
thoroc Feb 2, 2026
7feeb70
refactor: enforce coding standards - 1 function/module, barrel export…
thoroc Feb 2, 2026
25efcda
refactor: remove unused BM25 and pattern matching implementations
thoroc Feb 2, 2026
97b4bf8
fix: support legacy content field for backward compatibility
thoroc Feb 2, 2026
29ce615
style: fix Biome formatting
thoroc Feb 2, 2026
1ca52c1
fix: update .gitignore to include markdown files in OpenCode skills d…
thoroc Feb 2, 2026
21e36f3
feat: add coding conventions document outlining standards for arrow f…
thoroc Feb 2, 2026
c175fd5
feat: add subagent-driven development skill and related prompt templates
thoroc Feb 2, 2026
1dd0f41
feat: add receiving and requesting code review skills, enhance code r…
thoroc Feb 2, 2026
e153762
feat: add out of bounds handling for BM25 score calculation and enhan…
thoroc Feb 2, 2026
8c6fe42
feat: add receiving and requesting code review skills, enhance code r…
thoroc Feb 2, 2026
081c4dc
refactor(opencode-skills): convert all functions to arrow functions a…
thoroc Feb 2, 2026
4267876
fix(opencode-skills): add version property to SkillFrontmatter type
thoroc Feb 2, 2026
ff8c7a1
fix(opencode-skills): fix get-top-skills test to use proper threshold
thoroc Feb 2, 2026
fb2a4f8
fix(pr-iteration): clean up formatting and add spacing for better rea…
thoroc Feb 2, 2026
91bb584
fix: add missing newline at end of files in prompt templates
thoroc Feb 2, 2026
a705551
fix: standardize quotes and formatting in TDD examples
thoroc Feb 2, 2026
515e16b
fix: update MD024 rule to disable duplicate heading check
thoroc Feb 2, 2026
3e68114
fix: include AGENTS.md in markdownlint globs for documentation linting
thoroc Feb 2, 2026
8795d74
fix: update import paths for markdown parser and skill validator
thoroc Feb 2, 2026
bc399ec
fix: add path mapping for opencode-skills in tsconfig
thoroc Feb 2, 2026
dc1e4db
style: fix biome linting errors in config and executor
thoroc Feb 2, 2026
bda64c6
style: apply biome fixes to tools/executors/validate-skills
thoroc Feb 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,6 @@ tmp/

# OpenCode
.opencode/
!.opencode/skills/
!.opencode/skills/*.md
.context/
.nx/
12 changes: 8 additions & 4 deletions .markdownlint-cli2.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@
"MD041": false,

// MD024/no-duplicate-heading - Multiple headings with the same content
"MD024": {
"siblings_only": true
},
"MD024": false,

// MD045/no-alt-text - Images should have alt text
"MD045": false,
Expand Down Expand Up @@ -53,7 +51,13 @@
"MD060": false
},
// Only lint specific directories - focus on core documentation
"globs": ["docs/**/*.md", "README.md", "CONTRIBUTING.md", "SECURITY.md"],
"globs": [
"docs/**/*.md",
"README.md",
"CONTRIBUTING.md",
"SECURITY.md",
"AGENTS.md"
],
// Fix mode disabled by default
"fix": false
}
180 changes: 180 additions & 0 deletions .opencode/skills/brainstorming/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
---
name: dispatching-parallel-agents
description: Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies
---

# Dispatching Parallel Agents

## Overview

When you have multiple unrelated failures (different test files, different subsystems, different bugs), investigating
them sequentially wastes time. Each investigation is independent and can happen in parallel.

**Core principle:** Dispatch one agent per independent problem domain. Let them work concurrently.

## When to Use

```mermaid
graph TD
A["Multiple failures?"] -->|yes| B["Are they independent?"]
B -->|no - related| C["Single agent investigates all"]
B -->|yes| D["Can they work in parallel?"]
D -->|yes| E["Parallel dispatch"]
D -->|no - shared state| F["Sequential agents"]
```

**Use when:**

- 3+ test files failing with different root causes
- Multiple subsystems broken independently
- Each problem can be understood without context from others
- No shared state between investigations

**Don't use when:**

- Failures are related (fix one might fix others)
- Need to understand full system state
- Agents would interfere with each other

## The Pattern

### 1. Identify Independent Domains

Group failures by what's broken:

- File A tests: Tool approval flow
- File B tests: Batch completion behavior
- File C tests: Abort functionality

Each domain is independent - fixing tool approval doesn't affect abort tests.

### 2. Create Focused Agent Tasks

Each agent gets:

- **Specific scope:** One test file or subsystem
- **Clear goal:** Make these tests pass
- **Constraints:** Don't change other code
- **Expected output:** Summary of what you found and fixed

### 3. Dispatch in Parallel

```typescript
// In Claude Code / AI environment
Task("Fix agent-tool-abort.test.ts failures");
Task("Fix batch-completion-behavior.test.ts failures");
Task("Fix tool-approval-race-conditions.test.ts failures");
// All three run concurrently
```

### 4. Review and Integrate

When agents return:

- Read each summary
- Verify fixes don't conflict
- Run full test suite
- Integrate all changes

## Agent Prompt Structure

Good agent prompts are:

1. **Focused** - One clear problem domain
2. **Self-contained** - All context needed to understand the problem
3. **Specific about output** - What should the agent return?

```markdown
Fix the 3 failing tests in src/agents/agent-tool-abort.test.ts:

1. "should abort tool with partial output capture" - expects 'interrupted at' in message
2. "should handle mixed completed and aborted tools" - fast tool aborted instead of completed
3. "should properly track pendingToolCount" - expects 3 results but gets 0

These are timing/race condition issues. Your task:

1. Read the test file and understand what each test verifies
2. Identify root cause - timing issues or actual bugs?
3. Fix by:
- Replacing arbitrary timeouts with event-based waiting
- Fixing bugs in abort implementation if found
- Adjusting test expectations if testing changed behavior

Do NOT just increase timeouts - find the real issue.

Return: Summary of what you found and what you fixed.
```

## Common Mistakes

**❌ Too broad:** "Fix all the tests" - agent gets lost **✅ Specific:** "Fix agent-tool-abort.test.ts" - focused scope

**❌ No context:** "Fix the race condition" - agent doesn't know where **✅ Context:** Paste the error messages and test
names

**❌ No constraints:** Agent might refactor everything **✅ Constraints:** "Do NOT change production code" or "Fix tests
only"

**❌ Vague output:** "Fix it" - you don't know what changed **✅ Specific:** "Return summary of root cause and changes"

## When NOT to Use

**Related failures:** Fixing one might fix others - investigate together first **Need full context:** Understanding
requires seeing entire system **Exploratory debugging:** You don't know what's broken yet **Shared state:** Agents would
interfere (editing same files, using same resources)

## Real Example from Session

**Scenario:** 6 test failures across 3 files after major refactoring

**Failures:**

- agent-tool-abort.test.ts: 3 failures (timing issues)
- batch-completion-behavior.test.ts: 2 failures (tools not executing)
- tool-approval-race-conditions.test.ts: 1 failure (execution count = 0)

**Decision:** Independent domains - abort logic separate from batch completion separate from race conditions

**Dispatch:**

```
Agent 1 → Fix agent-tool-abort.test.ts
Agent 2 → Fix batch-completion-behavior.test.ts
Agent 3 → Fix tool-approval-race-conditions.test.ts
```

**Results:**

- Agent 1: Replaced timeouts with event-based waiting
- Agent 2: Fixed event structure bug (threadId in wrong place)
- Agent 3: Added wait for async tool execution to complete

**Integration:** All fixes independent, no conflicts, full suite green

**Time saved:** 3 problems solved in parallel vs sequentially

## Key Benefits

1. **Parallelization** - Multiple investigations happen simultaneously
2. **Focus** - Each agent has narrow scope, less context to track
3. **Independence** - Agents don't interfere with each other
4. **Speed** - 3 problems solved in time of 1

## Verification

After agents return:

1. **Review each summary** - Understand what changed
2. **Check for conflicts** - Did agents edit same code?
3. **Run full suite** - Verify all fixes work together
4. **Spot check** - Agents can make systematic errors

## Real-World Impact

From debugging session (2025-10-03):

- 6 failures across 3 files
- 3 agents dispatched in parallel
- All investigations completed concurrently
- All fixes integrated successfully
- Zero conflicts between agent changes
Loading
Loading