with one click
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.
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".
| 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.