[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71GS8EN9M65V2564SWF275T":3,"skill-same:01M71GS8EN9M65V2564SWF275T":81},{"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":55,"commitSha":56,"skillDirectory":57,"forksCount":14,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":60,"updatedAt":61,"install":62,"resources":74},"01M71GS8EN9M65V2564SWF275T","frontmatter-guard",null,"Validate and auto-repair YAML frontmatter on brain pages. Catches malformed\npages before they enter the brain (missing closing ---, nested quotes, slug\nmismatches, null bytes, empty frontmatter, YAML parse failures). Wraps the\n`gbrain frontmatter` CLI for agent-driven workflows.","weareturnone\u002Fgbrain","weareturnone","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F106660686?v=4","01M71GRFW4YZ9DFYK6J17YXQNB","Roelof Stoelwinder ","01M71GRFWVQF5ASVB08TP5VKWG",0,"MIT","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Ffrontmatter-guard\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"frontmatter guard","frontmatter","guard","audit","gbrain","closing","cli","nested","check","lint","workflows","quotes","auto","pages","true","missing","fix","for","parse","repair","2026-11-10 10:12:30",false,"---\nname: frontmatter-guard\nversion: 1.0.0\ndescription: |\n  Validate and auto-repair YAML frontmatter on brain pages. Catches malformed\n  pages before they enter the brain (missing closing ---, nested quotes, slug\n  mismatches, null bytes, empty frontmatter, YAML parse failures). Wraps the\n  `gbrain frontmatter` CLI for agent-driven workflows.\ntriggers:\n  - \"validate frontmatter\"\n  - \"check frontmatter\"\n  - \"fix frontmatter\"\n  - \"frontmatter audit\"\n  - \"brain lint\"\ntools:\n  - exec\nmutating: true\n---\n\n# Frontmatter Guard Skill\n\n> **Convention:** see `skills\u002Fconventions\u002Fquality.md` for citation rules; this skill is structural validation, not citation auditing.\n\n## Contract\n\nThis skill guarantees:\n- Every brain page is scanned against the seven canonical frontmatter validation classes\n- Mechanical errors (nested quotes, missing closing `---`, null bytes, slug mismatch) are auto-repairable on demand with `.bak` backups\n- Validation logic is shared with `gbrain doctor`'s `frontmatter_integrity` subcheck — single source of truth\n- Reports per source (gbrain is multi-source since v0.18.0); never silently audits the wrong root\n\n## Why This Exists\n\nBrain pages pile up over months. Agents write them with malformed frontmatter:\n- Missing closing `---` (entity detector bugs)\n- Unstructured YAML in meeting pages (ingestion bugs)\n- Slug mismatches (path renames not propagated)\n- Null bytes (binary corruption from copy-paste accidents)\n- Nested double quotes in titles (`title: \"Phil \"Nick\" Last\"`)\n\nWithout a guard, these accumulate silently until `gbrain sync` chokes or search returns garbage. The guard makes the failure visible at audit time and trivially fixable.\n\n## Validation classes\n\n| Code | Meaning | Auto-fixable? |\n|------|---------|---------------|\n| `MISSING_OPEN` | File doesn't start with `---` | No (needs human) |\n| `MISSING_CLOSE` | No closing `---` before first heading | Yes |\n| `YAML_PARSE` | YAML failed to parse | Sometimes (depends on cause) |\n| `SLUG_MISMATCH` | Frontmatter `slug:` differs from path-derived slug | Yes (removes the field) |\n| `NULL_BYTES` | Binary corruption (`\\x00`) | Yes |\n| `NESTED_QUOTES` | `title: \"outer \"inner\" outer\"` shape | Yes |\n| `EMPTY_FRONTMATTER` | Open + close present but nothing between | No (needs human) |\n\n## Phases\n\n### Phase 1: Audit\n\nRun a read-only scan across all registered sources (or one with `--source \u003Cid>`).\n\n```bash\ngbrain frontmatter audit --json\n```\n\nReports:\n- Per-source counts grouped by error code\n- Sample of up to 20 affected pages per source\n- Total count\n- Scan timestamp\n\nOutput is JSON; agents parse `errors_by_code` and `per_source` to decide next steps.\n\n### Phase 2: Validate one path\n\nValidate a single file or directory (does not require source registration):\n\n```bash\ngbrain frontmatter validate \u003Cpath> --json\n```\n\nExit code 0 = clean; 1 = errors found. Use this in CI pipelines or pre-commit hooks.\n\n### Phase 3: Fix\n\nWhen issues are found:\n\n```bash\ngbrain frontmatter validate \u003Cpath> --fix\n```\n\n`--fix` writes `\u003Cfile>.bak` for every modified file before mutating. The backup is the safety contract — works whether the brain is a git repo or a plain directory.\n\n`--dry-run` previews without writing. Use this before applying fixes in batch.\n\n### Phase 4: Pre-commit hook (optional)\n\nFor brain repos that ARE git repos, install the pre-commit hook to block malformed pages from being committed in the first place:\n\n```bash\ngbrain frontmatter install-hook [--source \u003Cid>]\n```\n\nThe hook runs `gbrain frontmatter validate` against staged `.md`\u002F`.mdx` files. Bypass with `git commit --no-verify`.\n\n## Trigger words\n\nWhen the user says any of these, route here:\n- \"validate frontmatter\"\n- \"check frontmatter\"\n- \"fix frontmatter\"\n- \"frontmatter audit\"\n- \"brain lint\"\n\n## Output rules\n\n- Always run `gbrain frontmatter audit --json` first; never assume a brain is clean.\n- Surface counts to the user in plain language; do not dump raw JSON.\n- For `--fix` operations: state how many files will be modified BEFORE running, then confirm.\n- `SLUG_MISMATCH` fixes remove the frontmatter `slug:` field — gbrain derives slug from path. Mention this when the user's title is intentionally renamed.\n- Never auto-fix `MISSING_OPEN` or `EMPTY_FRONTMATTER` without explicit user input — these usually mean a human author started a page and didn't finish.\n\n## Chains with\n\n- `gbrain doctor` — the `frontmatter_integrity` subcheck reports the same counts as `audit`.\n- `skills\u002Fmaintain\u002FSKILL.md` — broader brain health audit; chain after this skill if other classes of issue are suspected.\n- `skills\u002Flint\u002FSKILL.md` (via `gbrain lint`) — overlapping rules for skill-file lint; the `frontmatter-*` rule names in lint output come from this skill's validation surface.\n\n## Output Format\n\nAudit summary (terse, agent-friendly):\n\n```\nFrontmatter audit — 17 issue(s) across 1 source(s)\n\n[default] \u002FUsers\u002Fme\u002Fbrain\n  17 issue(s)\n    MISSING_CLOSE: 8\n    NESTED_QUOTES: 5\n    NULL_BYTES: 4\n  sample:\n    people\u002Fjane.md — MISSING_CLOSE\n    companies\u002Facme.md — NESTED_QUOTES\n    (+ 12 more)\n\nFix with: gbrain frontmatter validate \u002FUsers\u002Fme\u002Fbrain --fix\n```\n\nJSON envelope (when `--json` is passed):\n\n```json\n{\n  \"ok\": false,\n  \"total\": 17,\n  \"errors_by_code\": { \"MISSING_CLOSE\": 8, \"NESTED_QUOTES\": 5, \"NULL_BYTES\": 4 },\n  \"per_source\": [\n    {\n      \"source_id\": \"default\",\n      \"source_path\": \"\u002FUsers\u002Fme\u002Fbrain\",\n      \"total\": 17,\n      \"errors_by_code\": { \"MISSING_CLOSE\": 8, \"NESTED_QUOTES\": 5, \"NULL_BYTES\": 4 },\n      \"sample\": [{ \"path\": \"people\u002Fjane.md\", \"codes\": [\"MISSING_CLOSE\"] }]\n    }\n  ],\n  \"scanned_at\": \"2026-04-25T22:30:00.000Z\"\n}\n```\n\n`gbrain frontmatter validate \u003Cpath> --json` returns a similar envelope keyed on per-file results instead of per-source.\n\n## Anti-Patterns\n\n**Don't auto-fix `MISSING_OPEN` or `EMPTY_FRONTMATTER` without user input.** These usually mean a human author started a page and didn't finish — silently inserting `---` markers around an unfinished draft is wrong.\n\n**Don't use `--fix` to \"make doctor green\" without reading the audit first.** SLUG_MISMATCH cases are surfaced for manual review specifically because gbrain derives the slug from path. A mismatch usually means the user renamed a file intentionally; auto-removing the slug field is the right outcome only when you've confirmed the rename was deliberate.\n\n**Don't skip the `.bak` backups.** The `.bak` is the safety contract for non-git brain repos. If `.bak` files accumulate after a fix run, that's a feature, not a bug — the user can review the diffs and delete the backups when satisfied.\n\n**Don't run `audit` on a brain where sources aren't registered.** The CLI returns \"no registered sources to audit\" gracefully, but the migration emits a `skipped: no_sources` phase result. Don't paper over this with a manual path-walk; the right fix is to register the source via `gbrain sources add`.\n\n**Don't install the pre-commit hook on non-git brain dirs.** The install-hook command skips them automatically with a one-line note. If you see \"skipped — not a git repo\" and want validation at write time anyway, use the `audit` command on a cron schedule.\n","# Frontmatter Guard Skill\n\n> **Convention:** see `skills\u002Fconventions\u002Fquality.md` for citation rules; this skill is structural validation, not citation auditing.\n\n## Contract\n\nThis skill guarantees:\n- Every brain page is scanned against the seven canonical frontmatter validation classes\n- Mechanical errors (nested quotes, missing closing `---`, null bytes, slug mismatch) are auto-repairable on demand with `.bak` backups\n- Validation logic is shared with `gbrain doctor`'s `frontmatter_integrity` subcheck — single source of truth\n- Reports per source (gbrain is multi-source since v0.18.0); never silently audits the wrong root\n\n## Why This Exists\n\nBrain pages pile up over months. Agents write them with malformed frontmatter:\n- Missing closing `---` (entity detector bugs)\n- Unstructured YAML in meeting pages (ingestion bugs)\n- Slug mismatches (path renames not propagated)\n- Null bytes (binary corruption from copy-paste accidents)\n- Nested double quotes in titles (`title: \"Phil \"Nick\" Last\"`)\n\nWithout a guard, these accumulate silently until `gbrain sync` chokes or search returns garbage. The guard makes the failure visible at audit time and trivially fixable.\n\n## Validation classes\n\n| Code | Meaning | Auto-fixable? |\n|------|---------|---------------|\n| `MISSING_OPEN` | File doesn't start with `---` | No (needs human) |\n| `MISSING_CLOSE` | No closing `---` before first heading | Yes |\n| `YAML_PARSE` | YAML failed to parse | Sometimes (depends on cause) |\n| `SLUG_MISMATCH` | Frontmatter `slug:` differs from path-derived slug | Yes (removes the field) |\n| `NULL_BYTES` | Binary corruption (`\\x00`) | Yes |\n| `NESTED_QUOTES` | `title: \"outer \"inner\" outer\"` shape | Yes |\n| `EMPTY_FRONTMATTER` | Open + close present but nothing between | No (needs human) |\n\n## Phases\n\n### Phase 1: Audit\n\nRun a read-only scan across all registered sources (or one with `--source \u003Cid>`).\n\n```bash\ngbrain frontmatter audit --json\n```\n\nReports:\n- Per-source counts grouped by error code\n- Sample of up to 20 affected pages per source\n- Total count\n- Scan timestamp\n\nOutput is JSON; agents parse `errors_by_code` and `per_source` to decide next steps.\n\n### Phase 2: Validate one path\n\nValidate a single file or directory (does not require source registration):\n\n```bash\ngbrain frontmatter validate \u003Cpath> --json\n```\n\nExit code 0 = clean; 1 = errors found. Use this in CI pipelines or pre-commit hooks.\n\n### Phase 3: Fix\n\nWhen issues are found:\n\n```bash\ngbrain frontmatter validate \u003Cpath> --fix\n```\n\n`--fix` writes `\u003Cfile>.bak` for every modified file before mutating. The backup is the safety contract — works whether the brain is a git repo or a plain directory.\n\n`--dry-run` previews without writing. Use this before applying fixes in batch.\n\n### Phase 4: Pre-commit hook (optional)\n\nFor brain repos that ARE git repos, install the pre-commit hook to block malformed pages from being committed in the first place:\n\n```bash\ngbrain frontmatter install-hook [--source \u003Cid>]\n```\n\nThe hook runs `gbrain frontmatter validate` against staged `.md`\u002F`.mdx` files. Bypass with `git commit --no-verify`.\n\n## Trigger words\n\nWhen the user says any of these, route here:\n- \"validate frontmatter\"\n- \"check frontmatter\"\n- \"fix frontmatter\"\n- \"frontmatter audit\"\n- \"brain lint\"\n\n## Output rules\n\n- Always run `gbrain frontmatter audit --json` first; never assume a brain is clean.\n- Surface counts to the user in plain language; do not dump raw JSON.\n- For `--fix` operations: state how many files will be modified BEFORE running, then confirm.\n- `SLUG_MISMATCH` fixes remove the frontmatter `slug:` field — gbrain derives slug from path. Mention this when the user's title is intentionally renamed.\n- Never auto-fix `MISSING_OPEN` or `EMPTY_FRONTMATTER` without explicit user input — these usually mean a human author started a page and didn't finish.\n\n## Chains with\n\n- `gbrain doctor` — the `frontmatter_integrity` subcheck reports the same counts as `audit`.\n- `skills\u002Fmaintain\u002FSKILL.md` — broader brain health audit; chain after this skill if other classes of issue are suspected.\n- `skills\u002Flint\u002FSKILL.md` (via `gbrain lint`) — overlapping rules for skill-file lint; the `frontmatter-*` rule names in lint output come from this skill's validation surface.\n\n## Output Format\n\nAudit summary (terse, agent-friendly):\n\n```\nFrontmatter audit — 17 issue(s) across 1 source(s)\n\n[default] \u002FUsers\u002Fme\u002Fbrain\n  17 issue(s)\n    MISSING_CLOSE: 8\n    NESTED_QUOTES: 5\n    NULL_BYTES: 4\n  sample:\n    people\u002Fjane.md — MISSING_CLOSE\n    companies\u002Facme.md — NESTED_QUOTES\n    (+ 12 more)\n\nFix with: gbrain frontmatter validate \u002FUsers\u002Fme\u002Fbrain --fix\n```\n\nJSON envelope (when `--json` is passed):\n\n```json\n{\n  \"ok\": false,\n  \"total\": 17,\n  \"errors_by_code\": { \"MISSING_CLOSE\": 8, \"NESTED_QUOTES\": 5, \"NULL_BYTES\": 4 },\n  \"per_source\": [\n    {\n      \"source_id\": \"default\",\n      \"source_path\": \"\u002FUsers\u002Fme\u002Fbrain\",\n      \"total\": 17,\n      \"errors_by_code\": { \"MISSING_CLOSE\": 8, \"NESTED_QUOTES\": 5, \"NULL_BYTES\": 4 },\n      \"sample\": [{ \"path\": \"people\u002Fjane.md\", \"codes\": [\"MISSING_CLOSE\"] }]\n    }\n  ],\n  \"scanned_at\": \"2026-04-25T22:30:00.000Z\"\n}\n```\n\n`gbrain frontmatter validate \u003Cpath> --json` returns a similar envelope keyed on per-file results instead of per-source.\n\n## Anti-Patterns\n\n**Don't auto-fix `MISSING_OPEN` or `EMPTY_FRONTMATTER` without user input.** These usually mean a human author started a page and didn't finish — silently inserting `---` markers around an unfinished draft is wrong.\n\n**Don't use `--fix` to \"make doctor green\" without reading the audit first.** SLUG_MISMATCH cases are surfaced for manual review specifically because gbrain derives the slug from path. A mismatch usually means the user renamed a file intentionally; auto-removing the slug field is the right outcome only when you've confirmed the rename was deliberate.\n\n**Don't skip the `.bak` backups.** The `.bak` is the safety contract for non-git brain repos. If `.bak` files accumulate after a fix run, that's a feature, not a bug — the user can review the diffs and delete the backups when satisfied.\n\n**Don't run `audit` on a brain where sources aren't registered.** The CLI returns \"no registered sources to audit\" gracefully, but the migration emits a `skipped: no_sources` phase result. Don't paper over this with a manual path-walk; the right fix is to register the source via `gbrain sources add`.\n\n**Don't install the pre-commit hook on non-git brain dirs.** The install-hook command skips them automatically with a one-line note. If you see \"skipped — not a git repo\" and want validation at write time anyway, use the `audit` command on a cron schedule.\n",{"name":5,"tools":44,"version":46,"mutating":47,"triggers":48,"description":54},[45],"exec","1.0.0",true,[49,50,51,52,53],"validate frontmatter","check frontmatter","fix frontmatter","frontmatter audit","brain lint","Validate and auto-repair YAML frontmatter on brain pages. Catches malformed\npages before they enter the brain (missing closing ---, nested quotes, slug\nmismatches, null bytes, empty frontmatter, YAML parse failures). Wraps the\n`gbrain frontmatter` CLI for agent-driven workflows.\n","master","1fd9e273fe234ffb8d2a7705955f087f861a5c3d","skills\u002Ffrontmatter-guard","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain","https:\u002F\u002Fgithub.com\u002Fweareturnone","I have a passion for operations, systems and doing good for the world.","2026-07-08 23:38:19",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":47},[64,67,70],{"tool":65,"command":66},"npx","npx skills add weareturnone\u002Fgbrain --skill frontmatter-guard",{"tool":68,"command":69},"bunx","bunx skills add weareturnone\u002Fgbrain --skill frontmatter-guard",{"tool":71,"command":72},"pnpm","pnpm dlx skills add weareturnone\u002Fgbrain --skill frontmatter-guard","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Ffrontmatter-guard\u002FSKILL.md",[75],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"routing-eval.jsonl","OTHER","其他",673,"https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Ffrontmatter-guard\u002Frouting-eval.jsonl",[82,98,112,127,142,165],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":39},"01M71GTZ2PH49PD2R6RR7MHJZP","signal-detector","Always-on ambient signal capture for the OpenClaw reference fixture.","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fopenclaw-reference-minimal\u002Fskills\u002Fsignal-detector\u002FSKILL.md",[],[89,90,91,36,92,93,94,95,96,97],"signal","signal detector","detector","openclaw","capture","reference","message","fixture","ambient",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":39},"01M71GTY1250DC73PGRWDE82KW","query","Look up brain pages in the OpenClaw reference fixture.","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fopenclaw-reference-minimal\u002Fskills\u002Fquery\u002FSKILL.md",[],[100,105,94,106,92,107,32,108,109,110,111,36,96],"do","lookup","look","up","brain","search","about",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":39},"01M71GTX0T1T9224P29SD7CSG7","context-now","ALWAYS-ON time-sensitivity discipline for the OpenClaw reference fixture.","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fopenclaw-reference-minimal\u002Fskills\u002Fcontext-now\u002FSKILL.md",[],[119,120,121,122,123,92,36,124,94,96,125,126],"context","context now","now","time","how","discipline","sensitivity","long",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":39},"01M71GTVZJTSWXBM4ZRF4A7QVA","brain-ops","Core read\u002Fwrite cycle for the OpenClaw reference fixture.","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fopenclaw-reference-minimal\u002Fskills\u002Fbrain-ops\u002FSKILL.md",[],[134,109,135,136,106,92,137,94,33,36,138,139,140,96,141],"brain ops","ops","Citation","people","read","cycle","core","write",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":39},"01M71GTT4F64V9RMNZ0WRTKWNG","webhook-transforms","Generic framework for converting external events (SMS, meetings, social mentions)\ninto brain-ingestible signals. Define a transform function, register a webhook URL,\nand incoming events get processed through the brain pipeline.","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Fwebhook-transforms\u002FSKILL.md",[],[149,150,151,152,153,108,154,155,156,157,33,158,110,159,160,161,36,162,163,164],"webhook","transforms","webhook transforms","SET","register","meetings","signals","URL","define","social","event","pipeline","page","sms","generic","get",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":184,"publishedAt":39},"01M71GTRDKSM500PRZEXFNQHF9","testing","Skill validation framework. Validates every skill has SKILL.md with frontmatter,\nevery reference exists, every env var is declared. The testing contract for the\nskill system itself.","https:\u002F\u002Fgithub.com\u002Fweareturnone\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Ftesting\u002FSKILL.md",[171,176,179],{"categoryNo":172,"categoryName":173,"taxonomyType":174,"taxonomyTypeDesc":175},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":177,"categoryName":178,"taxonomyType":174,"taxonomyTypeDesc":175},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":180,"categoryName":181,"taxonomyType":182,"taxonomyTypeDesc":183},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[167,185,186,187,188,189,190,191,27,192,193,194,195,196,32,197,110,198,199,36],"test skills","validation","run","health check","test","with","health","env","skill validation","false","contract","tests","skill health","system","validate skills"]