Onboarding — partner organisations¶
Once you've followed Quick start and /help-tutorial runs, the plugin is working with EMPN-defaults output. This page is about making it produce your outputs — your logo, your voice, your workspaces, your source tiers.
Organisation declared
✓ org: dezernat-zukunft written to the workspace CLAUDE.md — one line, no script
✓ charts, decks and briefs now carry their brand and voice
✓ everything not overridden is inherited from the network
What customisation looks like¶
The plugin separates how from who.
skills/is the how — methodology, hand-offs, fan-out logic. Universal across the network. You inherit it as-is.shared/_common/holds universal rules — writing patterns, EU process knowledge, search and monitor patterns, pillar knowledge packsbraries. You inherit it; PR anything you'd improve.shared/empn/is EMPN's identity — house style, workspaces, folder conventions, visuals. Acts as the canonical reference and the default fallback when you haven't overridden a file.shared/<your-slug>/is your overlay. Sparse — only the files you want to differ from EMPN.
When a skill loads house-style.md, the resolver walks <your-slug>/ → _common/ → empn/ and returns the first match. The model never picks the org; the symlink does.
For the architectural detail and a diagram, see How it works.
What to override, in what order¶
Day 1, if you want anything other than EMPN-branded outputs¶
org-identity.md— your web URL, headquarters, contact email, one-line blurb, network position. Every closing slide, brief footer, and contact line reads this file. Without overriding, your decks say "EMPN" at the bottom.visuals/— logos, design tokens, fonts. The directory is symlinked wholesale, so you ship a fullvisuals/tree. Start by copying EMPN's as a template: Then replace the brand-specific files: logos inlogos/, palette indesign-tokens.yaml, font URLs inwebfonts.css.
Within the first weeks¶
workspaces.md— the Drive folders your organisation's research lives in, one per pillar. EMPN's five (fiscal, energy, monetary, industrial, cross-topic) are unlikely to match yours exactly.folder-conventions.md— your workspace tree if it differs from EMPN's05_Projects/<workspace>/...layout.house-style.md— voice, citation rules, forbidden phrases, uncertainty markers. Worth overriding only if your editorial standards diverge meaningfully from EMPN's.presentation-structure.md— deck section conventions, slide budget, slide-level rules.
Probably never¶
narrative-arc.mdis empirically derived from EMPN's own brief corpus. Inherit it unless you have a different signature structure backed by your own published work.filename-convention.md— almost always fine as-is.
Constraints to flag¶
A few parts of the plugin are tied to specific infrastructure and won't customise cleanly without a separate conversation:
- Tracker hosting.
tracker-publishassumes Cloudflare Pages plus a DNS zone on your domain. - Font hosting.
webfonts.csscarries hardcoded URLs atempn.eu. Your version needs to point at your own font host, or bundle fonts locally.
For other infrastructure-coupled skill families (contacts pipeline, create-cover, the export pipeline behind branded charts and decks), see the Later / advanced section in Prerequisites. These aren't set up on partner Day 1.
Running the resolver¶
setup_org.py is idempotent. Run it whenever you've changed your overlay or pulled a plugin update.
python3 .../setup_org.py # generate symlinks for the resolved org
python3 .../setup_org.py --clean # remove generated symlinks
python3 .../setup_org.py --dry-run # show plan, change nothing
Output ends with a line like linked 27 canonical path(s), skipped 0; active slug = <your-slug>.
You should not have to run it by hand¶
The workspace CLAUDE.md runs setup_org.py --resolve at the start of every session, and the brand and identity skills run it too. --resolve writes nothing — it prints your org and the folders to look in, in order.
It gets your org from one line in that same CLAUDE.md:
That is the whole configuration. A CLAUDE.md is read at the start of every session in every runtime, so the slug arrives without a marker file, an environment variable, or anything for you to run. If the workspace has no org: line, the session runs on EMPN's identity and tells you so every time, offering to record yours. Answering once ends the reminder.
It is per-workspace, not per-machine, so one laptop can hold two organisations' workspaces without them fighting over a single setting — and a project folder can declare a different org from the vault root above it.
The symlinks that --ensure generates are a local convenience, not the mechanism. Nothing needs to be written inside the plugin folder, which is why a read-only plugin directory does not break anything.
If your vault's CLAUDE.md predates this, copy the header block from shared/empn/templates/workspace-CLAUDE.md, or just add the org: line yourself.
Full contract, including the exit codes: shared/org-resolution.md.
When something breaks¶
| Symptom | Likely cause | Fix |
|---|---|---|
| Outputs branded EMPN despite override | Resolution didn't run, or resolved to empn |
Run setup_org.py --resolve; check the org: line in your workspace CLAUDE.md holds your slug |
| Told your org is assumed, every session | There is no org: line above the session's working directory |
Add one to the workspace CLAUDE.md, or run setup_org.py --write-org <slug> --workspace <root> |
slug not in registry |
Typo in the org: line, or org not on the allow-list yet |
Check spelling, or ask maintainer to add your org |
overlay folder missing |
Slug is on the list but shared/<slug>/ doesn't exist |
Create the folder with a README.md placeholder |
| Markdown link in a skill goes 404 | A canonical symlink is missing | Re-run setup_org.py |
| Chart still in EMPN colours | Partner override of design-tokens.yaml not loaded |
Verify shared/visuals symlink target; clear chart cache |
| Cowork ignores skill triggers | Sync incomplete, or SKILL.md frontmatter broken | Restart Cowork; check YAML validity |
For anything else, send the maintainer the error and the output of setup_org.py --dry-run.
Adding a new partner organisation¶
If your organisation isn't on the pre-prepared list (arena-ide, dezernat-zukunft, institut-avant-garde), see Contributing — register a new organisation. One-line PR.