[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6993VFVJSZRZP9CJT67897G":3,"skill-same:01M6993VFVJSZRZP9CJT67897G":62},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":6,"ownerHtmlUrl":44,"ownerBlogUrl":45,"ownerDescription":46,"updatedAt":47,"install":48,"resources":61},"01M6993VFVJSZRZP9CJT67897G","dev-ci",null,"CI triage and red-gate discipline. Use when an Actions run is red, pr-gate blocks a PR, you are deciding whether to rerun, or you are editing .github\u002Fworkflows\u002F.","google\u002Fcapsem","google","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1342004?v=4","01M698VYEFDM0VJBZDYYJ2T83S","Google","01M69939YZJTP726NQK4NZNB48",186,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fcapsem\u002Fblob\u002Fmain\u002Fskills\u002Fdev-ci\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"dev ci","dev","ci","github","triage","workflows","pr","run","actions","editing","use","discipline","gate","red","blocks","2026-11-10 10:12:30",false,"---\nname: dev-ci\ndescription: CI triage and red-gate discipline. Use when an Actions run is red, pr-gate blocks a PR, you are deciding whether to rerun, or you are editing .github\u002Fworkflows\u002F.\n---\n\n# CI Triage and Red-Gate Discipline\n\n## Size test budgets for the actual runner\n\nHosted CI is not the high-end development workstation. Its lower CPU, RAM and\ndisk capacity must inform VM concurrency and deadlines; local timings alone\ndo not establish a hosted completion budget. Record actual hosted phase times\nand memory pressure before tightening bounds. For an explicit measurement run,\nuse a generous finite ceiling, then ratchet it after successful CI evidence.\nInspect acceptance owns a separate two-worker fleet and a 600-second\nper-archive limit. Its wheel and sdist together passed in 257.29 seconds in\n[hosted run 41161525613](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fcapsem\u002Factions\u002Fruns\u002F41161525613)\non 2026-10-31; that run later failed installed update proof. The limit exceeds\ntwice that whole-cohort measurement. Other suites retain their configured\nworker counts. Preserve assertions and diagnose OOMs from evidence.\nUse `just focus-test inspect` to rerun only that owned acceptance locally.\n\nA cancelled job with no runner or steps can be an image brownout: inspect its\ncheck-run annotations before blaming source or credentials. macOS14 retires on\n2026-11-02; use macOS15 with pinned Xcode16.2 and the macOS14 product deployment\nfloor. Change compiler-cache keys when moving the build host.\n\n## Keep step outputs as shell data\n\nPass dynamic step outputs through `env` and quote shell variables, including\npaths, numeric deadlines and artifact IDs. Quoting a `${{ steps.* }}` expression\ninside `run` does not prevent runner-time command injection. The native image\nhandoff guard resolves environment bindings for exact argument checks, while\nreal Bash regressions prove quote breaks and command substitutions stay literal.\n\n## Release input authority\n\nThe selected manifest is the bible: an artifact absent from it does not exist\nfor CI. Fetch mutable manifests fresh inside the owning serialized workflow.\nCache only immutable bytes under the digests recorded in that manifest, with\nchannel-independent cache identity, and verify every restored blob before any\ngate consumes it.\n\n## The law: stop the line\n\nA red required gate stops the line. This is a mechanism, not a mood:\n\n1. **No merging through red.** If `pr-gate` is red on any open PR against the\n   same failure, nothing merges until the failure has a named diagnosis.\n2. **No blind retries.** Every rerun must be preceded by a written diagnosis:\n   which job, which step, root cause or explicit \"suspected flake: \u003Cevidence>\".\n   Put it in the PR conversation or the commit message of the fix.\n3. **One rerun per diagnosis.** If a \"flake\" fails twice, it is not a flake;\n   treat it as a real defect and fix forward.\n4. **Streaks are P0.** If the same job failed in 2+ consecutive runs, the gate\n   has lost signal and repairing it outranks all feature work. A gate that is\n   chronically red trains everyone to ignore it -- that is how a missing\n   `pnpm install` once kept CI red for two weeks while work flowed around it.\n\nAgents: these rules bind you absolutely. A rerun or merge without a diagnosis\nis a protocol violation, not a judgment call.\n\n## Map of the PR gate (ci.yaml)\n\nTriggers: `pull_request` and pushes to `main`. The single required PR status is\n**pr-gate**, which fans in these jobs -- all must be `success`. Superseded PR\nruns are cancelled by PR-number concurrency; `main` runs are never cancelled,\nso every merged commit retains a post-merge signal and Codecov baseline.\n\n| Job | Runner | Covers | Common failure causes |\n|-----|--------|--------|----------------------|\n| `test-linux` | ubuntu-24.04-arm | KVM-backend unit tests + coverage | Linux-only cfg regressions; KVM absent is a warning, not a failure |\n| `test` | macos-15 | Full Rust unit+integration, frontend, Python suites, schema drift, cross-compile check | Missing JS\u002FPython dep installs for suites that shell out (see gotcha below); schema drift |\n| `test-install` | ubuntu-24.04 | Docker install layout + systemd e2e (builds the x86_64 package) | Dockerfile\u002Finstall-script drift; Linux bind-mount ownership, which macOS cannot reproduce |\n| `docs-build` \u002F `site-build` \u002F `release-site-build` | ubuntu-latest | Astro builds + release-site contract | pnpm lockfile drift; release-channel fixture drift |\n\nGotcha: Python suites in the macOS `test` job shell out to `pnpm --dir\nrelease-site run build:channel` and friends. Those subprocesses need their\ndependency installs done by earlier workflow steps -- `astro: command not\nfound` means a workflow install step is missing, not a test bug. The shared\nweb-surface script must fail immediately with a message naming the `Install\nrelease site dependencies` step when `build_system\u002Frelease_site\u002Fnode_modules\u002F.bin\u002Fastro`\nis absent.\n\nThat whole class is now mechanized, so it should never cost a CI round-trip\nagain: `tests\u002Fcapsem-release\u002Ftest_release_test_composition.py` asserts every\njob in `ci.yaml`, `release.yaml`, and `release-assets.yaml` installs the tools\nits own steps invoke, following justfile recipe dependencies transitively. It\nruns in `_test-fast`, so the gap fails locally in seconds. Local `just test`\ncannot catch provisioning drift any other way -- it runs where `just`, `pnpm`,\n`node`, and `uv` are already on PATH, while CI provisions per job.\n\nIts reachability deliberately over-approximates and does not model shell\nbranches. That bias is safe for \"install this tool\" and unsafe for \"declare a\ncache\": `test-linux` reaches `_pnpm-install` statically but exits before it,\nso declaring `cache: pnpm` there fails the post-job save with \"Path(s) ... do\nnot exist\". Provision generously; cache only where the store is observed.\n\nThe independently executable `_test-fast` module is the first local and CI\ngate. It owns YAML\u002Fworkflow and source syntax, source contracts, Clippy,\nPython lint\u002Ftype checks, JavaScript checks\u002Fbuilds, and the blocking Rust,\nPython, and JavaScript vulnerability audits. `just fast-test`, local `just test`,\nordinary CI, and both release lanes call that exact module; workflows must not\nreimplement or trim it. The scheduled\u002Fmanual `security-audit.yaml` retains its\ndedicated scanner schedule. A newly published advisory is a real red gate:\ndiagnose and remediate it or record an explicit reviewed exception in the\nscanner's checked-in policy. Never turn the command into a warning or\n`continue-on-error`.\n\n## Triage procedure\n\n```bash\n# 1. Is this failure new, or a streak?\ngh run list --workflow=ci.yaml --limit 10 \\\n  --json conclusion,displayTitle,createdAt\n\n# 2. Which job failed?\ngh run view \u003Crun-id> --json jobs \\\n  --jq '.jobs[] | \"\\(.conclusion)\\t\\(.name)\"'\n\n# 3. Which step, and why?\ngh run view \u003Crun-id> --json jobs \\\n  --jq '.jobs[] | select(.name==\"\u003Cjob>\") | .steps[] | select(.conclusion==\"failure\") | .name'\ngh run view \u003Crun-id> --log-failed | grep -E \"FAILED|error\\[|AssertionError\" -A 5\n\n# 4. Failed runs upload test-artifacts (service.log, session.db, etc.)\ngh run download \u003Crun-id> -n test-artifacts-macOS-1\n```\n\n## Classify before acting\n\n- **Real regression** (the diff caused it): fix forward on the branch. Never\n  rerun hoping it passes.\n- **Environment drift** (new audit advisory, toolchain release, runner image\n  change, external service): fix the environmental cause in its own commit\n  with the diagnosis in the message. Never paper over it inside an unrelated\n  PR, and never add an `allow`\u002Fskip without a written reason.\n- **Infra flake** (runner died, network timeout, artifact upload hiccup):\n  one rerun, after writing the diagnosis. Second failure = not a flake.\n\n## Cache evidence\n\n`config\u002Fcache.toml` governs repository, Docker\u002FColima, and Tart caches through\none typed contract. CI must restore only immutable verified inputs and must not\ninvent workflow-local cache limits or broad cleanup steps. Diagnose cache state\nwith `just cache stats --json`; use `just cache contract \u003Cid>` to inspect the\nowner's `max_size_bytes`, `warm_size_bytes`, and prune strategy.\n\nA cache enforcement failure means owned usage still exceeds its configured\nmaximum after safe pruning. Preserve the inventory and mutation journal, then\nfix ownership, protected-generation accounting, or the evidence-based limit.\nDo not convert it into a machine-capacity probe or delete foreign daemon resources.\nRead `\u002Fdev-cache` before changing cache policy or workflow cache behavior.\n\n## Release CI is orthogonal\n\nRelease rules live in root `RELEASE.md`; agent routing lives in `AGENTS.md` and\n`\u002Frelease-process`.\n\n- `just test` is the complete local all-artifact proof, and a passing run is\n  required before either release command dispatches.\n- Binary CI builds packages only, pulls the channel's runtime, and runs the\n  shared complete modules against that resolved pairing.\n- Runtime CI builds the runtime for one channel only, pulls the current package, and\n  runs the same modules against that resolved pairing.\n- Both entry workflows use the identical `capsem-release-${channel}` lock.\n- No pairing becomes public without complete functional and glow-up proof.\n- Diagnose and fix a failed lane forward; never bypass or selectively rerun\n  away a failed required module.\n\nThe daily scheduler is orchestration, not a third release lane. It freezes the\nevent's full source commit, invokes\n`just release-assets nightly \u003Csource-commit>`, then invokes\n`just release-binaries nightly \u003Csource-commit>` even if the runtime command\nfailed. Each command identifies and watches its own downstream run, whose\n`capsem-release-nightly` lock owns the channel transaction. The separate\n`capsem-nightly-release-scheduler` lock only prevents two daily orchestrators\nfrom overlapping.\n\nNightly runtime runs always rebuild assets; exact prior-run asset reuse is\nstable-retry behavior. Nightly binary runs always rebuild and test native\npackages. When the version tag already exists, CI disables publication after\nthe complete package and pairing gates because signed\u002Fnotarized packages are\nnot reproducible bytes and immutable release assets may not be overwritten.\nStable has no scheduled trigger. Neither scheduler nor operators dispatch\n`release.yaml` or `release-assets.yaml` directly.\n\n## Editing workflows\n\n- Every workflow step that invokes `just` is a declared enforcement edge in\n  `build_system\u002Ftests\u002Fgate\u002Ftest_exit_status_integrity.py`. The contract parses YAML and shell\n  argv structurally: equivalent quoting, whitespace, comments, and line\n  continuations remain green, while `continue-on-error`, `|| true`, disabled\n  steps\u002Fjobs, command removal, and unclassified new `just` steps fail in the\n  fast source-contract module. Extend that one inventory; do not add a local\n  string-grep approximation.\n- `pr-gate` must list every job in `needs:` and test each result explicitly;\n  a new job that isn't wired into `pr-gate` is not required and will be\n  silently skipped by branch protection.\n- Contract tests in `tests\u002Fcapsem-release\u002F` guard workflow invariants; run\n  them after any workflow edit.\n- Keep tool installs prebuilt\u002Fpinned; a workflow step that compiles tools\n  from source on every run is a cost bug.\n- Pin every external action to a full commit SHA and keep all\n  `actions\u002Fupload-artifact` uses on one reviewed revision.\n","# CI Triage and Red-Gate Discipline\n\n## Size test budgets for the actual runner\n\nHosted CI is not the high-end development workstation. Its lower CPU, RAM and\ndisk capacity must inform VM concurrency and deadlines; local timings alone\ndo not establish a hosted completion budget. Record actual hosted phase times\nand memory pressure before tightening bounds. For an explicit measurement run,\nuse a generous finite ceiling, then ratchet it after successful CI evidence.\nInspect acceptance owns a separate two-worker fleet and a 600-second\nper-archive limit. Its wheel and sdist together passed in 257.29 seconds in\n[hosted run 41161525613](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fcapsem\u002Factions\u002Fruns\u002F41161525613)\non 2026-10-31; that run later failed installed update proof. The limit exceeds\ntwice that whole-cohort measurement. Other suites retain their configured\nworker counts. Preserve assertions and diagnose OOMs from evidence.\nUse `just focus-test inspect` to rerun only that owned acceptance locally.\n\nA cancelled job with no runner or steps can be an image brownout: inspect its\ncheck-run annotations before blaming source or credentials. macOS14 retires on\n2026-11-02; use macOS15 with pinned Xcode16.2 and the macOS14 product deployment\nfloor. Change compiler-cache keys when moving the build host.\n\n## Keep step outputs as shell data\n\nPass dynamic step outputs through `env` and quote shell variables, including\npaths, numeric deadlines and artifact IDs. Quoting a `${{ steps.* }}` expression\ninside `run` does not prevent runner-time command injection. The native image\nhandoff guard resolves environment bindings for exact argument checks, while\nreal Bash regressions prove quote breaks and command substitutions stay literal.\n\n## Release input authority\n\nThe selected manifest is the bible: an artifact absent from it does not exist\nfor CI. Fetch mutable manifests fresh inside the owning serialized workflow.\nCache only immutable bytes under the digests recorded in that manifest, with\nchannel-independent cache identity, and verify every restored blob before any\ngate consumes it.\n\n## The law: stop the line\n\nA red required gate stops the line. This is a mechanism, not a mood:\n\n1. **No merging through red.** If `pr-gate` is red on any open PR against the\n   same failure, nothing merges until the failure has a named diagnosis.\n2. **No blind retries.** Every rerun must be preceded by a written diagnosis:\n   which job, which step, root cause or explicit \"suspected flake: \u003Cevidence>\".\n   Put it in the PR conversation or the commit message of the fix.\n3. **One rerun per diagnosis.** If a \"flake\" fails twice, it is not a flake;\n   treat it as a real defect and fix forward.\n4. **Streaks are P0.** If the same job failed in 2+ consecutive runs, the gate\n   has lost signal and repairing it outranks all feature work. A gate that is\n   chronically red trains everyone to ignore it -- that is how a missing\n   `pnpm install` once kept CI red for two weeks while work flowed around it.\n\nAgents: these rules bind you absolutely. A rerun or merge without a diagnosis\nis a protocol violation, not a judgment call.\n\n## Map of the PR gate (ci.yaml)\n\nTriggers: `pull_request` and pushes to `main`. The single required PR status is\n**pr-gate**, which fans in these jobs -- all must be `success`. Superseded PR\nruns are cancelled by PR-number concurrency; `main` runs are never cancelled,\nso every merged commit retains a post-merge signal and Codecov baseline.\n\n| Job | Runner | Covers | Common failure causes |\n|-----|--------|--------|----------------------|\n| `test-linux` | ubuntu-24.04-arm | KVM-backend unit tests + coverage | Linux-only cfg regressions; KVM absent is a warning, not a failure |\n| `test` | macos-15 | Full Rust unit+integration, frontend, Python suites, schema drift, cross-compile check | Missing JS\u002FPython dep installs for suites that shell out (see gotcha below); schema drift |\n| `test-install` | ubuntu-24.04 | Docker install layout + systemd e2e (builds the x86_64 package) | Dockerfile\u002Finstall-script drift; Linux bind-mount ownership, which macOS cannot reproduce |\n| `docs-build` \u002F `site-build` \u002F `release-site-build` | ubuntu-latest | Astro builds + release-site contract | pnpm lockfile drift; release-channel fixture drift |\n\nGotcha: Python suites in the macOS `test` job shell out to `pnpm --dir\nrelease-site run build:channel` and friends. Those subprocesses need their\ndependency installs done by earlier workflow steps -- `astro: command not\nfound` means a workflow install step is missing, not a test bug. The shared\nweb-surface script must fail immediately with a message naming the `Install\nrelease site dependencies` step when `build_system\u002Frelease_site\u002Fnode_modules\u002F.bin\u002Fastro`\nis absent.\n\nThat whole class is now mechanized, so it should never cost a CI round-trip\nagain: `tests\u002Fcapsem-release\u002Ftest_release_test_composition.py` asserts every\njob in `ci.yaml`, `release.yaml`, and `release-assets.yaml` installs the tools\nits own steps invoke, following justfile recipe dependencies transitively. It\nruns in `_test-fast`, so the gap fails locally in seconds. Local `just test`\ncannot catch provisioning drift any other way -- it runs where `just`, `pnpm`,\n`node`, and `uv` are already on PATH, while CI provisions per job.\n\nIts reachability deliberately over-approximates and does not model shell\nbranches. That bias is safe for \"install this tool\" and unsafe for \"declare a\ncache\": `test-linux` reaches `_pnpm-install` statically but exits before it,\nso declaring `cache: pnpm` there fails the post-job save with \"Path(s) ... do\nnot exist\". Provision generously; cache only where the store is observed.\n\nThe independently executable `_test-fast` module is the first local and CI\ngate. It owns YAML\u002Fworkflow and source syntax, source contracts, Clippy,\nPython lint\u002Ftype checks, JavaScript checks\u002Fbuilds, and the blocking Rust,\nPython, and JavaScript vulnerability audits. `just fast-test`, local `just test`,\nordinary CI, and both release lanes call that exact module; workflows must not\nreimplement or trim it. The scheduled\u002Fmanual `security-audit.yaml` retains its\ndedicated scanner schedule. A newly published advisory is a real red gate:\ndiagnose and remediate it or record an explicit reviewed exception in the\nscanner's checked-in policy. Never turn the command into a warning or\n`continue-on-error`.\n\n## Triage procedure\n\n```bash\n# 1. Is this failure new, or a streak?\ngh run list --workflow=ci.yaml --limit 10 \\\n  --json conclusion,displayTitle,createdAt\n\n# 2. Which job failed?\ngh run view \u003Crun-id> --json jobs \\\n  --jq '.jobs[] | \"\\(.conclusion)\\t\\(.name)\"'\n\n# 3. Which step, and why?\ngh run view \u003Crun-id> --json jobs \\\n  --jq '.jobs[] | select(.name==\"\u003Cjob>\") | .steps[] | select(.conclusion==\"failure\") | .name'\ngh run view \u003Crun-id> --log-failed | grep -E \"FAILED|error\\[|AssertionError\" -A 5\n\n# 4. Failed runs upload test-artifacts (service.log, session.db, etc.)\ngh run download \u003Crun-id> -n test-artifacts-macOS-1\n```\n\n## Classify before acting\n\n- **Real regression** (the diff caused it): fix forward on the branch. Never\n  rerun hoping it passes.\n- **Environment drift** (new audit advisory, toolchain release, runner image\n  change, external service): fix the environmental cause in its own commit\n  with the diagnosis in the message. Never paper over it inside an unrelated\n  PR, and never add an `allow`\u002Fskip without a written reason.\n- **Infra flake** (runner died, network timeout, artifact upload hiccup):\n  one rerun, after writing the diagnosis. Second failure = not a flake.\n\n## Cache evidence\n\n`config\u002Fcache.toml` governs repository, Docker\u002FColima, and Tart caches through\none typed contract. CI must restore only immutable verified inputs and must not\ninvent workflow-local cache limits or broad cleanup steps. Diagnose cache state\nwith `just cache stats --json`; use `just cache contract \u003Cid>` to inspect the\nowner's `max_size_bytes`, `warm_size_bytes`, and prune strategy.\n\nA cache enforcement failure means owned usage still exceeds its configured\nmaximum after safe pruning. Preserve the inventory and mutation journal, then\nfix ownership, protected-generation accounting, or the evidence-based limit.\nDo not convert it into a machine-capacity probe or delete foreign daemon resources.\nRead `\u002Fdev-cache` before changing cache policy or workflow cache behavior.\n\n## Release CI is orthogonal\n\nRelease rules live in root `RELEASE.md`; agent routing lives in `AGENTS.md` and\n`\u002Frelease-process`.\n\n- `just test` is the complete local all-artifact proof, and a passing run is\n  required before either release command dispatches.\n- Binary CI builds packages only, pulls the channel's runtime, and runs the\n  shared complete modules against that resolved pairing.\n- Runtime CI builds the runtime for one channel only, pulls the current package, and\n  runs the same modules against that resolved pairing.\n- Both entry workflows use the identical `capsem-release-${channel}` lock.\n- No pairing becomes public without complete functional and glow-up proof.\n- Diagnose and fix a failed lane forward; never bypass or selectively rerun\n  away a failed required module.\n\nThe daily scheduler is orchestration, not a third release lane. It freezes the\nevent's full source commit, invokes\n`just release-assets nightly \u003Csource-commit>`, then invokes\n`just release-binaries nightly \u003Csource-commit>` even if the runtime command\nfailed. Each command identifies and watches its own downstream run, whose\n`capsem-release-nightly` lock owns the channel transaction. The separate\n`capsem-nightly-release-scheduler` lock only prevents two daily orchestrators\nfrom overlapping.\n\nNightly runtime runs always rebuild assets; exact prior-run asset reuse is\nstable-retry behavior. Nightly binary runs always rebuild and test native\npackages. When the version tag already exists, CI disables publication after\nthe complete package and pairing gates because signed\u002Fnotarized packages are\nnot reproducible bytes and immutable release assets may not be overwritten.\nStable has no scheduled trigger. Neither scheduler nor operators dispatch\n`release.yaml` or `release-assets.yaml` directly.\n\n## Editing workflows\n\n- Every workflow step that invokes `just` is a declared enforcement edge in\n  `build_system\u002Ftests\u002Fgate\u002Ftest_exit_status_integrity.py`. The contract parses YAML and shell\n  argv structurally: equivalent quoting, whitespace, comments, and line\n  continuations remain green, while `continue-on-error`, `|| true`, disabled\n  steps\u002Fjobs, command removal, and unclassified new `just` steps fail in the\n  fast source-contract module. Extend that one inventory; do not add a local\n  string-grep approximation.\n- `pr-gate` must list every job in `needs:` and test each result explicitly;\n  a new job that isn't wired into `pr-gate` is not required and will be\n  silently skipped by branch protection.\n- Contract tests in `tests\u002Fcapsem-release\u002F` guard workflow invariants; run\n  them after any workflow edit.\n- Keep tool installs prebuilt\u002Fpinned; a workflow step that compiles tools\n  from source on every run is a cost bug.\n- Pin every external action to a full commit SHA and keep all\n  `actions\u002Fupload-artifact` uses on one reviewed revision.\n",{"name":5,"description":7},"main","d8a5bf9d83f33972f652a10cdce96fa504948705","skills\u002Fdev-ci",26,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fcapsem","https:\u002F\u002Fgithub.com\u002Fgoogle","https:\u002F\u002Fopensource.google\u002F","Google ❤️ Open Source","2026-11-04 04:36:10",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add google\u002Fcapsem --skill dev-ci",{"tool":54,"command":55},"bunx","bunx skills add google\u002Fcapsem --skill dev-ci",{"tool":57,"command":58},"pnpm","pnpm dlx skills add google\u002Fcapsem --skill dev-ci","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fcapsem\u002Fblob\u002Fmain\u002Fskills\u002Fdev-ci\u002FSKILL.md",true,[],[63,77,93,102,109,116],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":74,"publishedAt":34},"01M699558T2T4DJMBN08ZCQ79K","use-capsem","Run tasks in Capsem VMs through MCP. Use when an agent needs isolated execution, file analysis, or reports returned to the host.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fcapsem\u002Fblob\u002Fmain\u002Fskills\u002Fuse-capsem\u002FSKILL.md",[69],{"categoryNo":70,"categoryName":71,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[75,76],"use capsem","MCP",{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":91,"publishedAt":34},"01M69953Z1CSVQ4N07QX529CZY","site-marketing","The marketing website, capsem.org. Use when editing copy, adding sections, or changing the site theme.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fcapsem\u002Fblob\u002Fmain\u002Fskills\u002Fsite-marketing\u002FSKILL.md",[83,86],{"categoryNo":84,"categoryName":85,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000019","营销推广",{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000035","市场营销","PROFESSION","适用职业",[92],"site marketing",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":34},"01M69952B33KBBV37N8QTC4191","site-infra","The documentation site, docs.capsem.org. Use for user-directed Diátaxis documentation and Astro Starlight changes.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fcapsem\u002Fblob\u002Fmain\u002Fskills\u002Fsite-infra\u002FSKILL.md",[],[100,101],"site infra","docs",{"skillNo":103,"name":104,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":34},"01M69950YKCZKCDB98JDQNBBRJ","site-architecture","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fcapsem\u002Fblob\u002Fmain\u002Fskills\u002Fsite-architecture\u002FSKILL.md",[],[108],"site architecture",{"skillNo":110,"name":111,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":34},"01M6994Z61JWZ0G2YRJTWFH933","release-process","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fcapsem\u002Fblob\u002Fmain\u002Fskills\u002Frelease-process\u002FSKILL.md",[],[115],"release process",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":129,"publishedAt":34},"01M6994XKHADM6FBTYTAPG7FYC","meta-skill-creation","Create, improve, and evaluate skills. Use when writing a new skill, editing an existing one, or tuning a description for better triggering.","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fcapsem\u002Fblob\u002Fmain\u002Fskills\u002Fmeta-skill-creation\u002FSKILL.md",[122,125,126],{"categoryNo":123,"categoryName":124,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":70,"categoryName":71,"taxonomyType":72,"taxonomyTypeDesc":73},{"categoryNo":127,"categoryName":128,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000036","内容创作者",[130,131],"meta skill creation","writing"]