Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
d9c6681
feat(marketplace): distribute Magpie 0.2.0 via agent plugin marketplaces
potiuk Jul 19, 2026
36f078d
feat(marketplace): auto-detect plugin updates and prompt for upgrade
potiuk Jul 19, 2026
1ecaade
feat(marketplace): prompt Codex and Gemini users to run upgrade
potiuk Jul 19, 2026
ebcfce1
docs(readme): fold #901 README simplification; lead with install (ado…
potiuk Jul 19, 2026
ed07163
docs(readme): project adopts Magpie; installation is the mechanism
potiuk Jul 19, 2026
d7cd56a
docs(readme): explain adopt (relationship) vs install (process) in th…
potiuk Jul 19, 2026
879add4
docs(marketplaces): detailed per-agent install steps from the GitHub …
potiuk Jul 19, 2026
86846f6
feat(marketplace): split into per-family plugins to cut always-on tok…
potiuk Jul 19, 2026
5c76715
build(prek): add check-family-plugins hook; document Windows symlink …
potiuk Jul 19, 2026
8ea6df9
docs(marketplaces): explain all-in-one vs per-family install trade-offs
potiuk Jul 19, 2026
a8ca2fd
docs(marketplaces): flag marketplace support as experimental; point t…
potiuk Jul 19, 2026
f71c94b
docs(marketplaces): explain skill-name differences across install met…
potiuk Jul 19, 2026
5be6e34
fix(security): close files in check-family-plugins; use pathlib
potiuk Jul 19, 2026
51bbfb2
build(prek): validate all plugin manifests, not just family symlinks
potiuk Jul 19, 2026
28062dc
fix(marketplace): give family plugins version + author metadata
potiuk Jul 29, 2026
657382f
fix(marketplace): mirror pyproject's dev version in every manifest
potiuk Jul 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"name": "apache-magpie",
"interface": { "displayName": "Apache Magpie" },
"plugins": [
{
"name": "magpie",
"source": { "source": "local", "path": "." },
"category": "maintenance",
"policy": { "installation": "manual", "authentication": "none" }
}
]
}
76 changes: 76 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
{
"name": "apache-magpie",
"owner": {
"name": "Apache Magpie",
"url": "https://magpie.apache.org/"
},
"description": "Apache Magpie agentic skills for maintaining open-source projects. Install the all-in-one `magpie` plugin, or per-family plugins to load only what you use.",
"plugins": [
{
"name": "magpie",
"source": ".",
"version": "0.2.0.dev0",
"description": "All Apache Magpie skills (all 10 families; ~21.7k always-on tokens)."
},
{
"name": "magpie-contributor-growth",
"source": "./plugins/magpie-contributor-growth",
"version": "0.2.0.dev0",
"description": "Apache Magpie contributor-growth family (6 skills)."
},
{
"name": "magpie-issue",
"source": "./plugins/magpie-issue",
"version": "0.2.0.dev0",
"description": "Apache Magpie issue family (8 skills)."
},
{
"name": "magpie-mentoring",
"source": "./plugins/magpie-mentoring",
"version": "0.2.0.dev0",
"description": "Apache Magpie mentoring family (4 skills)."
},
{
"name": "magpie-pairing",
"source": "./plugins/magpie-pairing",
"version": "0.2.0.dev0",
"description": "Apache Magpie pairing family (2 skills)."
},
{
"name": "magpie-pr-management",
"source": "./plugins/magpie-pr-management",
"version": "0.2.0.dev0",
"description": "Apache Magpie pr-management family (8 skills)."
},
{
"name": "magpie-release-management",
"source": "./plugins/magpie-release-management",
"version": "0.2.0.dev0",
"description": "Apache Magpie release-management family (10 skills)."
},
{
"name": "magpie-repo-health",
"source": "./plugins/magpie-repo-health",
"version": "0.2.0.dev0",
"description": "Apache Magpie repo-health family (7 skills)."
},
{
"name": "magpie-security",
"source": "./plugins/magpie-security",
"version": "0.2.0.dev0",
"description": "Apache Magpie security family (12 skills)."
},
{
"name": "magpie-setup",
"source": "./plugins/magpie-setup",
"version": "0.2.0.dev0",
"description": "Apache Magpie setup family (9 skills)."
},
{
"name": "magpie-utilities",
"source": "./plugins/magpie-utilities",
"version": "0.2.0.dev0",
"description": "Apache Magpie utilities family (4 skills)."
}
]
}
33 changes: 33 additions & 0 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"name": "magpie",
"version": "0.2.0.dev0",
"description": "Apache Magpie — a reusable, governance-agnostic framework of agentic skills for maintaining open-source projects: release management, security triage, PR and issue workflows, contributor growth, and repo health.",
"author": { "name": "Apache Magpie", "url": "https://magpie.apache.org/" },
"homepage": "https://magpie.apache.org/",
"repository": "https://github.com/apache/magpie",
"license": "Apache-2.0",
"keywords": [
"apache",
"agent-skills",
"maintenance",
"release-management",
"security",
"pr-management",
"open-source"
],
"skills": "./skills",
"hooks": {
"SessionStart": [
{
"matcher": "startup",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/check-upgrade.sh",
"timeout": 10
}
]
}
]
}
}
19 changes: 19 additions & 0 deletions .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "magpie",
"version": "0.2.0.dev0",
"description": "Apache Magpie — agentic skills for maintaining open-source projects.",
"skills": "./skills",
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "${CODEX_PLUGIN_ROOT}/hooks/check-upgrade.sh",
"timeout": 10
}
]
}
]
}
}
16 changes: 16 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,22 @@ repos:
files: ^(\.gitattributes|\.(agents|claude|github|kiro)/skills/.*|skills/.*|projects/_template/.*)$
types_or: [symlink, file]
pass_filenames: false
# Marketplace-plugin consistency guard. Validates that every plugin is
# properly defined and in sync with the skills' `family:` frontmatter (the
# source of truth): the all-in-one `magpie` manifest + its upgrade-hook
# script, each per-family manifest (name / skills / description), every
# `.claude-plugin/marketplace.json` entry resolving to a matching, uniquely
# named plugin.json, and each family's skills present as single-hop symlinks
# into the shared skills/ tree. Catches a new skill, a changed family, a stale
# symlink, or a malformed manifest. `--fix` regenerates the family plugins.
- repo: local
hooks:
- id: check-family-plugins
name: check-family-plugins (marketplace plugins vs frontmatter)
language: system
entry: python3 tools/dev/check-family-plugins.py
files: ^(skills/.*/SKILL\.md|plugins/.*|\.claude-plugin/(marketplace|plugin)\.json|\.codex-plugin/plugin\.json|gemini-extension\.json|apm\.yml|pyproject\.toml|hooks/check-upgrade\.sh)$
pass_filenames: false
# Workspace-membership guard. The single source of truth for
# which Python projects get pre-commit hooks + the CI pytest
# matrix is the `[tool.uv.workspace] members` array in the root
Expand Down
38 changes: 38 additions & 0 deletions GEMINI.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*

- [Apache Magpie — Gemini CLI extension context](#apache-magpie--gemini-cli-extension-context)
- [Upgrade prompt](#upgrade-prompt)

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

<!-- SPDX-License-Identifier: Apache-2.0
https://www.apache.org/licenses/LICENSE-2.0 -->

# Apache Magpie — Gemini CLI extension context

This context ships with the Apache Magpie Gemini CLI extension. Gemini has no
plugin update/lifecycle hook (unlike Claude Code), so this file is how the
extension prompts you to reconcile after an update.

## Upgrade prompt

The Magpie extension declares its version in `gemini-extension.json`. At the
start of a session, compare that `version` against the value you last recorded
in `magpie-plugin-version` under the extension's state directory (create the
file if it does not exist):

- If the version has **changed** since you last recorded it — the marketplace
updated the extension — tell the user, once and non-intrusively:

> Apache Magpie was updated to `<version>`. If this repo adopts Magpie, run
> `/magpie-setup upgrade` to reconcile the snapshot, agentic overrides, and
> drift.

Then record the new version.

- If the version is unchanged, say nothing.

Never run the upgrade yourself: `/magpie-setup upgrade` is a guided,
user-confirmed action, and Magpie never mutates an adopter repo unattended.
Loading