Guide a full migration from FileMaker Pro to an open-source stack.
Overview
A skill for coding agents that turns a FileMaker Database Design Report into a migration plan. FileMaker exports a DDR as one large XML file per database file. A 300 MB DDR is tens of millions of tokens, far more than fits in an agent's context. So the skill first breaks the DDR into one text file per object: every script, table, layout, relationship, value list, custom function, menu, account and privilege set. The agent reads every one of those files, classifies it, and writes the plan from what they say. Every claim in the plan points at an object file. - A coding agent that loads skills (Claude Code, Codex, or similar) - Python 3. No packages. - The full DDR XML export: one XML file per FileMaker file, plus Summary.xml if you have it The DDR can hold passwords and API keys in plain text. The exploded files redact them; the raw XML does not. Clone the repo into your agent's skills folder. Then ask for $migrate-filemaker, or tell the agent to load SKILL.md. 1. Extract.
README
migrate-filemaker
A skill for coding agents that turns a FileMaker Database Design Report into a migration plan.
FileMaker exports a DDR as one large XML file per database file. A 300 MB DDR is tens of millions of tokens, far more than fits in an agent’s context. So the skill first breaks the DDR into one text file per object: every script, table, layout, relationship, value list, custom function, menu, account and privilege set. The agent reads every one of those files, classifies it, and writes the plan from what they say. Every claim in the plan points at an object file.
What you need
- A coding agent that loads skills (Claude Code, Codex, or similar)
- Python 3. No packages.
- The full DDR XML export: one XML file per FileMaker file, plus
Summary.xmlif you have it
The DDR can hold passwords and API keys in plain text. The exploded files redact them; the raw XML does not.
Install
Clone the repo into your agent’s skills folder. Then ask for $migrate-filemaker, or tell the agent to load SKILL.md.
How it works
- Extract.
explode_ddr.pywrites one text file per object, anindex.tsvof all of them, aLEGEND.mdfor the codes, and anunresolved.tsvof references to deleted or missing targets. It stops if any calculation, attribute or credential check fails. - Inventory. Count what is there and how the files connect.
- Read every object. Nine explorers (scripts, tables, layouts, graph, security, value lists, menus, custom functions, file settings) each read their kind and write one CSV row per object.
catalog_contract.py verifyproves nothing was skipped. - Ask. List what the DDR cannot answer: goals, users, identity, integrations, which behaviors to keep.
- Plan. Write the schema, API, UI, business logic, authorization, data migration and cutover documents from the templates.
The skill records what the FileMaker solution does. It does not judge whether that logic is right.
What an object file looks like
A script reads the way Script Workspace shows it, with the ids a search needs. // marks a disabled step.
# script 12: Go Home
# file: Orders.fmp12
# folder: Navigation
# steps: 9 (1 disabled)
3 If [ not IsEmpty ( $$cart_id ) ]
6 Perform Script [ "Clear Cart" ]
Script id=40 name="Clear Cart"
8 // Commit Records/Requests [ No dialog ]
9 Go to Layout [ "Home" (Customers) ]
Layout id=2 name=Home
Each calculation also gets a refs: line, such as refs: Invoices::total#14, cf:FormatMoney. To find every place a field is used, run grep -rl 'Invoices::total#' objects/.
Scripts
python3 scripts/explode_ddr.py RAW_DIR OBJECTS_DIR # DDR XML -> object files
python3 scripts/catalog_contract.py snapshot|verify ... # explorer coverage
python3 scripts/parse_ddr.py RAW_DIR SPECS_DIR # DDR XML -> JSON, optional
Repo layout
scripts/: the extractor and the coverage checkworkflows/: one guide per explorer: what to read and what to recordtemplates/: the migration documentsreference/: the DDR format, FileMaker concepts, translation patternsddr/: git-ignored folder for real DDR exports to test against
Tests
python3 -m unittest discover -s tests
License
MIT
Recommended Tools
Try a different keyword or remove a filter.
Install
npx skillfish add solutionscay/migrate-filemaker