aggregate-logs
Generate LEARNINGS.md from skill execution logs over a configurable time window.
Create git release tags from merged PRs or version args. Pushes a v-prefixed tag to trigger the release pipeline, then confirms the run started.
> /plugin marketplace add athola/claude-night-marketHow it fires
How this command gets triggered: by you, by Claude, or both.
/create-tagContext preview
What this command does when you run it.
Create git release tags from merged PRs or version args. Pushes a v-prefixed tag to trigger the release pipeline, then confirms the run started.
description: Create git release tags from merged PRs or version args. Pushes a v-prefixed tag to trigger the release pipeline, then confirms the run started. usage: /create-tag [version|PR-URL]...
Create annotated git tags for releases. Supports multiple modes:
Classify each argument:
For each PR (explicit or inferred):
1. **Fetch PR details** using GitHub MCP tools:
mcp__github__pull_request_read(method="get", owner, repo, pullNumber)
2. **Extract merge commit SHA** from response:
3. **Infer version** (if not explicitly provided):
Before creating tags:
(`.github/workflows/cross-framework-publish.yml`) only fires on tags matching `v*`. A bare `1.2.0` tag will push successfully but silently never trigger a release. Always tag as `v<version>`:
# Strip any leading v, then re-add it, so 1.2.0 and v1.2.0
# both become v1.2.0
TAG="v${VERSION#v}"For each version/commit pair, using the normalized `$TAG` from Step 3:
# Fetch latest from remote git fetch origin <base-branch> # Create annotated tag (TAG is v-prefixed, e.g. v1.2.0) git tag -a "$TAG" <merge_commit_sha> -m "<tag message>" # Push tag to remote (this is what triggers the release pipeline) git push origin "$TAG"
Tag message format:
<version> - merged from PR #<number> <PR title>
Pushing a `v*` tag should start the `cross-framework-publish` release run. Confirm it actually appeared, then hand the operator a link to watch it. This is a non-blocking check: report and move on, do not wait for the run to finish.
# GitHub reports the tag name as the run's headBranch, so filter
# the workflow runs by the tag we just pushed.
sleep 8 # give GitHub a moment to register the run
RUN_URL=$(gh run list \
--workflow cross-framework-publish.yml \
--branch "$TAG" \
--limit 1 \
--json url,status \
-q '.[0].url')
if [ -n "$RUN_URL" ]; then
echo "Release pipeline triggered: $RUN_URL"
else
echo "::warning::No release run found for $TAG. Confirm the tag" \
"matches the v* trigger and that Actions is enabled, then check" \
"the Actions tab manually."
fiIf no run is found, the most likely cause is a tag that does not match `v*` (see Step 3 normalization) or Actions being disabled for the repo. Capture `$RUN_URL` for the summary in Step 7.
After the tag is pushed, check for a `tag-submissions.json` file in the repository root. This file defines which external repos or scripts to run after tagging. If the file does not exist, skip this step entirely.
# Check for config
if [ -f tag-submissions.json ]; then
# Parse and run each submission script
for script in $(python3 -c "
import json
for s in json.load(open('tag-submissions.json'))['submissions']:
print(s['script'])
"); do
if [ -x "$script" ]; then
echo "Running: $script <version>"
./"$script" <version>
else
echo "Warning: $script not found or not executable, skipping"
fi
done
else
echo "No tag-submissions.json found, skipping post-tag submissions"
fi**Config format** (`tag-submissions.json` in repo root):
{
"submissions": [
{
"name": "ClawHub",
"script": "scripts/clawhub-submit.sh",
"description": "Submit skills to openclaw/clawhub"
}
]
}Each entry's `script` path is relative to the repo root. Scripts receive the version tag as their first argument and use the user's existing `gh auth` session.
Display summary table, including the release run from Step 5:
| Tag | PR | Commit | Release run | Status | |---------|------|---------|-------------|--------| | v1.2.0 | #45 | abc1234 | triggered | OK | | v1.3.0 | #52 | def5678 | triggered | OK |
Include links to created tags on GitHub, the release run URL (`$RUN_URL`) so the operator can watch the build-and-release job, and the ClawHub PR.
/create-tag v1.2.0
/create-tag https://github.com/owner/repo/pull/45 https://github.com/owner/repo/pull/52
/create-tag v1.0.5 https://github.com/owner/repo/pull/45
/create-tag
When inferring version from a PR:
1. **PR Title** - Extract version from title patterns:
2. **PR Body** - Look for version markers:
3. **Changed
A plugin marketplace for Claude Code. Install only the plugins you need to run git workflows, code review, spec-driven development, and autonomous agents from inside your Claude Code session.
Generate LEARNINGS.md from skill execution logs over a configurable time window.
Analyze skill file complexity metrics and generate modularization recommendations for splitting or progressive loading.
Scaffold new Claude Code skills with brainstorming, TDD methodology, and proper frontmatter and module structure.