The Claude Code plugin marketplace for alwaysmap tools.
| Plugin | What it does | Source repo |
|---|---|---|
jfm |
Jobs for Me — tracks your job search, assesses fit against your profile, and preps you for interviews | alwaysmap/jobs4me |
tmb |
Train My Brain — interviews you about a learning goal and builds a hands-on curriculum with a local Hugo site | alwaysmap/train-my-brain |
The authoritative list lives in .claude-plugin/marketplace.json.
claude plugin marketplace add alwaysmap/alwaysmap-marketplace
claude plugin marketplace update
claude plugin install tmb@alwaysmap
claude plugin install jfm@alwaysmapThe marketplace's internal name is alwaysmap, so plugins are addressed as <plugin>@alwaysmap.
In the Claude desktop app: Customize → Plugins → Personal → + → Add marketplace, then paste alwaysmap/alwaysmap-marketplace.
Each plugin repo owns its own release process. On git push --tags v*:
- The plugin repo's release workflow builds its zip and creates a GitHub Release.
- It dispatches a
plugin-releasedevent to this repo with the plugin name + version. - This repo's
update-versions.ymlworkflow receives the event and runsscripts/update-plugin-version.shto update theversionandreffields for that plugin inmarketplace.json. - Users who have the marketplace added see the new version on the next
claude plugin marketplace update.
No manual edits to marketplace.json are needed for version bumps — the dispatch model keeps it in sync.
- The plugin repo adds a
.github/workflows/release.ymlthat dispatchesplugin-releasedto this repo (see the tmb or jfm workflow as a template). - Add the plugin's initial entry to
marketplace.jsonby hand (first-time only), matching the shape of the existing entries. - Set
MARKETPLACE_DISPATCH_TOKENin the plugin repo's Actions secrets — a fine-grained PAT scoped toalwaysmap/alwaysmap-marketplacewith Contents write permission.
Previously named alwaysmap/marketplace. Renamed to alwaysmap/alwaysmap-marketplace in April 2026 so the UI label reads (alwaysmap) instead of the generic (marketplace). Fine-grained PATs survived the rename because they bind to repo ID, not repo name.