skills/release-automation/SKILL.md
Use when preparing a date-based Android release from develop to main, updating versionCode, aligning an existing release PR with recent conventions, or dispatching app_deploy through GitHub Actions.
npx skillsauth add keelim/keelim-skill release-automationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill for the recurring release flow that updates versionCode to today's date, verifies the build, syncs the develop -> main release PR, and triggers deployment.
This is a docs-only skill. Follow the mode that matches the risk level you want.
developmaingradle/libs.versions.tomlversionCode./gradlew :composeApp:assemble.github/workflows/app_deploy.ymlapp_deploy.ymlreleasekeelimRead-only inspection only. Do not modify files, commits, PRs, or workflows.
Run these checks and report them with Would ... wording:
date +%Y%m%d
rg -n '^versionCode = ' gradle/libs.versions.toml
git branch --show-current
gh pr list --state all --base main --limit 10 --json number,title,headRefName,baseRefName,assignees,labels,body,createdAt
gh pr list --state open --base main --head develop --json number,title,body,labels,assignees,url
gh workflow view app_deploy.yml
Then summarize like:
gradle/libs.versions.toml to today's date./gradlew :composeApp:assembledevelop -> main PRapp_deploy.yml on developSame flow as execute, but stop before each risky write:
Use short confirmations such as:
Update versionCode to 20260308?Commit and push develop?Edit release PR metadata?Dispatch app_deploy.yml on develop?Perform the full release flow end to end.
date +%Y%m%d
sed -i '' 's/^versionCode = .*/versionCode = "YYYYMMDD"/' gradle/libs.versions.toml
If GNU sed is in use, adapt the in-place flag accordingly.
./gradlew :composeApp:assemble
If verification fails, stop immediately.
git add gradle/libs.versions.toml
git commit -m "chore: update versionCode to YYYYMMDD"
git push origin develop
gh pr list --state all --base main --limit 10 --json number,title,headRefName,baseRefName,assignees,labels,body,createdAt
Prefer the latest develop -> main release PR pattern for:
Check whether an open develop -> main PR already exists:
gh pr list --state open --base main --head develop --json number,title,body,labels,assignees,url
If one exists, update it:
gh pr edit <number> \
--title "release/YYMMDD" \
--body $'## Summary\n- update release versionCode to YYYYMMDD\n- dispatch app_deploy workflow on develop\n\n## Verification\n- ./gradlew :composeApp:assemble' \
--add-label release \
--add-assignee keelim
If none exists, create one:
gh pr create \
--base main \
--head develop \
--title "release/YYMMDD" \
--body $'## Summary\n- update release versionCode to YYYYMMDD\n- dispatch app_deploy workflow on develop\n\n## Verification\n- ./gradlew :composeApp:assemble'
After creation, add the label and assignee if needed.
gh workflow run app_deploy.yml --ref develop
gh run list --workflow app_deploy.yml --branch develop --limit 1
gh run view <run-id> --json status,conclusion,url,workflowName,headBranch,event,createdAt
Always end with:
versionCode before confirming the active branch is developdevelop -> main PR already exists# release date
date +%Y%m%d
# verify
./gradlew :composeApp:assemble
# open release PR
gh pr list --state open --base main --head develop
# dispatch deploy
gh workflow run app_deploy.yml --ref develop
tools
Use when writing first-person technical posts in a personal engineer voice, especially build logs, case studies, workflow write-ups, or series posts about tools, systems, and engineering habits.
tools
Build a secure offline HTML dashboard and JSON summary from Codex and Claude session JSONL logs. Use when the user wants to track agent tool usage, skill invocations, subagent kinds, session harness activity, or usage counts for Codex/Claude runs without exposing raw prompts, tool arguments, or tool outputs.
documentation
Capture session observations through opt-in hooks, review learning candidates, and promote stable lessons into AGENTS.md, README.md, skills, or docs without letting hooks mutate canonical project files directly.
tools
Read Jira tickets through Atlassian MCP, merge local handling rules for intentionally ignored or deferred work, optionally consult Lazyweb for desktop dashboard design references, and render a secure offline pure HTML personal ticket desk from a reusable template plus replaceable JSON data. Use when the user wants to review, triage, plan, or report on Jira tickets without mutating Jira.