Awesome-omni-skill yams-blackboard
Blackboard plugin for OpenCode built on YAMS, enabling agents to share findings, tasks, and context via a persistent knowledge graph.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/tools/yams-blackboard" ~/.claude/skills/diegosouzapw-awesome-omni-skill-yams-blackboard && rm -rf "$T"
manifest:
skills/tools/yams-blackboard/SKILL.mdsource content
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
# 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 |
|---|---|
| Register an agent with ID, name, and capabilities |
| List all registered agents |
| Store a finding (markdown front‑matter) on the blackboard |
| Retrieve a finding by its ID |
| Query findings by topic, agent, severity, etc. |
| Semantic search across finding contents |
| Mark a finding as acknowledged by an agent |
| Mark a finding as resolved with resolution details |
| Create a new coordination task |
| List pending tasks with no unmet dependencies |
| Claim a pending task for an agent |
| Update task status, findings, or artifacts |
| Mark task as completed and optionally attach results |
| Mark task as failed with an error message |
| Query tasks by type, status, assignee, etc. |
| Create a named context to group work |
| Generate a markdown summary of a context |
| Set the active context for subsequent operations |
| Retrieve recent findings and tasks |
| Return blackboard statistics (agents, findings, tasks) |
| Explore graph connections for an entity path |
Compaction / Context Recovery
- This skill auto-injects a blackboard summary into
during OpenCode compaction hooks (output.context
andexperimental.session.compacting
).session.compacted - For broader YAMS memory after compaction, use
(replaces the removedyams list
):yams hook
with optionalyams list --owner opencode --since 24h --limit 20 --format markdown
,--pbi
,--task
,--phase
(repeatable), and--metadata key=value
.--match-any-metadata
Example:
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
so multiple agents can read the same YAMS records. Retrieval:opencode
.yams list --owner opencode ...
Canonical agent registration
bb_register_agent '{"id":"opencode-coordinator","name":"OpenCode Coordinator","capabilities":["coordination","routing","summary"]}'
Example Workflow
// 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:
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.