Table of Contents generated with DocToc
The framework‘s skills are project-agnostic by design. An adopter project that needs to modify a framework workflow’s behaviour — different defaults, an extra step, a skipped step, a different tone — does not fork the framework, does not modify the framework's snapshot in .apache-magpie/, and does not copy a framework skill into their own .claude/skills/. Instead, they write an override file: agent-readable markdown that the framework skill consults at run-time and applies before executing default behaviour.
This document is the contract between adopter authors of override files and framework authors of skills that read them.
<adopter-repo>/.apache-magpie-overrides/ ├── README.md (the dir's own readme, │ scaffolded by │ /magpie-setup adopt) ├── <framework-skill-name>.md (e.g. pr-management-triage.md) └── <other-framework-skill-name>.md
The directory is committed in the adopter repo (the whole point is for overrides to ship with the project's repo).
Free-form agent-readable markdown. The agent interprets it. No templating engine, no patch tool, no DSL. The override author writes what they want to change, and the framework skill applies it on every invocation.
Common shapes:
### Override 1 — Skip the workflow-approval auto-approve For first-time-contributor PRs, the default flow approves the workflow run automatically after diff inspection. Skip that step entirely; we approve workflow runs by hand on this repo.
### Override 2 — Replace the close-comment template Replace the body the `close` action posts with the project- specific wording in [`<adopter-repo>/.github/CONTRIBUTING-pr-quality.md`](../.github/CONTRIBUTING-pr-quality.md) section *"PRs we close as out of scope"*. Keep the AI-attribution footer.
### Override 3 — Always tag @core-maintainers on first comment Before posting any comment on a PR for the first time, add a `@apache/airflow-core-maintainers` mention so the team gets a notification. Do not add it on subsequent comments on the same PR.
### Override 4 — Treat backport PRs as already-triaged Any PR whose base branch matches `v[0-9]-[0-9]-test` is auto-classified as `already-triaged` regardless of triage markers. Skip the `mark-ready` action; backports go straight to the `pr-management-code-review` queue when their CI passes.
Every override file should answer two questions for a future maintainer (or a future agent on a later run):
/magpie-setup override <skill> flow takes the cue and opens a PR against apache/magpie.Every framework skill that supports overrides starts each invocation with this opening protocol:
<adopter-repo>/.apache-magpie-overrides/<this-skill>.md if it exists. Surface the file's title and the list of override headlines (### Override N — ...) to the user before doing anything else.### Override N — ... section modifies the skill‘s default behaviour for this run. The agent interprets the instructions in the override section and adjusts the rest of the skill’s flow accordingly.A skill that does not yet support overrides documents that explicitly in its SKILL.md. The setup override sub-action surfaces this gap and suggests opening a framework-side issue requesting the hook.
These are baked into agent instructions across the framework. A framework agent NEVER:
<adopter-repo>/.apache-magpie/. The snapshot is a build artefact — every modification gets blown away on the next /magpie-setup upgrade. Local mods go into .apache-magpie-overrides/.apache/magpie.When /magpie-setup upgrade refreshes the snapshot, it walks every override file and surfaces:
Both are surfaced as ⚠ — non-blocking, but the user re- anchors the override against the new framework structure before relying on it again. Until re-anchored, the framework skill applies what it can interpret from the override and reports anything it skipped.
If an adopter project's override is widely useful (e.g. a behaviour the framework should ship by default for all adopters), the right move is a PR against the framework:
apache/magpie main./magpie-setup upgrade in the adopter pulls the framework change.The setup override sub-action prompts the user about upstreaming on every override scaffold; the security-issue-fix and pr-management-code-review skills know how to open a public PR — point them at the framework repo.
The first cut of an override mechanism would be templated: a YAML schema, declared anchors per skill step, a runtime patch. We deliberately rejected that:
Trade-off: agentic interpretation has variance. An override that says “always tag @core-maintainers” might be applied slightly differently across runs. The mechanism mitigates this by:
/magpie-setup override flow encourages one focused override per file, not a sprawling rewrite).setup skill — the entry point that manages the snapshot + scaffolds overrides.overrides.md sub-action — interactive override creation.