en un clic
commit-and-push
// Commit code changes and push via Git. Use when the user asks to commit, push, or save their work to the repository.
// Commit code changes and push via Git. Use when the user asks to commit, push, or save their work to the repository.
| name | commit-and-push |
| description | Commit code changes and push via Git. Use when the user asks to commit, push, or save their work to the repository. |
| argument-hint | commit message or description of changes |
You are committing and pushing code changes for 清正学園将棋部 (SeiShinGakuen_ShougiBu) — a single-player Android Shogi game built with Godot 4.6.3 (Mobile renderer) and a Rust GDExtension for rules + AI.
This project uses Conventional Commits-style prefixes. Look at git log before writing a message — every existing commit follows this pattern, often with a scope.
<type>(<scope>): <imperative summary>. Lowercase after the colon, no trailing period. Scope is optional but encouraged (feat(ui):, feat(ai):, build(tools):, chore(audio):, etc.).Co-Authored-By trailer: this project's recent commits do carry one when Claude collaborated on the work. Append:
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Look at the most recent commit to mirror the exact identity string — adjust if the user is on a different model.git log --show-signature reports signed: N across the existing history. Don't pass -S, and don't add --signoff either (this project does not use DCO).feat: new user-visible feature scopes: ui, ai, audio, menu, ui/menu
fix: bug fix scopes: ui, android
docs: README / ROADMAP / docs/ / ADR scopes: assets, audio
chore: tooling, assets, branding, audio swaps scopes: ui, audio, branding, release
refactor: code restructure, no behavior change scopes: tools
build: build pipeline / tools that produce scopes: tools
binaries (build_all.sh, font subsetter,
release plumbing)
test: adding or fixing tests
perf: performance work
If a change spans multiple types, pick the dominant one. If you can't, that's a hint to split — see the commit-changes-by-topic skill.
feat(ai): MCTS-backed 先生モード move suggestions
feat(ui): defer 先生モード zoom-back so animations don't fight
build(tools): --aab flag for Play-Store-ready bundle
build(tools): release APK pipeline with per-project keystore
refactor(tools): port font subsetter from shell to Python
chore(branding): app icon and 清正学園将棋部 display name
chore(release): version 0.1.0
Subjects often contain Japanese terms when the change is about a game-side feature (先生モード = teacher mode, 加藤先生 = the Lv 8 AI character). That's fine — UTF-8 throughout.
Review changes — run git status and git diff (and git diff --cached if anything is already staged) to understand what will be committed. Read the actual diff before writing the message; don't infer from filenames.
Stage by explicit path. Never git add -A / git add .. Be careful not to stage:
.android-release-pass — release keystore password file (gitignored, but verify).*.keystore / *.jks — signing keys (gitignored).build/ — APK / AAB outputs (gitignored).native/shogi_core/target/ — Rust build outputs (gitignored).native/bin/ — copied .so artifacts (gitignored — the .so is rebuilt by tools/build_all.sh, not tracked)..godot/ — Godot's local cache (gitignored).android/ — generated Android build template tree (gitignored).assets/fonts/**/*-full.otf — vendored source fonts; only the small subset .otf next to them is shipped..env, secrets.*, credentials.*.Asset-pair invariant. When committing image / sound / font assets, the .import sidecar Godot generates must land in the same commit as the binary it describes. Splitting them produces a broken checkout where Godot can't load the resource.
Encoder byte-parity invariant. Touching native/shogi_core/src/encode.rs or move_index.rs requires regenerating fixtures (tools/gen_fixtures.py) and re-running cargo test --manifest-path native/shogi_core/Cargo.toml before committing — the parity tests against ShogiDojo are the project's defense against silently-broken AI inference. Don't bypass them.
Compose the message — pick the right type(scope) prefix, write a concise imperative subject. Add a body for non-trivial changes; keep the why in front of the what.
Commit via HEREDOC for proper formatting:
git commit -m "$(cat <<'EOF'
feat(ui): <imperative summary>
Optional body explaining why.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)"
Verify — git log -1 --oneline and a quick git show HEAD --stat to confirm the right paths landed.
origin → git@github.com:hiroshiyui/SeiShinGakuen_ShougiBu.git.main. There is no master, no develop.git push origin main (or the user's current branch name on a feature branch).main without an explicit, unmistakable request. Prefer --force-with-lease over --force when force is genuinely needed on a feature branch.--no-verify. If a pre-push hook fails, investigate the underlying issue.main is the only branch today. Feature branches with descriptive lowercase-with-dashes names are fine (e.g. mcts-perf, aab-release-plumbing). Branch off main, target main.
Review code for quality, correctness, and security vulnerabilities across the GDScript / Rust GDExtension / FFI surface. Use when the user asks to review code, audit for security issues, or check for bugs and anti-patterns.
Writing/updating project documentation (README, ROADMAP, CLAUDE.md, docs/architecture.md, ADRs, asset-folder READMEs) for SeiShinGakuen_ShougiBu. Use when the user asks to update docs, draft an ADR, write a changelog, or update GitHub Release notes.
Release engineering tasks including version bumping, building signed release APKs, creating git tags, and preparing GitHub Release artefacts. Use when the user asks to prepare a release, bump the version, tag a release, or build for distribution.
Capture a screenshot from the connected Android device via adb and save it under docs/screenshots/. Trigger on "snap", "take a screenshot", "screenshot via adb", or any request to capture the device's screen — typical use is grabbing app screens for the README, GitHub Release notes, or bug reports.
Split pending working-tree changes into multiple topic-scoped commits. Use when the user has a mix of unrelated edits staged or unstaged and wants them committed as separate, logically coherent commits rather than one big blob. Examples- "commit these by topic", "split this into commits", "break this up into proper commits".