Read and edit any Pro Cycling Manager database by asking an AI assistant: rosters, startlists, rider ratings changed in plain language.
Install · Skills · How it works · Development
Note
Unofficial community project. Not affiliated with, endorsed by, or supported by Cyanide Studio or Nacon.
Pro Cycling Manager keeps the entire game world — riders, teams, contracts, races — in a
binary .cdb file. It is not readable as-is, but it is a SQLite database in disguise, and the
conversion is lossless in both directions. This repository packages that knowledge as
Agent Skills: instructions and scripts that teach an AI coding
agent how to open a PCM database, answer questions from real data, and write changes back
without ever putting your save at risk.
You ▸ Who are my three best climbers, and how old are they?
You ▸ Bump Pogačar's descending to 80 in a copy of my save
You ▸ Build the startlist for Almería — 20 teams, sprinters up front
The repository is a marketplace containing a single plugin, pcm. In Claude Code:
/plugin marketplace add PCMStack/agent-skills
/plugin install pcm@pcmstack
Then just ask. Skills trigger on their own when a request matches — no command to remember.
Other agents
The skills follow the portable SKILL.md format, so any agent that reads Agent Skills can
use them. Point your agent at plugins/pcm/skills/, or clone the repository and add it as a
local marketplace:
/plugin marketplace add /path/to/agent-skills
Codex-compatible manifests live in .agents/plugins/marketplace.json and
plugins/pcm/.codex-plugin/plugin.json.
| Requirement | Why |
|---|---|
| Node 22+ | Runs cdb-converter via npx for the .cdb ⇄ SQLite conversion |
sqlite3 |
Querying and editing the converted database |
A .cdb |
A career save, an official release, or a community update |
Node and sqlite3 are only needed at runtime, when a skill actually opens a database.
Open, explore and edit a PCM database. The skill picks between two routes on its own:
- pcm-mcp — the bundled MCP server discovers your saves on disk and exposes targeted tools (search a cyclist, read a roster, update ratings). Best for lookups and one-off edits.
- SQLite — a lossless
.cdb → sqliteconversion via cdb-converter, giving unrestricted SQL: JOINs, aggregates, bulk edits. The only option for a file the agent has locally, and the right one for anything analytical.
It ships scripts/open-cdb.sh (backup + convert + table inventory in one step) and two
reference documents the agent loads on demand: the schema naming conventions with ready-made
queries, and the constraints that must hold for the game to accept an edited database.
Compose a race startlist — which teams take part, which riders each brings — and export the
.xml file PCM imports. The skill resolves the race and the rosters from your database, picks
riders that fit the profile (sprinters for flat finishes, climbers for mountains), and
delegates serialization to pcm_generate_startlist_xml so the file is always well-formed.
your request ──▶ agent ──▶ SKILL.md
│
├─▶ pcm-mcp (MCP) ──▶ saves on disk, targeted reads/writes
└─▶ cdb-converter ──▶ database.sqlite ──▶ SQL ──▶ database_edited.cdb
Important
A career save can represent hundreds of hours. Every skill and script here treats the
original .cdb as read-only: it is backed up first, edits are written to a new file,
and nothing is ever overwritten in place. Load the edited database in-game and verify it
before deleting your backup.
There is no build step and no application code — the deliverables are Markdown and JSON manifests, read by another agent at runtime.
.claude-plugin/marketplace.json # Claude Code marketplace
.agents/plugins/marketplace.json # Codex/agents marketplace
plugins/pcm/
.claude-plugin/plugin.json # plugin manifest
.codex-plugin/plugin.json # plugin manifest (Codex, adds `interface`)
.mcp.json # bundled MCP servers
assets/ # logo + app icon
skills/
pcm-database/
SKILL.md # required — the skill definition
scripts/ # optional helper scripts
references/ # optional docs, loaded on demand
pcm-startlist/
SKILL.md
Install the marketplace from a local clone to try changes, then exercise the skills with realistic prompts and check they trigger on paraphrases — a description that misses is a bug. Validation before opening a PR:
bash -n plugins/pcm/skills/pcm-database/scripts/open-cdb.sh # syntax-check scripts
python3 -m json.tool <file>.json > /dev/null # validate manifests
npx prettier --check "**/*.{md,json}" # formatting- cdb-converter — lossless
.cdb⇄ SQLite conversion - pcm-mcp — MCP server for querying and editing PCM databases
- Agent Skills — the portable skill format used here