Talon is a personal plugin marketplace for AI coding agents. It hosts reusable skills and serves them natively to both Claude Code and Codex from a single source of truth.
One repo, two marketplaces, the same skills.
| Plugin | What it does | Source |
|---|---|---|
hello-world |
Example/template plugin with a friendly greeting skill. | local (plugins/hello-world) |
terraform-module-steering |
Steering-document generator + spec-driven orchestrator for secure-by-default Terraform/OpenTofu modules (per-service CIS/FSBP research, wrap-upstream, hardcoded security, docs + verification). | remote, pinned v1.4.0 (falconh/terraform-module-steering) |
plugin-manager |
Maintainer plugin: onboard and release plugins on this marketplace (dual Claude Code + Codex, naming guidance, version bumping, PR workflow), plus real-time feedback that offers to file a redacted enhancement issue on a plugin's own repo when one of its skills disappoints the user. | local (plugins/plugin-manager) |
application-transform-manager |
Supervise an AWS Transform (atx) migration run on one repo: author and publish a Recipe, monitor a long-running job, resume or nudge it, and turn the exit criteria it could not meet into a written remediation plan. |
remote, pinned v0.2.0 (falconh/application-transform-manager) |
Plugins can live in this repo (local source) or in their own repo (remote git source); both Claude Code and Codex resolve either kind from the catalogs.
Onboarding a new plugin or cutting a release? Use the plugin-manager plugin's
onboard-plugin skill — it gives naming guidance, encodes the dual-manifest requirement, the
bump → tag → pin release flow, and the PR-only rule. Validate any change with
python3 plugins/plugin-manager/skills/onboard-plugin/scripts/validate_talon.py --root .
# Add the marketplace
/plugin marketplace add falconh/talon
# Install a plugin from it
/plugin install hello-world@talonUpdate later with /plugin marketplace update talon.
# Add the marketplace
codex plugin marketplace add falconh/talon
# Then browse and enable plugins in the TUI
/pluginsUpdate later with codex plugin marketplace upgrade talon.
You can also grab a single skill directly, without the marketplace:
codex $skill-installer install https://github.com/falconh/talon/tree/main/plugins/hello-world/skills/greet
Both ecosystems support the same marketplace add owner/repo flow and load the
same SKILL.md files. They differ
only in where each looks for its catalog and plugin manifest:
| Claude Code | Codex | |
|---|---|---|
| Marketplace catalog | .claude-plugin/marketplace.json |
.agents/plugins/marketplace.json |
| Plugin manifest | plugins/<p>/.claude-plugin/plugin.json |
plugins/<p>/.codex-plugin/plugin.json |
| Skills (shared) | plugins/<p>/skills/<s>/SKILL.md |
same file (via "skills": "./skills/") |
| Add command | /plugin marketplace add falconh/talon |
codex plugin marketplace add falconh/talon |
| Install | /plugin install <p>@talon |
enable in /plugins |
The skill body lives exactly once. Both marketplaces point at the same
plugin directories, and each SKILL.md carries both name and description
in its frontmatter so it is valid in both tools.
talon/
├── .claude-plugin/marketplace.json # Claude Code catalog
├── .agents/plugins/marketplace.json # Codex catalog
├── plugins/
│ └── hello-world/ # one plugin = one entry in BOTH catalogs
│ ├── .claude-plugin/plugin.json # Claude Code manifest
│ ├── .codex-plugin/plugin.json # Codex manifest
│ └── skills/
│ └── greet/SKILL.md # shared skill (example/template)
├── AGENTS.md # repo context for agents
├── README.md
└── LICENSE
Each plugin is its own entry in both catalogs. To add one:
- Copy the example as a starting point:
cp -r plugins/hello-world plugins/<your-plugin>
- Edit the two plugin manifests in
plugins/<your-plugin>/:.claude-plugin/plugin.json— setname,description,version..codex-plugin/plugin.json— set the samename,description,version, and keep"skills": "./skills/".
- Write your skill(s) under
plugins/<your-plugin>/skills/<skill>/SKILL.md. The frontmatter must include bothnameanddescription:--- name: <skill-name> description: One line on exactly when this skill should trigger. --- Instructions for the agent...
- Register the plugin in both catalogs:
.claude-plugin/marketplace.json→ add toplugins[]:{ "name": "<your-plugin>", "source": "./plugins/<your-plugin>", "description": "...", "version": "0.1.0" }.agents/plugins/marketplace.json→ add toplugins[]:{ "name": "<your-plugin>", "source": { "source": "local", "path": "./plugins/<your-plugin>" }, "policy": { "installation": "AVAILABLE", "authentication": "ON_INSTALL" }, "category": "<category>" }
- Commit and push. Users pick up the change with
/plugin marketplace update talon(Claude Code) orcodex plugin marketplace upgrade talon(Codex).
- Claude Code:
claude plugin validate plugins/<your-plugin> - JSON sanity: every
*.jsonfile must parse.