blob: 1ee848f1f75830c94028ae843ea1d8bc23048793 [file]
{
"_comment": "GENERATED by scripts/gen-tools.mjs — do not edit by hand. Derives from apache/magpie tools/, spec-loop specs, skills/, docs/, and organizations/.",
"capabilities": {
"triage": "Sweep a queue, classify candidates, propose dispositions for human confirmation.",
"review": "Deep per-item code review of a PR or local diff; also contributor mentoring (single-item teaching intervention).",
"fix": "Implement a code change against an upstream repo to resolve a triaged issue.",
"intake": "Import external signal (mailing list, scan report, public PR) into a tracker entry, or keep an existing entry reconciled with one of those sources.",
"reconciliation": "Compare tracker state against an external inventory (e.g. ASF security dashboard, organization-wide issue registry); surface drift; propose corrections. Does **not** write to either source.",
"resolve": "Close-out actions: invalidate, dedupe, CVE-allocate, post-announcement housekeeping.",
"reassess": "Re-run resolved or end-of-life issues against current code to verify still-fixed / still-broken.",
"stats": "Read-only dashboards, metrics, governance evidence, contributor nomination briefs.",
"platform": "Framework / agent substrate skills: install, verify, update, doctor, override-upstream, status, shared-config-sync, the `setup` bootstrap.",
"authoring": "Skills that author or maintain other skills: `write-skill`, `optimize-skill`."
},
"contracts": {
"tracker": "Issue / board / label backend.",
"source-control": "Branch / commit / diff / push (VCS).",
"change-request": "Proposed-change review + merge gate (pull request / merge request / Gerrit change).",
"mail-archive": "Mailing-list / forum archive reads.",
"mail-source": "Inbound-mail ingestion (mbox / IMAP / …).",
"mail-create": "Outbound mail composition. Always produces an editable draft; sending is a separate human-approved step on that draft (draft mode = default and the only mode implemented today; send mode declared but unimplemented — no autonomous send).",
"cve-authority": "CVE allocation / record management / publication.",
"report-relay": "Inbound security-report relay detection.",
"scan-format": "Security-scanner report parsing.",
"project-metadata": "Governance rosters / people / releases."
},
"substrates": {
"analytics": "Read-only metrics / dashboards / renderers.",
"sandbox": "Agent isolation, egress control, settings audit.",
"action-guard": "Deterministic pre-tool-use command guards.",
"privacy": "PII redaction / approved-LLM gating.",
"framework-dev": "Build / validate / eval the framework itself."
},
"tools": [
{
"name": "agent-guard",
"title": "agent-guard",
"description": "A deterministic pre-execution guard dispatcher. It inspects every shell command rule — protections that must not depend on the model remembering a SKILL.md instruction.",
"labels": [
{
"kind": "substrate",
"name": "action-guard"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "Claude Code, OpenCode, Kiro",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "stable",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/agent-guard"
},
{
"name": "agent-isolation",
"title": "agent-isolation",
"description": "This directory ships the moving pieces the framework's docs/setup/secure-agent-setup.md document references. It is not a Python project (unlike the sibling tools under tools/cve-tool-vulnogram/ and tools/gmail/oauth-draft/) — these are…",
"labels": [
{
"kind": "substrate",
"name": "sandbox"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "stable",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/agent-isolation"
},
{
"name": "apache-projects",
"title": "apache-projects",
"description": "ASF project-metadata substrate. Read-only, unauthenticated client for the official apache/comdev apache-projects-mcp server, which wraps the public projects.apache.org/json feeds (committee / committer rosters, people + Apache IDs,…",
"labels": [
{
"kind": "contract",
"name": "project-metadata"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "ASF",
"harness": null,
"organization": "ASF",
"mcp": {
"server": "apache-projects — apache/comdev",
"prefix": "mcp__apache-projects__*"
},
"hasCode": false,
"maturity": "experimental",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/apache-projects"
},
{
"name": "asf-svn",
"title": "asf-svn",
"description": "ASF SVN tool adapter — the Subversion counterpart to tools/github/. Where the GitHub tool covers forge issues, project boards, and Git-backed source control, this adapter covers the SVN surfaces that every ASF project uses regardless of…",
"labels": [
{
"kind": "contract",
"name": "source-control"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "Subversion",
"harness": null,
"organization": "ASF",
"mcp": null,
"hasCode": false,
"maturity": "experimental",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/asf-svn"
},
{
"name": "bitbucket",
"title": "Bitbucket forge bridge",
"description": "Bitbucket Cloud and Bitbucket Data Center bridge for Magpie adopters that use Bitbucket as a forge, pull-request review surface, or Jira-paired Atlassian backend.",
"labels": [
{
"kind": "contract",
"name": "change-request"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "Atlassian",
"harness": null,
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "experimental",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/bitbucket"
},
{
"name": "change-request",
"title": "change-request",
"description": "The framework's change-proposal adapter contract: the seam that lets a project drive PR-shaped review-and-merge work over a backend that is *not* a GitHub pull request. Today every pr-management-* skill is hardwired to gh pr — gh pr…",
"labels": [
{
"kind": "contract",
"name": "change-request"
}
],
"kind": "contract",
"vendorKind": "interface",
"vendor": "agnostic",
"harness": null,
"organization": null,
"mcp": null,
"hasCode": false,
"maturity": "experimental",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/change-request"
},
{
"name": "cve-org",
"title": "cve-org",
"description": "CVE.org publication client. Submits CVE records via the CVE.org REST API; consumed by security-cve-allocate once a CVE has been allocated via the ASF Vulnogram path. See tool.md for the protocol detail and cve.org field mapping.",
"labels": [
{
"kind": "contract",
"name": "cve-authority"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "CVE.org",
"harness": null,
"organization": null,
"mcp": null,
"hasCode": false,
"maturity": "stable",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/cve-org"
},
{
"name": "cve-tool",
"title": "cve-tool",
"description": "The framework's CVE-tooling adapter contract. Today every CVE-aware skill in this repository — security-cve-allocate, security-issue-sync, security-issue-invalidate, security-issue-deduplicate — speaks Vulnogram. They embed Vulnogram's…",
"labels": [
{
"kind": "contract",
"name": "cve-authority"
}
],
"kind": "contract",
"vendorKind": "interface",
"vendor": "agnostic",
"harness": null,
"organization": null,
"mcp": null,
"hasCode": false,
"maturity": null,
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/cve-tool"
},
{
"name": "cve-tool-vulnogram",
"title": "cve-tool-vulnogram",
"description": "ASF Vulnogram CVE-allocation client. OAuth-authenticated API that allocates a CVE ID through the ASF's Vulnogram instance and publishes the CVE record. Consumed by security-cve-allocate. See allocation.md, record.md, and…",
"labels": [
{
"kind": "contract",
"name": "cve-authority"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "Vulnogram",
"harness": null,
"organization": "ASF",
"mcp": null,
"hasCode": false,
"maturity": "stable",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/cve-tool-vulnogram"
},
{
"name": "dashboard-generator",
"title": "Dashboard generator",
"description": "Deterministic reference implementations of the dashboard that issue-reassess-stats produces. Adopters who want CI-rendered dashboards (refreshed on schedule, published as a build artefact) use one of these reference scripts instead of…",
"labels": [
{
"kind": "substrate",
"name": "analytics"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": false,
"maturity": "stable",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/dashboard-generator"
},
{
"name": "dev",
"title": "dev",
"description": "Framework dev-loop helpers (placeholder check, agent pre-commit hook). Invoked by prek and CI; not consumed by any skill directly. See the individual scripts in this directory for usage.",
"labels": [
{
"kind": "substrate",
"name": "framework-dev"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": false,
"maturity": "experimental",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/dev"
},
{
"name": "egress-gateway",
"title": "egress-gateway",
"description": "A local host-allowlisting HTTP(S) forward proxy for the Magpie framework. It is the egress-control chokepoint: framework tools point HTTPS_PROXY/HTTP_PROXY at it, and the gateway rejects any connection to a host that is not on its…",
"labels": [
{
"kind": "substrate",
"name": "sandbox"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "stable",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/egress-gateway"
},
{
"name": "forwarder-relay",
"title": "forwarder-relay",
"description": "A forwarder-relay adapter is a pluggable seam that teaches the security skills how to recognise an inbound report that arrived reporter's message to the project), how to extract the original-reporter credit from the relayed body, and…",
"labels": [
{
"kind": "contract",
"name": "report-relay"
}
],
"kind": "contract",
"vendorKind": "interface",
"vendor": "agnostic",
"harness": null,
"organization": null,
"mcp": null,
"hasCode": false,
"maturity": "stable",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/forwarder-relay"
},
{
"name": "fossil",
"title": "Fossil Forge Bridge",
"description": "Fossil SCM forge and tracker bridge implementation for the Apache Magpie framework. It integrates version-control checks, ticket tracking, wiki reads, and forum thread reads.",
"labels": [
{
"kind": "contract",
"name": "tracker"
},
{
"kind": "contract",
"name": "source-control"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "Fossil",
"harness": null,
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": null,
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/fossil"
},
{
"name": "github",
"title": "github",
"description": "GitHub REST + GraphQL substrate. Pure read/write wrapper used by every lifecycle phase (triage / intake / fix / resolve / stats). See tool.md for the operation catalogue and the per-area files (issue-template.md, labels.md,…",
"labels": [
{
"kind": "contract",
"name": "tracker"
},
{
"kind": "contract",
"name": "source-control"
},
{
"kind": "contract",
"name": "change-request"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "GitHub",
"harness": null,
"organization": null,
"mcp": {
"server": "GitHub MCP",
"prefix": "mcp__github__*"
},
"hasCode": false,
"maturity": "experimental",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/github"
},
{
"name": "github-body-field",
"title": "github-body-field",
"description": "Read or rewrite a single ### Field section of a GitHub issue body without bringing the body into agent context.",
"labels": [
{
"kind": "contract",
"name": "tracker"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "GitHub",
"harness": null,
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "experimental",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/github-body-field"
},
{
"name": "github-rollup",
"title": "github-rollup",
"description": "Append to (or create) the status-rollup comment on a GitHub issue without bringing the rollup body into agent context.",
"labels": [
{
"kind": "contract",
"name": "tracker"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "GitHub",
"harness": null,
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "experimental",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/github-rollup"
},
{
"name": "gmail",
"title": "gmail",
"description": "Gmail API substrate. Read + draft-only — never sends. Provides two contracts: mail-source for inbound report intake (search / read a uniform thread/message view) and mail-create for outbound courtesy-reply composition. It implements…",
"labels": [
{
"kind": "contract",
"name": "mail-source"
},
{
"kind": "contract",
"name": "mail-create"
},
{
"kind": "contract",
"name": "mail-archive"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "Google",
"harness": null,
"organization": null,
"mcp": {
"server": "Gmail — claude.ai",
"prefix": "mcp__claude_ai_Gmail__*"
},
"hasCode": false,
"maturity": "stable",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/gmail"
},
{
"name": "jira",
"title": "JIRA bridge",
"description": "JIRA REST helpers for the issue-* skill family. Adopters with JIRA-based issue trackers wire this in as their tracker bridge; adopters using GitHub Issues or other trackers contribute a parallel tools/<tracker>/ directory.",
"labels": [
{
"kind": "contract",
"name": "tracker"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "Atlassian",
"harness": null,
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "experimental",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/jira"
},
{
"name": "jira-patch",
"title": "jira-patch",
"description": "JIRA-patch change-request adapter — the backend that lets a JIRA-tracker, SVN-hosted project drive the pr-management-* skills over patches attached to JIRA issues instead of GitHub pull requests. It implements the tools/change-request/…",
"labels": [
{
"kind": "contract",
"name": "change-request"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "Atlassian",
"harness": null,
"organization": "ASF",
"mcp": null,
"hasCode": false,
"maturity": "experimental",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/jira-patch"
},
{
"name": "mail-archive",
"title": "mail-archive",
"description": "This file defines the adapter contract for public mail-archive backends — the seam that lets adopting projects plug a non-ASF archive system (Hyperkitty, Discourse, Google Groups, GitHub Discussions, or none at all) into the same skills…",
"labels": [
{
"kind": "contract",
"name": "mail-archive"
}
],
"kind": "contract",
"vendorKind": "interface",
"vendor": "agnostic",
"harness": null,
"organization": null,
"mcp": null,
"hasCode": false,
"maturity": "experimental",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/mail-archive"
},
{
"name": "mail-patch",
"title": "mail-patch",
"description": "[PATCH]-mail change-request adapter — the backend that lets a project driving code review over its developer mailing list use the pr-management-* skills. It implements the tools/change-request/ contract for the oldest review mechanism…",
"labels": [
{
"kind": "contract",
"name": "change-request"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "email",
"harness": null,
"organization": "ASF",
"mcp": null,
"hasCode": false,
"maturity": "experimental",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/mail-patch"
},
{
"name": "mail-source",
"title": "mail-source",
"description": "Mail-source backend abstraction. Pluggable backends (mbox, IMAP, the Gmail API via tools/gmail, future Mailman 3 / Hyperkitty) that feed the security-issue-import intake pipeline a uniform thread/message view. See contract.md for the…",
"labels": [
{
"kind": "contract",
"name": "mail-source"
}
],
"kind": "contract",
"vendorKind": "interface",
"vendor": "agnostic",
"harness": null,
"organization": null,
"mcp": null,
"hasCode": false,
"maturity": "experimental",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/mail-source"
},
{
"name": "maildir",
"title": "maildir",
"description": "The local-files mail backend: one vendor-neutral substrate that serves both mail directions the framework needs, using nothing but the on-disk Maildir / mbox formats and the Python standard library. No cloud provider, no account, no…",
"labels": [
{
"kind": "contract",
"name": "mail-source"
},
{
"kind": "contract",
"name": "mail-create"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "Maildir",
"harness": null,
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "experimental",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/maildir"
},
{
"name": "permission-audit",
"title": "permission-audit",
"description": "Audit + atomically edit Claude Code's permissions.allow[] entries in <repo>/.claude/settings.json and <repo>/.claude/settings.local.json.",
"labels": [
{
"kind": "substrate",
"name": "sandbox"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "Claude Code, OpenCode, Kiro",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "stable",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/permission-audit"
},
{
"name": "pilot-report-validator",
"title": "pilot-report-validator",
"description": "Validates adopter pilot-report files against the required schema defined in docs/pilot-report-template.md. Pilot reports are the feedback artefact that documents an adopter's end-to-end run of an experimental skill family, and are the…",
"labels": [
{
"kind": "substrate",
"name": "framework-dev"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "stable",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/pilot-report-validator"
},
{
"name": "ponymail",
"title": "ponymail",
"description": "PonyMail archive substrate. Read-only ASF mailing-list archive client; complements gmail for threads not present in the inbox. Used by security-issue-import + sync to cross-reference public mailing-list discussions. See tool.md for the…",
"labels": [
{
"kind": "contract",
"name": "mail-archive"
},
{
"kind": "contract",
"name": "mail-source"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "ASF",
"harness": null,
"organization": "ASF",
"mcp": {
"server": "PonyMail — apache/comdev",
"prefix": "mcp__ponymail__*"
},
"hasCode": false,
"maturity": "stable",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/ponymail"
},
{
"name": "pr-management-stats",
"title": "pr-management-stats reference implementation",
"description": "Deterministic reference implementation of the data-fetch + classification contract that backs the pr-management-stats skill.",
"labels": [
{
"kind": "substrate",
"name": "analytics"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": false,
"maturity": "experimental",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/pr-management-stats"
},
{
"name": "preflight-audit",
"title": "preflight-audit",
"description": "Dry-run the bulk-mode pre-flight classifier against a real or replayed tracker. Use to measure skip-rate before / after any rule change — closes the tune-then-verify loop so rule edits are made against evidence, not guesswork.",
"labels": [
{
"kind": "substrate",
"name": "analytics"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "stable",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/preflight-audit"
},
{
"name": "privacy-llm",
"title": "privacy-llm",
"description": "Privacy-LLM PII-scrubbing gate. Standalone redactor / checker pair that screens content for PII before it reaches an external LLM. See tool.md and wiring.md for integration details, models.md for the model catalogue, and pii.md for the…",
"labels": [
{
"kind": "substrate",
"name": "privacy"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": false,
"maturity": "stable",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/privacy-llm"
},
{
"name": "probe-templates",
"title": "Probe templates",
"description": "Runnable cross-family probe scripts that the issue-reproducer skill copies from when its Step 9 (optional cross-family probe) runs against an issue.",
"labels": [
{
"kind": "substrate",
"name": "sandbox"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": false,
"maturity": "stable",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/probe-templates"
},
{
"name": "sandbox-lint",
"title": "sandbox-lint",
"description": "Lints .claude/settings.json against the shipped baseline at tools/sandbox-lint/expected.json, and against the security invariants documented in docs/security/threat-model.md (mitigation M.29). The threat-model document lands in a…",
"labels": [
{
"kind": "substrate",
"name": "sandbox"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "Claude Code, OpenCode, Kiro",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "stable",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/sandbox-lint"
},
{
"name": "scan-format",
"title": "scan-format",
"description": "A scan-format adapter teaches security-issue-import-from-scan how to read one security scanner's report layout. The skill is scanner-agnostic; everything format-specific — how to recognise a scan folder, how to enumerate findings, how…",
"labels": [
{
"kind": "contract",
"name": "scan-format"
}
],
"kind": "contract",
"vendorKind": "interface",
"vendor": "agnostic",
"harness": null,
"organization": null,
"mcp": null,
"hasCode": false,
"maturity": "stable",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/scan-format"
},
{
"name": "security-tracker-stats-dashboard",
"title": "security-tracker-stats-dashboard",
"description": "Generate a self-contained HTML dashboard of <tracker> repository statistics — issue-lifecycle bands (untriaged / triaged / PR-merged / fixed-released / closed-other), opened-vs-untriaged backlog, cumulative opened/closed, and…",
"labels": [
{
"kind": "substrate",
"name": "analytics"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "experimental",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/security-tracker-stats-dashboard"
},
{
"name": "skill-and-tool-validator",
"title": "skill-and-tool-validator",
"description": "Validate framework skill definitions — YAML frontmatter, internal link integrity, and placeholder conventions.",
"labels": [
{
"kind": "substrate",
"name": "framework-dev"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "stable",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/skill-and-tool-validator"
},
{
"name": "skill-evals",
"title": "skill-evals",
"description": "Behavioral eval harness for Apache Magpie skills. Each eval suite tests a skill pipeline step by step, verifying that the model produces the correct structured JSON output for a fixed set of fixture cases.",
"labels": [
{
"kind": "substrate",
"name": "framework-dev"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "stable",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/skill-evals"
},
{
"name": "skill-reconciler-diff",
"title": "skill-reconciler-diff",
"description": "A deterministic uv tool that parses two SKILL.md skill trees into normalised structural representations and emits a JSON diff. The output grounds the skill-reconciler skill's ALLOWED / DRIFT / SAFETY-BASELINE classification decisions in…",
"labels": [
{
"kind": "substrate",
"name": "framework-dev"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "experimental",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/skill-reconciler-diff"
},
{
"name": "sourcehut",
"title": "SourceHut (sr.ht) Forge Bridge",
"description": "SourceHut (sr.ht) forge bridge implementation for the Apache Magpie framework. It integrates ticket tracking (todo.sr.ht), mailing list patchset review (lists.sr.ht), CI builds (builds.sr.ht), and repository reads (git.sr.ht & hg.sr.ht)…",
"labels": [
{
"kind": "contract",
"name": "tracker"
},
{
"kind": "contract",
"name": "source-control"
},
{
"kind": "contract",
"name": "mail-archive"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "SourceHut",
"harness": null,
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "experimental",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/sourcehut"
},
{
"name": "spec-inventory",
"title": "spec-inventory",
"description": "A deterministic uv tool that emits a compact routing inventory for the spec-loop prompts. It summarizes spec frontmatter, where-it-lives hints, validation commands, known gaps, skill frontmatter, and tool/test presence so agents can…",
"labels": [
{
"kind": "substrate",
"name": "framework-dev"
},
{
"kind": "substrate",
"name": "analytics"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "stable",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/spec-inventory"
},
{
"name": "spec-loop",
"title": "spec-loop",
"description": "A spec-driven build loop for this framework, in the general Ralph style (run a fresh agent context against a fixed prompt, repeat), adapted to the framework's human-in-the-loop posture. The full write-up is in…",
"labels": [
{
"kind": "substrate",
"name": "framework-dev"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "Claude Code, Codex, Cursor, Gemini CLI, OpenCode, Kiro",
"organization": null,
"mcp": null,
"hasCode": false,
"maturity": "stable",
"state": "adapter",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/spec-loop"
},
{
"name": "spec-status-index",
"title": "spec-status-index",
"description": "A deterministic uv tool that reads spec-loop specs from tools/spec-loop/specs/ and prints them grouped by status, so build iterations can choose the next work item mechanically.",
"labels": [
{
"kind": "substrate",
"name": "framework-dev"
},
{
"kind": "substrate",
"name": "analytics"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "stable",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/spec-status-index"
},
{
"name": "spec-validator",
"title": "spec-validator",
"description": "Validates spec files in tools/spec-loop/specs/ — the counterpart to tools/skill-and-tool-validator/ for the spec side of the framework.",
"labels": [
{
"kind": "substrate",
"name": "framework-dev"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "stable",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/spec-validator"
},
{
"name": "symlink-lint",
"title": "symlink-lint",
"description": "Lints the framework's self-adoption skill symlinks — the canonical .agents/skills/ links and their relays — against two invariants. This is the single place the rationale lives; the module, the prek hook, and the error output all point…",
"labels": [
{
"kind": "substrate",
"name": "framework-dev"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "stable",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/symlink-lint"
},
{
"name": "vcs",
"title": "magpie-vcs",
"description": "Runnable implementation of the source-control (VCS) capability documented in tools/github/source-control.md. It extracts the abstraction the dev-loop skills assume — branch, stage, commit, diff, log, fetch, push, working-tree reset —…",
"labels": [
{
"kind": "contract",
"name": "source-control"
}
],
"kind": "contract",
"vendorKind": "implementation",
"vendor": "Git",
"harness": null,
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "experimental",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/vcs"
},
{
"name": "vendor-neutrality-score",
"title": "vendor-neutrality-score",
"description": "A deterministic uv tool that scores Magpie's vendor neutrality from repository metadata alone — no network, no judgement at runtime. It answers the question raised in apache/magpie-site#17: *for each capability contract, does Magpie…",
"labels": [
{
"kind": "substrate",
"name": "framework-dev"
},
{
"kind": "substrate",
"name": "analytics"
}
],
"kind": "substrate",
"vendorKind": null,
"vendor": null,
"harness": "agnostic",
"organization": null,
"mcp": null,
"hasCode": true,
"maturity": "stable",
"state": "implemented",
"docUrl": "https://github.com/apache/magpie/tree/main/tools/vendor-neutrality-score"
}
],
"toolsTotal": 45,
"implementedTotal": 24,
"contractsTotal": 23,
"substratesTotal": 22,
"mcpTotal": 4,
"organizations": [
{
"id": "ASF",
"name": "Apache Software Foundation",
"url": "https://www.apache.org/",
"logo": "https://www.apache.org/foundation/press/kit/asf_logo.svg",
"tools": [
"apache-projects",
"asf-svn",
"cve-tool-vulnogram",
"jira-patch",
"mail-patch",
"ponymail"
],
"families": [
"contributor-growth",
"release-management"
]
},
{
"id": "independent",
"name": "Independent (no formal organization)",
"url": null,
"logo": null,
"tools": [],
"families": []
}
],
"orgFamilies": {
"contributor-growth": "ASF",
"release-management": "ASF"
},
"asfFamilies": [
"contributor-growth",
"release-management"
],
"vendorNeutrality": {
"minVendors": 2,
"overall": {
"green": 10,
"total": 10,
"percent": 100
},
"contracts": [
{
"contract": "contract:tracker",
"class": "vendor-backed",
"green": true,
"basis": "4 backend vendors: Atlassian, Fossil, GitHub, SourceHut",
"vendors": [
"Atlassian",
"Fossil",
"GitHub",
"SourceHut"
],
"interfaces": [],
"implementations": [
{
"tool": "jira",
"vendor": "Atlassian"
},
{
"tool": "fossil",
"vendor": "Fossil"
},
{
"tool": "github",
"vendor": "GitHub"
},
{
"tool": "github-body-field",
"vendor": "GitHub"
},
{
"tool": "github-rollup",
"vendor": "GitHub"
},
{
"tool": "sourcehut",
"vendor": "SourceHut"
}
]
},
{
"contract": "contract:source-control",
"class": "vendor-backed",
"green": true,
"basis": "5 backend vendors: Fossil, Git, GitHub, SourceHut, Subversion",
"vendors": [
"Fossil",
"Git",
"GitHub",
"SourceHut",
"Subversion"
],
"interfaces": [],
"implementations": [
{
"tool": "fossil",
"vendor": "Fossil"
},
{
"tool": "vcs",
"vendor": "Git"
},
{
"tool": "github",
"vendor": "GitHub"
},
{
"tool": "sourcehut",
"vendor": "SourceHut"
},
{
"tool": "asf-svn",
"vendor": "Subversion"
}
]
},
{
"contract": "contract:change-request",
"class": "vendor-backed",
"green": true,
"basis": "3 backend vendors: Atlassian, GitHub, email",
"vendors": [
"Atlassian",
"GitHub",
"email"
],
"interfaces": [
"change-request"
],
"implementations": [
{
"tool": "bitbucket",
"vendor": "Atlassian"
},
{
"tool": "jira-patch",
"vendor": "Atlassian"
},
{
"tool": "mail-patch",
"vendor": "email"
},
{
"tool": "github",
"vendor": "GitHub"
}
]
},
{
"contract": "contract:mail-archive",
"class": "vendor-backed",
"green": true,
"basis": "3 backend vendors: ASF, Google, SourceHut",
"vendors": [
"ASF",
"Google",
"SourceHut"
],
"interfaces": [
"mail-archive"
],
"implementations": [
{
"tool": "ponymail",
"vendor": "ASF"
},
{
"tool": "gmail",
"vendor": "Google"
},
{
"tool": "sourcehut",
"vendor": "SourceHut"
}
]
},
{
"contract": "contract:mail-source",
"class": "vendor-backed",
"green": true,
"basis": "3 backend vendors: ASF, Google, Maildir",
"vendors": [
"ASF",
"Google",
"Maildir"
],
"interfaces": [
"mail-source"
],
"implementations": [
{
"tool": "ponymail",
"vendor": "ASF"
},
{
"tool": "gmail",
"vendor": "Google"
},
{
"tool": "maildir",
"vendor": "Maildir"
}
]
},
{
"contract": "contract:mail-create",
"class": "vendor-backed",
"green": true,
"basis": "2 backend vendors: Google, Maildir",
"vendors": [
"Google",
"Maildir"
],
"interfaces": [],
"implementations": [
{
"tool": "gmail",
"vendor": "Google"
},
{
"tool": "maildir",
"vendor": "Maildir"
}
]
},
{
"contract": "contract:cve-authority",
"class": "vendor-backed",
"green": true,
"basis": "2 backend vendors: CVE.org, Vulnogram",
"vendors": [
"CVE.org",
"Vulnogram"
],
"interfaces": [
"cve-tool"
],
"implementations": [
{
"tool": "cve-org",
"vendor": "CVE.org"
},
{
"tool": "cve-tool-vulnogram",
"vendor": "Vulnogram"
}
]
},
{
"contract": "contract:report-relay",
"class": "agnostic",
"green": true,
"basis": "vendor-neutral by construction — one spec serves every backend",
"vendors": [],
"interfaces": [
"forwarder-relay"
],
"implementations": []
},
{
"contract": "contract:scan-format",
"class": "agnostic",
"green": true,
"basis": "vendor-neutral by construction — one spec serves every backend",
"vendors": [],
"interfaces": [
"scan-format"
],
"implementations": []
},
{
"contract": "contract:project-metadata",
"class": "single-org",
"green": true,
"basis": "single-organisation capability (ASF); no vendor choice to make",
"vendors": [
"ASF"
],
"interfaces": [],
"implementations": [
{
"tool": "apache-projects",
"vendor": "ASF"
}
]
}
],
"harness": {
"neutral": 22,
"total": 22,
"percent": 100,
"tools": [
{
"tool": "agent-guard",
"substrates": [
"substrate:action-guard"
],
"harnesses": [
"Claude Code",
"Kiro",
"OpenCode"
],
"verdict": "portable"
},
{
"tool": "agent-isolation",
"substrates": [
"substrate:sandbox"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "dashboard-generator",
"substrates": [
"substrate:analytics"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "dev",
"substrates": [
"substrate:framework-dev"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "egress-gateway",
"substrates": [
"substrate:sandbox"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "permission-audit",
"substrates": [
"substrate:sandbox"
],
"harnesses": [
"Claude Code",
"Kiro",
"OpenCode"
],
"verdict": "portable"
},
{
"tool": "pilot-report-validator",
"substrates": [
"substrate:framework-dev"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "pr-management-stats",
"substrates": [
"substrate:analytics"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "preflight-audit",
"substrates": [
"substrate:analytics"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "privacy-llm",
"substrates": [
"substrate:privacy"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "probe-templates",
"substrates": [
"substrate:sandbox"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "sandbox-lint",
"substrates": [
"substrate:sandbox"
],
"harnesses": [
"Claude Code",
"Kiro",
"OpenCode"
],
"verdict": "portable"
},
{
"tool": "security-tracker-stats-dashboard",
"substrates": [
"substrate:analytics"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "skill-and-tool-validator",
"substrates": [
"substrate:framework-dev"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "skill-evals",
"substrates": [
"substrate:framework-dev"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "skill-reconciler-diff",
"substrates": [
"substrate:framework-dev"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "spec-inventory",
"substrates": [
"substrate:framework-dev",
"substrate:analytics"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "spec-loop",
"substrates": [
"substrate:framework-dev"
],
"harnesses": [
"Claude Code",
"Codex",
"Cursor",
"Gemini CLI",
"Kiro",
"OpenCode"
],
"verdict": "portable"
},
{
"tool": "spec-status-index",
"substrates": [
"substrate:framework-dev",
"substrate:analytics"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "spec-validator",
"substrates": [
"substrate:framework-dev"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "symlink-lint",
"substrates": [
"substrate:framework-dev"
],
"harnesses": [],
"verdict": "agnostic"
},
{
"tool": "vendor-neutrality-score",
"substrates": [
"substrate:framework-dev",
"substrate:analytics"
],
"harnesses": [],
"verdict": "agnostic"
}
],
"matrix": {
"Claude Code": [
"agent-guard",
"permission-audit",
"sandbox-lint",
"spec-loop"
],
"Kiro": [
"agent-guard",
"permission-audit",
"sandbox-lint",
"spec-loop"
],
"OpenCode": [
"agent-guard",
"permission-audit",
"sandbox-lint",
"spec-loop"
],
"agnostic": [
"agent-isolation",
"dashboard-generator",
"dev",
"egress-gateway",
"pilot-report-validator",
"pr-management-stats",
"preflight-audit",
"privacy-llm",
"probe-templates",
"security-tracker-stats-dashboard",
"skill-and-tool-validator",
"skill-evals",
"skill-reconciler-diff",
"spec-inventory",
"spec-status-index",
"spec-validator",
"symlink-lint",
"vendor-neutrality-score"
],
"Codex": [
"spec-loop"
],
"Cursor": [
"spec-loop"
],
"Gemini CLI": [
"spec-loop"
]
}
},
"llm": {
"defaultApproved": [
{
"class": "Claude Code itself",
"examples": "The agent invoking the skill"
},
{
"class": "*.apache.org-hosted endpoints",
"examples": "A future ASF-hosted inference endpoint at e.g. `inference.apache.org`; an in-tracker endpoint at `<project>.apache.org/llm/`"
},
{
"class": "Local-only inference",
"examples": "Ollama serving a local model, vLLM on the user's workstation, llama.cpp embedded in a CLI helper"
},
{
"class": "Air-gapped on-prem",
"examples": "A PMC-hosted inference appliance on a private VLAN"
}
],
"optIn": "adopter-declared in <project-config>/privacy-llm.md (no fixed list)"
},
"skills": {
"total": 70,
"neutral": 70,
"byVerdict": {
"capability-pure": 11,
"portable": 59,
"vendor-coupled": 0
},
"byOrg": {
"agnostic": 56,
"ASF": 14
},
"coupled": [],
"list": [
{
"skill": "audit-finding-fix",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request",
"contract:source-control"
],
"coupled": []
},
{
"skill": "ci-runner-audit",
"verdict": "capability-pure",
"organization": "agnostic",
"contractsUsed": [],
"coupled": []
},
{
"skill": "committer-onboarding",
"verdict": "portable",
"organization": "ASF",
"contractsUsed": [
"contract:change-request",
"contract:tracker"
],
"coupled": []
},
{
"skill": "contributor-activity-sweep",
"verdict": "portable",
"organization": "ASF",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "contributor-nomination",
"verdict": "portable",
"organization": "ASF",
"contractsUsed": [
"contract:project-metadata",
"contract:tracker"
],
"coupled": []
},
{
"skill": "contributor-sentiment",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "contributor-to-committer",
"verdict": "portable",
"organization": "ASF",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "dependency-audit",
"verdict": "capability-pure",
"organization": "agnostic",
"contractsUsed": [],
"coupled": []
},
{
"skill": "dependency-license-audit",
"verdict": "capability-pure",
"organization": "agnostic",
"contractsUsed": [],
"coupled": []
},
{
"skill": "flaky-test-triage",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "good-first-issue-author",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "good-first-issue-sweep",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "issue-backlog-stats",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "issue-deduplicate",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "issue-fix-workflow",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request",
"contract:source-control",
"contract:tracker"
],
"coupled": []
},
{
"skill": "issue-reassess",
"verdict": "capability-pure",
"organization": "agnostic",
"contractsUsed": [],
"coupled": []
},
{
"skill": "issue-reassess-stats",
"verdict": "capability-pure",
"organization": "agnostic",
"contractsUsed": [],
"coupled": []
},
{
"skill": "issue-reproducer",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "issue-stale-sweep",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "issue-triage",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "license-compliance-audit",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "list-skills",
"verdict": "capability-pure",
"organization": "agnostic",
"contractsUsed": [],
"coupled": []
},
{
"skill": "mentoring-welcome",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request",
"contract:tracker"
],
"coupled": []
},
{
"skill": "newcomer-issue-explainer",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "onboarding-concierge",
"verdict": "capability-pure",
"organization": "agnostic",
"contractsUsed": [],
"coupled": []
},
{
"skill": "optimize-skill",
"verdict": "capability-pure",
"organization": "agnostic",
"contractsUsed": [],
"coupled": []
},
{
"skill": "pairing-multi-agent-review",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:source-control"
],
"coupled": []
},
{
"skill": "pairing-self-review",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:source-control"
],
"coupled": []
},
{
"skill": "pr-management-code-review",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request"
],
"coupled": []
},
{
"skill": "pr-management-mentor",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request",
"contract:tracker"
],
"coupled": []
},
{
"skill": "pr-management-quick-merge",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request"
],
"coupled": []
},
{
"skill": "pr-management-stats",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request"
],
"coupled": []
},
{
"skill": "pr-management-triage",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request",
"contract:tracker"
],
"coupled": []
},
{
"skill": "pr-stale-sweep",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request"
],
"coupled": []
},
{
"skill": "pre-first-pr-check",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:source-control"
],
"coupled": []
},
{
"skill": "release-announce-draft",
"verdict": "portable",
"organization": "ASF",
"contractsUsed": [
"contract:change-request"
],
"coupled": []
},
{
"skill": "release-archive-sweep",
"verdict": "portable",
"organization": "ASF",
"contractsUsed": [
"contract:source-control",
"contract:tracker"
],
"coupled": []
},
{
"skill": "release-audit-report",
"verdict": "portable",
"organization": "ASF",
"contractsUsed": [
"contract:change-request"
],
"coupled": []
},
{
"skill": "release-keys-sync",
"verdict": "portable",
"organization": "ASF",
"contractsUsed": [
"contract:source-control"
],
"coupled": []
},
{
"skill": "release-prepare",
"verdict": "portable",
"organization": "ASF",
"contractsUsed": [
"contract:change-request",
"contract:tracker"
],
"coupled": []
},
{
"skill": "release-promote",
"verdict": "portable",
"organization": "ASF",
"contractsUsed": [
"contract:source-control",
"contract:tracker"
],
"coupled": []
},
{
"skill": "release-rc-cut",
"verdict": "portable",
"organization": "ASF",
"contractsUsed": [
"contract:source-control",
"contract:tracker"
],
"coupled": []
},
{
"skill": "release-verify-rc",
"verdict": "capability-pure",
"organization": "ASF",
"contractsUsed": [],
"coupled": []
},
{
"skill": "release-vote-draft",
"verdict": "portable",
"organization": "ASF",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "release-vote-tally",
"verdict": "portable",
"organization": "ASF",
"contractsUsed": [
"contract:change-request",
"contract:tracker"
],
"coupled": []
},
{
"skill": "reviewer-routing",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request",
"contract:tracker"
],
"coupled": []
},
{
"skill": "security-cve-allocate",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:cve-authority",
"contract:mail-archive",
"contract:tracker"
],
"coupled": []
},
{
"skill": "security-issue-deduplicate",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:cve-authority",
"contract:tracker"
],
"coupled": []
},
{
"skill": "security-issue-fix",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request",
"contract:source-control",
"contract:tracker"
],
"coupled": []
},
{
"skill": "security-issue-import",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:mail-archive",
"contract:mail-create",
"contract:tracker"
],
"coupled": []
},
{
"skill": "security-issue-import-from-md",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "security-issue-import-from-pr",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request",
"contract:tracker"
],
"coupled": []
},
{
"skill": "security-issue-import-from-scan",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request",
"contract:tracker"
],
"coupled": []
},
{
"skill": "security-issue-import-via-forwarder",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:mail-create"
],
"coupled": []
},
{
"skill": "security-issue-invalidate",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:cve-authority",
"contract:mail-archive",
"contract:mail-create",
"contract:tracker"
],
"coupled": []
},
{
"skill": "security-issue-sync",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:cve-authority",
"contract:mail-archive",
"contract:mail-create",
"contract:tracker"
],
"coupled": []
},
{
"skill": "security-issue-triage",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request",
"contract:mail-archive",
"contract:tracker"
],
"coupled": []
},
{
"skill": "security-tracker-stats-dashboard",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "setup",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:source-control"
],
"coupled": []
},
{
"skill": "setup-isolated-setup-doctor",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:source-control"
],
"coupled": []
},
{
"skill": "setup-isolated-setup-install",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:source-control"
],
"coupled": []
},
{
"skill": "setup-isolated-setup-update",
"verdict": "capability-pure",
"organization": "agnostic",
"contractsUsed": [],
"coupled": []
},
{
"skill": "setup-isolated-setup-verify",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:source-control"
],
"coupled": []
},
{
"skill": "setup-override-upstream",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request",
"contract:source-control"
],
"coupled": []
},
{
"skill": "setup-shared-config-sync",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:source-control",
"contract:tracker"
],
"coupled": []
},
{
"skill": "setup-status",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:source-control"
],
"coupled": []
},
{
"skill": "setup-upstream-fix",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:change-request",
"contract:source-control",
"contract:tracker"
],
"coupled": []
},
{
"skill": "skill-reconciler",
"verdict": "capability-pure",
"organization": "agnostic",
"contractsUsed": [],
"coupled": []
},
{
"skill": "workflow-security-audit",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
},
{
"skill": "write-skill",
"verdict": "portable",
"organization": "agnostic",
"contractsUsed": [
"contract:tracker"
],
"coupled": []
}
]
}
},
"skills": {
"total": 70,
"apacheLicensed": 70,
"allApache": true,
"license": "Apache-2.0",
"byOrg": {
"ASF": 14
}
}
}