CtrlK
BlogDocsLog inGet started
Tessl Logo

opencode-build-plugins

Create OpenCode plugins using the opencode-ai/plugin SDK. Use when user wants to build a plugin, extend OpenCode, intercept tool execution, add custom tools, react to events, create a hook, block commands, add custom auth, or add automation to OpenCode. Also use for 'opencode plugin', 'custom tool', 'tool hook', 'plugin hook', 'logging for all tool calls', 'restrict what commands the AI can run', 'lifecycle hooks', 'middleware', 'tool.execute.before', 'tool.execute.after', 'auth hook', 'chat.params', 'intercept bash commands', 'block file writes', 'add audit logging', 'custom model provider auth', 'inject context before LLM call', 'fire-and-forget background task', 'watch session events'.

72

Quality

89%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

82%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A tight, highly actionable skill body: executable quick start, explicit when-to-use/when-not-to-use guidance, and high-value anti-patterns with WHY explanations. The main weaknesses are minor redundancy in test instructions, implicit rather than sequenced workflow steps, and navigation gaps — three dead eval links and most bundle reference files being undiscoverable from SKILL.md.

Suggestions

Fix or remove the three dangling eval-scenario links: the body references evals/scenario-0..2/task.md but no evals/ directory exists in the bundle.

Add a short references index in the body (e.g., publishing → references/publishing.md, testing → references/testing.md, UI feedback → references/ui-feedback.md) so the rest of the bundle is discoverable from SKILL.md.

Consolidate the duplicate test instructions — merge 'Then test: opencode run hi' and the 'Verify plugin is loaded' command into a single verification step in Quick Start.

DimensionReasoningScore

Conciseness

The ~85-line body is lean with no concept re-teaching and executable code throughout, but has minor trims available: duplicate test commands ('Then test: `opencode run hi`' vs 'Verify plugin is loaded: run `bun run opencode run ...`') and the unclear 'Optional — document plugin purpose in a companion agent file' snippet.

4 / 5

Actionability

Fully executable guidance: copy-paste-ready plugin factory code, `opencode.json` registration config, concrete test commands, and BAD/GOOD anti-pattern pairs with runtime consequences explained ('NEVER call `client.registerTool()` — it does not exist.').

5 / 5

Workflow Clarity

Quick Start establishes a create → register → test sequence with an explicit verification checkpoint ('Verify plugin is loaded: run `bun run opencode run "list your tools"` and confirm the plugin output appears') and anti-patterns as recovery guidance; falls short of 5 because steps are prose-implicit rather than a sequenced workflow with a fix-and-retry loop.

4 / 5

Progressive Disclosure

The body is a genuine overview with a clearly signaled one-level-deep pointer ('See references/hook-patterns.md for complete anti-pattern list + full hook/event/tool/UI/testing/publishing reference') that exists and delivers. Docked from 5: the three eval-scenario links point to nonexistent `evals/scenario-*/task.md` paths, and 9 of the 11 bundle reference files (publishing.md, testing.md, ui-feedback.md, events.md, etc.) are not navigable from the body.

4 / 5

Total

17

/

20

Passed

Description

96%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: third-person, specific, with an explicit 'Use when...' clause and an extensive set of natural trigger phrases including SDK-level identifiers. The only residual risk is a few generic quoted terms ('middleware', 'add audit logging') that are not qualified to the OpenCode domain and could overlap with unrelated skills.

DimensionReasoningScore

Specificity

Names the domain ('Create OpenCode plugins using the opencode-ai/plugin SDK') and lists multiple concrete actions — 'intercept tool execution, add custom tools, react to events, create a hook, block commands, add custom auth, or add automation' — with comprehensive coverage matching the top anchor.

5 / 5

Completeness

Explicitly answers both what ('Create OpenCode plugins using the opencode-ai/plugin SDK') and when ('Use when user wants to build a plugin, extend OpenCode, ... or add automation to OpenCode') with concrete trigger phrases, exactly matching the top anchor.

5 / 5

Trigger Term Quality

Comprehensive natural terms including synonyms and technical identifiers: "'opencode plugin', 'custom tool', 'tool hook', 'plugin hook', 'intercept bash commands', 'block file writes', 'tool.execute.before', 'chat.params'" — well beyond the 'a few natural terms missing' level of the 4 anchor.

5 / 5

Distinctiveness Conflict Risk

A clear OpenCode-plugin niche anchored by the named SDK, but unqualified generic quoted triggers like "'middleware'" and "'logging for all tool calls'" could fire for non-OpenCode middleware/logging requests — minor overlap risk matching the 4 anchor rather than the minimal-conflict 5 anchor.

4 / 5

Total

19

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

relative_links

Relative link issues: 3 missing, 3 deeper-than-1-level

Warning

Total

15

/

16

Passed

Repository
pantheon-org/tekhne
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.