[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71J2JMW34PQPW7SZGZ613GG":3,"skill-same:01M71J2JMW34PQPW7SZGZ613GG":68},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":34,"commitSha":43,"skillDirectory":44,"forksCount":13,"repositoryHtmlUrl":45,"repositoryHomepageUrl":6,"ownerHtmlUrl":46,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":47,"install":48,"resources":61},"01M71J2JMW34PQPW7SZGZ613GG","ci-fix",null,"A thin wrapper that collects logs from a failed CI run, formats the context, and connects to `\u002Fdrive`. Input resolution (explicit run id > latest failure on an explicit branch > latest failure on the current branch) → flaky determination (one `gh run rerun --failed` + polling; skipped with `--no-rerun`) → log extraction (`gh run view --log-failed`; the ANSI-stripping + error-line extraction regex is the same as health's same-error determination) → assembling the instruction text → launching `\u002Fdrive`. `--dry-run` outputs only the instruction text (no rerun, no drive launch). A failure on the main branch is called out as high priority at the top of the report.","ozzy-labs\u002Fskills","ozzy-labs","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F246109093?v=4","01M6H0M2K2PZXHWNHJJTWY20FY","01M71J2B6FZ5KPEXPR5VS1TX7Z",0,"MIT","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fci-fix\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"fix","ci","ci fix","Wrapper","context","input","formats","line","at","rerun","run","top","text","dry","log","logs","main","only","branch","error","2026-11-10 10:12:30",false,"---\nname: ci-fix\ndescription: A thin wrapper that collects logs from a failed CI run, formats the context, and connects to `\u002Fdrive`. Input resolution (explicit run id > latest failure on an explicit branch > latest failure on the current branch) → flaky determination (one `gh run rerun --failed` + polling; skipped with `--no-rerun`) → log extraction (`gh run view --log-failed`; the ANSI-stripping + error-line extraction regex is the same as health's same-error determination) → assembling the instruction text → launching `\u002Fdrive`. `--dry-run` outputs only the instruction text (no rerun, no drive launch). A failure on the main branch is called out as high priority at the top of the report.\n---\n\n# ci-fix - Format context for a failed CI run → connect to drive\n\nA **thin wrapper responsible only for collecting logs from a failed CI run and formatting the context**. Since implementation, fixing, and PR creation are `\u002Fdrive`'s responsibility, this skill goes only as far as determining \"which run to target,\" \"whether it's flaky,\" and \"what failed,\" and then passing the formatted **instruction text** to `\u002Fdrive` in single mode. This establishes a skill-level path to close health's Recent failed actions (area 13).\n\nThe deterministic processing (input resolution priority \u002F flaky determination flow \u002F error extraction regex) is a fixed contract in this SKILL.md, and Claude does not change the order or regex on its own judgment.\n\n## Input\n\n```text\nci-fix [\u003Crun-id> | --branch \u003Cname>]\n  --no-rerun   skips the flaky determination (rerun) (use when you want to avoid consuming credits)\n  --dry-run    outputs only the instruction text (no rerun, no drive launch; no side effects)\n  --auto       skips confirmation before launching drive (see the Claude Code companion)\n```\n\n`\u003Crun-id>` and `--branch` are not specified together (run id takes priority).\n\n## Input resolution priority (fixed)\n\nThe target run is resolved in the order in the table below. Once a higher-priority entry resolves, lower-priority entries are not evaluated (fixed order; Claude does not reinterpret it).\n\n| Rank | Input | Resolution method |\n| --- | --- | --- |\n| 1 | Explicit run id (`\u003Crun-id>`) | Target that run |\n| 2 | Explicit branch (`--branch \u003Cname>`) | The latest failure from `gh run list --branch \u003Cname> --status failure --limit 1` |\n| 3 | Current branch (no input) | The latest failure from `gh run list --branch \u003Ccurrent-branch> --status failure --limit 1` |\n\nIf there is no matching failed run, report \"**no failed run**\" and end (drive is not launched).\n\n**A failure on the main branch is treated as high priority** (= broken merged code) and called out at the top of the report. If the target run's branch is `main`, output `⚠️ main branch failure (merged code broken)` as the first line.\n\n## Flaky determination (up front)\n\nTo avoid passing a non-reproducing failure (flaky) to drive, it is rerun once **before** log extraction to determine this. When `--no-rerun` is specified, this entire step is skipped and it proceeds directly to log extraction.\n\n1. Run `gh run rerun \u003Cid> --failed` **only once** (reruns only the failed jobs).\n2. Poll until completion: **30-second interval, 15-minute cap**. Wait for `status=completed` via `gh run view \u003Cid> --json status,conclusion`.\n3. Determination:\n   - If the rerun completes as `success` → report \"**flaky (no fix needed)**\" and end (drive is not launched).\n   - If the rerun fails again (`failure`) → treat it as a reproducing failure and proceed to the \"Log extraction\" step below.\n   - If polling reaches the 15-minute cap → end as `要確認` (undeterminable) (drive is not launched).\n\nWith `--no-rerun`, no rerun is performed, and the most recent failed run's log is used directly as the extraction target (whether it is flaky is not determined).\n\n## Log extraction\n\nOnly for reproducing failures, extract an error summary from the failure log.\n\n```bash\ngh run view \u003Cid> --log-failed | tail -200\n```\n\nExtraction has two stages:\n\n1. **ANSI stripping:** replace `\u002F\\[[0-9;]*m\u002Fg` with an empty string.\n2. **Error-line extraction:** match `\u002F(error|Error|failed)[\\s:].*$\u002F` against each line, and use the matched portion of the **last matching line** as the summary key.\n\nThese two regexes are **identical to health `--deep`'s same-error determination** (the SSOT is `.agents\u002Fskills\u002Fhealth\u002Fhealth-check.mjs`'s `stripAnsi` and `extractCiErrorKey`). `tests\u002Fci-fix.test.mjs` enforces the regex match between health-check.mjs and this SKILL.md via a sync assertion (to prevent drift). If the regex changes, revise both the health side and this SKILL.md together.\n\n## Instruction text (template)\n\nThe instruction text passed to drive is assembled in the following format. Omit items that are unknown (do not fill them with blanks).\n\n```text\nCI failure on \u003Cworkflow-name> (branch: \u003Cbranch>, run: \u003Crun-id>)\n\n  Job:   \u003Cfailed-job>\n  Step:  \u003Cfailed-step>\n  Error: \u003Cextracted error summary>\n  Workflow file: \u003Cpath to the file under .github\u002Fworkflows\u002Fxxx.yaml>\n  Repro: \u003Creproduction command, if known. e.g. pnpm test \u002F pnpm run lint>\n\nInvestigate the above CI failure, fix the cause, and create a PR.\n```\n\nFill `\u003Cworkflow-name>` \u002F `\u003Cfailed-job>` \u002F `\u003Cfailed-step>` from the output of `gh run view \u003Cid> --json`, and the workflow file path from the corresponding file under `.github\u002Fworkflows\u002F`.\n\n## Connecting to drive\n\n- **Default:** present the assembled instruction text for confirmation, and after approval launch single-mode `\u002Fdrive \"\u003Cinstruction text>\"` (the confirmation UI wiring is host-dependent — for Claude Code it's the AskUserQuestion in `SKILL.claude-code.md`). Since launching drive is an **externally-visible action** (PR creation), confirmation is inserted by default.\n- **`--auto`:** skips confirmation before launching and launches `\u002Fdrive` directly (an explicit opt-out of the externally-visible action).\n- **`--dry-run`:** only outputs the instruction text and **performs neither the rerun nor the drive launch** (see \"Boundary of side effects\" below).\n\n## Boundary of side effects\n\n| Flag | rerun (`gh run rerun`) | drive launch |\n| --- | --- | --- |\n| (default) | Yes (once) | After confirmation |\n| `--no-rerun` | No | After confirmation |\n| `--auto` | Yes (once) | Without confirmation |\n| `--dry-run` | **No** | **No** |\n\n`--dry-run` has **no side effects** (neither credit consumption from rerun nor PR creation by drive occurs). Even when `--dry-run` is specified together with other flags, `--dry-run`'s \"output only\" takes priority.\n\n## Out of scope\n\n| Item | Reason for exclusion |\n| --- | --- |\n| 1. Actual fixing and PR creation | drive's responsibility. This skill only does input resolution and context formatting |\n| 2. Multiple reruns for flakiness | Rerun happens only once (to limit credit consumption). If it passes once, it's flaky; if not, it's treated as reproducing |\n| 3. Batch processing of multiple runs | Only 1 run is targeted. Multiple failures are launched individually |\n\n## Notes\n\n- Do not read or stage `.env` files\n- If the `gh` CLI is not authenticated, display an error message and abort\n- The SSOT for the error-extraction regex is health (`health-check.mjs`'s `extractCiErrorKey`). This skill documents the identical regex and enforces the match via tests (it does not extend the regex itself on its own, to prevent drift from restating it)\n- If the target run's branch is `main`, call it out as high priority at the top of the report\n","# ci-fix - Format context for a failed CI run → connect to drive\n\nA **thin wrapper responsible only for collecting logs from a failed CI run and formatting the context**. Since implementation, fixing, and PR creation are `\u002Fdrive`'s responsibility, this skill goes only as far as determining \"which run to target,\" \"whether it's flaky,\" and \"what failed,\" and then passing the formatted **instruction text** to `\u002Fdrive` in single mode. This establishes a skill-level path to close health's Recent failed actions (area 13).\n\nThe deterministic processing (input resolution priority \u002F flaky determination flow \u002F error extraction regex) is a fixed contract in this SKILL.md, and Claude does not change the order or regex on its own judgment.\n\n## Input\n\n```text\nci-fix [\u003Crun-id> | --branch \u003Cname>]\n  --no-rerun   skips the flaky determination (rerun) (use when you want to avoid consuming credits)\n  --dry-run    outputs only the instruction text (no rerun, no drive launch; no side effects)\n  --auto       skips confirmation before launching drive (see the Claude Code companion)\n```\n\n`\u003Crun-id>` and `--branch` are not specified together (run id takes priority).\n\n## Input resolution priority (fixed)\n\nThe target run is resolved in the order in the table below. Once a higher-priority entry resolves, lower-priority entries are not evaluated (fixed order; Claude does not reinterpret it).\n\n| Rank | Input | Resolution method |\n| --- | --- | --- |\n| 1 | Explicit run id (`\u003Crun-id>`) | Target that run |\n| 2 | Explicit branch (`--branch \u003Cname>`) | The latest failure from `gh run list --branch \u003Cname> --status failure --limit 1` |\n| 3 | Current branch (no input) | The latest failure from `gh run list --branch \u003Ccurrent-branch> --status failure --limit 1` |\n\nIf there is no matching failed run, report \"**no failed run**\" and end (drive is not launched).\n\n**A failure on the main branch is treated as high priority** (= broken merged code) and called out at the top of the report. If the target run's branch is `main`, output `⚠️ main branch failure (merged code broken)` as the first line.\n\n## Flaky determination (up front)\n\nTo avoid passing a non-reproducing failure (flaky) to drive, it is rerun once **before** log extraction to determine this. When `--no-rerun` is specified, this entire step is skipped and it proceeds directly to log extraction.\n\n1. Run `gh run rerun \u003Cid> --failed` **only once** (reruns only the failed jobs).\n2. Poll until completion: **30-second interval, 15-minute cap**. Wait for `status=completed` via `gh run view \u003Cid> --json status,conclusion`.\n3. Determination:\n   - If the rerun completes as `success` → report \"**flaky (no fix needed)**\" and end (drive is not launched).\n   - If the rerun fails again (`failure`) → treat it as a reproducing failure and proceed to the \"Log extraction\" step below.\n   - If polling reaches the 15-minute cap → end as `要確認` (undeterminable) (drive is not launched).\n\nWith `--no-rerun`, no rerun is performed, and the most recent failed run's log is used directly as the extraction target (whether it is flaky is not determined).\n\n## Log extraction\n\nOnly for reproducing failures, extract an error summary from the failure log.\n\n```bash\ngh run view \u003Cid> --log-failed | tail -200\n```\n\nExtraction has two stages:\n\n1. **ANSI stripping:** replace `\u002F\\[[0-9;]*m\u002Fg` with an empty string.\n2. **Error-line extraction:** match `\u002F(error|Error|failed)[\\s:].*$\u002F` against each line, and use the matched portion of the **last matching line** as the summary key.\n\nThese two regexes are **identical to health `--deep`'s same-error determination** (the SSOT is `.agents\u002Fskills\u002Fhealth\u002Fhealth-check.mjs`'s `stripAnsi` and `extractCiErrorKey`). `tests\u002Fci-fix.test.mjs` enforces the regex match between health-check.mjs and this SKILL.md via a sync assertion (to prevent drift). If the regex changes, revise both the health side and this SKILL.md together.\n\n## Instruction text (template)\n\nThe instruction text passed to drive is assembled in the following format. Omit items that are unknown (do not fill them with blanks).\n\n```text\nCI failure on \u003Cworkflow-name> (branch: \u003Cbranch>, run: \u003Crun-id>)\n\n  Job:   \u003Cfailed-job>\n  Step:  \u003Cfailed-step>\n  Error: \u003Cextracted error summary>\n  Workflow file: \u003Cpath to the file under .github\u002Fworkflows\u002Fxxx.yaml>\n  Repro: \u003Creproduction command, if known. e.g. pnpm test \u002F pnpm run lint>\n\nInvestigate the above CI failure, fix the cause, and create a PR.\n```\n\nFill `\u003Cworkflow-name>` \u002F `\u003Cfailed-job>` \u002F `\u003Cfailed-step>` from the output of `gh run view \u003Cid> --json`, and the workflow file path from the corresponding file under `.github\u002Fworkflows\u002F`.\n\n## Connecting to drive\n\n- **Default:** present the assembled instruction text for confirmation, and after approval launch single-mode `\u002Fdrive \"\u003Cinstruction text>\"` (the confirmation UI wiring is host-dependent — for Claude Code it's the AskUserQuestion in `SKILL.claude-code.md`). Since launching drive is an **externally-visible action** (PR creation), confirmation is inserted by default.\n- **`--auto`:** skips confirmation before launching and launches `\u002Fdrive` directly (an explicit opt-out of the externally-visible action).\n- **`--dry-run`:** only outputs the instruction text and **performs neither the rerun nor the drive launch** (see \"Boundary of side effects\" below).\n\n## Boundary of side effects\n\n| Flag | rerun (`gh run rerun`) | drive launch |\n| --- | --- | --- |\n| (default) | Yes (once) | After confirmation |\n| `--no-rerun` | No | After confirmation |\n| `--auto` | Yes (once) | Without confirmation |\n| `--dry-run` | **No** | **No** |\n\n`--dry-run` has **no side effects** (neither credit consumption from rerun nor PR creation by drive occurs). Even when `--dry-run` is specified together with other flags, `--dry-run`'s \"output only\" takes priority.\n\n## Out of scope\n\n| Item | Reason for exclusion |\n| --- | --- |\n| 1. Actual fixing and PR creation | drive's responsibility. This skill only does input resolution and context formatting |\n| 2. Multiple reruns for flakiness | Rerun happens only once (to limit credit consumption). If it passes once, it's flaky; if not, it's treated as reproducing |\n| 3. Batch processing of multiple runs | Only 1 run is targeted. Multiple failures are launched individually |\n\n## Notes\n\n- Do not read or stage `.env` files\n- If the `gh` CLI is not authenticated, display an error message and abort\n- The SSOT for the error-extraction regex is health (`health-check.mjs`'s `extractCiErrorKey`). This skill documents the identical regex and enforces the match via tests (it does not extend the regex itself on its own, to prevent drift from restating it)\n- If the target run's branch is `main`, call it out as high priority at the top of the report\n",{"name":5,"description":7},"db212a47efe751fa1c42bd76e61dbfd8328e5b10",".agents\u002Fskills\u002Fci-fix","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills","https:\u002F\u002Fgithub.com\u002Fozzy-labs","2026-07-13 06:49:42",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add ozzy-labs\u002Fskills --skill ci-fix",{"tool":54,"command":55},"bunx","bunx skills add ozzy-labs\u002Fskills --skill ci-fix",{"tool":57,"command":58},"pnpm","pnpm dlx skills add ozzy-labs\u002Fskills --skill ci-fix","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fci-fix\u002FSKILL.md",true,[62],{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},"SKILL.claude-code.md","REFERENCE","参考文档",3253,"https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fci-fix\u002FSKILL.claude-code.md",[69,93,118,140,172,193],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":75,"publishedAt":38},"01M71J6R63H4E6ZE6KMDM4CT85","verify","An integrated skill that runs the combined validation of build \u002F typecheck \u002F test \u002F lint in one shot. The `verify.mjs` engine auto-discovers validation commands via a discovery chain (AGENTS.md's 「検証」 section → package.json scripts → justfile\u002FMakefile\u002Flefthook → language heuristics), executes them serially with their source attached, and returns a result summary. If a higher-priority stage produces a hit, only that stage is executed (no crossing stages).","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fverify\u002FSKILL.md",[],[71,76,77,78,79,80,81,82,35,83,84,85,86,87,88,31,89,90,91,92],"combined","heuristics","chain","repo","discovery","section","lefthook","auto","package","stage","Bash","one","lint","engine","with","test","typecheck",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":38},"01M71J6JW7SAY9PDKAWHG3SJCR","usage-guard","Monitors Claude Code's Usage Limit (5-hour = Current \u002F weekly = Weekly), pauses work when it exceeds 95%, and automatically resumes once the reset restores headroom. Bundles an engine form that a caller such as drive Reads at a checkpoint, and a standalone form, `\u002Fusage-guard \"\u003Ccontinuation command>\"`, that guards arbitrary work. Claude-only (depends on the OAuth usage-rate endpoint + ScheduleWakeup).","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fusage-guard\u002FSKILL.md",[],[100,101,102,103,104,35,105,106,107,108,109,110,26,111,112,113,114,115,116,117],"usage","usage guard","guard","weekly","standalone","guards","when","code","reset","work","command","rate","status","endpoint","as","continuation","form","limit",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":38},"01M71J6FRG119REA1G0S99Q4GZ","topics","Selects GitHub topic candidates by having the `topics.mjs` engine perform constraint validation, popularity measurement, broad+narrow \u002F singular-plural comparison, and hardcoded ozzy-labs conventions, then applies them via `gh repo edit --add-topic` following the policy's `externally-visible` gate (default batch-confirm). Scope is limited to use within ozzy-labs.","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ftopics\u002FSKILL.md",[],[120,125,126,79,127,128,129,130,131,132,133,86,134,135,136,31,89,137,138,139],"measurement","scope","policy","default","true","gh","plural","use","comparison","apply","candidate","batch","candidates","github","via",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":156,"publishedAt":38},"01M71J6DC27P4FDSP10SDT2PSN","skill-observability","Defines the skill observability event contract (event.schema.json) and emit substrate (obs-emit.mjs). The SSOT for the measurement layer of the skill improvement loop. Referenced by other skills and hooks.","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fskill-observability\u002FSKILL.md",[146,151],{"categoryNo":147,"categoryName":148,"taxonomyType":149,"taxonomyTypeDesc":150},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":152,"categoryName":153,"taxonomyType":154,"taxonomyTypeDesc":155},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[157,158,125,159,160,161,162,163,164,165,166,167,168,169,170,171],"observability","skill observability","improvement","skill improvement","for","event","hooks","contract","schema","loop","false","substrate","json","improvement loop","layer",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":179,"publishedAt":38},"01M71J6AYECH1J94RAZ49QZ19Y","skill-metrics","Aggregates the local observability event log (~\u002F.agents\u002Fobservability\u002Fevents.jsonl) and presents, read-only, per-skill invocation counts and notable events (fallback \u002F HITL rejection \u002F loop cap reached \u002F abort). Fires on \"show me the skill metrics,\" \"aggregate the observability results,\" \"which skills get used the most?\" Does not send anything.","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fskill-metrics\u002FSKILL.md",[178],{"categoryNo":147,"categoryName":148,"taxonomyType":149,"taxonomyTypeDesc":150},[180,181,157,182,183,184,185,186,162,187,188,189,190,129,35,166,191,86,32,192],"skill metrics","metrics","event log","which","show","get","read-only","iso","aggregates","send","local","show me","jsonl",{"skillNo":194,"name":195,"nameZh":6,"description":196,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":197,"categories":198,"keywords":199,"publishedAt":38},"01M71J68TD0QFATGW3BBZVCWA2","ship","Runs verification, commit, and PR creation all at once. An integrated pipeline that runs verify (build + type + test + lint) → commit → PR creation in sequence against the changes.","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fship\u002FSKILL.md",[],[195,200,201,91,202,203,71,204,205,206,26,207,208,209,129,210,86,211,88],"type","verification","changes","pr","creation","build","pipeline","read","sequence","grep","pr creation","commit"]