[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FG1CPJB5AS9YRF3XAWW25C":3,"skill-same:01M6FG1CPJB5AS9YRF3XAWW25C":53},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":26,"linkOnly":27,"markdownContent":28,"markdownBody":28,"frontMatter":29,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":35,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":37,"updatedAt":38,"install":39,"resources":52},"01M6FG1CPJB5AS9YRF3XAWW25C","asc-workflow",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Frudrankriyam\u002Fapp-store-connect-cli-skills\u002Fasc-workflow\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25],"workflow","asc","asc workflow","2026-11-10 10:12:30",false,"# asc workflow\n\nUse this skill when you need lane-style automation inside the CLI using:\n- `asc workflow run`\n- `asc workflow validate`\n- `asc workflow list`\n\nThis feature is best for deterministic automation that lives in your repo, is reviewable in PRs, and can run the same way locally and in CI.\n\n## Command discovery\n\n- Always use `--help` to confirm flags and subcommands:\n  - `asc workflow --help`\n  - `asc workflow run --help`\n  - `asc workflow validate --help`\n  - `asc workflow list --help`\n\n## End-to-end flow\n\n1. Author `.asc\u002Fworkflow.json`\n2. Validate structure and references:\n   - `asc workflow validate`\n3. Discover available workflows:\n   - `asc workflow list`\n   - `asc workflow list --all` (includes private helpers)\n4. Preview execution without side effects:\n   - `asc workflow run --dry-run beta`\n5. Execute with runtime params:\n   - `asc workflow run beta BUILD_ID:123456789 GROUP_ID:abcdef`\n\n## File location and format\n\n- Default path: `.asc\u002Fworkflow.json`\n- Override path: `asc workflow run --file .\u002Fpath\u002Fto\u002Fworkflow.json \u003Cname>`\n- JSONC comments are supported (`\u002F\u002F` and `\u002F* ... *\u002F`)\n\n## Output and CI contract\n\n- `stdout`: structured JSON result (`status`, `steps`, durations)\n- `stderr`: step command output, hook output, dry-run previews\n- `asc workflow validate` always prints JSON and returns non-zero when invalid\n\nThis enables machine-safe checks:\n\n```bash\nasc workflow validate | jq -e '.valid == true'\nasc workflow run beta BUILD_ID:123 GROUP_ID:xyz | jq -e '.status == \"ok\"'\n```\n\n## Schema (what the feature supports)\n\nTop-level keys:\n- `env`: global defaults\n- `before_all`: command run once before steps\n- `after_all`: command run once after successful steps\n- `error`: command run when any failure occurs\n- `workflows`: named workflow map\n\nWorkflow keys:\n- `description`\n- `private` (not directly runnable)\n- `env`\n- `steps`\n\nStep forms:\n- String shorthand: `\"echo hello\"` -> run step\n- Object with:\n  - `run`: shell command\n  - `workflow`: call sub-workflow\n  - `name`: label for reporting\n  - `if`: conditional var name\n  - `with`: env overrides for workflow-call steps only\n\n## Runtime params (`KEY:VALUE` \u002F `KEY=VALUE`)\n\n- `asc workflow run \u003Cname> [KEY:VALUE ...]` supports both separators:\n  - `VERSION:2.1.0`\n  - `VERSION=2.1.0`\n- If both separators exist, the first one wins.\n- Repeated keys are last-write-wins.\n- In step commands, reference params via shell expansion (`$VAR`).\n- Avoid putting secrets in `.asc\u002Fworkflow.json`; pass them via CI secrets\u002Fenv.\n\n## Run-tail flags\n\n`asc workflow run` also accepts core flags after the workflow name:\n- `--dry-run`\n- `--pretty`\n- `--file`\n\nExamples:\n- `asc workflow run beta --dry-run`\n- `asc workflow run beta --file .asc\u002Fworkflow.json BUILD_ID:123`\n\n## Execution semantics\n\n- `before_all` runs once before step execution\n- `after_all` runs only when steps succeed\n- `error` runs on failure (step failure, before\u002Fafter hook failure)\n- Sub-workflows are executed inline as part of the call step\n- Maximum sub-workflow nesting depth is 16\n\n## Env precedence\n\nMain workflow run:\n- `definition.env` \u003C `workflow.env` \u003C CLI params\n\nSub-workflow call step (`\"workflow\": \"...\", \"with\": {...}`):\n- sub-workflow `env` defaults\n- caller env (including CLI params) overrides\n- step `with` overrides all\n\n## Sub-workflows and private workflows\n\n- Use `\"workflow\": \"\u003Cname>\"` to call helper workflows.\n- Use `\"private\": true` for helper-only workflows.\n- Private workflows:\n  - cannot be run directly\n  - can be called by other workflows\n  - are hidden from `asc workflow list` unless `--all` is used\n- Validation catches unknown workflow references and cyclic references.\n\n## Conditionals (`if`)\n\n- Add `\"if\": \"VAR_NAME\"` on a step.\n- Step runs only if `VAR_NAME` is truthy.\n- Truthy: `1`, `true`, `yes`, `y`, `on` (case-insensitive).\n- Resolution order for `if` lookup:\n  1. merged workflow env\u002Fparams\n  2. `os.Getenv(VAR_NAME)`\n\n## Dry-run behavior\n\n- `asc workflow run --dry-run \u003Cname>` does not execute commands.\n- It prints previews to `stderr`.\n- Dry-run shows raw commands (without env expansion), which helps avoid secret leakage in previews.\n\n## Shell behavior\n\n- Run steps use `bash -o pipefail -c` when bash is available.\n- Fallback is `sh -c` when bash is unavailable.\n- Pipelines therefore fail correctly in most CI shells when bash exists.\n\n## Practical authoring rules\n\n- Keep workflow files in version control.\n- Use IDs in step commands where possible for deterministic automation.\n- Use `--confirm` for destructive `asc` operations inside steps.\n- Validate first, then dry-run, then real run.\n- Keep hooks lightweight and side-effect aware.\n\n```json\n{\n  \"env\": {\n    \"APP_ID\": \"123456789\",\n    \"VERSION\": \"1.0.0\"\n  },\n  \"before_all\": \"asc auth status\",\n  \"after_all\": \"echo workflow_done\",\n  \"error\": \"echo workflow_failed\",\n  \"workflows\": {\n    \"beta\": {\n      \"description\": \"Distribute a build to a TestFlight group and notify\",\n      \"env\": {\n        \"GROUP_ID\": \"\"\n      },\n      \"steps\": [\n        {\n          \"name\": \"list_builds\",\n          \"run\": \"asc builds list --app $APP_ID --sort -uploadedDate --limit 5\"\n        },\n        {\n          \"name\": \"list_groups\",\n          \"run\": \"asc testflight groups list --app $APP_ID --limit 20\"\n        },\n        {\n          \"name\": \"add_build_to_group\",\n          \"if\": \"BUILD_ID\",\n          \"run\": \"asc builds add-groups --build $BUILD_ID --group $GROUP_ID\"\n        },\n        {\n          \"name\": \"notify\",\n          \"if\": \"SLACK_WEBHOOK\",\n          \"run\": \"echo sent_release_notice\"\n        }\n      ]\n    },\n    \"release\": {\n      \"description\": \"Submit a version for App Store review\",\n      \"steps\": [\n        {\n          \"workflow\": \"sync-metadata\",\n          \"with\": {\n            \"METADATA_DIR\": \".\u002Fmetadata\"\n          }\n        },\n        {\n          \"name\": \"submit\",\n          \"run\": \"asc submit create --app $APP_ID --version $VERSION --build $BUILD_ID --confirm\"\n        }\n      ]\n    },\n    \"sync-metadata\": {\n      \"private\": true,\n      \"description\": \"Private helper workflow (callable only via workflow steps)\",\n      \"steps\": [\n        {\n          \"name\": \"migrate_validate\",\n          \"run\": \"echo METADATA_DIR_is_$METADATA_DIR\"\n        }\n      ]\n    }\n  }\n}\n```\n\n## Useful invocations\n\n```bash\n# Validate and fail CI on invalid file\nasc workflow validate | jq -e '.valid == true'\n\n# Show discoverable workflows\nasc workflow list --pretty\n\n# Include private helpers\nasc workflow list --all --pretty\n\n# Preview a real run\nasc workflow run --dry-run beta BUILD_ID:123 GROUP_ID:grp_abc\n\n# Run with params and assert success\nasc workflow run beta BUILD_ID:123 GROUP_ID:grp_abc | jq -e '.status == \"ok\"'\n```\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Frudrankriyam\u002Fapp-store-connect-cli-skills\u002Fasc-workflow",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill asc-workflow",{"tool":45,"command":46},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill asc-workflow",{"tool":48,"command":49},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill asc-workflow","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Frudrankriyam\u002Fapp-store-connect-cli-skills\u002Fasc-workflow\u002FSKILL.md",true,[],[54,64,74,83,89,96],{"skillNo":55,"name":56,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":60,"publishedAt":26},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[59],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[61,62,63],"model","model hierarchy","model hierarchy skill",{"skillNo":65,"name":66,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":70,"publishedAt":26},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[69],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[71,72,73],"MCP","zoom","zoom mcp",{"skillNo":75,"name":76,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":26},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[80,81,82,72],"sdk","zoom apps sdk","apps",{"skillNo":84,"name":85,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":26},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[85],{"skillNo":90,"name":91,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":95,"publishedAt":26},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[94],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[91],{"skillNo":97,"name":98,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":26},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[98]]