[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XDEMDTWHVHPSH734D3SM7T":3,"skill-same:01M6XDEMDTWHVHPSH734D3SM7T":76},{"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":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":14,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6XDEMDTWHVHPSH734D3SM7T","security-review",null,"Analyze a diff or changed files for common security vulnerabilities (injection, XSS, SSRF, secrets). Defaults to staged changes. Triggers on: \"security review\", \"check for secrets\", \"vulnerability scan\".","kaiohenricunha\u002Fdotbabel","kaiohenricunha","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F69804490?v=4","01M6XCZD37W0KPCDGEA40Y610V","Kaio Cunha","01M6XCZD7SX714D114H3ZPNW09",0,"MIT","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fplugins\u002Fdotbabel\u002Ftemplates\u002Fclaude\u002Fskills\u002Fsecurity-review\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"security","security review","review","for","path","triggers","common security","scan","files","diff","read","common","analyze","Bash","secrets","vulnerability","xss","injection","ssrf","pr","2026-11-10 10:12:30",false,"---\n# dotbabel:generated projection=sha256:425d5a441847b7ccbbce98e6edab05561331b12db927a64b8770125e9ef93e02 source=skills\u002Fsecurity-review\u002FSKILL.md — do not edit directly\nallowed-tools: Read Grep Bash\nargument-hint: \"[PR# | path | staged]\"\ndescription: |\n  Analyze a diff or changed files for common security vulnerabilities (injection, XSS, SSRF, secrets). Defaults to staged changes. Triggers on: \"security review\", \"check for secrets\", \"vulnerability scan\".\nname: security-review\n---\n\nAnalyze a diff or set of changed files for common security vulnerabilities.\n\nArguments: `$ARGUMENTS` (optional: a PR number, file path, or `staged` for staged changes. Default: staged changes.)\n\nThis is a fast checklist on one diff. For a whole-repository or subsystem audit with independently verified findings, use the `security-audit` skill instead.\n\n## Stack detection\n\nDetect what's in the repo before applying checks (run once at the start):\n\n```bash\nHAS_NODE=$([ -f package.json ] && echo 1)\nHAS_GO=$([ -f go.mod ] && echo 1)\nHAS_PY=$([ -f pyproject.toml ] || [ -f requirements.txt ] && echo 1)\nHAS_RUST=$([ -f Cargo.toml ] && echo 1)\nHAS_DOCKER=$([ -f Dockerfile ] || [ -f compose.yml ] || [ -f docker-compose.yml ] && echo 1)\nHAS_K8S=$(ls k8s\u002F*.yaml charts\u002F 2>\u002Fdev\u002Fnull | head -1)\n```\n\nApply only the relevant checklists below.\n\n## What this checks\n\nOWASP Top 10 adapted per detected stack. Each category lists the globs to target and the class of issue to flag.\n\n### Frontend (if `HAS_NODE` and source looks like a web app)\n\nCommon frontend globs: `src\u002F**\u002F*.{js,jsx,ts,tsx,vue,svelte}`, `app\u002F**\u002F*.{js,jsx,ts,tsx}`, `pages\u002F**\u002F*.{js,jsx,ts,tsx}`, `components\u002F**\u002F*`.\n\n1. **XSS:** React's raw-HTML injection prop (`dangerously*`), Vue's `v-html`, Svelte's `{@html ...}`, unescaped URL params rendered into the DOM, template-literal injection into DOM sinks.\n2. **Open redirect:** Unvalidated `window.location` \u002F `router.push` assignments from user input or URL params.\n3. **Sensitive data in client:** API keys, tokens, or secrets hardcoded in source files. Anything prefixed `NEXT_PUBLIC_`, `VITE_`, `REACT_APP_` holding a secret-shaped value is a leak.\n4. **localStorage \u002F sessionStorage abuse:** Storing auth tokens or sensitive data without namespacing; reading without validation.\n5. **Dependency risk:** New npm dependencies added. Run `npm audit` (or `pnpm audit` \u002F `yarn audit`) and flag known CVEs at moderate+ severity.\n6. **CSP \u002F headers:** Regressions in `Content-Security-Policy`, `X-Frame-Options`, `Referrer-Policy`, `Permissions-Policy`.\n\n### Backend (Go, if `HAS_GO`)\n\nGlobs: `**\u002F*.go` (excluding `**\u002F*_test.go` unless the test introduces real endpoints).\n\n1. **SQL injection:** String concatenation in queries instead of parameterized statements (`$1`, `$2`, or driver-specific placeholders).\n2. **Auth bypass:** New routes without the project's auth middleware; protected endpoints that don't call a `RequireAuth` \u002F `RequireAdmin` wrapper.\n3. **CORS misconfiguration:** Wildcard `*` origins combined with `credentials: true`; reflected `Origin` header without allowlist.\n4. **Secret exposure:** Hardcoded secrets, API keys, database URLs in Go source or config files.\n5. **Path traversal:** User-controlled file paths without `filepath.Clean` + containment checks.\n6. **SSRF:** `http.Get` \u002F `http.NewRequest` on URLs derived from user input without an allowlist.\n7. **Deserialization:** `json.Unmarshal` into `interface{}` combined with type assertions on unvalidated input.\n\n### Backend (Node\u002FTS, if `HAS_NODE` and there's server code)\n\nGlobs: `api\u002F**\u002F*.{ts,js}`, `server\u002F**\u002F*.{ts,js}`, `app\u002Fapi\u002F**\u002F*.{ts,js}` (Next.js route handlers), `middleware.{ts,js}`.\n\n1. **NoSQL\u002FSQL injection** via unparameterized queries.\n2. **Prototype pollution:** unsafe `Object.assign` \u002F spread into user-provided JSON.\n3. **Auth bypass, CORS, secret exposure, path traversal, SSRF:** same as Go section above.\n4. **Weak crypto:** `crypto.createHash('md5')` or `sha1` for anything security-relevant.\n\n### Backend (Python, if `HAS_PY`)\n\nGlobs: `**\u002F*.py` (excluding tests).\n\n1. **SQL injection:** f-string \u002F %-format SQL instead of parameterized cursors.\n2. **Shell injection:** `subprocess.*(shell=True)` with user-controlled args; `os.system`.\n3. **Unsafe deserialization:** Python's binary object-serialization module (flag imports and `loads` calls against untrusted input — prefer JSON); YAML without `SafeLoader`.\n4. **Auth, CORS, secrets, path traversal, SSRF:** same mental model as above.\n\n### Data \u002F config files\n\nGlobs: any tracked data file (`data\u002F**`, `content\u002F**`, project-specific generated files), plus `.env*`, `config\u002F**`, `infra\u002F**`.\n\n1. **Credential leakage:** Database URLs, API keys, tokens accidentally committed.\n2. **SQL injection via migration:** Dynamic SQL or unsanitized interpolation in migration files (`migrations\u002F**.sql`, `db\u002Fmigrate\u002F**`).\n\n### Docker \u002F Kubernetes (if detected)\n\n1. **Privileged containers:** `privileged: true`, `allowPrivilegeEscalation: true`.\n2. **Hostpath mounts** that expose the host filesystem.\n3. **Secrets in env blocks:** plaintext values in `env:` where `envFrom: secretRef` is the right pattern.\n4. **`latest` image tags** in production manifests.\n\n## Steps\n\n1. **Determine the diff to review:**\n   - If a PR number was given: `gh pr diff \u003Cnumber>`\n   - If a file path was given: `git diff HEAD -- \u003Cpath>`\n   - If `staged` or no argument: `git diff --cached` (fall back to `git diff` if nothing staged)\n\n2. **For each changed file**, map to the applicable checklists above based on path and file extension.\n\n3. **Classify each finding:**\n   - **CRITICAL:** Exploitable vulnerability (XSS, SQL\u002FNoSQL injection, auth bypass, credential exposure, SSRF with internal network reachable).\n   - **WARNING:** Potential issue needing review (new dependency with unclear provenance, broad CORS, missing input validation, weak crypto).\n   - **INFO:** Best practice suggestion (namespace localStorage keys, add rate limiting, tighten CSP, prefer typed query helpers).\n\n4. **Report as a table:**\n\n| Severity | File | Line | Finding | Recommendation |\n| -------- | ---- | ---- | ------- | -------------- |\n\n5. If no issues found, report \"Security review: clean.\"\n\nDo NOT auto-fix. Report findings for the user or the calling workflow to act on.\n","Analyze a diff or set of changed files for common security vulnerabilities.\n\nArguments: `$ARGUMENTS` (optional: a PR number, file path, or `staged` for staged changes. Default: staged changes.)\n\nThis is a fast checklist on one diff. For a whole-repository or subsystem audit with independently verified findings, use the `security-audit` skill instead.\n\n## Stack detection\n\nDetect what's in the repo before applying checks (run once at the start):\n\n```bash\nHAS_NODE=$([ -f package.json ] && echo 1)\nHAS_GO=$([ -f go.mod ] && echo 1)\nHAS_PY=$([ -f pyproject.toml ] || [ -f requirements.txt ] && echo 1)\nHAS_RUST=$([ -f Cargo.toml ] && echo 1)\nHAS_DOCKER=$([ -f Dockerfile ] || [ -f compose.yml ] || [ -f docker-compose.yml ] && echo 1)\nHAS_K8S=$(ls k8s\u002F*.yaml charts\u002F 2>\u002Fdev\u002Fnull | head -1)\n```\n\nApply only the relevant checklists below.\n\n## What this checks\n\nOWASP Top 10 adapted per detected stack. Each category lists the globs to target and the class of issue to flag.\n\n### Frontend (if `HAS_NODE` and source looks like a web app)\n\nCommon frontend globs: `src\u002F**\u002F*.{js,jsx,ts,tsx,vue,svelte}`, `app\u002F**\u002F*.{js,jsx,ts,tsx}`, `pages\u002F**\u002F*.{js,jsx,ts,tsx}`, `components\u002F**\u002F*`.\n\n1. **XSS:** React's raw-HTML injection prop (`dangerously*`), Vue's `v-html`, Svelte's `{@html ...}`, unescaped URL params rendered into the DOM, template-literal injection into DOM sinks.\n2. **Open redirect:** Unvalidated `window.location` \u002F `router.push` assignments from user input or URL params.\n3. **Sensitive data in client:** API keys, tokens, or secrets hardcoded in source files. Anything prefixed `NEXT_PUBLIC_`, `VITE_`, `REACT_APP_` holding a secret-shaped value is a leak.\n4. **localStorage \u002F sessionStorage abuse:** Storing auth tokens or sensitive data without namespacing; reading without validation.\n5. **Dependency risk:** New npm dependencies added. Run `npm audit` (or `pnpm audit` \u002F `yarn audit`) and flag known CVEs at moderate+ severity.\n6. **CSP \u002F headers:** Regressions in `Content-Security-Policy`, `X-Frame-Options`, `Referrer-Policy`, `Permissions-Policy`.\n\n### Backend (Go, if `HAS_GO`)\n\nGlobs: `**\u002F*.go` (excluding `**\u002F*_test.go` unless the test introduces real endpoints).\n\n1. **SQL injection:** String concatenation in queries instead of parameterized statements (`$1`, `$2`, or driver-specific placeholders).\n2. **Auth bypass:** New routes without the project's auth middleware; protected endpoints that don't call a `RequireAuth` \u002F `RequireAdmin` wrapper.\n3. **CORS misconfiguration:** Wildcard `*` origins combined with `credentials: true`; reflected `Origin` header without allowlist.\n4. **Secret exposure:** Hardcoded secrets, API keys, database URLs in Go source or config files.\n5. **Path traversal:** User-controlled file paths without `filepath.Clean` + containment checks.\n6. **SSRF:** `http.Get` \u002F `http.NewRequest` on URLs derived from user input without an allowlist.\n7. **Deserialization:** `json.Unmarshal` into `interface{}` combined with type assertions on unvalidated input.\n\n### Backend (Node\u002FTS, if `HAS_NODE` and there's server code)\n\nGlobs: `api\u002F**\u002F*.{ts,js}`, `server\u002F**\u002F*.{ts,js}`, `app\u002Fapi\u002F**\u002F*.{ts,js}` (Next.js route handlers), `middleware.{ts,js}`.\n\n1. **NoSQL\u002FSQL injection** via unparameterized queries.\n2. **Prototype pollution:** unsafe `Object.assign` \u002F spread into user-provided JSON.\n3. **Auth bypass, CORS, secret exposure, path traversal, SSRF:** same as Go section above.\n4. **Weak crypto:** `crypto.createHash('md5')` or `sha1` for anything security-relevant.\n\n### Backend (Python, if `HAS_PY`)\n\nGlobs: `**\u002F*.py` (excluding tests).\n\n1. **SQL injection:** f-string \u002F %-format SQL instead of parameterized cursors.\n2. **Shell injection:** `subprocess.*(shell=True)` with user-controlled args; `os.system`.\n3. **Unsafe deserialization:** Python's binary object-serialization module (flag imports and `loads` calls against untrusted input — prefer JSON); YAML without `SafeLoader`.\n4. **Auth, CORS, secrets, path traversal, SSRF:** same mental model as above.\n\n### Data \u002F config files\n\nGlobs: any tracked data file (`data\u002F**`, `content\u002F**`, project-specific generated files), plus `.env*`, `config\u002F**`, `infra\u002F**`.\n\n1. **Credential leakage:** Database URLs, API keys, tokens accidentally committed.\n2. **SQL injection via migration:** Dynamic SQL or unsanitized interpolation in migration files (`migrations\u002F**.sql`, `db\u002Fmigrate\u002F**`).\n\n### Docker \u002F Kubernetes (if detected)\n\n1. **Privileged containers:** `privileged: true`, `allowPrivilegeEscalation: true`.\n2. **Hostpath mounts** that expose the host filesystem.\n3. **Secrets in env blocks:** plaintext values in `env:` where `envFrom: secretRef` is the right pattern.\n4. **`latest` image tags** in production manifests.\n\n## Steps\n\n1. **Determine the diff to review:**\n   - If a PR number was given: `gh pr diff \u003Cnumber>`\n   - If a file path was given: `git diff HEAD -- \u003Cpath>`\n   - If `staged` or no argument: `git diff --cached` (fall back to `git diff` if nothing staged)\n\n2. **For each changed file**, map to the applicable checklists above based on path and file extension.\n\n3. **Classify each finding:**\n   - **CRITICAL:** Exploitable vulnerability (XSS, SQL\u002FNoSQL injection, auth bypass, credential exposure, SSRF with internal network reachable).\n   - **WARNING:** Potential issue needing review (new dependency with unclear provenance, broad CORS, missing input validation, weak crypto).\n   - **INFO:** Best practice suggestion (namespace localStorage keys, add rate limiting, tighten CSP, prefer typed query helpers).\n\n4. **Report as a table:**\n\n| Severity | File | Line | Finding | Recommendation |\n| -------- | ---- | ---- | ------- | -------------- |\n\n5. If no issues found, report \"Security review: clean.\"\n\nDo NOT auto-fix. Report findings for the user or the calling workflow to act on.\n",{"name":5,"description":52,"allowed-tools":53,"argument-hint":54},"Analyze a diff or changed files for common security vulnerabilities (injection, XSS, SSRF, secrets). Defaults to staged changes. Triggers on: \"security review\", \"check for secrets\", \"vulnerability scan\".\n","Read Grep Bash","[PR# | path | staged]","main","91c337164997b99943fbcc64e8e362577b67bc81","plugins\u002Fdotbabel\u002Ftemplates\u002Fclaude\u002Fskills\u002Fsecurity-review","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha","I'm a Platform\u002FInfra engineer who happens to work in cybersec and write Go code.","2026-10-26 14:12:51",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add kaiohenricunha\u002Fdotbabel --skill security-review",{"tool":68,"command":69},"bunx","bunx skills add kaiohenricunha\u002Fdotbabel --skill security-review",{"tool":71,"command":72},"pnpm","pnpm dlx skills add kaiohenricunha\u002Fdotbabel --skill security-review","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fplugins\u002Fdotbabel\u002Ftemplates\u002Fclaude\u002Fskills\u002Fsecurity-review\u002FSKILL.md",true,[],[77,107,137,158,178,201],{"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":88,"publishedAt":47},"01M6XDQ7QMASPFZ355MYKCD06T","yolo","Start temporary autonomy for the current task or an explicit scope with a required --for expiry. Codex permits scoped pushes, merges, deploys, and releases after strict testing and validation; Full access is a separate runtime setting. Claude Code uses a session permission hook with a protected-action denylist.","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fskills\u002Fyolo\u002FSKILL.md",[83],{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[79,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,30,106],"testing","merge","code","start","access","session","ops","autonomy","releases","permission","full","runtime","scope","devex","hook","true","action","scoped",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":119,"publishedAt":47},"01M6XDQ1N21VE4KH98JWGZ7GN9","veracity-audit","Audit a data pipeline for Veracity and Value. Dispatches data-scientist, compliance-auditor, and data-engineer agents with project context injected at dispatch time. All source paths are supplied via flags — no defaults, no project assumptions. Subcommands: audit (full pipeline walk), score-check (scoring math only), gate-check (gate coverage only), source-trace \u003Clabel> (single source end-to-end). Invoke when: \"audit pipeline\", \"veracity check\", \"scoring math correct?\", \"check gates\", \"trace source\", \"verify quality gates\", \"formula correct?\".","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fskills\u002Fveracity-audit\u002FSKILL.md",[113,116],{"categoryNo":114,"categoryName":115,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":117,"categoryName":118,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000037","律师与法务",[120,121,89,29,122,123,40,124,125,126,127,128,129,130,131,132,133,134,135,136],"audit","veracity audit","data pipeline","pipeline","math","coverage","only","engineer","formula","scoring","time","project","worker","end","at","invoke","when",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":143,"publishedAt":47},"01M6XDPVDKBR376C06CEK9BC5S","validate-spec","Audit an already-implemented spec against the codebase. Walks each constraint (ARCH-N, PERF-N, KD-N, etc.) and acceptance criterion, grounds findings in file:line evidence, runs the spec.json acceptance_commands, and writes a single audit doc to docs\u002Faudits\u002F. Use whenever the user asks to \"validate a spec\", \"audit a spec\", \"check if spec is implemented\", \"verify the spec is done\", \"is this spec really done\", or otherwise wants closure on spec-driven work. Read-only against the spec — produces an audit, never modifies the spec itself.","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fskills\u002Fvalidate-spec\u002FSKILL.md",[],[144,145,146,89,29,147,148,120,40,149,37,150,126,151,152,153,154,155,156,157],"spec","validate","validate spec","run","acceptance","work","never","max","done","arch","line","2025","spec-driven","closure",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":165,"publishedAt":47},"01M6XDPMMECH82RAW553Y94HDS","terragrunt-specialist","Deep-dive Terragrunt hierarchy review, DRY pattern audits, and run-all orchestration analysis. Use for structured investigations of multi-environment Terragrunt layouts, dependency graphs, remote state config, and hook correctness. Triggers on: \"Terragrunt audit\", \"run-all review\", \"dependency block\", \"DRY pattern review\", \"env hierarchy audit\", \"mock_outputs\", \"terragrunt hooks\".","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fskills\u002Fterragrunt-specialist\u002FSKILL.md",[164],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[166,167,168,29,169,170,147,120,171,40,37,172,173,151,174,175,155,176,134,177],"terragrunt","specialist","terragrunt specialist","orchestration","debugging","analysis","dependency","hooks","deep","dry","remote","hierarchy",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":191,"publishedAt":47},"01M6XDPFJS2HGSE13RXF1HV8S7","terraform-specialist","Deep-dive Terraform architecture review, module design, state management, and migration. Use for structured investigations of Terraform workspaces, provider configuration, module coupling, import workflows, and test coverage. Triggers on: \"Terraform audit\", \"module review\", \"state management\", \"Terraform import\", \"workspace design\", \"provider config review\", \"Terraform testing\".","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fskills\u002Fterraform-specialist\u002FSKILL.md",[184,187,188],{"categoryNo":185,"categoryName":186,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":189,"categoryName":190,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",[192,193,167,89,194,29,195,196,197,170,120,40,37,125,198,199,174,200,155,134],"terraform","terraform specialist","design","workflows","architecture","architecture review","test coverage","workspaces","problem",{"skillNo":202,"name":144,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":204,"categories":205,"keywords":210,"publishedAt":47},"01M6XDP7V6H8WYPSXVEKYE6HJ6","Create structured engineering specs through interactive pairing. Use when the user wants to create a spec, design doc, technical specification, architecture document, RFC, or engineering plan. Triggers on \"let's spec this out\", \"create a spec\", \"design doc\", \"write a technical plan\", \"plan the architecture\". Works for greenfield and brownfield projects. Outputs to docs\u002Fspecs\u002F.","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fskills\u002Fspec\u002FSKILL.md",[206,207],{"categoryNo":189,"categoryName":190,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":208,"categoryName":209,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000032","设计师",[144,194,211,196,212,213,214,215,216,217,218,219,32,220,221,30,222,223,224,225],"component","create","plan","projects","write","interactive","use","document","specification","opus","technical specification","trade-offs","technical plan","outputs","frontier"]