一键导入
git-tag
Reads package.json version, synthesizes a change description from git history delta, creates an annotated git tag (no "v" prefix), and pushes it to origin.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Reads package.json version, synthesizes a change description from git history delta, creates an annotated git tag (no "v" prefix), and pushes it to origin.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Audits each directory in ./src for bugs, security vulnerabilities, and performance issues sequentially. Generates one consolidated issue per directory via /create-issue.
Audits Agent Skills SKILL.md files against the protocol specification and best practices. Identifies issues across 10 categories: schema violations, naming, description quality, structure, progressive disclosure, file references, best practices, calibration, content quality, and optional directories. Produces a structured report with severity levels and actionable fixes.
Expert System Prompt Evaluator Agent. Analyzes, rates, and provides actionable feedback for system prompts against a 7-criteria framework. Returns structured machine-readable JSON output with weighted scores, evidence-based reasoning, and harness-aware recommendations.
Automates the complete git workflow: scans project rules for conventions, stages all changes, commits, pushes to the remote, and opens a Pull Request. Ensures strict compliance with documentation rules, including rule 5.4.
Orchestrates a full feature lifecycle: receive goals, synthesize detailed specs, propose via OpenSpec, commit & push, apply tasks, audit results, update PR, and post audit results as a comment.
Receives a user description, synthesizes it into a title and description, categorizes as 'fix' or 'feat', creates a GitHub issue, audits the codebase for actionable details, and updates the issue with findings.
| name | git-tag |
| description | Reads package.json version, synthesizes a change description from git history delta, creates an annotated git tag (no "v" prefix), and pushes it to origin. |
| license | BSD 3-Clause |
| compatibility | Requires git CLI configured with remote access and a package.json with a "version" field in the working directory. |
| metadata | {"agent":"coding"} |
You must execute ALL steps in order. Do not stop until the tag is pushed and verified on the remote. If any step fails, report the error and stop — do not continue with incomplete work.
Read package.json and extract the version string. Use node to reliably extract the top-level version field (avoids matching nested "version" keys):
TAG_VERSION=$(node -e "console.log(require('./package.json').version)")
echo "TAG_VERSION=$TAG_VERSION"
If node is unavailable, fall back to a more specific grep:
TAG_VERSION=$(grep -m1 '"version"[[:space:]]*:' package.json | sed 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/')
Before proceeding, verify:
# Ensure we're on a clean working tree
git status --porcelain
If there are uncommitted changes, report them to the user and stop. Do not tag a dirty tree.
Check for detached HEAD: If git branch --show-current returns empty, you're in detached HEAD state. Create a temporary branch first:
if [ -z "$(git branch --show-current)" ]; then
echo "WARNING: Detached HEAD state. Creating temporary branch for tagging."
git checkout -b "tag-temp-$(date +%s)"
fi
Find the closest prior tag to use as the delta baseline:
# Try to find previous tag in same minor version series
# Note: sort -V requires GNU sort; fall back to sort if unavailable
PREV_TAG=$(git tag -l "${TAG_VERSION%.*}.*" 2>/dev/null | sort -V 2>/dev/null | grep -v "^${TAG_VERSION}$" | tail -1)
if [ -z "$PREV_TAG" ]; then
PREV_TAG=$(git tag -l "${TAG_VERSION%.*}.*" 2>/dev/null | sort 2>/dev/null | grep -v "^${TAG_VERSION}$" | tail -1)
fi
if [ -z "$PREV_TAG" ]; then
PREV_TAG=$(git describe --tags --abbrev=0 HEAD 2>/dev/null || echo "")
fi
echo "PREV_TAG=$PREV_TAG"
If no previous tag exists, set PREV_TAG="" (empty).
Ensure the tag does not already exist locally or on the remote:
LOCAL_EXISTS=$(git tag -l "${TAG_VERSION}")
REMOTE_EXISTS=$(git ls-remote --tags origin "${TAG_VERSION}" 2>/dev/null)
If either LOCAL_EXISTS or REMOTE_EXISTS is non-empty, the tag already exists. Report this to the user and stop. Do not overwrite.
Collect the commit messages between the previous tag and HEAD. Filter out merge commits (messages starting with "Merge ") as they add noise:
if [ -n "$PREV_TAG" ]; then
git log --pretty=format:"%s" "${PREV_TAG}..HEAD" | grep -v "^Merge "
else
git log --pretty=format:"%s" --max-count=20 | grep -v "^Merge "
fi
Read the commit messages from Step 5 and write a concise, natural-language summary:
feat: → features, fix: → fixes, chore: → chores, docs: → documentation, refactor: → refactors. If no conventional commit prefixes are present, group by keyword matching (e.g., "Dockerfile" → Docker, "config.yaml" → config).Example output format:
Version 1.3.5 release.
Includes a Dockerfile fix for the HOME environment variable, expanded scheduler documentation with atomicity directives, and a TUI audit fix proposal. Documentation updates cover config.yaml tracking, TUI command expansion, and scheduler documentation improvements.
If no commits can be analyzed, use: "Version ${TAG_VERSION} release."
Create an annotated tag. No "v" prefix. Use the exact TAG_VERSION from Step 1:
git tag -a "<TAG_VERSION>" -m "<DESCRIPTION>"
Replace <TAG_VERSION> with the actual version and <DESCRIPTION> with the synthesized text from Step 6.
Verify the tag exists:
git tag -n1 | grep "^<TAG_VERSION>"
Create an annotated tag. No "v" prefix. Use the exact TAG_VERSION from Step 1:
git tag -a "$TAG_VERSION" -m "$DESCRIPTION"
Verify the tag exists:
git tag -l "$TAG_VERSION"
If the output is empty, the tag creation failed. Report the error and stop.
Check that remote exists before pushing:
git remote get-url origin
If this fails, the remote is not configured. Report the error and stop.
Push to the remote:
git push origin "$TAG_VERSION"
Check exit code: If the push returns a non-zero exit code, report the error and stop. Common failures:
git remote add origin <url>)Confirm the tag is on the remote:
git ls-remote --tags origin | grep "$TAG_VERSION"
If this returns nothing, the push failed. Report the error and stop.
Print a final summary using actual variable values:
Tagged: $TAG_VERSION
From: ${PREV_TAG:-initial}
Commits: $(git log --oneline "${PREV_TAG:-HEAD}..HEAD" | wc -l)
Pushed: origin/$TAG_VERSION
$DESCRIPTION