# Yams Blackboard

> Blackboard plugin for OpenCode built on YAMS, enabling agents to share findings, tasks, and context via a persistent knowledge graph.

- Skill: `diegosouzapw/yams-blackboard` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add diegosouzapw/yams-blackboard`
- Raw SKILL.md: https://api.skillmd.com/api/skills/diegosouzapw/yams-blackboard/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: GPL-3.0
- Author: diegosouzapw (https://skillmd.com/u/diegosouzapw)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/diegosouzapw/yams-blackboard

---


# YAMS Blackboard Skill (OpenCode)

## Overview

This skill implements the classic **blackboard pattern** for multi‑agent systems using **YAMS** as the shared memory layer. Agents can:

- Register themselves and publish capabilities.
- Post **findings** (tagged markdown documents) that other agents can query or search.
- Create, claim, and complete **tasks** that coordinate work across agents.
- Group related work into **contexts** and explore relationships via YAMS’ graph commands.

All data is stored in YAMS, so the same powerful search (`yams grep`, `yams search`) and graph (`yams graph`) capabilities are available.

## Quick Reference

```bash
# Start a YAMS session (optional, auto‑starts on OpenCode session creation)
yams session start --name "opencode-session"

# Register an agent
bb_register_agent '{"id":"scanner","name":"Security Scanner","capabilities":["security","code-review"]}'

# Post a finding
bb_post_finding '{"agent_id":"scanner","topic":"security","title":"SQL Injection","severity":"high","confidence":0.94,"content":"..."}'

# Search findings
bb_search_findings '{"query":"SQL injection"}'

# Create and claim a task
bb_create_task '{"title":"Fix injection","type":"fix","created_by":"coordinator","priority":1}'
bb_claim_task '{"task_id":"t-abc123","agent_id":"fixer"}'
```

## Tools

| Tool | Description |
|------|-------------|
| `bb_register_agent` | Register an agent with ID, name, and capabilities |
| `bb_list_agents` | List all registered agents |
| `bb_post_finding` | Store a finding (markdown front‑matter) on the blackboard |
| `bb_get_finding` | Retrieve a finding by its ID |
| `bb_query_findings` | Query findings by topic, agent, severity, etc. |
| `bb_search_findings` | Semantic search across finding contents |
| `bb_acknowledge_finding` | Mark a finding as acknowledged by an agent |
| `bb_resolve_finding` | Mark a finding as resolved with resolution details |
| `bb_create_task` | Create a new coordination task |
| `bb_get_ready_tasks` | List pending tasks with no unmet dependencies |
| `bb_claim_task` | Claim a pending task for an agent |
| `bb_update_task` | Update task status, findings, or artifacts |
| `bb_complete_task` | Mark task as completed and optionally attach results |
| `bb_fail_task` | Mark task as failed with an error message |
| `bb_query_tasks` | Query tasks by type, status, assignee, etc. |
| `bb_create_context` | Create a named context to group work |
| `bb_get_context_summary` | Generate a markdown summary of a context |
| `bb_set_context` | Set the active context for subsequent operations |
| `bb_recent_activity` | Retrieve recent findings and tasks |
| `bb_stats` | Return blackboard statistics (agents, findings, tasks) |
| `bb_connections` | Explore graph connections for an entity path |

## Compaction / Context Recovery

- This skill auto-injects a blackboard summary into `output.context` during OpenCode compaction hooks (`experimental.session.compacting` and `session.compacted`).
- For broader YAMS memory after compaction, use `yams list` (replaces the removed `yams hook`): `yams list --owner opencode --since 24h --limit 20 --format markdown` with optional `--pbi`, `--task`, `--phase`, `--metadata key=value` (repeatable), and `--match-any-metadata`.

Example:

```bash
yams list --owner opencode --since 24h --limit 20 --format markdown --metadata phase=checkpoint
```

### Owner / multi-agent convention

- When registering agents or writing findings/tasks via this plugin, use the shared owner `opencode` so multiple agents can read the same YAMS records. Retrieval: `yams list --owner opencode ...`.

### Canonical agent registration

```bash
bb_register_agent '{"id":"opencode-coordinator","name":"OpenCode Coordinator","capabilities":["coordination","routing","summary"]}'
```

## Example Workflow

```typescript
// Agent A registers and posts a security finding
bb_register_agent({ id: "scanner", name: "Scanner", capabilities: ["security"] })
bb_post_finding({
  agent_id: "scanner",
  topic: "security",
  title: "SQL Injection in auth.ts",
  severity: "high",
  confidence: 0.96,
  content: "Unsanitized user input reaches SQL query...",
})

// Agent B discovers the finding and creates a remediation task
bb_search_findings({ query: "SQL injection" })
bb_create_task({
  title: "Fix SQL injection",
  type: "fix",
  created_by: "coordinator",
  priority: 0,
})

// Agent B claims and works on the task
bb_claim_task({ task_id: "t-123", agent_id: "fixer" })
bb_update_task({ task_id: "t-123", status: "working" })
bb_complete_task({ task_id: "t-123", findings: ["f-xyz"] })

// Resolve the original finding
bb_resolve_finding({ finding_id: "f-abc", agent_id: "fixer", resolution: "Parameterized queries added" })
```

## Development

The TypeScript implementation lives in `blackboard.ts`.  Building the plugin:

```bash
bun install
bun run build
```

Run tests with `bun test`.

---
For more details see the plugin’s `README.md` and the YAMS skill definition at `docs/skills/yams/SKILL.md`.

