Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
10 changes: 10 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,16 @@
"category": "productivity",
"source": "./plugins/slack-publish",
"homepage": "https://github.com/1shooperman/shooperman-claude-plugins/tree/main/plugins/slack-publish"
},
{
"name": "update",

Check warning on line 51 in .claude-plugin/marketplace.json

View workflow job for this annotation

GitHub Actions / validate

invariant I8: update: vendored source './plugins/update' has no .claude-plugin/plugin.json
"description": "Updates the marketplace and all plugins to the latest version.",
"author": {
"name": "Brandon Shoop <1shooperman>"
},
"category": "productivity",
"source": "./plugins/update",
"homepage": "https://github.com/1shooperman/shooperman-claude-plugins/tree/main/plugins/update"
}
]
}
8 changes: 4 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,13 @@ jobs:
- name: Compute next version
id: version
run: |
# Match tags with or without leading 'v'
latest=$(git tag --sort=-version:refname \
| grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' \
| grep -E '^v?[0-9]+\.[0-9]+\.[0-9]+$' \
| head -1)
latest="${latest:-v0.0.0}"
# Normalise to always have a 'v' prefix for parsing
latest="v${latest#v}"

major=$(printf '%s' "$latest" | cut -d. -f1 | tr -d 'v')
minor=$(printf '%s' "$latest" | cut -d. -f2)
Expand All @@ -67,9 +70,6 @@ jobs:
run: |
VERSION="${{ steps.version.outputs.version }}"
gh release create "${VERSION}" \
claudenv.sh \
"${STAGING}/install.sh" \
"${STAGING}/SHA256SUMS" \
--title "Release ${VERSION}" \
--generate-notes \
--verify-tag
Expand Down
9 changes: 9 additions & 0 deletions plugins/update-marketplace/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"name": "update-marketplace",
"description": "Updates the marketplace and all plugins to the latest version.",
"author": {
"name": "1shooperman",
"email": "contact@aglflorida.com"
},
"version": "0.1.0"
}
15 changes: 15 additions & 0 deletions plugins/update-marketplace/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
name: update
description: Update the marketplace to the latest version, then update each plugin to the version specific.
allowed-tools: []
user-invocable: true
model: haiku
---

## Instructions

When the user invokes this skill or asks to update the marketplace version:
- run `claude plugin marketplace update ${marketplace.json:name}`
- update each plug-in in this marketplace with `claude plugin update ${plugin-name}@${marketplace.json:name}`
- tell the user to run `/reload-plugins` to pick up the changes

15 changes: 15 additions & 0 deletions plugins/update-marketplace/agents/agent-updater.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
name: agent-updater
description: Updates each plugin
allowed-tools: [Bash(claude plugin *), Bash(echo)]
model: haiku
color: cyan
---

## Instructions

Run `$CLAUDE_PLUGIN_ROOT/scripts/update-marketplace.sh`

## Outputs

None
27 changes: 27 additions & 0 deletions plugins/update-marketplace/scripts/update-marketplace.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/bin/bash
set -euo pipefail

# setup 0: activate claudenv from .claudenvrc if present
# CLAUDENVRC=".claudenvrc"
# if [[ -f "$CLAUDENVRC" ]]; then
# CLAUDENV_NAME="$(cat "$CLAUDENVRC" | tr -d '[:space:]')"
# if [[ -n "$CLAUDENV_NAME" ]]; then
# claudenv "$CLAUDENV_NAME"
# fi
# fi

MARKETPLACE_NAME="shooperman-claude-plugins"

# setup 2: get plugin names
PLUGINS=($(claude plugin list | grep "$MARKETPLACE_NAME" | sed 's/^[^a-zA-Z]*//'))

echo "Updating $MARKETPLACE_NAME"
claude plugin marketplace update "$MARKETPLACE_NAME"

for plugin in "${PLUGINS[@]}"; do
echo "Updating $plugin"
claude plugin update "$plugin@$MARKETPLACE_NAME"
done

echo "Run /reload-plugins to pick up any updates"
exit 0
Loading