Plugins Surface v1 — Capability Declarations, Not Code Execution
SkillDocs & knowledgeCockpit plugin surface v1, declarative capability plugins from the 20-preset catalog, install/trust lifecycle over /api/plugins routes, and trusted-plugin UI contributions (git-review, markdown-preview, env-inspector) backed by existing cockpit features. Use when implementing or modifying the PLUGINS panel, plugin trust flow, or adding built-in plugin contributions.
Use Plugins Surface v1 — Capability Declarations, Not Code Execution in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Plugins Surface v1 — Capability Declarations, Not Code Execution and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the Plugins Surface v1 skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
What this skill tells your AI
The instructions your AI receives, as published by anonymousnomad/covert-coder in skills/packs/aide-plugins-surface-v1/SKILL.md and read by Ahel’s review.
Research anchors: ToolNeuron plugin pattern (manifest + SHA verify + capability gate); VS Code lesson (ecosystem = moat, start with stable minimal API); AIDE plugins/README doctrine (discovery/validation NEVER executes plugin code). The legacy PluginManager already ships: preset catalog (20), scaffold(), trust state persistence, manifest validation, /api/plugins* routes.
Core design decision (why declarative v1)
A scaffolded plugin is a manifest only (status:'template', entry:null) — it
DECLares capabilities (workspace.read, ui.view, terminal.run,
command.register) but ships no code. Trusted plugins earn UI CONTRIBUTIONS
backed by cockpit features that already enforce those capabilities server-side:
git-review-> reveals the GIT sheet (status/diff/stage/commit already approval-gated)markdown-preview-> PREVIEW action on opened .md files (escaped-subset renderer)env-inspector-> command writing runtime versions through the terminal drawer
This is ToolNeuron's gate model with zero attack surface added: trusting a plugin REVEALS existing gated functionality; it never grants new execution. Extension-host process model (real third-party code) stays governed by aide-phase9-extension-host for a later phase.
Implementation map
- Panel: #plugins-overlay, topbar PLUGINS button. Two sections: INSTALLED (from GET /api/plugins; trust checkbox -> POST /api/plugins/trust {id,trusted}) and CATALOG (GET presets merged flag installed; INSTALL -> POST /api/plugins/scaffold {id}).
- Contribution registry (client): FEATURED = { 'git-review': show(), 'markdown-preview': render(activeFile), 'env-inspector': run() }. A plugin contributes ONLY if installed AND trusted AND its declared capabilities are a subset of what the contribution uses (check manifest.capabilities array).
- Markdown preview safety: escape HTML FIRST, then transform a whitelist
(headings #/##/###, bold,
code, - lists) on the ESCAPED text. No raw pass. Links rendered as text, never anchors (phasing to full sanitizer later). - Status honesty: template/untrusted plugins show exactly why they are inert ("template — no code", "untrusted — contributions hidden").
Threat matrix
| Threat | Control |
|---|---|
| Trust-all fatigue | Trust is per-plugin checkbox with explicit capability list shown beside it |
| Manifest tampering after trust | trust keyed by id; manager reload re-validates manifest (invalid flag hides contributions) |
| Markdown preview XSS | escape-then-whitelist-transform; no anchors, no raw HTML ever |
| Catalog sprawl | INSTALL requires one click per plugin; nothing auto-installs |
Pitfalls
- /api/plugins/scaffold returns the FULL loaded catalog+installed shape — parse accordingly, not just the new plugin.
- Presets marked installed:true must render as INSTALLED even if trust=false.
- Capabilities check: manifest.capabilities may be missing on hand-made manifests — treat missing as empty (contributes nothing needing caps).
Gates
- Live: scaffold workspace-health -> appears INSTALLED; trust -> contribution visible; untrust -> hidden. Round-trip without daemon restart.
- markdown-preview renders a malicious md file (
<script>+ headings) with ZERO script execution and correct heading styling. - env-inspector writes versions into the terminal drawer via existing route.
- Untrusted git-review contributes NO button (capability gate visible).
Signals
- GitHub stars
- 43
- Forks
- 14
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
aide-plugins-surface-v1- Source
- github.com/anonymousnomad/covert-coder
github.com/anonymousnomad/covert-coder
Related picks
Skill · larksuite
The pick for Markdownmarkdown-formatter
Skill · nvidia
The pick for Markdownhandoff
Skill · mattpocock
More in Docs & knowledgecanvas-design
Skill · anthropics
More in Docs & knowledgedoc-coauthoring
Skill · anthropics
More in Docs & knowledgepopups
Skill · coreyhaines31
More in Docs & knowledge