Table of Contents generated with DocToc
Scope. Works on any project, ASF or not. The ASF intake path (
security@, Vulnogram CVE flow) is the default profile; non-ASF adopters swap it for GitHub Security Advisories / a MITRE CNA through the adapter/config layer.
End-to-end automation for an ASF project‘s security-issue handling process — from inbound report on the project’s security@ mailing list through to a published CVE record on cve.org. Eleven skills that compose into the canonical 16-step lifecycle, three that produce, verify, and maintain the project's own security model, plus one read-only supporting skill for tracker-stats dashboards (fifteen skills total).
Why a framework skill family? The 16-step process exists across the foundation; every project's security team runs essentially the same workflow with project-specific scope labels, mailing-list addresses, milestone formats, and canned-response wording. Lifting the workflow into a project-agnostic framework lets each adopter plug their specifics into <project-config>/ and reuse the skills verbatim.
[!TIP] Why this family
- Every report that lands on security@ becomes a tracked issue, with a receipt drafted to the reporter
- The whole lifecycle in one place — triage, CVE allocation, the fix PR that does not leak the embargo, and the advisory
- Read-only until you confirm: no label flips, no closes, and no CVE allocated without you saying so
Install just this family — one plugin, 15 skills. The security-report lifecycle, from intake through CVE publication.
Once you have added the marketplace:
/plugin install magpie-security@apache-magpie
New to Magpie? The quick start walks the whole path in one place — install, the first /magpie-setup run, and a recording of it happening — plus the other agents and the secure-isolation setup to run next.
Illustrative — the real run derives more and asks better. What is true is the shape: it runs itself, it writes only gitignored files, and it stages nothing.
Every skill here resolves project-specific values from the adopter‘s <project-config>/ directory — which is .apache-magpie-local/ (gitignored, yours) first, then .apache-magpie-overrides/ (committed, the project’s).
For yourself: /magpie-setup config scaffolds and fills these locally. Nothing is staged, nothing is committed, and it works on a repository that has never adopted Magpie.
For the project: /magpie-setup adopt commits them for every contributor, either scaffolded directly or promoted from what you configured locally.
Required. Without these a skill would act on a guess, so it stops and says which file is missing.
| File | What it carries | Read by |
|---|---|---|
fix-workflow.md | Fork / clone / toolchain specifics, backport-label policy, commit-trailer wording, PR scrubbing, private-PR fallback. | issue-fix |
milestones.md | Milestone naming conventions + create-and-assign recipe. | issue-sync |
project.md | Project manifest. Identity, repositories, mailing lists, tools enabled, CVE tooling, GitHub project-board + issue-template field declarations. The single file every skill reads to resolve project-scoped references. | cve-allocate, issue-deduplicate, issue-fix, issue-import, issue-import-from-pr, issue-import-from-scan, issue-import-via-forwarder, issue-invalidate, issue-triage, model-verify, tracker-stats-dashboard |
scanner-products.md | Private scanner product names, and the finder-anonymisation rule applied before anything is quoted publicly. | issue-sync |
scope-labels.md | Scope label → CVE product / packageName / collection-URL mapping. Exactly one scope label per tracker. | issue-deduplicate, issue-import-from-md, issue-import-from-pr, issue-triage, tracker-stats-dashboard |
security-intake-config.md | Capability-flag vocabulary for the intake path: how reports arrive, what counts as in scope, and what a receipt says. | issue-import |
security-model.md | Authoritative URL for the project's Security Model + known-useful anchors + drafting rule. | issue-triage, model-prepare, model-verify |
security-tracker-stats.md | Which tracker fields and windows the stats dashboard reads, and what it publishes. | tracker-stats-dashboard |
title-normalization.md | Regex cascade the security-cve-allocate skill applies to tracker titles before pasting them into the CVE-tool allocation form. | cve-allocate |
Optional. Each has a documented fallback; absent, the skill still runs.
| File | What it carries | Read by |
|---|---|---|
canned-responses.md | Reusable reporter-facing reply templates. | issue-import, issue-import-from-scan, issue-invalidate, issue-sync, issue-triage, model-update |
distributor-list.md | The embargo distributor list a pre-announcement goes to, and what it may contain. Absent, no pre-announcement is proposed. | issue-sync |
privacy-llm.md | Which model tier may see which class of content, for projects routing foundation-private information away from third-party models. | issue-import |
release-trains.md | Active release branches, release-manager attribution per cut, rotation rosters, security-team roster. | cve-allocate, issue-fix, issue-import, issue-import-from-pr, issue-sync, issue-triage |
Third-party packages, none of them required: this family works with none of them installed, and Magpie neither bundles nor depends on any. They are named because they are what a maintainer goes looking for next, and because the answer differs by agent.
Aikido Security — Aikido
SAST, secrets and infrastructure-as-code scanning surfaced in the session.
With this family: A second opinion from a conventional scanner, and a different class of finding — committed secrets — from the ones a code-reading scan surfaces.
Available on Claude Code only.
Claude Security — Anthropic
A multi-agent vulnerability scan of your own repository, run inside the session; each finding carries a severity, a CWE category and reproduction steps, and the ones you pick become patch files you review before applying.
With this family: This family handles reports that arrive — intake, triage, CVE, advisory. Scanning finds the ones nobody reported. The two meet at security-issue-import-from-scan, which imports scanner output as trackers.
Available on Claude Code only.
Claude Code only: it drives subagents and a scan workflow that Agent Plugins 1.0 has no component for. Listed with its harness named rather than presented as the answer for everyone.
Install commands per agent are in Companion skill packages.
Illustrative shapes, not real transcripts — your output will differ. Nothing below sends, merges, or posts anything without you confirming it.
Pull new reports out of the mailbox.
/magpie-security:issue-import
Triage what came in.
/magpie-security:issue-triage
Check the security model still matches reality.
/magpie-security:model-verify
| Skill | Purpose |
|---|---|
security-issue-import | Import new reports from <security-list> into <tracker>. |
security-issue-import-from-pr | Open a tracker for a security-relevant fix opened as a public PR. |
security-issue-import-from-md | Bulk-import findings from a markdown report. |
security-issue-import-from-scan | Import findings from a security scanner output (Trivy, Grype, etc.) into <tracker>. |
security-issue-import-via-forwarder | Import reports relayed through the ASF security forwarder when no direct reporter contact exists. |
security-issue-triage | Propose an initial-triage disposition (VALID / DEFENSE-IN-DEPTH / INFO-ONLY / INVALID / PROBABLE-DUP / FIX-ALREADY-PUBLIC) for each tracker still in Needs triage; opens a discussion comment, never flips the label. |
security-issue-sync | Reconcile a tracker against its mail thread, fix PR, release train, and archives. |
security-cve-allocate | Allocate a CVE for a tracker (Vulnogram URL + paste-ready JSON). |
security-issue-fix | Implement the fix as a public PR in <upstream>. |
security-issue-deduplicate | Merge two trackers describing the same root-cause vulnerability. |
security-issue-invalidate | Close a tracker as invalid with a polite-but-firm reporter reply. |
The lifecycle skills above route one report. These three maintain the document they route it against — the project's security model — so that routing has something to cite. See security-model-preparation.md for the lifecycle and the rationale.
| Skill | Purpose |
|---|---|
security-model-prepare | Produce a first model for a project that has none, in draft-first mode, and land it with its discoverability chain as one PR per repository. |
security-model-verify | Pre-flight an existing model: can an agent mechanically reach it, and does it cover the minimum bar a triager depends on. Discoverability is the only hard gate. |
security-model-update | Read the decision history back into the model — new known-non-finding entries and a model-gap list, regression-checked against past valid reports. |
The rubric these skills measure against is maintained externally by Alpha-Omega (https://github.com/alpha-omega-security/threat-model) and referenced by URL; Magpie keeps no local copy.
| Skill | Purpose |
|---|---|
security-tracker-stats-dashboard | Generate a self-contained HTML dashboard of <tracker> repo statistics (lifecycle bands, opened-vs-untriaged backlog, mean time to triage / first response / fix). Read-only — never modifies tracker state. |
poc-handling-policy.md — what an agent may do with reporter-supplied proof-of-concept code: static review by default, isolated container only on explicit approval, never on the host.security-model-preparation.md — the produce / verify / update lifecycle for the project's own security model: the external Alpha-Omega rubric, the AGENTS.md → SECURITY.md discoverability chain and why it is the only hard gate, why substantive findings go to the private list rather than a public issue, the provenance tags that make a draft-first model safe, and the fence around the known-non-findings section.process.md — the 16-step lifecycle with Mermaid diagram + per-step description; the label lifecycle state diagram + label reference table. The authoritative process reference.roles.md — who owns which steps (issue triager / remediation developer / release manager), the shared conventions every role observes (keeping the reporter informed, recording status transitions, confidentiality), and the role-by-role workflow walkthroughs.fixing-security-issues.md — hands-on guide for a remediation developer picking up a CVE-allocated tracker and shipping the fix.how-the-security-team-works.md — how the team operates and how a new member lands: the triager rotation that runs the skills and delegates, tracker access, mail list subscription, expected reading, first triage shadow.threat-model.md — release-blocking threat model for the security skill family: trust boundaries, adversary personas, STRIDE matrix per skill, mitigation cross- reference, residual risk, and the re-audit cadence.forwarder-routing-policy.md — when a tracker has no direct reporter contact (ASF-relay, read-only GHSA, anonymous tip), the skills route reporter-facing communication through the forwarder. The policy defines when that mode applies, the milestone list (events that do get relayed), and the negative list (events that don't — including credit-confirmation questions and regular workflow status).docs/prerequisites.md — what a security triager / remediation developer / release manager needs installed before invoking any skill.