Pull-based auto-sync skill. Sets up a consumer project so it automatically pulls fresh plugins from GitHub on every agent session start using plugin_add.py. No local clone of agent-plugins-skills required — installs direct from GitHub. Trigger with "set up auto plugin sync", "auto install plugins on load", "subscribe this project to plugin updates", "sync plugins on startup", or "add a plugin source".
From plugin-managernpx claudepluginhub richfrem/agent-plugins-skills --plugin plugin-managerThis skill is limited to using the following tools:
evals/evals.jsonevals/results.tsvscripts/check_and_sync.pytemplates/plugin-sources.jsonProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Transforms raw data into narratives with story structures, visuals, and frameworks for executive presentations, analytics reports, and stakeholder communications.
This skill solves the multi-repo plugin sync problem using a GitHub-native pull model:
plugin-sources.json.SessionStart hook fires check_and_sync.py,
which detects upstream changes and re-runs plugin_add.py automatically.agent-plugins-skills required — plugin_add.py clones
into a temp directory, installs, and cleans up automatically.GitHub (richfrem/agent-plugins-skills)
↓ plugin_add.py <owner/repo> --all -y
consumer-project/.agents/ ← skills + agents + commands + hooks
Adding a new consumer = drop in a plugin-sources.json. Nothing changes at the source.
Pivoting away = delete or clear plugin-sources.json.
plugin-sources.json at the project rootEach source entry declares a GitHub owner/repo to pull from. No env vars or
local paths required.
{
"sources": [
{
"name": "agent-plugins-skills",
"github": "richfrem/agent-plugins-skills",
"plugins": "all"
}
]
}
To subscribe to specific plugins only, list them by name:
{
"sources": [
{
"name": "agent-plugins-skills",
"github": "richfrem/agent-plugins-skills",
"plugins": ["spec-kitty-plugin", "agent-agentic-os", "agent-loops"]
}
]
}
To subscribe to multiple source repos, add more entries:
{
"sources": [
{
"name": "agent-plugins-skills",
"github": "richfrem/agent-plugins-skills",
"plugins": "all"
},
{
"name": "my-private-plugins",
"github": "myorg/my-private-plugins",
"plugins": "all"
}
]
}
check_and_sync.py into the consumer projectCopy ./scripts/check_and_sync.py into the consumer
project at .agents/scripts/check_and_sync.py.
This script:
plugin-sources.json at the project root..agents/plugin-sync-state.json (a local SHA cache).plugin_add.py <owner/repo> --all -y and updates the SHA cache.Add a SessionStart hook so check_and_sync.py fires on every agent session start.
Create .agents/hooks/session_start.sh:
#!/usr/bin/env bash
# Auto-sync plugins from registered GitHub sources on every session start.
if [ -f "plugin-sources.json" ]; then
python3 .agents/scripts/check_and_sync.py
fi
For Claude Code, register the hook in .claude/settings.json:
{
"hooks": {
"SessionStart": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "bash .agents/hooks/session_start.sh"
}
]
}
]
}
}
To manually pull the latest plugins from GitHub at any time:
# Interactive — pick which plugins to update
python ./scripts/plugin_add.py richfrem/agent-plugins-skills
# Non-interactive — reinstall everything
python ./scripts/plugin_add.py richfrem/agent-plugins-skills --all -y
check_and_sync.py WorksSessionStart fires
↓
Read plugin-sources.json
↓
For each source:
GET https://api.github.com/repos/<owner>/<repo>/commits?per_page=1
sha = response[0].sha
↓
Compare sha to .agents/plugin-sync-state.json["<name>"]["sha"]
↓
If changed:
python plugin_add.py <owner/repo> --all -y
update plugin-sync-state.json sha
If same:
skip (no network calls beyond the SHA check)
If GitHub unreachable:
log warning, skip
The SHA check is a single lightweight API call (~1 KB). The full clone only happens when there is an actual upstream change.
To stop a consumer project from auto-syncing:
plugin-sources.json, ORcheck_and_sync.py call from the SessionStart hook.Nothing at the source repo needs to change.
If you previously used AGENT_PLUGINS_SKILLS_DIR env var + install_all_plugins.py:
plugin-sources.json with the GitHub-based format above.AGENT_PLUGINS_SKILLS_DIR from your shell profile / PowerShell profile.sync-agent-plugins alias (no longer needed).check_and_sync.py now calls plugin_add.py instead of install_all_plugins.py.plugin-installer — full plugin deployment (skills + agents + commands + hooks).maintain-plugins — health check, orphan cleanup, and ecosystem audit.