Contributing¶
PRs welcome on EMPN-eu/empn-core. The conventions below cover the four most common contribution paths.
For the full developer-facing contracts (commit conventions, versioning, the testing pipeline), see CONTRIBUTING.md and MAINTAINERS.md at the repo root.
Register a new organisation¶
If your organisation isn't on the pre-prepared list (arena-ide, dezernat-zukunft, institut-avant-garde, empn), it needs to be added before you can install. One-line PR.
Pick a slug¶
A slug is a short, stable identifier:
- Lowercase ASCII letters, digits, hyphens
- Must start with a letter
- 2–32 characters, no consecutive hyphens
- Validation regex:
^[a-z][a-z0-9]*(-[a-z0-9]+)*$
Valid examples: empn, dezernat-zukunft, arena-ide. Invalid: EMPN (uppercase), dezernat_zukunft (underscore), -empn (leading hyphen).
Open the PR¶
Two changes:
- Add a row to
plugins/empn-core/shared/_orgs.yaml: - Create
plugins/empn-core/shared/<your-slug>/with at least aREADME.md(you can copyshared/arena-ide/README.mdas a template).
Maintainer reviews that the slug is unique, the folder exists, and the row is well-formed. Merge cycle is short.
If you don't write code, email the maintainer with your slug, your organisation's full name, and a contact email. They open the PR for you.
Suggest improvements to shared docs¶
Three buckets:
- Universal rules (source-tier additions, EU process clarifications, anti-AI-tone patterns, file-format constraints) → edit
_common/<doc>.md. PR review checks the change applies network-wide. - EMPN identity (house style, themes, narrative arc, presentation conventions) → edit
empn/<doc>.md. Only EMPN maintainers merge changes here. - Your own overlay → edit
<your-slug>/<doc>.md. Maintainer reviews the change doesn't leak into other installs.
Author a new skill¶
Skills are markdown files under plugins/empn-core/skills/<name>/SKILL.md. The fastest path is to run skill-builder in any Cowork conversation — it walks you through the SKILL.md frontmatter, the trigger phrases, the hand-offs, and files a PR via the GitHub MCP.
Manually, the contract is:
- Frontmatter with
name,description(containing 2–4 quoted trigger phrases that route users to the skill). - Body under ~100 lines. Third person. Structure: what it does → how to run it → output format → hand-offs to other skills.
- No org-specific behaviour. A skill that only works for one organisation isn't a skill — it's a script. Move org-specific logic into
shared/scripts/<name>.pykeyed offEMPN_ORG. - Source-tier lists link to the shared doc (
shared/_common/themes/<theme>/data-tiers.mdor similar), never inline.
See shared/_common/skill-authoring-guide.md for the full authoring conventions.
Report a bug or suggest an idea¶
Two skills do this for you, no Git knowledge required:
skill-feedback— for "this skill misbehaves" or "this output is wrong". Captures context and files a GitHub issue.skill-idea— for "I'd like a skill that does X". Logs the idea even if you don't have a full design.
Both work in any Cowork conversation. If the GitHub MCP isn't connected on your install, they print a paste-ready issue block instead.
PR checklist¶
Before merging:
- Local plugin validation passes:
claude plugin validate . - Affected skills are triggered against the prompts in their
descriptionfield — outputs are sensible. - Version bumped in
plugins/empn-core/.claude-plugin/plugin.jsonin the same commit. Semver: patch = wording, minor = new skill, major = removal or rename. - If
shared/changed, therepo-auditconsistency check passes — run it locally or wait for the scheduled CI agent.