opencode-skill-hushOpenCode plugin that suppresses verbose skill content and command template display in the TUI
1
12
2 in 7 days
25.6
Multi-signal model
2 months ago
2026-06-08
Install and configure
opencode.jsonWrites to this project's opencode.json — applies to this repository only.
opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-skill-hush@0.1.0"]
}Writes to ~/.config/opencode/opencode.json — applies to every project.
~/.config/opencode/opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-skill-hush@0.1.0"]
}If you want to modify the plugin locally, install it into the project and reference the local path.
shell
pnpm add -D opencode-skill-hushopencode loads npm dependencies through its embedded runtime on startup and caches them locally — no manual global install needed.
OpenCode plugin that suppresses verbose skill content and command template display in the TUI.
Instead of dumping 100+ lines of <skill_content> into the conversation when an agent loads a skill, it shows a one-line placeholder. The skill content still reaches the LLM context -- only the TUI display is shortened.
Before / After
Skill load -- Before:
Loaded skill: bmad-advanced-elicitation
<skill_content name="bmad-advanced-elicitation">
# Skill: bmad-advanced-elicitation
# Advanced Elicitation
**Goal:** Push the LLM to reconsider, refine, and improve its recent output.
...
Base directory for this skill: /Users/katops/git/.agents/skills/...
</skill_content>
Skill load -- After:
skill: bmad-advanced-elicitation
[Skill "bmad-advanced-elicitation" loaded]
Command template -- Before:
/commit
feat: add new feature (multi-line resolved template...)
Command template -- After:
/commit
[Command: commit]
Installation
Global (recommended)
npm install -g opencode-skill-hush
Or as a local plugin
Clone the repo and reference it directly in opencode.json:
{
"plugin": ["/path/to/opencode-skill-hush/dist/index.js"]
}
Configuration
Add to your opencode.json:
{
"plugin": [
["opencode-skill-hush", {
"suppressSkills": true,
"suppressCommands": true,
"showLineCount": false
}]
]
}
Options
| Option | Type | Default | Description |
|---|---|---|---|
suppressSkills |
boolean |
true |
Replace skill tool content with placeholder |
suppressCommands |
boolean |
true |
Replace command templates with placeholder |
showLineCount |
boolean |
false |
Append line count to skill placeholder |
Restart opencode after changing config.
Structure
opencode-skill-hush/
├── src/
│ ├── index.ts # Plugin entry, exports ContentHushPlugin
│ └── hooks/
│ ├── skill.ts # tool.execute.after handler
│ ├── command.ts # command.execute.before handler
│ ├── chat.ts # chat.message handler
│ └── __tests__/ # Unit tests (vitest)
├── package.json
├── tsconfig.json
└── AGENTS.md
How it works
Three hooks, one plugin:
| Hook | Target | What it does |
|---|---|---|
tool.execute.after |
skill tool |
Replaces output.title and output.output with a minimal placeholder. The tool has already finished, so the LLM context is unaffected. |
command.execute.before |
slash commands | Replaces output.parts with a single [Command: {name}] text part before it renders. |
chat.message |
TUI chat messages | Detects command templates in chat text parts and replaces them with [Command: {heading}]. Matches if the text contains a <skill_content> tag (regardless of H2 structure), or starts with an H1 heading (#) that has a / prefix and includes H2 sections (##). Minimum 50 chars. Catches templates that arrive via chat.message rather than command.execute.before. |
Development
npm install
npm run typecheck
npm test
Contributing
See CONTRIBUTING.md for contribution guidelines and CODE_OF_CONDUCT.md for community standards.
Security
Report vulnerabilities via SECURITY.md.
License
MIT License. See LICENSE.