Portable concise-response customizations for GitHub Copilot.
Kevin provides repository instructions, six manually selected agents, five cross-surface skills, VS Code prompt files, and an installable Copilot plugin.
Commit Kevin to one repository for predictable team-wide behavior:
npx kevin-copilot initProject mode writes:
.github/
copilot-instructions.md
agents/kevin-{lite,full,ultra,adhd,accountant,enlighten}.agent.md
skills/kevin-{compress,commit,review,merit,help,enlighten}/SKILL.md
prompts/kevin-{commit,review,help}.prompt.md
Kevin does not write AGENTS.md by default. Loading both AGENTS.md and .github/copilot-instructions.md repeats the same voice rules and wastes instruction tokens. Use --agents-md only when compatibility with tools that do not read Copilot instructions is more important than that overhead.
Install Kevin under ~/.copilot so it follows your Copilot CLI sessions without modifying repositories:
npx kevin-copilot init --scope personalCOPILOT_HOME is honored. Personal mode installs instructions, agents, and skills. Use --target to override the destination.
Install the native plugin directly from this repository:
copilot plugin install shyamsridhar123/kevin-copilot:pluginOr register the repository marketplace:
copilot plugin marketplace add shyamsridhar123/kevin-copilot
copilot plugin install kevin-copilot@kevin-copilotVerify inside a session with /agent (agent picker) and /skills (skill list), or from the shell:
copilot plugin list
copilot plugins list --kind plugin --kind skillUse agents non-interactively with copilot --agent kevin-ultra.
For Copilot cloud agent and the Copilot app, enable the marketplace plugin in .github/copilot/settings.json:
{
"extraKnownMarketplaces": {
"kevin-copilot": {
"source": {
"source": "github",
"repo": "shyamsridhar123/kevin-copilot"
}
}
},
"enabledPlugins": {
"kevin-copilot@kevin-copilot": true
}
}| Mode | Output shape |
|---|---|
| Lite | Short paragraphs; code first |
| Full | Fragments, bullets, minimal prose |
| Ultra | label:value or code-only |
| ADHD | Next action first; bounded steps; visible state |
| Accountant | Metrics and ledger-style line items |
Select a project or personal default:
npx kevin-copilot init --intensity accountantVoice agents use portable read, edit, search, and execute tool aliases. They set disable-model-invocation: true, so Copilot will not infer a voice agent from task context; select one explicitly. Lite, Full, and Ultra include VS Code handoffs for changing compression.
Every mode above cuts words. kevin-enlighten spends them: it produces a self-contained HTML picture explainer for a reader with no background on the topic.
Terseness works when the reader can expand a fragment from context they already have. A beginner cannot, so a fragment costs them a search instead of saving them a read. Enlighten keeps the rest of the voice — no preamble, no closing recap — and drops only the length limit. Few words per idea, not few ideas.
It is deliberately not an --intensity value. The intensities are compression levels and one of them becomes a repo's default voice; making Enlighten selectable there would let a repository default to verbose. It ships as an agent and a skill you invoke explicitly, and it never emits a token receipt, because a receipt estimates compression and this mode does not compress.
Agent Skills work in Copilot cloud agent, code review, Copilot CLI, the Copilot app, and supported IDE agent modes.
kevin-compress— compress an answer without dropping required detailskevin-commit— generate a Conventional Commits messagekevin-review— emit concise, evidence-backed review findingskevin-merit— the same findings, delivered as a corporate merit cyclekevin-help— show modes and controlskevin-enlighten— explain a topic as an HTML picture explainer (the one verbose skill)
Prompt files remain available in VS Code as /kevin-commit, /kevin-review, and /kevin-help. Other surfaces use the equivalent skills.
kevin-merit runs the same review as kevin-review, audits the diff for over-engineering, and wraps the result in a corporate merit cycle: a band, an allotted increase, and one flat sentence of calibration. Outstanding is defined and never awarded.
The audit works off a cost-approval ladder. Every line added is a line the repo funds forever, so new code has to clear the cheapest tier that could have delivered it:
| Tier | Cheaper option |
|---|---|
| 1 | Nothing — the requirement does not exist |
| 2 | Prior art already in this repo |
| 3 | The standard library |
| 4 | The runtime, browser, or OS |
| 5 | A dependency already in the manifest |
| 6 | New code, smallest version that passes |
A new dependency is not a tier; it is a request, and the skill never approves one. Code that stopped at tier 6 when a lower tier would have worked is reported as UNFUNDED SCOPE — shipped, unbudgeted, permanent — and the finding must name the specific stdlib call or existing function it should have used. If it cannot name one, there is no finding.
The ladder is wired to the money rather than left as advice: any unfunded scope caps the band at Meets Expectations regardless of line count, and Exceeds requires both a clean scope and deletions outnumbering additions. The only way to be paid above the floor is to remove code and add nothing that already existed.
Two limits on it. The ladder judges the solution, never the effort of understanding the problem — the skill reads the code a change touches before assigning a tier. And the safety floor outranks cheapness: trust-boundary validation, data-loss handling, security controls, and accessibility affordances are funded at every tier and can never be charged as unfunded scope.
The findings stay real. The band cannot be justified by inventing one, and the line counts come from git diff --numstat rather than an impression of the diff. The subject is always a change. The skill refuses to score a contributor, an author, or a commit history, because a performance rating pointed at a person is not a joke that a tool gets to make.
kevin-copilot init [--scope project|personal] [--target <dir>]
[--intensity lite|full|ultra|adhd|accountant]
[--force|--merge] [--token-receipt] [--agents-md] [--dry-run]
kevin-copilot update [same options, except --force]
kevin-copilot uninstall [--scope project|personal] [--target <dir>] [--dry-run]
--mergepreserves existing instruction content inside sentinel markers.--token-receiptopts into the model-estimatedsaved ~N tokensfooter./instructionsin Copilot CLI shows loaded instructions and provides a temporary disable/debug mechanism.
Teams can add .github/instructions/*.instructions.md files when code, tests, or documentation need different output shapes. For example:
---
applyTo: "docs/**"
---
Use Kevin Lite output. Preserve explanations needed by documentation readers.Keep the repository-wide voice in .github/copilot-instructions.md; path-specific files should contain only the delta.
Compression that only applies to prose is half a tool. A response can be four words long and still describe a 300-line class nobody needed, so Kevin's brevity now applies to code as well — the ## Code block in .github/copilot-instructions.md and in every agent:
- Take the cheapest option that works: nothing → what this repo already has → the standard library → the runtime or platform → a dependency already in the manifest → new code.
- Never add a dependency on its own. Ask.
- Write the smallest version that passes.
- Deleting code is a valid answer.
That idea is ponytail's, adopted rather than merely cited. Ponytail is a far more thorough treatment of it — 20-host adapters, a much longer ruleset — and it installs into Copilot CLI alongside Kevin. Run it if you want the full version; Kevin ships four lines because instruction tokens are the thing Kevin is trying to spend less of.
kevin-merit enforces the same tiers at review time, so what the voice permits and what the audit charges for stay identical.
Kevin borrows one more rule outright: compression is never allowed to remove trust-boundary validation, data-loss handling, security controls, or accessibility affordances. Terse, not negligent.
| Asset | VS Code | Copilot CLI | GitHub.com/cloud |
|---|---|---|---|
| Copilot instructions | Yes | Yes | Yes |
| Custom agents | Yes | Yes | Yes |
| Agent Skills | Yes | Yes | Yes |
| Prompt files | Yes | No | No |
| Plugins | Preview | Yes | Yes |
The Copilot app consumes the same repository and plugin customizations. Kevin does not ship a VS Code extension or MCP server because it needs no custom UI or external tools.
What is verified by running this repository:
| Claim | How it is checked | Status |
|---|---|---|
Project install writes 16 files under .github/ |
kevin-copilot init --target <dir>, npm test |
Verified |
Personal install writes 13 files under ~/.copilot and omits prompt files |
kevin-copilot init --scope personal --target <dir>, npm test |
Verified |
| Uninstall removes generated files and empty directories, skips modified files | kevin-copilot uninstall [--scope personal], npm test |
Verified |
Agents are manual-only (disable-model-invocation: true) and use portable tools |
npm test |
Verified |
Token receipts are off unless --token-receipt is passed |
npm test |
Verified |
| Plugin manifest exposes six agents and six skills | npm test |
Verified |
| Response tokens drop 50–90% on fixtures | npm run evals |
Verified on synthetic fixtures only |
| Live Copilot models obey the voice rules | Not automated | Unverified |
| Latency, semantic equivalence, production token savings | Not automated | Unverified |
npm run evals is an offline synthetic fixture benchmark. It counts tokens in hand-authored answers; it does not prove model compliance, semantic equivalence, latency, or production token savings. The token receipt is off by default because a model estimate is not telemetry.
Real evaluation should run repeated prompts against supported Copilot models and record:
- instruction and response tokens
- end-to-end latency
- semantic correctness and required-information checks
- preserved safety warnings
- agent discovery and available tools
npm install
npm run build
npm test
npm run evalsRequires Node.js 18 or later.
npx kevin-copilot uninstall
npx kevin-copilot uninstall --scope personalExact generated files are removed. Merged instruction blocks are cleaned while surrounding content is preserved. Modified files are skipped.
MIT
