[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X752PKY0H014EB929CVMCY":3,"skill-same:01M6X752PKY0H014EB929CVMCY":97},{"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":74,"commitSha":75,"skillDirectory":76,"forksCount":77,"repositoryHtmlUrl":78,"repositoryHomepageUrl":79,"ownerHtmlUrl":80,"ownerBlogUrl":79,"ownerDescription":81,"updatedAt":82,"install":83,"resources":96},"01M6X752PKY0H014EB929CVMCY","lint-skills",null,"Use when running the package's skill linter against all skills and rules to validate frontmatter, required sections, and execution metadata.","event4u-app\u002Fagent-config","event4u-app","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F199339632?v=4","01M6X5TWBNCQCE1VDKT4E9KF7N","event4u.app","01M6X5TWF4HRM266RG2Q5VVH1X",19,"MIT","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Flint-skills\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"lint skills","lint","command","running","when","frontmatter","read-only","scripts","only","write","read","config","linter","node","returns","src","Bash","execution","Meta","run","2026-11-10 10:12:30",false,"---\nmodel_tier: medium\nname: lint-skills\ndescription: \"Use when running the package's skill linter against all skills and rules to validate frontmatter, required sections, and execution metadata.\"\ndomain: process\nscope:\n  write: []\n  verification_reason: \"the declared command is a read-only linter: grep -c 'writeFileSync|mkdirSync|appendFileSync' src\u002Fscripts\u002Fskill_linter.ts returns 0. Absence of a write is not something a command can prove.\"\nexecution:\n  type: assisted\n  handler: shell\n  timeout_seconds: 120\n  allowed_tools: []\n  command:\n    - .\u002Fscripts-run\n    - src\u002Fscripts\u002Fskill_linter\n    - \"--all\"\nruntime_requires:\n  bins:\n    - bash\n    - node\n  network: []\nworkspaces:\n  - agent-config-maintainer\npacks:\n  - meta\n---\n\n# lint-skills\n\n## When to use\n\nUse this skill when:\n\n- Validating the shape of every skill and rule in `src\u002F`\n- Verifying execution metadata (`execution.type`, `handler`, `command`) is well-formed\n- Checking locally before opening a PR that CI's skill-lint job will pass\n- Investigating a reported linter failure on a specific skill or rule\n\nDo NOT use when:\n\n- Linting only one file — call `.\u002Fscripts-run src\u002Fscripts\u002Fskill_linter \u003Cpath>` directly\n- Checking cross-references between files — use `check-refs` instead\n- Checking condensation freshness — use `bash scripts\u002Fcondense.sh --check` instead\n\n## Procedure\n\n### 1. Inspect the environment\n\nConfirm `.\u002Fscripts-run` is executable and the working directory is the agent-config\nrepository root — the linter expects to find `src\u002Fskills\u002F`\nand related directories relative to `cwd`.\n\n### 2. Dispatch via the runtime layer\n\nInvoke the skill through the runtime dispatcher so the `execution:` block in\nthis skill's frontmatter governs the call:\n\n```bash\n.\u002Fscripts-run src\u002Fscripts\u002Fruntime_dispatcher run --skill lint-skills\n```\n\nThe dispatcher resolves the request, the shell handler runs\n`.\u002Fscripts-run src\u002Fscripts\u002Fskill_linter --all`, captures stdout\u002Fstderr, and returns\na typed `ExecutionResult`.\n\n### 3. Verify the result\n\nCheck the returned `ExecutionResult`:\n\n- `status: success` and `exit_code: 0` → all skills and rules are clean\n- `exit_code: 1` → warnings only — review `stdout` for the listed warnings\n- `exit_code: 2` → errors present — fix the flagged files before continuing\n- `status: timeout` → the linter exceeded `timeout_seconds` — investigate\n- `status: error` → the runner could not launch — check that `.\u002Fscripts-run`\n  is on `PATH` and the repository root is the current working directory\n\n## Output format\n\n1. One-line summary: `success | failure | timeout | error`, exit code,\n   duration in milliseconds\n2. Count of skills and rules the linter inspected, if known\n3. List of files with errors (first 10), each with code and message\n4. Next action: fix errors, re-run, or surface the raw `stdout` for review\n\n## Gotchas\n\n- The command uses `--all`, which walks the full tree — expect several seconds\n  of runtime on a warm repo; bump `timeout_seconds` if the repo has grown\n- Running outside the agent-config repo root will make the linter report zero\n  skills, which looks like a pass but is actually a no-op\n- Warnings (`exit_code: 1`) do not fail CI by default; do not dismiss them as\n  \"green\" when the task is to get to zero warnings\n\n## Do NOT\n\n- Do NOT invoke `src\u002Fscripts\u002Fskill_linter.ts` directly when the intent is to test\n  the runtime path — use the dispatcher so the handler and result object are\n  exercised\n- Do NOT raise `timeout_seconds` to hide a genuinely slow linter pass —\n  investigate the slowdown first\n- Do NOT add shell redirection or pipes to `command` — the handler runs\n  `subprocess.run` with `shell=False`; only argv form is supported\n","# lint-skills\n\n## When to use\n\nUse this skill when:\n\n- Validating the shape of every skill and rule in `src\u002F`\n- Verifying execution metadata (`execution.type`, `handler`, `command`) is well-formed\n- Checking locally before opening a PR that CI's skill-lint job will pass\n- Investigating a reported linter failure on a specific skill or rule\n\nDo NOT use when:\n\n- Linting only one file — call `.\u002Fscripts-run src\u002Fscripts\u002Fskill_linter \u003Cpath>` directly\n- Checking cross-references between files — use `check-refs` instead\n- Checking condensation freshness — use `bash scripts\u002Fcondense.sh --check` instead\n\n## Procedure\n\n### 1. Inspect the environment\n\nConfirm `.\u002Fscripts-run` is executable and the working directory is the agent-config\nrepository root — the linter expects to find `src\u002Fskills\u002F`\nand related directories relative to `cwd`.\n\n### 2. Dispatch via the runtime layer\n\nInvoke the skill through the runtime dispatcher so the `execution:` block in\nthis skill's frontmatter governs the call:\n\n```bash\n.\u002Fscripts-run src\u002Fscripts\u002Fruntime_dispatcher run --skill lint-skills\n```\n\nThe dispatcher resolves the request, the shell handler runs\n`.\u002Fscripts-run src\u002Fscripts\u002Fskill_linter --all`, captures stdout\u002Fstderr, and returns\na typed `ExecutionResult`.\n\n### 3. Verify the result\n\nCheck the returned `ExecutionResult`:\n\n- `status: success` and `exit_code: 0` → all skills and rules are clean\n- `exit_code: 1` → warnings only — review `stdout` for the listed warnings\n- `exit_code: 2` → errors present — fix the flagged files before continuing\n- `status: timeout` → the linter exceeded `timeout_seconds` — investigate\n- `status: error` → the runner could not launch — check that `.\u002Fscripts-run`\n  is on `PATH` and the repository root is the current working directory\n\n## Output format\n\n1. One-line summary: `success | failure | timeout | error`, exit code,\n   duration in milliseconds\n2. Count of skills and rules the linter inspected, if known\n3. List of files with errors (first 10), each with code and message\n4. Next action: fix errors, re-run, or surface the raw `stdout` for review\n\n## Gotchas\n\n- The command uses `--all`, which walks the full tree — expect several seconds\n  of runtime on a warm repo; bump `timeout_seconds` if the repo has grown\n- Running outside the agent-config repo root will make the linter report zero\n  skills, which looks like a pass but is actually a no-op\n- Warnings (`exit_code: 1`) do not fail CI by default; do not dismiss them as\n  \"green\" when the task is to get to zero warnings\n\n## Do NOT\n\n- Do NOT invoke `src\u002Fscripts\u002Fskill_linter.ts` directly when the intent is to test\n  the runtime path — use the dispatcher so the handler and result object are\n  exercised\n- Do NOT raise `timeout_seconds` to hide a genuinely slow linter pass —\n  investigate the slowdown first\n- Do NOT add shell redirection or pipes to `command` — the handler runs\n  `subprocess.run` with `shell=False`; only argv form is supported\n",{"name":5,"packs":52,"scope":54,"domain":57,"execution":58,"model_tier":67,"workspaces":68,"description":7,"runtime_requires":70},[53],"meta",{"write":55,"verification_reason":56},[],"the declared command is a read-only linter: grep -c 'writeFileSync|mkdirSync|appendFileSync' src\u002Fscripts\u002Fskill_linter.ts returns 0. Absence of a write is not something a command can prove.","process",{"type":59,"command":60,"handler":64,"allowed_tools":65,"timeout_seconds":66},"assisted",[61,62,63],".\u002Fscripts-run","src\u002Fscripts\u002Fskill_linter","--all","shell",[],120,"medium",[69],"agent-config-maintainer",{"bins":71,"network":73},[72,40],"bash",[],"main","12bd765ce1d800501d45dfb8232102793af01290","src\u002Fskills\u002Flint-skills",1,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config","https:\u002F\u002Fevent4u.app","https:\u002F\u002Fgithub.com\u002Fevent4u-app","Your events in your hand","2026-11-14 02:29:41",{"source":8,"skillName":5,"commands":84,"prompt":94,"zipAvailable":95},[85,88,91],{"tool":86,"command":87},"npx","npx skills add event4u-app\u002Fagent-config --skill lint-skills",{"tool":89,"command":90},"bunx","bunx skills add event4u-app\u002Fagent-config --skill lint-skills",{"tool":92,"command":93},"pnpm","pnpm dlx skills add event4u-app\u002Fagent-config --skill lint-skills","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Flint-skills\u002FSKILL.md",true,[],[98,112,124,136,148,158],{"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":105,"publishedAt":47},"01M6X84PK96XBPENXH66JCTSD1","unknown-key-fixture","Declares a key the schema does not know.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Funknown-key\u002FSKILL.md",[104],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[106,107,108,109,110,111],"unknown key fixture","Unknown key","fixture","unknown","schema","package",{"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":119,"publishedAt":47},"01M6X84HW7NAHZ7GZMQ9RXK1XJ","portable-fixture","Declares only semantics the MCP-lite carrier transports whole.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Fportable\u002FSKILL.md",[118],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[108,120,121,122,35,111,123],"portable","portable fixture","engineer","MCP",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":131,"publishedAt":47},"01M6X84F29FE0RGGZ1ZTFGZTX2","non-portable-fixture","Declares a runtime semantic the carrier drops.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Fnon-portable\u002FSKILL.md",[130],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[121,132,120,108,133,134,135,111],"non portable fixture","semantic","high","runtime",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":143,"publishedAt":47},"01M6X848F706PT9MDCX75JKJ6B","candidate-zero-width","A candidate whose prose carries an invisible joiner.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fzero-width-injection\u002FSKILL.md",[142],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[144,145,146,147],"candidate zero width","candidate","ZeRO","prose",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":155,"publishedAt":47},"01M6X841SSC2T31VDF41SA6DG1","candidate-disclosure-suppression","A candidate whose prose tells the agent to withhold from the user.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fdisclosure-suppression\u002FSKILL.md",[154],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[156,145,147,157],"candidate disclosure suppression","user",{"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},"01M6X83TFS5AGPBPVTQNWP0BB3","candidate-dangerous-frontmatter","A candidate claiming an unscoped tool grant and a permission bypass.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fdangerous-frontmatter\u002FSKILL.md",[164],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[166,145,32,64,167,168],"candidate dangerous frontmatter","permission","tool"]