
Gpc Train
- 20 installs
- 1 repo stars
- Updated August 1, 2026
- yasserstudio/gpc-skills
Helps with ai & agent building tasks.
About
gpc-train is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- gpc-train
- AI & Agent Building
- AI-coding skill
Gpc Train by the numbers
- 20 all-time installs (skills.sh)
- Ranked #10,459 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/yasserstudio/gpc-skills --skill gpc-trainAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 20 |
|---|---|
| repo stars | ★ 1 |
| Last updated | August 1, 2026 |
| Repository | yasserstudio/gpc-skills ↗ |
What it does
Helps with ai & agent building tasks.
Files
GPC Release Train
When to use
Use this skill when the task involves:
- Setting up a config-driven staged rollout pipeline
- Automatically progressing a release through tracks (internal → alpha → production) with time gates
- Gating progression on crash rate and ANR rate thresholds
- Pausing, resuming, or aborting an in-flight release train
- Checking the current stage and gate health of a running train
Inputs required
- Package name (or configured default in
.gpcrc.json) - Release train config: stages with tracks, rollout percentages, and time delays
- Gate thresholds: max crash rate and max ANR rate
- Whether to pause, resume, or abort the train
Procedure
1) Configure the release train
Add a release-train block to .gpcrc.json in the project root:
{
"release-train": {
"stages": [
{ "track": "internal", "rollout": 100 },
{ "track": "alpha", "rollout": 100, "after": "2d" },
{ "track": "production", "rollout": 10, "after": "7d" },
{ "track": "production", "rollout": 100, "after": "14d" }
],
"gates": { "crashes": { "max": 1.5 }, "anr": { "max": 0.5 } }
}
}Config keys:
| Key | Type | Description |
|---|---|---|
stages[].track | string | Target track: internal, alpha, beta, production |
stages[].rollout | number | Rollout percentage for this stage (1–100) |
stages[].after | string | Minimum time to wait before this stage (e.g., 2d, 12h, 30m). Omit for immediate. |
gates.crashes.max | number | Maximum crash rate percentage before pausing progression |
gates.anr.max | number | Maximum ANR rate percentage before pausing progression |
Read:
references/rollout-pipeline.md
2) Start the train
gpc train startThis reads .gpcrc.json, creates a state file at ~/.cache/gpc/train-<packageName>.json, and begins executing the first stage immediately. Subsequent stages are executed when the after time has elapsed and gates pass.
# Resume a paused train
gpc train start --resume3) Check train status
gpc train statusOutput:
Release Train · com.example.app
Stage 2 / 4 alpha @ 100% in progress
Last progressed: 2026-03-17 11:00 (2 days ago)
Next stage: production @ 10% eligible in 5 days
Gates (last check: 10 minutes ago)
crashes 0.82% ✓ (max 1.5%)
anr 0.19% ✓ (max 0.5%)# Resume if paused due to a gate failure
gpc train status --resume4) Monitor gate health
Before each stage transition, gpc train automatically checks the configured gates:
- If all gates pass, the stage progresses (subject to the
aftertime having elapsed). - If any gate fails, progression is paused and a warning is shown.
- The user must fix the regression and re-run
gpc train start --resumeorgpc train status --resume.
Gate checks call the same vitals API as gpc vitals crashes and gpc vitals anr. Data lag of 6–48 hours applies to new releases — avoid configuring gates on the very first stage.
5) Pause a running train
gpc train pausePauses automatic progression. Does not halt or change the active rollout on any track. Run gpc train start --resume to continue.
6) Abort the train
gpc train abortAborts the train and halts all active rollouts on tracks managed by this train. State file is cleared. Use when a critical regression is found and the release must be stopped immediately.
Verification
gpc train statusshows the correct current stage and gate health valuesgpc statusconfirms rollout percentages on each track match the active stage in the train config- Gate values (crashes, ANR) are below configured
maxthresholds - State file at
~/.cache/gpc/train-<packageName>.jsonreflects the current stage index and last progression timestamp
Failure modes / debugging
| Symptom | Likely Cause | Fix |
|---|---|---|
| Gate check fails | Crash/ANR rate above configured max | Fix the regression in a new release, then gpc train start --resume |
Train already running | Previous train was not completed or aborted | gpc train status to check state; gpc train abort if needed |
| Stage progression skipped | after time has not elapsed | gpc train status shows time remaining until next eligible stage |
| Train aborted unexpectedly | Gate threshold breached automatically | Check gpc vitals crashes and gpc vitals anr, fix regression, then restart |
| State file missing | Cache directory cleared or different machine | Re-run gpc train start — it will re-read .gpcrc.json and restart from stage 1 |
Read:
references/rollout-pipeline.md— full lifecycle: config → start → gate check → progress → complete
Related skills
- gpc-release-flow: Upload, promote, and manual rollout management
- gpc-vitals-monitoring: Crash and ANR monitoring used by gate checks
- gpc-ci-integration: Running
gpc trainin CI/CD pipelines
{
"skill_name": "gpc-train",
"evals": [
{
"id": 1,
"prompt": "I want to set up an automated release pipeline for my app. The plan is: push to internal first, then after 2 days move to alpha at 100%, then after 7 days go to production at 10%, and after 14 days complete the rollout to 100%. I also want it to stop automatically if crash rate goes above 1.5% or ANR rate above 0.5%. How do I configure this with gpc?",
"expected_output": "Shows the full .gpcrc.json release-train config and the gpc train start command",
"files": [],
"expectations": [
"Provides a .gpcrc.json release-train block with 4 stages: internal@100, alpha@100 after 2d, production@10 after 7d, production@100 after 14d",
"Includes gates config with crashes.max: 1.5 and anr.max: 0.5",
"Shows gpc train start to kick off the pipeline",
"Mentions gpc train status for checking progress",
"Explains that gate checks happen automatically before each stage transition"
]
},
{
"id": 2,
"prompt": "My release train stopped progressing and I'm not sure why. It was on stage 3 — production at 10% — and it was supposed to move to 100% two days ago but nothing happened. How do I find out what went wrong?",
"expected_output": "Explains gate failure as the most likely cause, shows how to diagnose and resume",
"files": [],
"expectations": [
"Suggests running gpc train status to see gate health and any failure reason",
"Explains that a crash or ANR rate above the configured gate threshold will pause progression",
"Shows gpc vitals crashes and gpc vitals anr to check current metric values against configured thresholds",
"Explains that the user must fix the regression (new release) and then run gpc train start --resume or gpc train status --resume",
"Mentions that the after time delay must also have elapsed before progression can occur"
]
},
{
"id": 3,
"prompt": "We found a critical crash affecting a large percentage of users on our latest release. The release train is currently at stage 3 — production at 10% rollout. We need to stop everything immediately. What's the fastest way to kill the train and halt the rollout?",
"expected_output": "Shows gpc train abort and explains what it does, with follow-up steps to investigate",
"files": [],
"expectations": [
"Shows gpc train abort as the primary command",
"Explains that abort halts all active rollouts managed by the train, not just pauses progression",
"Distinguishes abort from gpc train pause (pause does not halt the rollout)",
"Suggests gpc vitals crashes --version <code> to investigate the regression after aborting",
"Mentions gpc releases rollout halt --track production as an alternative if the train has already exited but rollout is still active"
]
},
{
"id": 4,
"prompt": "How do I check which stage my release train is currently on and whether the gates are healthy?",
"expected_output": "Shows gpc train status with a description of the output format",
"files": [],
"expectations": [
"Shows gpc train status as the primary command",
"Describes the output: current stage number, track, rollout percentage, last progression time",
"Describes gate health display: current crash rate and ANR rate vs configured max thresholds",
"Mentions that time remaining until the next stage is shown when the after delay has not yet elapsed",
"Notes that gpc status (without train) can confirm rollout percentages on each track match the active stage"
]
}
]
}
Release Train — Full Lifecycle
End-to-end reference for the gpc train config-driven staged rollout pipeline.
Overview
configure .gpcrc.json → gpc train start → stage 1 (immediate)
→ [wait: after time] → gate check → stage 2
→ [wait: after time] → gate check → stage 3
→ [wait: after time] → gate check → stage 4 → completeEach stage transition requires two conditions to be met: 1. The after time delay has elapsed since the previous stage. 2. All configured gates (crash rate, ANR rate) are below their max thresholds.
If either condition fails, progression is paused until the issue is resolved and the user resumes.
State file
The train stores its progress in:
~/.cache/gpc/train-<packageName>.jsonExample state:
{
"packageName": "com.example.app",
"startedAt": "2026-03-15T10:00:00Z",
"currentStageIndex": 2,
"lastProgressedAt": "2026-03-17T10:05:00Z",
"status": "running",
"gateFailures": []
}Status values: running, paused, aborted, complete.
Config reference
{
"release-train": {
"stages": [
{ "track": "internal", "rollout": 100 },
{ "track": "alpha", "rollout": 100, "after": "2d" },
{ "track": "production", "rollout": 10, "after": "7d" },
{ "track": "production", "rollout": 100, "after": "14d" }
],
"gates": {
"crashes": { "max": 1.5 },
"anr": { "max": 0.5 }
}
}
}Time format for after
| Value | Meaning |
|---|---|
30m | 30 minutes |
12h | 12 hours |
2d | 2 days (48 hours) |
7d | 7 days |
14d | 14 days |
Omitting after means the stage is eligible immediately (subject to gate checks still passing).
Phase-by-phase lifecycle
Phase 1 — Config
Create or update .gpcrc.json with the release-train block. This is the single source of truth for stage definitions and gate thresholds. Commit this file to source control so all team members and CI share the same pipeline definition.
Phase 2 — Start
gpc train start- Reads
.gpcrc.json. - Creates the state file at
~/.cache/gpc/train-<packageName>.json. - Executes stage 0 immediately (no
afterdelay, no gate check on the first stage). - Transitions: promotes the release to the configured track at the configured rollout percentage.
- Logs the start timestamp to the state file.
Phase 3 — Gate check
Before each stage transition (stages 1+), gpc train evaluates the configured gates:
crash rate ≤ gates.crashes.max → pass
ANR rate ≤ gates.anr.max → passIf both pass and the after time has elapsed, progression continues. If either fails, the state is set to paused and a warning is printed:
Gate failed: crash rate 2.1% exceeds max 1.5%
Progression paused. Fix the regression and run: gpc train start --resumeThe gate check uses the same vitals API as gpc vitals crashes and gpc vitals anr. Note that vitals data for a newly released version takes 6–48 hours to populate — configure your after delays accordingly.
Phase 4 — Progression
When both conditions are met (time elapsed + gates pass), the train:
1. Calls the appropriate GPC release command for the next stage (promote, rollout increase, or rollout complete). 2. Updates currentStageIndex and lastProgressedAt in the state file. 3. Prints a progress line showing the new stage.
Phase 5 — Complete
When the final stage is executed successfully, the state file status is set to complete and the train exits cleanly:
Release train complete. All stages executed.
internal → alpha → production@10% → production@100%Commands at a glance
| Command | What it does |
|---|---|
gpc train start | Start the train from stage 0, or restart a completed/aborted train |
gpc train start --resume | Resume a paused train from the current stage |
gpc train status | Show current stage, last progression time, time until next stage, gate health |
gpc train status --resume | Show status and attempt to resume if paused and gates now pass |
gpc train pause | Pause automatic progression (does not halt active rollout) |
gpc train abort | Abort the train and halt all active rollouts on managed tracks |
Pause vs abort
| Pause | Abort | |
|---|---|---|
| Stops stage progression | Yes | Yes |
| Halts active rollout | No | Yes |
| Clears state file | No | Yes |
| How to recover | gpc train start --resume | gpc train start (from stage 0) |
Use pause when you want to temporarily hold the pipeline (e.g., over a holiday weekend) without touching the active rollout.
Use abort when a critical regression requires immediately stopping distribution and starting over.
Gate failure recovery flow
1. gpc train status → confirm gate failure and which metric
2. gpc vitals crashes → inspect crash rate and top clusters
3. gpc vitals anr → inspect ANR rate
4. Fix the regression → ship a new build to internal
5. gpc train start --resume → resume from the paused stageIf the fix requires a brand-new release (new version code), abort the current train and start a new one:
gpc train abort
# ... upload new AAB, set release notes ...
gpc train startCI usage
Run the train check in CI to assert that a train is healthy before a deployment step:
- name: Check train gate health
run: gpc train status
# Exits non-zero if the train is in a failed/aborted stateOr start and detach (fire-and-forget) in an async CI pipeline:
- name: Start release train
run: gpc train startThe train state persists in ~/.cache/gpc/ — use a persistent cache volume if running across CI jobs.
Timing reference
| Gate data type | Data lag |
|---|---|
| Crash rate for new version | 6–48 hours after rollout begins |
| ANR rate for new version | 6–48 hours after rollout begins |
| Play Store review data | 1–24 hours |
Set after delays that are long enough for meaningful vitals data to accumulate before gate checks run. A minimum of 2d on any production stage is recommended.