mcp server
agent-station
A curated list of developer friendly, production ready instructions, chatmodes, prompts and toolkits for mastering GitHub Copilot.
Set up
Runs on your computer. Pick your agent and operating system.
This project does not publish an install method we can turn into a config. Follow the README instead.
README
synced Oct 21, 2026agent-station
One place for the skills, agents, hooks, MCP servers and CLIs I use with coding agents. It is a plugin
marketplace that Claude Code, Codex and GitHub Copilot CLI all install from directly, plus a small station CLI that
sets up a machine or a project in one command.
Write a skill once, in the Agent Skills format, and every tool gets the same copy.
Plugins
| Plugin | Skills | Also |
|---|---|---|
devflow | feature-brief, -research, -plan, -execute, -review; bugfix, feedback | worklog CLI (time, issue records, forecasts); project issue forms and PR template |
research | research-memory, notebooklm | obsidian-vault MCP server |
frontend | frontend-craft |
Profiles in profiles.json group these with plugins from other marketplaces:
| Profile | Plugins |
|---|---|
base | devflow, context7 (installed on every machine) |
web | base + frontend, playwright |
laravel | web + laravel-boost |
research | research, obsidian (kepano/obsidian-skills) |
station list prints the current set.
Set up a machine
git clone git@github.com:ABilenduke/agent-station.git ~/code/abilenduke/agent-station
cd ~/code/abilenduke/agent-station
node station/station.mjs install --dry-run # preview; anything replaced is backed up first
node station/station.mjs install
install is safe to re-run. It:
- adds this checkout as the
agent-stationmarketplace in Claude Code, Codex and Copilot CLI (each one that is installed), and installs thebaseprofile in each. Copilot CLI gets only the profile'sagent-stationplugins, not ones from other marketplaces such ascontext7; - links
~/.local/bin/stationand~/.local/bin/worklog; - points every tool at one global instructions file,
global/AGENTS.md:~/.codex/AGENTS.md,~/.copilot/copilot-instructions.mdand~/.gemini/GEMINI.mdlink to it and~/.claude/CLAUDE.mdimports it; - creates
~/.config/agent-station/secrets.env(mode 600) fromsecrets.env.example. Fill in the keys there.
Then run station doctor to check for broken links, skills a tool would load twice, and API keys
left in plain text in ~/.claude.json or ~/.codex/config.toml.
Set up a project
cd ~/code/some-project
station init web # any profiles or plugins: station init laravel research
This writes, and you commit:
.claude/settings.json: enables the plugins and declares their marketplaces, so Claude Code offers to install them for anyone who opens the project;.github/copilot/settings.json: the same, for Copilot CLI, which installs the plugins itself. It lists only theagent-stationplugins, since Copilot CLI cannot read other marketplaces;.codex/config.toml: switches the plugins on for this project once Codex trusts it;AGENTS.mdif it is missing, and aCLAUDE.mdcontaining@AGENTS.md, so all tools share one set of project instructions. A project that already has its ownCLAUDE.mdis left alone;- the files each plugin offers new projects from its
scaffold/folder, only those the project does not have yet. devflow adds feature, spike and bug issue forms, a PR template, and.agent/to.gitignore(merged, never replaced).
Codex has no per-project install, so init also installs the plugins for your user. Plugins it
installs for the first time, unless they are in the base profile, are switched off everywhere
except projects that enable them. init works out every change first and writes nothing if any
file cannot be edited safely.
Add or change a skill
- Create
plugins/<plugin>/skills/<name>/SKILL.mdwithname(matching the folder) and adescriptionthat says when to use it. Write "the agent", not "Claude" or "Codex". An optionalagents/openai.yamlsets how Codex displays it. npm run validate, then commit.station update. Both tools keep their own copy of each plugin: Claude Code per commit, so it picks up committed changes, in every project that installed them; Codex re-copies the working tree. Plugins you had switched off in Codex stay off.
A new plugin is a folder with .claude-plugin/plugin.json (no version, so installs track commits),
an entry in .claude-plugin/marketplace.json, and usually a
place in a profile.
MCP servers and secrets
Plugins declare MCP servers in .mcp.json. Secrets never go there: Codex does not expand ${VAR}
in plugin MCP config. Instead the server is started through bash, which reads the secrets file,
exports only the values that server needs, and hands over to a pinned version of the real command:
{
"command": "bash",
"args": [
"-c",
". \"$HOME/.config/agent-station/secrets.env\" || exit 1; export OBSIDIAN_API_KEY OBSIDIAN_HOST OBSIDIAN_PORT; exec uvx mcp-obsidian@0.2.3"
]
}
station validate rejects ${...} in .mcp.json and anything that looks like a credential in any
committed file.
How it fits together
- One catalog, three tools. Codex and Copilot CLI read Claude Code's
.claude-plugin/format: plugin manifests,skills/,hooks/hooks.json(withCLAUDE_PLUGIN_ROOTset) and.mcp.json. Agents inagents/load in Claude Code only. Copilot CLI loads a local marketplace's plugins live, sostation updateonly refreshes its catalog. It readsAGENTS.mdandCLAUDE.mdin projects. - This machine vs others.
installregisters the local checkout, so committed changes reach this machine withstation updatebefore they are pushed. Projects declare the GitHub source, so other machines and teammates install from GitHub. The two coexist under the same marketplace name. - Builds are committed. Plugin installs copy the plugin folder and run no build, so compiled
code such as
plugins/devflow/dist/is committed and CI checks it matches the source. Build tooling lives at the repository root so plugin folders stay small. - Gemini, later. A plugin becomes a Gemini CLI extension by adding a
gemini-extension.jsonbeside itsplugin.json;installalready links~/.gemini/GEMINI.mdwhen~/.geminiexists.
station commands
install [--dry-run] set up this machine
init <profile|plugin>... [--dir <path>] set up a project (--no-codex skips the Codex install)
update pick up changes to agent-station plugins
list profiles and what each plugin provides
doctor check this machine for drift and loose secrets
validate check this repository (CI runs it)
Develop
npm ci
npm run check # lint, format, station and devflow tests, validate, devflow build is current
Skill evals live in evals/, outside the plugins so installs stay small.
History
This repository started as a GitHub Copilot resource catalog (prompts, instructions, agents and
toolkits). That catalog is preserved at the copilot-archive tag;
pieces come back as skills when they are needed.