Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/marcus/sidecar/create-pluginnpx skills add marcus/sidecar --skill create-plugingit clone --depth 1 https://github.com/marcus/sidecarWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00074 | $0.02029 |
| Opus 5 | $0.00037 | $0.01014 |
| Sonnet 5 | $0.00015 | $0.00406 |
| Haiku 4.5 | $0.00007 | $0.00203 |
Grade A, and why
create-plugin scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 224 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Create Plugin
Architecture Overview
- Bubble Tea model:
internal/app/model.goowns the active plugin index, dispatches key events, renders plugin views. - Registry:
internal/plugin/registry.gostores plugins, handles lifecycle with panic protection, keeps anunavailablemap whenInitfails (silent degradation). - Plugin contract:
internal/plugin/plugin.godefines the interface every plugin must satisfy. - Context:
internal/plugin/context.goprovidesWorkDir,ConfigDir,Adapters,EventBus,Logger,Epoch, andKeymap. - Keymap:
internal/keymapmaps keys to command IDs. Footer/help reads bindings by context usingPlugin.Commands()+Plugin.FocusContext().
Plugin Interface
Every plugin must implement all of these methods:
ID() string // Stable kebab-case identifier
Name() string // Short human label for headers/help
Icon() string // Single-character glyph for tab strip
Init(ctx *Context) error // Lightweight setup; return error to degrade gracefully
Start() tea.Cmd // Kick off async work (non-blocking)
Update(msg tea.Msg) (Plugin, tea.Cmd) // Pure state transition
View(width, height int) string // Render within provided dimensions
IsFocused() bool // Check focus state
SetFocused(bool) // App calls this on tab switch
Commands() []plugin.Command // Footer hints per context
FocusContext() string // Current context name for keymap
Stop() // Idempotent cleanup
Optional: implement Diagnostics() []plugin.Diagnostic for the diagnostics overlay.
Lifecycle Order
- Registration (
cmd/sidecar/main.go):registry.Register(myplugin.New()). No work here. - Init: Detect prerequisites (repos, adapters, env vars). Use
ctx.Loggerfor warnings. Return error to degrade gracefully. - Start: Batch initial commands with
tea.Batch. Never block. - Update: Pattern-match on custom
Msgtypes andtea.KeyMsg. Keep I/O in commands, not directly in Update. - View: Render only; no side-effects. Honor
width/height. - Focus/Blur:
SetFocusedcalled on tab switch. Pause expensive work when unfocused. - Stop: Close watchers, timers, channels. Guard with
sync.Once/flags.
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 224 lines · 74 tokens per session scan A d50366e3a1fc
create-plugin is a skill published in the GitHub repository marcus/sidecar (1,049 stars, last pushed 2d ago), licensed MIT. It adds 74 tokens to every session and 2,029 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
intake
The planning front-door. Captures feature ideas and bugs as graded rows in the root INTAKE.md ledger. Use it when the user says "log an idea", "capture a bug", "add to the backlog", "note this down", "track this feature", or invokes /intake. Owns the requirements interview — fleshes out thin ideas, proactively…
merge
The ship gate — the only skill that merges. --staging merges the feature→staging PR on green CI, deploys, verifies, emits a human test script and stamps the staging sign-off on approval. --production ships the double-confirmed release to main and deploys production. Never self-certifies staging; nothing reaches main…
pre-merge
The CI gate. Takes a feature branch from "eng says done" to "PR open against staging with green checks". Runs the project's preflight-resolved pipeline from devkit/policy.json components[]: sync → parallel correctness + security waves → coverage → regression tail → security/migration → PRD-consistency → open PR. Emits…
msg
Root menu for msg skills, plus harness modes. --init is the one-time project bootstrap — use it when the user says "initialise project", "bootstrap repo", "set up the framework", "start a new project", or asks to set up project structure in an empty repo. Other modes: --init-staging (add a staging branch), --update…
lorekeeper-reconcile
Reconcile and fact-check Lorekeeper memories against source materials, existing documentation, and internal consistency. Use when (1) the user provides reference materials to verify against, (2) the user requests a general knowledge audit, or (3) the user wants to verify specific topics. Updates memory scores and…
backlog-management
Lorekeeper backlog management — ticket lifecycle, numbering, scripts, and conventions. Load this when filing tickets, moving ticket states, checking what's ready to work on, or onboarding to the project workflow.