[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71K85100JQS4Y10EGCTWQXW":3,"skill-same:01M71K85100JQS4Y10EGCTWQXW":92},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":51,"install":52,"resources":65},"01M71K85100JQS4Y10EGCTWQXW","vm-provision",null,"End-to-end VPS provisioning — select provider → plan → provision → harden → verify (ssh-check + firewall-diff hard-gate) → handoff. 6 phases, ≥6 AskUserQuestion calls, defensive-only. Stops if either verification primitive fails.","KeiSeiLab\u002FKeiSeiKit","KeiSeiLab","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F283315582?v=4","01M71K2EW81JRFHSGF0T844B32","KeiSei Lab","01M71K2EWXTB52KWC65E55S6M2",7,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fvm-provision\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"vm provision","vm","line","intent","verify","defensive","plan","verification","check","hetzner","api","one","either","only","calls","end","select","provider","diff","firewall","2026-11-10 10:12:30",false,"---\nname: vm-provision\ndescription: End-to-end VPS provisioning — select provider → plan → provision → harden → verify (ssh-check + firewall-diff hard-gate) → handoff. 6 phases, ≥6 AskUserQuestion calls, defensive-only. Stops if either verification primitive fails.\nargument-hint: \u003Coptional one-line intent, e.g. \"staging api hetzner eu\">\n---\n\n# \u002Fvm-provision — 6-Phase VPS Pipeline (index)\n\n## When to use\n\n- Provisioning a new VPS from scratch: select provider → plan → provision → harden → verify → handoff.\n- Setting up a hardened production or staging server with firewall verification as a hard gate.\n- Any new VM where the security posture (fail2ban, UFW, non-root SSH) must be verified before handoff.\n\nYou turn a short intent (\"staging API in EU\") into a **hardened, verified\nVPS** ready to host an app. Six phases. Every provider choice, plan detail,\nand fix is surfaced as an `AskUserQuestion` click — no silent defaults.\n\nThis `SKILL.md` is the INDEX. Each phase lives in its own file, executed in\norder. Never skip a phase. Never re-order phases.\n\n---\n\n## Pipeline overview\n\n| Phase | File | Purpose | AskUserQuestion |\n|---|---|---|---|\n| 1 | [phase-1-select-provider.md](phase-1-select-provider.md) | Provider + region + plan + ARM\u002Fx86 | 2× |\n| 2 | [phase-2-plan.md](phase-2-plan.md) | Plan Mode doc: ports, TLS, admin user | 1× |\n| 3 | [phase-3-provision.md](phase-3-provision.md) | Provision + SSH first contact | 1× |\n| 4 | [phase-4-harden.md](phase-4-harden.md) | Run `harden-base.sh` over SSH | 1× |\n| 5 | [phase-5-verify.md](phase-5-verify.md) | `ssh-check` + `firewall-diff` **HARD GATE** | 1× |\n| 6 | [phase-6-handoff.md](phase-6-handoff.md) | Artifact list + handoff (e.g. `\u002Fauth-setup`) | — (final report) |\n\n**Minimum AskUserQuestion count across a complete pipeline: 6+** — pure-\nclick contract. Only the intent argument and per-port customisations are\ntyped.\n\n---\n\n## Hard-Gate Invariant (LOAD-BEARING)\n\n> **No application is deployed onto a VM that has not passed BOTH\n> `ssh-check` (exit 0) and `firewall-diff` (exit 0) in Phase 5.**\n\nEnforced by Phase 5:\n\n- `ssh-check --config \u002Fetc\u002Fssh\u002Fsshd_config --drop-in \u002Fetc\u002Fssh\u002Fsshd_config.d` → exit 0.\n- `ufw status numbered | firewall-diff --intent firewall-intent.yaml --stdin` → exit 0.\n- Any non-zero exit → STOP the pipeline; loop back to Phase 4 after the user\n  approves a remediation path.\n\nThe verify step is DEFENSIVE ONLY (read + parse). It never scans the host\nfor open CVEs or probes third-party endpoints.\n\n---\n\n## Variables the pipeline produces\n\n| Name | Set in | Meaning |\n|---|---|---|\n| `INTENT` | arg | 1-line user description of the target VM |\n| `PROVIDER` | Phase 1 | hetzner \u002F vultr \u002F digitalocean \u002F upcloud \u002F linode |\n| `REGION`   | Phase 1 | provider-specific region code |\n| `PLAN`     | Phase 1 | cx22 \u002F cax11 \u002F vc2-1c-1gb \u002F …  |\n| `ARCH`     | Phase 1 | x86_64 \u002F arm64 |\n| `ADMIN_USER` | Phase 2 | default `keiadmin` |\n| `SSH_PORT`   | Phase 2 | default 22; custom permitted |\n| `APP_PORTS`  | Phase 2 | e.g. `[443\u002Ftcp, 80\u002Ftcp]` |\n| `TLS_HOST`   | Phase 2 | optional FQDN for Caddy |\n| `VM_IP`    | Phase 3 | IPv4 of the created VM |\n| `VM_NAME`  | Phase 3 | provider resource label |\n| `HARDENED` | Phase 4 | true when harden-base.sh exited 0 |\n| `SSH_CHECK_OK` | Phase 5 | exit 0 of `ssh-check` |\n| `FW_DIFF_OK`   | Phase 5 | exit 0 of `firewall-diff` |\n| `HANDOFF_TO`   | Phase 6 | next skill (e.g. `\u002Fauth-setup`) or `none` |\n\n---\n\n## Final report (emit after Phase 6)\n\n```\n=== \u002FVM-PROVISION REPORT ===\nIntent:        \u003Cfirst 80 chars of INTENT>\nProvider:      \u003CPROVIDER> \u002F region=\u003CREGION> \u002F plan=\u003CPLAN> \u002F arch=\u003CARCH>\nVM:            \u003CVM_NAME> @ \u003CVM_IP>\nAdmin:         \u003CADMIN_USER> (ssh port \u003CSSH_PORT>)\nPorts:         \u003CAPP_PORTS>\nTLS:           \u003CTLS_HOST or \"none\">\nHardened:      \u003CHARDENED>\nVerification:  ssh-check=\u003CPASS\u002FFAIL> firewall-diff=\u003CPASS\u002FFAIL>\nHandoff:       \u003CHANDOFF_TO>\nArtifacts:     \u003Cterraform state path | cloud-init.yaml path>\n```\n\n---\n\n## Rules (enforced at every phase)\n\n- **Pure-click contract.** Only `INTENT` (argument) and custom port values\n  (Phase 2.c) are typed. Every other decision is an `AskUserQuestion`.\n- **Hard gate (Phase 5).** `ssh-check` AND `firewall-diff` must exit 0\n  before Phase 6. Neither can be skipped.\n- **RULE -1 NO DOWNGRADE.** Any phase that fails returns 2-3 constructive\n  paths, never \"can't be done\".\n- **RULE 0.8 Secrets Single Source.** All provider tokens come from\n  `~\u002F.claude\u002Fsecrets\u002F.env` (or per-project `secrets\u002F*.env`). NEVER read\n  a token from the conversation, NEVER write one to a file.\n- **RULE 0.4 NO HALLUCINATION.** Provider specifics (prices, region codes,\n  plan IDs) must be fetched at time of use, not recalled. Cite source.\n- **RULE 0.5 Plan Mode First.** Phase 2 writes the plan; no provisioning\n  happens before the user clicks \"approve\".\n- **Defensive-only.** No scanning tools, no CVE probes, no third-party\n  attack surface analysis. Pure config linting.\n- **Surgical changes.** Harden only the VM being provisioned. Never touch\n  the caller's workstation config.\n- **Constructor Pattern (RULE ZERO).** Each phase file ≤ 200 LOC;\n  generated cloud-init \u002F Caddyfile artefacts never exceed 200 LOC — split\n  into role-specific files if they would.\n\n---\n\n## References\n\n- [phase-1-select-provider.md](phase-1-select-provider.md) · [phase-2-plan.md](phase-2-plan.md) · [phase-3-provision.md](phase-3-provision.md) · [phase-4-harden.md](phase-4-harden.md) · [phase-5-verify.md](phase-5-verify.md) · [phase-6-handoff.md](phase-6-handoff.md)\n- `_blocks\u002Fdeploy-hetzner-cloud.md` — Hetzner Cloud specifics (Phase 1)\n- `_blocks\u002Fdeploy-vps-generic.md` — provider-agnostic cloud-init + TF skeleton (Phase 1\u002F3)\n- `_blocks\u002Fsecurity-ssh-hardening.md` — sshd drop-in baseline (Phase 4\u002F5)\n- `_blocks\u002Fsecurity-firewall-ufw.md` — ufw intent schema (Phase 2\u002F5)\n- `_blocks\u002Fsecurity-tls-caddy.md` — TLS (Phase 6 handoff)\n- `_blocks\u002Fsecurity-audit-logging.md` — auditd baseline (Phase 4)\n- `_blocks\u002Fsecurity-patching.md` — unattended-upgrades (Phase 4)\n- `_primitives\u002Fprovision-hetzner.sh` · `_primitives\u002Fprovision-vultr.sh` — provisioners (Phase 3)\n- `_primitives\u002Fharden-base.sh` — hardening script (Phase 4)\n- `_primitives\u002F_rust\u002Fssh-check\u002F` · `_primitives\u002F_rust\u002Ffirewall-diff\u002F` — verify gate (Phase 5)\n","# \u002Fvm-provision — 6-Phase VPS Pipeline (index)\n\n## When to use\n\n- Provisioning a new VPS from scratch: select provider → plan → provision → harden → verify → handoff.\n- Setting up a hardened production or staging server with firewall verification as a hard gate.\n- Any new VM where the security posture (fail2ban, UFW, non-root SSH) must be verified before handoff.\n\nYou turn a short intent (\"staging API in EU\") into a **hardened, verified\nVPS** ready to host an app. Six phases. Every provider choice, plan detail,\nand fix is surfaced as an `AskUserQuestion` click — no silent defaults.\n\nThis `SKILL.md` is the INDEX. Each phase lives in its own file, executed in\norder. Never skip a phase. Never re-order phases.\n\n---\n\n## Pipeline overview\n\n| Phase | File | Purpose | AskUserQuestion |\n|---|---|---|---|\n| 1 | [phase-1-select-provider.md](phase-1-select-provider.md) | Provider + region + plan + ARM\u002Fx86 | 2× |\n| 2 | [phase-2-plan.md](phase-2-plan.md) | Plan Mode doc: ports, TLS, admin user | 1× |\n| 3 | [phase-3-provision.md](phase-3-provision.md) | Provision + SSH first contact | 1× |\n| 4 | [phase-4-harden.md](phase-4-harden.md) | Run `harden-base.sh` over SSH | 1× |\n| 5 | [phase-5-verify.md](phase-5-verify.md) | `ssh-check` + `firewall-diff` **HARD GATE** | 1× |\n| 6 | [phase-6-handoff.md](phase-6-handoff.md) | Artifact list + handoff (e.g. `\u002Fauth-setup`) | — (final report) |\n\n**Minimum AskUserQuestion count across a complete pipeline: 6+** — pure-\nclick contract. Only the intent argument and per-port customisations are\ntyped.\n\n---\n\n## Hard-Gate Invariant (LOAD-BEARING)\n\n> **No application is deployed onto a VM that has not passed BOTH\n> `ssh-check` (exit 0) and `firewall-diff` (exit 0) in Phase 5.**\n\nEnforced by Phase 5:\n\n- `ssh-check --config \u002Fetc\u002Fssh\u002Fsshd_config --drop-in \u002Fetc\u002Fssh\u002Fsshd_config.d` → exit 0.\n- `ufw status numbered | firewall-diff --intent firewall-intent.yaml --stdin` → exit 0.\n- Any non-zero exit → STOP the pipeline; loop back to Phase 4 after the user\n  approves a remediation path.\n\nThe verify step is DEFENSIVE ONLY (read + parse). It never scans the host\nfor open CVEs or probes third-party endpoints.\n\n---\n\n## Variables the pipeline produces\n\n| Name | Set in | Meaning |\n|---|---|---|\n| `INTENT` | arg | 1-line user description of the target VM |\n| `PROVIDER` | Phase 1 | hetzner \u002F vultr \u002F digitalocean \u002F upcloud \u002F linode |\n| `REGION`   | Phase 1 | provider-specific region code |\n| `PLAN`     | Phase 1 | cx22 \u002F cax11 \u002F vc2-1c-1gb \u002F …  |\n| `ARCH`     | Phase 1 | x86_64 \u002F arm64 |\n| `ADMIN_USER` | Phase 2 | default `keiadmin` |\n| `SSH_PORT`   | Phase 2 | default 22; custom permitted |\n| `APP_PORTS`  | Phase 2 | e.g. `[443\u002Ftcp, 80\u002Ftcp]` |\n| `TLS_HOST`   | Phase 2 | optional FQDN for Caddy |\n| `VM_IP`    | Phase 3 | IPv4 of the created VM |\n| `VM_NAME`  | Phase 3 | provider resource label |\n| `HARDENED` | Phase 4 | true when harden-base.sh exited 0 |\n| `SSH_CHECK_OK` | Phase 5 | exit 0 of `ssh-check` |\n| `FW_DIFF_OK`   | Phase 5 | exit 0 of `firewall-diff` |\n| `HANDOFF_TO`   | Phase 6 | next skill (e.g. `\u002Fauth-setup`) or `none` |\n\n---\n\n## Final report (emit after Phase 6)\n\n```\n=== \u002FVM-PROVISION REPORT ===\nIntent:        \u003Cfirst 80 chars of INTENT>\nProvider:      \u003CPROVIDER> \u002F region=\u003CREGION> \u002F plan=\u003CPLAN> \u002F arch=\u003CARCH>\nVM:            \u003CVM_NAME> @ \u003CVM_IP>\nAdmin:         \u003CADMIN_USER> (ssh port \u003CSSH_PORT>)\nPorts:         \u003CAPP_PORTS>\nTLS:           \u003CTLS_HOST or \"none\">\nHardened:      \u003CHARDENED>\nVerification:  ssh-check=\u003CPASS\u002FFAIL> firewall-diff=\u003CPASS\u002FFAIL>\nHandoff:       \u003CHANDOFF_TO>\nArtifacts:     \u003Cterraform state path | cloud-init.yaml path>\n```\n\n---\n\n## Rules (enforced at every phase)\n\n- **Pure-click contract.** Only `INTENT` (argument) and custom port values\n  (Phase 2.c) are typed. Every other decision is an `AskUserQuestion`.\n- **Hard gate (Phase 5).** `ssh-check` AND `firewall-diff` must exit 0\n  before Phase 6. Neither can be skipped.\n- **RULE -1 NO DOWNGRADE.** Any phase that fails returns 2-3 constructive\n  paths, never \"can't be done\".\n- **RULE 0.8 Secrets Single Source.** All provider tokens come from\n  `~\u002F.claude\u002Fsecrets\u002F.env` (or per-project `secrets\u002F*.env`). NEVER read\n  a token from the conversation, NEVER write one to a file.\n- **RULE 0.4 NO HALLUCINATION.** Provider specifics (prices, region codes,\n  plan IDs) must be fetched at time of use, not recalled. Cite source.\n- **RULE 0.5 Plan Mode First.** Phase 2 writes the plan; no provisioning\n  happens before the user clicks \"approve\".\n- **Defensive-only.** No scanning tools, no CVE probes, no third-party\n  attack surface analysis. Pure config linting.\n- **Surgical changes.** Harden only the VM being provisioned. Never touch\n  the caller's workstation config.\n- **Constructor Pattern (RULE ZERO).** Each phase file ≤ 200 LOC;\n  generated cloud-init \u002F Caddyfile artefacts never exceed 200 LOC — split\n  into role-specific files if they would.\n\n---\n\n## References\n\n- [phase-1-select-provider.md](phase-1-select-provider.md) · [phase-2-plan.md](phase-2-plan.md) · [phase-3-provision.md](phase-3-provision.md) · [phase-4-harden.md](phase-4-harden.md) · [phase-5-verify.md](phase-5-verify.md) · [phase-6-handoff.md](phase-6-handoff.md)\n- `_blocks\u002Fdeploy-hetzner-cloud.md` — Hetzner Cloud specifics (Phase 1)\n- `_blocks\u002Fdeploy-vps-generic.md` — provider-agnostic cloud-init + TF skeleton (Phase 1\u002F3)\n- `_blocks\u002Fsecurity-ssh-hardening.md` — sshd drop-in baseline (Phase 4\u002F5)\n- `_blocks\u002Fsecurity-firewall-ufw.md` — ufw intent schema (Phase 2\u002F5)\n- `_blocks\u002Fsecurity-tls-caddy.md` — TLS (Phase 6 handoff)\n- `_blocks\u002Fsecurity-audit-logging.md` — auditd baseline (Phase 4)\n- `_blocks\u002Fsecurity-patching.md` — unattended-upgrades (Phase 4)\n- `_primitives\u002Fprovision-hetzner.sh` · `_primitives\u002Fprovision-vultr.sh` — provisioners (Phase 3)\n- `_primitives\u002Fharden-base.sh` — hardening script (Phase 4)\n- `_primitives\u002F_rust\u002Fssh-check\u002F` · `_primitives\u002F_rust\u002Ffirewall-diff\u002F` — verify gate (Phase 5)\n",{"name":5,"description":7,"argument-hint":44},"\u003Coptional one-line intent, e.g. \"staging api hetzner eu\">","main","32e85218a997294f68da27ff3dfd638196186ae5","skills\u002Fvm-provision",8,"https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit","https:\u002F\u002Fgithub.com\u002FKeiSeiLab","2026-10-11 11:17:46",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add KeiSeiLab\u002FKeiSeiKit --skill vm-provision",{"tool":58,"command":59},"bunx","bunx skills add KeiSeiLab\u002FKeiSeiKit --skill vm-provision",{"tool":61,"command":62},"pnpm","pnpm dlx skills add KeiSeiLab\u002FKeiSeiKit --skill vm-provision","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fvm-provision\u002FSKILL.md",true,[66,72,76,80,84,88],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"phase-1-select-provider.md","REFERENCE","参考文档",3733,"https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fvm-provision\u002Fphase-1-select-provider.md",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"phase-2-plan.md",3730,"https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fvm-provision\u002Fphase-2-plan.md",{"path":77,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":78,"sourceHtmlUrl":79},"phase-3-provision.md",3917,"https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fvm-provision\u002Fphase-3-provision.md",{"path":81,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":82,"sourceHtmlUrl":83},"phase-4-harden.md",3471,"https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fvm-provision\u002Fphase-4-harden.md",{"path":85,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":86,"sourceHtmlUrl":87},"phase-5-verify.md",3971,"https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fvm-provision\u002Fphase-5-verify.md",{"path":89,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":90,"sourceHtmlUrl":91},"phase-6-handoff.md",3552,"https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fvm-provision\u002Fphase-6-handoff.md",[93,122,157,186,212,228],{"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":104,"publishedAt":39},"01M71K887N78V089XR5BWT0JAV","wave-audit","3-wave parallel audit — Wave 1 discovery (4 agents), Wave 2 verification (4 agents), Wave 3 cross-optimization (1 synthesizer). Each wave runs agents in parallel. Combines security review, runtime analysis, quality check, and constructor pattern into one unified workflow with evidence grading and Go\u002FNo-Go verdict.","https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fwave-audit\u002FSKILL.md",[99],{"categoryNo":100,"categoryName":101,"taxonomyType":102,"taxonomyTypeDesc":103},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[105,106,107,108,109,110,26,111,112,113,114,115,116,117,118,119,120,121,30,27],"wave audit","audit","unified workflow","workflow","analysis","review","security review","pattern","grading","go","security","parallel","evidence","runtime","quality check","discovery","Optimization",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":126,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":137,"publishedAt":39},"01M71K80ZRH2H5ES83QS97BB91","visual-explainer","Generate beautiful, self-contained HTML pages that visually explain systems, code changes, plans, and data. Use when the user asks for a diagram, architecture overview, diff review, plan review, project recap, comparison table, or any visual explanation of technical concepts. Also use proactively when you are about to render a complex ASCII table (4+ rows or 3+ columns) — present it as a styled HTML page instead.","MIT","https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fvisual-explainer\u002FSKILL.md",[129,132],{"categoryNo":130,"categoryName":131,"taxonomyType":102,"taxonomyTypeDesc":103},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":133,"categoryName":134,"taxonomyType":135,"taxonomyTypeDesc":136},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[138,139,140,141,142,143,144,145,25,146,147,148,149,150,151,152,153,154,155,156],"visual","visual explainer","explainer","project","files","image","you","architecture","generate","present","concepts","table","as","view","for","ascii table","ascii","surf","use",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":166,"publishedAt":39},"01M71K7VSD5ZWN26QJEC4T0770","video-gen","Use when generating video from frame sequences — FFmpeg extraction, WebP\u002FAVIF conversion, sprite sheets, scroll-synced playback, video encoding\u002Ftranscoding. Covers the full pipeline from video source to web-ready frame sequence or optimized video.","https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fvideo-gen\u002FSKILL.md",[163],{"categoryNo":164,"categoryName":165,"taxonomyType":102,"taxonomyTypeDesc":103},"01JBSEEDCAT000000000000016","图像与多媒体",[167,168,169,170,171,172,173,174,175,176,143,177,178,179,180,181,182,183,184,185],"Video","gen","video gen","ready","pipeline","default","generated","synced","false","when","conversion","directory","sequences","sequence","source","full","path","webp","target",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":195,"publishedAt":39},"01M71K7R88RM8ENVCRZHZSMM5T","test-matrix","Use when a project needs testing BEYOND unit tests — fuzzing, property-based, load, E2E, or mutation. Five-phase hub-and-spoke pipeline composes the right mix per language × critical path × CI target, scaffolds configs + corpus + fixtures, wires CI jobs, and defines the crash\u002Fregression triage workflow. Pure-click: every decision except intake is an AskUserQuestion.","https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Ftest-matrix\u002FSKILL.md",[192],{"categoryNo":193,"categoryName":194,"taxonomyType":102,"taxonomyTypeDesc":103},"01JBSEEDCAT000000000000008","测试与质量",[196,197,198,199,185,200,141,201,171,202,203,204,205,206,207,208,209,156,210,211],"test","matrix","test matrix","unit","click","regression","mix","intake","testing","decision","ci","tests","e2e","mutation","load","fuzzing",{"skillNo":213,"name":214,"nameZh":6,"description":215,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":216,"categories":217,"keywords":219,"publishedAt":39},"01M71K7N3ZY9FMMH3CSE1H8K5J","test-gen","Use when generating tests for untested code — happy path, edge cases, error handling","https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Ftest-gen\u002FSKILL.md",[218],{"categoryNo":193,"categoryName":194,"taxonomyType":102,"taxonomyTypeDesc":103},[220,168,196,221,185,152,222,207,223,156,176,224,225,226,227,183],"test gen","error","true","edge","file","code","error handling","name",{"skillNo":229,"name":230,"nameZh":6,"description":231,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":232,"categories":233,"keywords":235,"publishedAt":39},"01M71K7JZ57GFDT6PA0H1Z1X84","spawn-agent","Prepare a composed Agent-tool invocation via kei-spawn. Click-only wizard — pick role, describe task, set scope. Emits ready-to-paste prompt + subagent_type + isolation + DNA.","https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fspawn-agent\u002FSKILL.md",[234],{"categoryNo":100,"categoryName":101,"taxonomyType":102,"taxonomyTypeDesc":103},[236,237,238,170,200,239,240,241,242,32,243,244,245,246,247,248,249,250,251,252],"spawn agent","spawn","SET","scope","tool","pick","wizard","prompt","subagent","task","type","DNA","via","paste","describe","role","prepare"]