一键导入
release
Create a GitHub issue, commit, tag, and push a release. Detects repo type and runs mode-specific validation checks with user confirmation at every step.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Create a GitHub issue, commit, tag, and push a release. Detects repo type and runs mode-specific validation checks with user confirmation at every step.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Create Bruno .bru request files for API endpoints found in the project source code. Use when the user asks to generate Bruno API files from source code, mentions the Bruno API client, or wants to scaffold .bru files for HTTP requests.
Migrate .env secrets to 1Password using the op CLI, replacing plaintext values with op:// references (Japanese). Use when the user wants to move .env secrets into 1Password, mentions the 1Password CLI, or asks to replace environment variables with vault references.
DevelopersIO article writing and Contentful publishing assistant. Use "/devio article <topic>" to draft a new article, or "/devio publish <file>" to publish to Contentful.
Create a GitHub issue, commit, tag, and push a release. Detects repo type and runs mode-specific pre-flight checks with user confirmation at every step.
Bedrock KB + S3 data pipeline management with safety guardrails. S3 sync (with force-upload for content-only changes), KB ingestion status polling, cost monitoring. Enforces identity verification, dry-run, and confirmation for all write operations.
Generate Draw.io XML architecture diagrams with accurate AWS service icons. Use when the user asks to create, update, or visualize an AWS architecture diagram, or mentions Draw.io diagrams for AWS infrastructure.
| name | release |
| description | Create a GitHub issue, commit, tag, and push a release. Detects repo type and runs mode-specific validation checks with user confirmation at every step. |
| user-invocable | true |
Orchestrate a full release: repo detection, validation, GitHub issue, commit, tag, push.
IMPORTANT: Every interaction with the user MUST go through AskUserQuestion. Never
prompt with plain text and wait for a reply — always use the tool.
SKILLS_DIR = .claude/skills/releaseCONFIG_FILE = .claude/skills/release/config.jsonRead CONFIG_FILE at startup if it exists:
cat .claude/skills/release/config.json 2>/dev/null
Schema:
{
"language": "en",
"repo_mode": "skills-gems",
"preflight_confirm": false
}
| Field | Effect when set |
|---|---|
language | Skip Step 1.5 — use this language directly |
repo_mode | Skip detection — use this mode directly; validation still runs |
preflight_confirm: false | Skip the confirmation gate — validation runs silently without asking "Proceed?" |
All fields are optional. Missing fields fall back to the interactive flow.
When creating a GitHub issue or release with markdown body content, never pass the body
inline via --body with shell quoting — backticks, tables, and special characters will break.
Instead:
.release-tmp/<filename>.md using the Write tool--body-file .release-tmp/<filename>.md to gh issue create or gh release create# For issues:
gh issue view <number> --json body --jq '.body | length'
# For releases:
gh release view v<version> --json body --jq '.body | length'
If the length is 0, stop the flow and report the error.
On startup (before Phase 0), check for an existing state file:
cat .release-tmp/state.json 2>/dev/null
State schema:
{
"schema_version": 1,
"phase_completed": 2,
"issue_number": 42,
"issue_url": "https://github.com/...",
"version": "v2.1.0",
"title": "...",
"mode": "skills-gems",
"language": "en"
}
If state file exists, use AskUserQuestion:
If "Start fresh" is selected, use a follow-up AskUserQuestion:
Then delete .release-tmp/state.json and proceed from Phase 0.
Save state at the end of Phase 1 and Phase 2:
mkdir -p .release-tmp
# Write state.json via the Write tool with current progress
If repo_mode is set in config: skip detection, use the configured mode. State: "Using configured mode: <mode>."
Otherwise, run detection:
ls package.json pyproject.toml uv.lock skills/ 2>/dev/null
git status --short
Classify into one or more modes:
| Signal detected | Mode |
|---|---|
skills/ directory exists AND changed files are under skills/ | skills-gems |
package.json exists | npm |
pyproject.toml or uv.lock exists | python |
| Two or more of the above | monorepo |
| None of the above | generic |
If preflight_confirm is false in config: skip the confirmation gate, announce mode in plain text and proceed directly to Phase 1.
Otherwise, use AskUserQuestion to confirm:
"Detected: <mode>. Validation will run: <summary from pattern file>. Proceed?"
Options:
Read and follow SKILLS_DIR/patterns/<mode>.md.
Validation always runs for the configured/detected mode — preflight_confirm: false only
skips the confirmation gate, not the validation itself.
If validation passes, continue to Phase 2. If validation fails, stop — do not continue until resolved.
From the session, identify:
Use AskUserQuestion:
Store the selected language. Apply it to all generated content: plan file, issue title, issue body, acceptance criteria, and release notes. Commit messages always stay in English regardless of this setting (git convention).
Use AskUserQuestion:
Use AskUserQuestion with multiSelect=true:
git describe --tags --abbrev=0 2>/dev/null || echo "none"
Treat missing tags as v0.0.0. Use AskUserQuestion:
Always prefix with "v". Store the selected version for later steps.
Read SKILLS_DIR/templates/plan.md for the template and rules.
Create .plans/<slugified-title>.md filled with real content from the session.
Write all narrative content (Context, Approach, Changes, Guard Rails, Verification)
in the language selected in Step 1.5. Section headings may stay in English for
template consistency, but all prose must be in the selected language.
gh api repos/{owner}/{repo}/milestones --jq '.[] | select(.title == "<version>") | .title'
If missing:
gh api repos/{owner}/{repo}/milestones -f title="<version>" -f state="open"
Read SKILLS_DIR/templates/issue-body.md for the body format.
Use the Safe GitHub Body Write pattern:
.release-tmp/issue-body.md using the Write tool--body-file:mkdir -p .release-tmp
gh issue create \
--title "<title>" \
--label "<labels>" \
--assignee "@me" \
--milestone "<version>" \
--body-file .release-tmp/issue-body.md
gh issue view <number> --json body --jq '.body | length'
Omit --milestone if version was skipped.
feat(<scope>): <description> (#<issue-number>)
Use fix() for bugs, docs() for documentation, refactor() for refactoring.
Output: Issue created: <url> — proceeding with release automation...
git fetch
git rev-list --count HEAD..@{u}
If remote has new commits, use AskUserQuestion:
Pull: git pull --rebase — stop on merge conflicts.
Check whether README.md and CHANGELOG.md need updating based on the changes in this release:
README.md — check for:
CHANGELOG.md — check for:
If updates are needed, make them now before committing — so docs land in the same commit as the code. If README and CHANGELOG are already accurate, state so and continue.
git status --short
Use AskUserQuestion:
If custom: use AskUserQuestion "Other" for free input.
git add <specific-files>
git commit -m "<message>"
Important: Do not use git add . — explicitly list the files that were changed as part
of this release to prevent accidentally staging unrelated files.
Skip if version was skipped. Otherwise:
git tag v<new-version>
Use AskUserQuestion:
git push && git push --tags
On failure: show manual command.
Skip if version was skipped.
Read SKILLS_DIR/templates/release-notes.md for the release notes format.
Use the Safe GitHub Body Write pattern:
.release-tmp/release-notes.md using the Write tool--notes-file:gh release create v<version> \
--title "<version> - <plan-title>" \
--notes-file .release-tmp/release-notes.md
gh release view v<version> --json body --jq '.body | length'
Write release notes in the language selected in Step 1.5.
gh issue close <issue-number> --comment "Released in v<version>"
# or if skipped:
gh issue close <issue-number> --comment "Shipped in <commit-sha>"
If config did not exist at startup, use AskUserQuestion:
.claude/skills/release/config.json", "No, ask me each time"If yes, write CONFIG_FILE with the language and mode used this run, and preflight_confirm: false.
If version was tagged, output as plain markdown prose (not a fenced code block). Use markdown link syntax so URLs are clickable in the IDE:
Release complete!
- Issue:
[#N](full-issue-url)- Version: old → new
- Tag:
vX.Y.Z- Release:
[vX.Y.Z](full-release-url)
If version was skipped, output as plain markdown prose:
Changes committed and pushed!
- Issue:
[#N](full-issue-url)- Commit:
commit-messageNo version tag or GitHub release (skipped).
| Scenario | Action |
|---|---|
| Remote fetch fails | Warn and continue |
| Pull conflicts | Stop, instruct to resolve manually |
| Validation fails | Stop, AskUserQuestion: skip or fix |
| Commit fails | Stop (likely pre-commit hook) |
| Tag already exists | Stop, AskUserQuestion with next version suggestion |
| Push fails | Warn, show manual command |
| gh not installed | Warn, provide manual release URL |