RIPDPI's own Compose conventions: ViewModel pattern, Route/Screen split, DataStore->StateFlow, RipDpiThemeTokens. Use for how this app does Compose, not generic Compose API questions (see compose).
日本語の概要は準備中です。原文の説明を表示しています。
Explicit request only -- never invoke implicitly, never expose signing secrets. Prepares and publishes one exact-SHA RIPDPI release via the release contract. Use when asked to prepare or publish a version.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Release one exact commit through the workflows declared in
quality/release-gates/release-contract.json. Run
python3 scripts/ci/check_release_contract.py before trusting this guidance; stop
if the contract and current source disagree.
Never carry a version snapshot in this skill. Derive and record:
vX.Y.Z tag;ripdpiVersionName and ripdpiVersionCode from app/build.gradle.kts;origin/main and candidate SHAs;The target tag must match the requested version, and a Play version code must increase. Stop on ambiguity, divergence, or an existing target tag/release.
Treat these as separate external operations:
main, and push main; require
explicit authorization under AGENTS.md..github/workflows/release-candidate.yml for
the exact remote main SHA and requested release_tag.A request to prepare does not authorize steps 2–4. Never print, copy, decode, or inspect signing secret values; they are consumed only by the signing environment.
Use the profile names and meanings from the release contract:
artifact-publish is the automated release-blocking profile: exact-SHA main CI,
secret-free release verification, immutable signed candidate, manifest,
signatures, ELF checks, attestations, and tag-bound promotion;device-qualified adds separately recorded emulator, physical-device, or
owner-lab evidence without silently changing artifact-publish results;owner-accepted records an explicit owner decision accepting named evidence
gaps. It never turns FAIL, skipped, or missing evidence into PASS.State the selected profile in the release handoff. Do not require a deleted or nonexistent physical-evidence workflow.
AGENTS.md, quality/release-gates/release-contract.json, both declared
workflows, docs/distribution.md, and
quality/release-gates/app-identity-review.json from the candidate tree.origin/main; preserve unrelated
changes in every other checkout.ripdpiVersionName and ripdpiVersionCode in app/build.gradle.kts.$release-changelog over the immutable base-tag-to-candidate range and
keep drafts outside tracked source unless the repository adopts a notes path.chore(release): prepare X.Y.Z.Before the first candidate, add vX.Y.Z.json under
quality/release-gates/release-windows/ with the exact tag and UTC start time,
commit it on main, and freeze features. Set
RIPDPI_RELEASE_WINDOW_START_SHA to the commit that introduced that file and
RIPDPI_RELEASE_WINDOW_STARTED_AT to its timestamp. The gate derives the cut
from Git history and rejects any later edit to the record, even if old Actions
runs have been deleted.
The machine-readable releaseWindow contract allows at most 72 hours, 20
post-cut commits, and five candidate runs for one tag. Post-cut subjects are
limited to release-safe fix, test, docs, ci, build, and
chore(release) commits. A feature or refactor requires abandoning the window,
integrating normally, and starting a new cut; never relabel a commit to evade the
policy. Each identity-valid dispatch first requires the active
immutable-release-candidate-attempt-tags repository ruleset with no bypass
actors, then reserves a protected release-candidates/vX.Y.Z/run-ID tag before
the remaining preflight gates. Deleting an Actions run does not restore its
attempt budget.
Run the smallest release-specific gates first:
python3 scripts/ci/check_release_contract.py
./gradlew :app:writeReleaseIdentityManifest
python3 -m unittest scripts.tests.test_app_identity_review
python3 scripts/ci/check_app_identity_review.py --report
./gradlew :app:verifyReleaseVersion -Pripdpi.releaseRefName=vX.Y.Z
python3 -m unittest \
scripts.tests.test_release_contract \
scripts.tests.test_release_p0_contracts \
scripts.tests.test_release_window \
scripts.tests.test_release_artifact_uploads
git diff --check <base-tag>..<candidate-sha>
The canonical local mirror is:
just release-preflight vX.Y.Z <window-start-sha> <window-started-at-utc>
It must complete all six secret-free full/simple release APK variants, the Play
Full bundle, the release AndroidTest build, and write
build/reports/release/preflight.json. Its PASS is host-ABI evidence
only: the receipt explicitly says it did not sign artifacts and does not replace
hosted exact-SHA CI. Never call a partial manual subset the local preflight.
Run the applicable broader CI, architecture, Cargo-lock, and release-verification
gates. Do not use -Pripdpi.skipNativeBuild=true as production artifact evidence.
Review the final diff for unintended files, generated drift, sensitive material,
changed release tasks, and inaccurate notes.
After authorized rebase and fast-forward integration, push main, verify remote
SHA equality, and wait for successful ci-required on that exact SHA.
Dispatch .github/workflows/release-candidate.yml on main with:
release_tag=vX.Y.Z;The workflow must pass its exact-SHA CI preflight before entering expensive
producer/signing jobs. Select the run by workflow path, event, ref, creation time,
and headSha; never select an arbitrary newest run. Require successful candidate
manifest verification, signer continuity, APK/AAB signature verification, native
ELF verification, and attestations. Record the run ID and source SHA.
Additional device/lab evidence is collected and reported only when the selected assurance profile calls for it. Never substitute debug or different-SHA evidence for the signed candidate.
Before publishing, present:
| Field | Required value |
|---|---|
| Version / versionCode | exact reviewed values |
| Candidate SHA | local and remote main SHA |
| Tag | absent locally and remotely |
| Main CI | successful ci-required for candidate SHA |
| Candidate | successful run ID for candidate SHA |
| Assurance profile | contract-defined name and evidence gaps |
| Release notes | approved file path and digest |
After explicit authorization:
RIPDPI_RELEASE_CANDIDATE_RUN_ID to the exact
successful candidate run if changing it is within the granted authority.vX.Y.Z at the candidate SHA and verify its peeled commit..github/workflows/release.yml run by path, event,
tag, and exact headSha.Never move, recreate, or force-push a published release tag. Preserve evidence on failure; prepare a new patch version when source bytes must change.
Require a successful tag workflow, a non-draft/non-prerelease GitHub Release, and
the exact asset inventory declared by the live workflow. Wrap download and
verification commands with scripts/ci/with-transient-release-downloads.sh and
write only below its RIPDPI_RELEASE_DOWNLOAD_DIR; the helper removes that exact
managed directory on exit. Verify SHA256SUMS, attestations, update.json,
version, package identity, URLs, and signer continuity. Apply the approved curated notes
without adding unsupported claims, then re-read the live release.
Report source/tag proof, local gates, exact-SHA main CI, candidate run, selected assurance profile, publish run, release URL/assets, checksums/attestations, device/lab evidence when requested, store publication status, and every remaining gap. Never call a local build, debug APK, emulator run, or changelog proof that a release shipped.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
RIPDPI's own Compose conventions: ViewModel pattern, Route/Screen split, DataStore->StateFlow, RipDpiThemeTokens. Use for how this app does Compose, not generic Compose API questions (see compose).
日本語の概要は準備中です。原文の説明を表示しています。
ADB-based RIPDPI device/emulator debugging: build/install/launch, logcat filtering, fixture port-forwarding, instrumented tests, crash/ANR triage. Use when debugging on a real device or emulator.
日本語の概要は準備中です。原文の説明を表示しています。
RIPDPI Appium launch-contract reference: start routes and permission/service/data presets. Use when a test launches to the wrong screen or a new automation route is added. General flakiness: appium-test-debug.
日本語の概要は準備中です。原文の説明を表示しています。
RIPDPI Appium test authoring: page objects, resource-id locators, assertions, wait tiers. Use when writing a new Appium test or page object, or adding coverage for a new screen.
日本語の概要は準備中です。原文の説明を表示しています。
RIPDPI Appium failure triage: flaky tests, locator/session/wait issues, screenshot and element-tree debugging. Use when an Appium test fails or is flaky.
日本語の概要は準備中です。原文の説明を表示しています。
Add or modify a GitHub Actions job. Use when editing a file under .github/workflows/. Not for running a workflow locally (local-ci-act) or release signing (release-signing).
日本語の概要は準備中です。原文の説明を表示しています。