원클릭으로
smaqit-release-git-local
Execute git operations (commit, tag, push) for local releases
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Execute git operations (commit, tag, push) for local releases
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Creates a test playbook for a task — `task.test-create [id]`, `test.create [id]`, or any request to generate an E2E test runbook from a task file. Produces a complete, executable playbook under `.smaqit/user-testing/tests/` with build-gate, deploy-gate, and live-service E2E validation where the task touches live services.
End session by documenting the entire conversation. Use at session completion to create history entries.
Bootstrap or refresh a smaqit project by inferentially synchronizing Codex, Claude Code, and GitHub Copilot project instructions around a canonical root AGENTS.md, then creating the base project directories (docs/, assets/, assets/raw/). Use when the user asks to start, initialize, reinitialize, or refresh a smaqit project.
Produces a structured parity assessment comparing any two software systems — frameworks, libraries, platforms, or products. Identifies the current project from session context, studies the target system, checks domain compatibility, then outputs validated Mermaid diagrams and a written ASSESSMENT.md. Trigger phrase: `parity.assess <name>`.
Manages a live Q&A knowledge manifest at `.smaqit/compendium.md`. Invoked when the user says `list compendium`, `fetch from compendium [query]`, `update compendium [question]`, or `remove from compendium [question]`. Lists all Q&A entries grouped by category, semantically searches for relevant entries, upserts a Q&A pair (add or update), or removes an entry after confirmation.
Use this skill when the user asks to run a diagnostic or scan the project for gaps or requests a check on security posture, test coverage, logging setup, monitoring coverage, provisioning, or CI/CD pipelines. Scans six domains (Testing, Security, Logging, Monitoring, Provisioning, CI/CD) using a deterministic filesystem inventory and domain checklists, then produces a prioritised finding report at `.smaqit/reports/diagnose-YYYY-MM-DD.md`. Supports `--tasks` to generate smaqit tasks for new gaps, domain scoping (e.g. `project.diagnose security,logging`), and `--refresh` to overwrite an existing same-day report.
| name | smaqit.release-git-local |
| description | Execute git operations (commit, tag, push) for local releases |
| metadata | {"version":"0.3.0"} |
Execute all git operations required for a local release: stage changes, commit, create annotated tag, and push to remote.
Use this skill for local releases (running on a developer's machine) after all files have been prepared. This skill:
Do NOT use this skill for PR-based releases - use release-git-pr instead.
Check if there are uncommitted changes beyond release preparation files:
git status --porcelain
If working tree has changes:
If only CHANGELOG.md and version files changed:
CRITICAL: Group changes by purpose, not by file type. Each commit should represent one logical change.
Analyze all changed files:
git --no-pager diff --name-status
git status --short
Common grouping patterns:
Pattern 1: Feature + Documentation
# New feature with related docs
git add src/new_feature.js docs/api.md
git commit -m "Add new feature X"
Pattern 2: Bug Fix
# Bug fix with tests
git add src/buggy_module.js tests/buggy_module.test.js
git commit -m "Fix issue with Y"
Pattern 3: Refactoring/Reorganization
# Moved files or restructured
git add -u old_location/ # stages deletions
git add new_location/
git commit -m "Refactor: move Z to new location"
Pattern 4: Build/Infrastructure
# Build, CI/CD, or tooling changes
git add .github/workflows/ Makefile
git commit -m "Update build workflow"
Guidelines for grouping:
feat:, fix:, refactor:, docs:, chore:Example workflow with multiple commit groups:
# Group 1: Infrastructure changes
git add Makefile .github/workflows/
git commit -m "chore: update sync workflow for new structure"
# Group 2: Feature implementation
git add skills/ installer/Makefile
git add -u session-*/ task-*/ test-*/ release-*/ # stages deletions
git commit -m "refactor: consolidate skills into skills/ directory"
# Group 3: Bug fix
git add .github/workflows/post-merge-release.yml
git add -u .github/workflows/post-merge-tag.yml .github/workflows/release.yml
git add agents/smaqit.release.pr.agent.md .github/agents/ README.md
git commit -m "fix: merge workflows to resolve GITHUB_TOKEN trigger issue"
# Group 4: Documentation/support
git add .smaqit/
git commit -m "feat: add task tracking system"
# Now ready for Step 2 (release commit)
After committing work, verify clean state:
git status --porcelain # Should be empty or only show CHANGELOG/version files
Stage ONLY the release preparation changes:
git add CHANGELOG.md
If version files were updated:
git add package.json pyproject.toml installer/main.go
Verify staged changes contain ONLY release preparation:
git --no-pager diff --cached --name-status
Expected output should be minimal (2-3 files max).
Create commit with release message:
git commit -m "Release vX.Y.Z"
Verify commit was created:
git --no-pager log -1 --oneline
Create an annotated tag (not lightweight):
git tag -a vX.Y.Z -m "Release vX.Y.Z"
Why annotated tags?
Verify tag was created:
git --no-pager tag -l vX.Y.Z
Push the commit to the remote repository:
git push origin main
Replace main with current branch if different.
Push the tag to trigger release workflows:
git push origin vX.Y.Z
Important: Tag push must be separate from commit push for most CI/CD systems to detect release events.
Confirm both commit and tag are on remote:
git ls-remote --tags origin vX.Y.Z
git ls-remote origin main
If an explicitly authorized fetch, push, or ls-remote command fails with Permission denied (publickey), sign_and_send_pubkey, or a missing ssh-askpass, use this recovery on an interactive WSL2/WSLg, native Ubuntu/GNOME, or XFCE session. Do not use it in CI or another headless environment.
origin uses SSH.runtime_dir="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}"
runtime_dir="${runtime_dir%/}"
agent_candidates=(
"$runtime_dir/gcr/ssh"
"$runtime_dir/keyring/ssh"
)
if command -v gpgconf >/dev/null 2>&1; then
agent_candidates+=("$(gpgconf --list-dirs agent-ssh-socket 2>/dev/null)")
fi
agent_candidates+=("${SSH_AUTH_SOCK:-}")
if command -v systemctl >/dev/null 2>&1; then
session_socket="$(systemctl --user show-environment 2>/dev/null | sed -n 's/^SSH_AUTH_SOCK=//p')"
agent_candidates+=("$session_socket")
fi
agent_socket=""
for candidate_socket in "${agent_candidates[@]}"; do
if [[ -n "$candidate_socket" && -S "$candidate_socket" ]] && \
SSH_AUTH_SOCK="$candidate_socket" ssh-add -l >/dev/null 2>&1; then
agent_socket="$candidate_socket"
break
fi
done
test -n "$agent_socket"
SSH_AUTH_SOCK="$agent_socket" git push origin main
GCR or GNOME Keyring may display a WSLg/GNOME unlock dialog; GnuPG or a confirmation-constrained OpenSSH agent may display its configured pinentry or askpass prompt.Do not start or replace agents, persist SSH_AUTH_SOCK, edit shell startup files, load or remove identities, switch the remote to HTTPS, or broaden the Git operation without explicit user direction.
Provide a summary of git operations:
success: true
commit_sha: abc123def456
tag: vX.Y.Z
branch: main
remote_url: https://github.com/owner/repo.git
Output fields:
success: Boolean indicating all operations completedcommit_sha: SHA of the release committag: The git tag created and pushedbranch: Branch that was pushed toremote_url: Remote repository URL| Error | Likely Cause | Suggested Action |
|---|---|---|
nothing to commit | Files unchanged or not staged | Verify changes were made and staged correctly |
tag 'vX.Y.Z' already exists | Tag created in previous attempt | Delete local tag: git tag -d vX.Y.Z, then retry |
rejected - non-fast-forward | Remote has commits not in local | Pull latest: git pull origin main, then retry |
Permission denied (publickey) | SSH key unavailable or its desktop store is locked | On interactive desktop Linux, try the single command-scoped agent recovery above; otherwise ask the user to configure or unlock credentials |
sign_and_send_pubkey failed | Agent can list the key but cannot sign with it | Ask the user to reopen/unlock the desktop key store or SSH agent, then retry only the failed step |
remote: Permission to repo denied | No push access to repository | Verify repository permissions |
fatal: tag 'vX.Y.Z' already exists on remote | Tag already pushed previously | Version conflict - check CHANGELOG.md |
Recovery steps:
If commit succeeded but tag creation failed:
# Fix the issue, then resume from Step 3
git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin vX.Y.Z
If commit and tag succeeded but push failed:
# Fix the issue, then resume from Step 4
git pull origin main # if non-fast-forward
git push origin main
git push origin vX.Y.Z
If tag already exists locally:
git tag -d vX.Y.Z # Delete local tag
# Then retry from Step 3
release-git-pr skill instead-f) release commits or tags