[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X7ZPCSAEDWP16QPFXVKB02":3,"skill-same:01M6X7ZPCSAEDWP16QPFXVKB02":90},{"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":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":61,"commitSha":62,"skillDirectory":63,"forksCount":64,"repositoryHtmlUrl":65,"repositoryHomepageUrl":66,"ownerHtmlUrl":67,"ownerBlogUrl":66,"ownerDescription":68,"updatedAt":69,"install":70,"resources":83},"01M6X7ZPCSAEDWP16QPFXVKB02","ui-apply-generic",null,"Use when implementing a UI brief on a stack with no framework executor — Svelte, Astro, Angular, plain HTML. Stack-independent sibling of react-shadcn-ui; idiom from the stack corpus.","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\u002Fui-apply-generic\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"ui apply generic","generic","ui","apply","html","when","implementing","with","executor","svelte","engineer","frontend","use","stack","astro","angular","brief","shadcn","framework","react","2026-11-10 10:12:30",false,"---\nmodel_tier: medium\nname: ui-apply-generic\ndescription: \"Use when implementing a UI brief on a stack with no framework executor — Svelte, Astro, Angular, plain HTML. Stack-independent sibling of react-shadcn-ui; idiom from the stack corpus.\"\npersonas:\n  - frontend-engineer\ndomain: engineering\nworkspaces:\n  - engineering\npacks:\n  - engineering-base\n---\n\n# ui-apply-generic\n\n> The `plain` lane used to be a name with nothing behind it. This skill is the\n> lane: it carries the implementation discipline that previously lived **only**\n> inside the framework executors, and it gets framework idiom from the 16-stack\n> corpus instead of from prose written here.\n>\n> That split is the whole point. One skill plus a corpus serves Svelte, Astro,\n> Angular, Alpine, htmx and everything future at once. Sixteen framework skills\n> would serve the same set and cost a single maintainer sixteen surfaces to keep\n> current — the enumeration this package refuses.\n\n## When to use\n\n- `state.stack.frontend` resolves to `plain`, or to a label with no\n  framework-specific overlay.\n- A stack whose `axes.reactivity` or `axes.meta` is recognised but has no\n  executor skill (`svelte`, `angular`, `astro`, `solid`, `qwik`, `htmx`).\n- As the base of a composition: an overlay skill (`livewire`, `flux`,\n  `blade-ui`, `react-shadcn-ui`) adds framework specifics **on top** of this\n  contract, it does not replace it.\n\nDo NOT use when a framework executor already covers the whole job — then this\nskill is the base and the executor is the overlay, dispatched together.\n\n## Procedure\n\n### Step 1 — Query the stack corpus (mandatory)\n\nRead `state.stack.axes` and query per resolved axis value, most specific first:\n`meta` → `reactivity` → `component_lib`.\n\n```bash\nnode \u003Cskills-root>\u002Fcorpus-grounding\u002Fscripts\u002Fground.mjs search \\\n  --manifest \u003Cskills-root>\u002Fdesign-intelligence\u002Fdata\u002Fmanifest.json \\\n  --stack \u003Caxis-value> \"\u003Cthe concrete question>\"\n```\n\n`axes.meta: nuxt` with `axes.reactivity: vue` means **two** queries —\n`--stack nuxtjs` and `--stack vue`. A meta-framework does not replace the layer\nit wraps; that conflation is the defect the axes exist to fix.\n\n**Cite what you used.** The result names the corpus rows the implementation\nfollowed. An uncited pick is indistinguishable from the model's memory, and\nmemory is exactly what the corpus exists to replace.\n\n**No corpus domain for the detected stack** → say so, in the result:\n\n> No stack corpus for `\u003Cstack>` — proceeding on the generic contract. Framework\n> idiom below is not grounded and should be reviewed by someone who knows this\n> stack.\n\nSilence is the failure mode. An unstated gap reads as grounded output.\n\n### Step 2 — Apply the stack-independent contract\n\nEvery item is a hard requirement, and none of them is framework-specific:\n\n1. **Verbatim floor.** Microcopy comes from `state.ui_design.microcopy` exactly\n   as written — every label, empty-state line, and validation message. No\n   paraphrase, no improvement. Where a source artifact was provided, it beats\n   the brief (see `design-fidelity`).\n2. **Token discipline.** Colour, spacing, radius and shadow values come from the\n   project's tokens. A raw hex or arbitrary px that no token backs is a finding,\n   not a choice. Validate with `design-tokens`' `tokens validate`.\n3. **Component reuse.** Check `state.ui_audit.components_found` before creating\n   anything. In a run that has already added components, re-read the component\n   directories — the audit inventory is computed once per state-file and does\n   not refresh (see `existing-ui-audit` § Gotchas).\n   **Control roles.** For every control you add, look up its role in the `control_roles` of `agent-config ui:audit` (re-run it when the artifact is older than your last UI edit): use the canonical implementation and the siblings' box metrics. Role missing or tied → ask before inventing a control kind; a native control beside an existing primitive needs a stated `native_control_reason`.\n4. **a11y floor.** Semantic elements over `div` + role; every interactive\n   element reachable and labelled; focus visible; contrast meets the project's\n   stated level, AA when unstated.\n5. **All five states.** `empty`, `loading`, `error`, `success`, `disabled` per\n   the brief. An explicit `n\u002Fa` is legitimate for a surface that genuinely has\n   no such state — declaring that is the opposite of inventing filler.\n6. **Asset discipline.** Copy referenced assets into the project's asset path.\n   Never hotlink; never fabricate a logo or a screenshot.\n7. **No placeholders.** `\u003Cplaceholder>`, `lorem`, `todo:`, `tbd`, `xxx` are\n   rejected at the boundary — including inside arrays.\n\n### Step 3 — Verify, with honest degrade\n\nExercise the result with whatever the host actually has, and name which:\n\n| Available | Do |\n|---|---|\n| Browser \u002F Playwright | Render, check the states, exercise one interaction |\n| Screenshot only | Capture and inspect layout at 375 \u002F 768 \u002F 1280 |\n| Neither | Static inspection only, and **say** the render is unverified |\n\nNever claim a state or interaction works without having exercised it. A caveat\nis a finding; a silent claim is a defect.\n\n## Output format\n\nFour requirements, in order — each is checkable by a reader of the result:\n\n1. **Name the corpora queried**, or state that none exists for this stack.\n2. **Cite the rows that changed a decision** — not every row read.\n3. **State the verification method and its caveats**, never an unqualified\n   \"works\".\n4. **List components reused before components added**, so a duplicate is\n   visible rather than buried.\n\nWrite `state.ticket[\"ui_apply\"]`:\n\n```yaml\nui_apply:\n  files: [\"resources\u002Fjs\u002FUserCard.svelte\"]\n  rendered:\n    \"resources\u002Fjs\u002FUserCard.svelte\": |\n      \u003Cfull text, microcopy-locked>\n  components_added: [\"UserCard\"]\n  components_reused: [\"Button\"]\n  microcopy_lock: true\n  stack_corpus:                 # which corpora answered, or the degrade note\n    queried: [\"svelte\"]\n    cited: [\"svelte.csv:12 — prefer stores over prop drilling\"]\n  verify:\n    method: static_inspect      # or playwright \u002F screenshot\n    caveats: [\"render not verified — no browser available\"]\n```\n\n## Gotchas\n\n- **Do not write framework prose into this skill.** The moment it explains how\n  Svelte stores work, it stops being one maintainable surface and starts being\n  sixteen. Framework knowledge belongs in the corpus.\n- **`axes.reactivity: unknown` is not `none`.** `unknown` means a project has\n  manifests and no recognised reactivity layer — proceed, and say the stack was\n  not recognised. `none` means there genuinely is no reactivity layer, which is\n  the normal shape for a static page.\n- **A meta-framework needs its own query.** Querying only `--stack vue` for a\n  Nuxt project silently drops the routing, data-fetching and SSR idioms that\n  are the whole reason Nuxt exists.\n- **The generic contract is a floor, not a ceiling.** Where an overlay skill is\n  dispatched with this one, its framework rules win on their subject.\n- **The floor now lives in exactly one place, and that is the point.** Overlay\n  composition applies this contract to every lane, so a future change to any of\n  its seven items is a one-point edit here rather than four lane patches that\n  drift apart. Concretely: the five-states requirement reaches every lane\n  through this skill. That requirement is deliberately unconditional — an\n  explicit `n\u002Fa` is the escape for a surface that genuinely has no such state\n  (asserted in `ui_lane_matrix.test.ts`), so this is not a defect being\n  broadened. But if the decision is ever revisited, revisit it here.\n\n## Do NOT\n\n- Emit framework code from memory and present it as grounded.\n- Skip the corpus query because the stack \"looks obvious\".\n- Claim a render or an interaction was verified when no primitive was available.\n- Invent states, sections, or copy the brief does not carry.\n- Treat a missing corpus as an evidence gap — it is a missing pack, and the two\n  must not be recorded the same way.\n\n## See also\n\n- [`design-intelligence`](..\u002Fdesign-intelligence\u002FSKILL.md) — the `--stack`\n  corpus this skill queries (16 stacks).\n- [`existing-ui-audit`](..\u002Fexisting-ui-audit\u002FSKILL.md) — the inventory Step 2\n  checks, and its once-per-state-file limit.\n- [`design-tokens`](..\u002Fdesign-tokens\u002FSKILL.md) — `tokens validate`.\n- [`fe-design`](..\u002Ffe-design\u002FSKILL.md) — where the brief's selection decisions\n  come from, and what it does when the corpus is not installed.\n- [`ui-component-architect`](..\u002Fui-component-architect\u002FSKILL.md),\n  [`tailwind-engineer`](..\u002Ftailwind-engineer\u002FSKILL.md) — stack-neutral\n  companions this skill composes with.\n","# ui-apply-generic\n\n> The `plain` lane used to be a name with nothing behind it. This skill is the\n> lane: it carries the implementation discipline that previously lived **only**\n> inside the framework executors, and it gets framework idiom from the 16-stack\n> corpus instead of from prose written here.\n>\n> That split is the whole point. One skill plus a corpus serves Svelte, Astro,\n> Angular, Alpine, htmx and everything future at once. Sixteen framework skills\n> would serve the same set and cost a single maintainer sixteen surfaces to keep\n> current — the enumeration this package refuses.\n\n## When to use\n\n- `state.stack.frontend` resolves to `plain`, or to a label with no\n  framework-specific overlay.\n- A stack whose `axes.reactivity` or `axes.meta` is recognised but has no\n  executor skill (`svelte`, `angular`, `astro`, `solid`, `qwik`, `htmx`).\n- As the base of a composition: an overlay skill (`livewire`, `flux`,\n  `blade-ui`, `react-shadcn-ui`) adds framework specifics **on top** of this\n  contract, it does not replace it.\n\nDo NOT use when a framework executor already covers the whole job — then this\nskill is the base and the executor is the overlay, dispatched together.\n\n## Procedure\n\n### Step 1 — Query the stack corpus (mandatory)\n\nRead `state.stack.axes` and query per resolved axis value, most specific first:\n`meta` → `reactivity` → `component_lib`.\n\n```bash\nnode \u003Cskills-root>\u002Fcorpus-grounding\u002Fscripts\u002Fground.mjs search \\\n  --manifest \u003Cskills-root>\u002Fdesign-intelligence\u002Fdata\u002Fmanifest.json \\\n  --stack \u003Caxis-value> \"\u003Cthe concrete question>\"\n```\n\n`axes.meta: nuxt` with `axes.reactivity: vue` means **two** queries —\n`--stack nuxtjs` and `--stack vue`. A meta-framework does not replace the layer\nit wraps; that conflation is the defect the axes exist to fix.\n\n**Cite what you used.** The result names the corpus rows the implementation\nfollowed. An uncited pick is indistinguishable from the model's memory, and\nmemory is exactly what the corpus exists to replace.\n\n**No corpus domain for the detected stack** → say so, in the result:\n\n> No stack corpus for `\u003Cstack>` — proceeding on the generic contract. Framework\n> idiom below is not grounded and should be reviewed by someone who knows this\n> stack.\n\nSilence is the failure mode. An unstated gap reads as grounded output.\n\n### Step 2 — Apply the stack-independent contract\n\nEvery item is a hard requirement, and none of them is framework-specific:\n\n1. **Verbatim floor.** Microcopy comes from `state.ui_design.microcopy` exactly\n   as written — every label, empty-state line, and validation message. No\n   paraphrase, no improvement. Where a source artifact was provided, it beats\n   the brief (see `design-fidelity`).\n2. **Token discipline.** Colour, spacing, radius and shadow values come from the\n   project's tokens. A raw hex or arbitrary px that no token backs is a finding,\n   not a choice. Validate with `design-tokens`' `tokens validate`.\n3. **Component reuse.** Check `state.ui_audit.components_found` before creating\n   anything. In a run that has already added components, re-read the component\n   directories — the audit inventory is computed once per state-file and does\n   not refresh (see `existing-ui-audit` § Gotchas).\n   **Control roles.** For every control you add, look up its role in the `control_roles` of `agent-config ui:audit` (re-run it when the artifact is older than your last UI edit): use the canonical implementation and the siblings' box metrics. Role missing or tied → ask before inventing a control kind; a native control beside an existing primitive needs a stated `native_control_reason`.\n4. **a11y floor.** Semantic elements over `div` + role; every interactive\n   element reachable and labelled; focus visible; contrast meets the project's\n   stated level, AA when unstated.\n5. **All five states.** `empty`, `loading`, `error`, `success`, `disabled` per\n   the brief. An explicit `n\u002Fa` is legitimate for a surface that genuinely has\n   no such state — declaring that is the opposite of inventing filler.\n6. **Asset discipline.** Copy referenced assets into the project's asset path.\n   Never hotlink; never fabricate a logo or a screenshot.\n7. **No placeholders.** `\u003Cplaceholder>`, `lorem`, `todo:`, `tbd`, `xxx` are\n   rejected at the boundary — including inside arrays.\n\n### Step 3 — Verify, with honest degrade\n\nExercise the result with whatever the host actually has, and name which:\n\n| Available | Do |\n|---|---|\n| Browser \u002F Playwright | Render, check the states, exercise one interaction |\n| Screenshot only | Capture and inspect layout at 375 \u002F 768 \u002F 1280 |\n| Neither | Static inspection only, and **say** the render is unverified |\n\nNever claim a state or interaction works without having exercised it. A caveat\nis a finding; a silent claim is a defect.\n\n## Output format\n\nFour requirements, in order — each is checkable by a reader of the result:\n\n1. **Name the corpora queried**, or state that none exists for this stack.\n2. **Cite the rows that changed a decision** — not every row read.\n3. **State the verification method and its caveats**, never an unqualified\n   \"works\".\n4. **List components reused before components added**, so a duplicate is\n   visible rather than buried.\n\nWrite `state.ticket[\"ui_apply\"]`:\n\n```yaml\nui_apply:\n  files: [\"resources\u002Fjs\u002FUserCard.svelte\"]\n  rendered:\n    \"resources\u002Fjs\u002FUserCard.svelte\": |\n      \u003Cfull text, microcopy-locked>\n  components_added: [\"UserCard\"]\n  components_reused: [\"Button\"]\n  microcopy_lock: true\n  stack_corpus:                 # which corpora answered, or the degrade note\n    queried: [\"svelte\"]\n    cited: [\"svelte.csv:12 — prefer stores over prop drilling\"]\n  verify:\n    method: static_inspect      # or playwright \u002F screenshot\n    caveats: [\"render not verified — no browser available\"]\n```\n\n## Gotchas\n\n- **Do not write framework prose into this skill.** The moment it explains how\n  Svelte stores work, it stops being one maintainable surface and starts being\n  sixteen. Framework knowledge belongs in the corpus.\n- **`axes.reactivity: unknown` is not `none`.** `unknown` means a project has\n  manifests and no recognised reactivity layer — proceed, and say the stack was\n  not recognised. `none` means there genuinely is no reactivity layer, which is\n  the normal shape for a static page.\n- **A meta-framework needs its own query.** Querying only `--stack vue` for a\n  Nuxt project silently drops the routing, data-fetching and SSR idioms that\n  are the whole reason Nuxt exists.\n- **The generic contract is a floor, not a ceiling.** Where an overlay skill is\n  dispatched with this one, its framework rules win on their subject.\n- **The floor now lives in exactly one place, and that is the point.** Overlay\n  composition applies this contract to every lane, so a future change to any of\n  its seven items is a one-point edit here rather than four lane patches that\n  drift apart. Concretely: the five-states requirement reaches every lane\n  through this skill. That requirement is deliberately unconditional — an\n  explicit `n\u002Fa` is the escape for a surface that genuinely has no such state\n  (asserted in `ui_lane_matrix.test.ts`), so this is not a defect being\n  broadened. But if the decision is ever revisited, revisit it here.\n\n## Do NOT\n\n- Emit framework code from memory and present it as grounded.\n- Skip the corpus query because the stack \"looks obvious\".\n- Claim a render or an interaction was verified when no primitive was available.\n- Invent states, sections, or copy the brief does not carry.\n- Treat a missing corpus as an evidence gap — it is a missing pack, and the two\n  must not be recorded the same way.\n\n## See also\n\n- [`design-intelligence`](..\u002Fdesign-intelligence\u002FSKILL.md) — the `--stack`\n  corpus this skill queries (16 stacks).\n- [`existing-ui-audit`](..\u002Fexisting-ui-audit\u002FSKILL.md) — the inventory Step 2\n  checks, and its once-per-state-file limit.\n- [`design-tokens`](..\u002Fdesign-tokens\u002FSKILL.md) — `tokens validate`.\n- [`fe-design`](..\u002Ffe-design\u002FSKILL.md) — where the brief's selection decisions\n  come from, and what it does when the corpus is not installed.\n- [`ui-component-architect`](..\u002Fui-component-architect\u002FSKILL.md),\n  [`tailwind-engineer`](..\u002Ftailwind-engineer\u002FSKILL.md) — stack-neutral\n  companions this skill composes with.\n",{"name":5,"packs":54,"domain":56,"personas":57,"model_tier":59,"workspaces":60,"description":7},[55],"engineering-base","engineering",[58],"frontend-engineer","medium",[56],"main","12bd765ce1d800501d45dfb8232102793af01290","src\u002Fskills\u002Fui-apply-generic",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-11 06:19:40",{"source":8,"skillName":5,"commands":71,"prompt":81,"zipAvailable":82},[72,75,78],{"tool":73,"command":74},"npx","npx skills add event4u-app\u002Fagent-config --skill ui-apply-generic",{"tool":76,"command":77},"bunx","bunx skills add event4u-app\u002Fagent-config --skill ui-apply-generic",{"tool":79,"command":80},"pnpm","pnpm dlx skills add event4u-app\u002Fagent-config --skill ui-apply-generic","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fui-apply-generic\u002FSKILL.md",true,[84],{"path":85,"resourceType":86,"resourceTypeDesc":87,"sizeBytes":88,"sourceHtmlUrl":89},"evals\u002Ftriggers.json","REFERENCE","参考文档",1118,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fui-apply-generic\u002Fevals\u002Ftriggers.json",[91,107,119,131,143,153],{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":100,"publishedAt":49},"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",[97],{"categoryNo":98,"categoryName":99,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[101,102,103,104,105,106],"unknown key fixture","Unknown key","fixture","unknown","schema","package",{"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":114,"publishedAt":49},"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",[113],{"categoryNo":98,"categoryName":99,"taxonomyType":21,"taxonomyTypeDesc":22},[103,115,116,39,117,106,118],"portable","portable fixture","only","MCP",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":126,"publishedAt":49},"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",[125],{"categoryNo":98,"categoryName":99,"taxonomyType":21,"taxonomyTypeDesc":22},[116,127,115,103,128,129,130,106],"non portable fixture","semantic","high","runtime",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":138,"publishedAt":49},"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",[137],{"categoryNo":98,"categoryName":99,"taxonomyType":21,"taxonomyTypeDesc":22},[139,140,141,142],"candidate zero width","candidate","ZeRO","prose",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":150,"publishedAt":49},"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",[149],{"categoryNo":98,"categoryName":99,"taxonomyType":21,"taxonomyTypeDesc":22},[151,140,142,152],"candidate disclosure suppression","user",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":160,"publishedAt":49},"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",[159],{"categoryNo":98,"categoryName":99,"taxonomyType":21,"taxonomyTypeDesc":22},[161,140,162,163,164,165],"candidate dangerous frontmatter","frontmatter","shell","permission","tool"]