Appstore workflow runner
Skill Xopoko/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/build-swift-apps --skill appstore-workflow-runnerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
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.