Appstore workflow runner
Skill Xopoko/plug-n-skills/plugins/build-swift-apps/skills/appstore-workflow-runner
Define, validate, run, resume, and audit repo-local `.asc/workflow.json` automations with current `asc workflow`, including safe release/TestFlight flows and step outputs.From its SKILL.md
npx -y skills add Xopoko/plug-n-skills --skill appstore-workflow-runnerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 9 stars9 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.2 KB, 791 tokens by cl100k_base, as published. Nobody here has run it
App Store Workflow Runner
Use asc workflow for lane-style repo-local automation. Workflows run trusted shell commands, stream step output to stderr, and keep stdout machine-readable JSON.
Commands
Verify flags first:
asc workflow --help
asc workflow validate --help
asc workflow list --help
asc workflow run --help
Run flow:
asc workflow validate
asc workflow list
asc workflow list --all
asc workflow run --dry-run beta BUILD_ID:123 GROUP_ID:abc
asc workflow run beta BUILD_ID:123 GROUP_ID:abc
asc workflow run release --resume "release-20260312T120000Z-deadbeef"
Do not pass new KEY:VALUE params with --resume; saved workflow, params, and outputs are reused.
File Contract
- Default:
.asc/workflow.json; override with--file. - JSONC comments supported.
- Top-level hooks:
before_all,after_all,error. - Workflow keys:
description,private,env,steps. - Step forms: string shorthand,
run,workflow,name,if,with,outputs. - Runtime params accept
KEY:VALUEandKEY=VALUE; repeated keys are last-write-wins. - Env precedence:
definition.env < workflow.env < CLI params; for sub-workflows:sub env < caller env/params < step with. - Conditional truthy values:
1,true,yes,y,on.
Outputs:
runsteps that declareoutputsmust emit JSON stdout, have unique reference-safename, and should callasc ... --output json.- Reference as
${steps.step_name.OUTPUT_NAME}. - Do not map secrets into persisted outputs.
Minimal Example
{
"env": { "APP_ID": "123", "VERSION": "1.0.0", "GROUP_ID": "" },
"before_all": "asc auth status",
"workflows": {
"beta": {
"description": "Resolve latest build and distribute to TestFlight",
"steps": [
{
"name": "resolve_build",
"run": "asc builds info --app $APP_ID --latest --platform IOS --output json",
"outputs": { "BUILD_ID": "$.data.id" }
},
{ "name": "groups", "run": "asc testflight groups list --app $APP_ID --limit 20 --output json" },
{ "name": "add", "if": "GROUP_ID", "run": "asc builds add-groups --build-id ${steps.resolve_build.BUILD_ID} --group $GROUP_ID" }
]
},
"release": {
"steps": [
{ "name": "validate", "run": "asc validate --app $APP_ID --version $VERSION --platform IOS --output json" },
{ "name": "stage", "run": "asc release stage --app $APP_ID --version $VERSION --build $BUILD_ID --metadata-dir ./metadata/version/$VERSION --confirm --output json" },
{ "name": "submit", "if": "SUBMIT_FOR_REVIEW", "run": "asc review submit --app $APP_ID --version $VERSION --build $BUILD_ID --confirm --output json" }
]
}
}
}
Agent Rules
- Keep workflows repo-local and reviewed; do not put secrets in workflow JSON or outputs.
- Prefer dry-run before mutating release/TestFlight flows.
- Use
private: truefor helper workflows not meant for direct listing. - After failures, preserve run ID and resume only when the command indicates recovery is safe.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.