[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M78FAPC97187CMBVAF0QR13H":3,"skill-same:01M78FAPC97187CMBVAF0QR13H":69},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":20,"frontMatter":21,"refName":22,"commitSha":23,"skillDirectory":24,"forksCount":25,"repositoryHtmlUrl":26,"repositoryHomepageUrl":6,"ownerHtmlUrl":27,"ownerBlogUrl":28,"ownerDescription":29,"updatedAt":30,"install":31,"resources":44},"01M78FAPC97187CMBVAF0QR13H","plugin-security",null,"poppyTM\u002Foride","poppyTM","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F339400917?v=4","01M78F6YNKFR5S5JQR27X9F09Z","Poppy Team","01M78F6YP8ZZTRES9X8Q2ZAD21",1,"MIT","https:\u002F\u002Fgithub.com\u002FpoppyTM\u002Foride\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fplugin-security\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"# Plugin & Extension Security\n\n## Purpose\nEnforce capability-based plugin isolation, manifest permission verification, and memory safety boundaries so third-party extensions execute with least privilege and cannot exfiltrate data, escalate privileges, or destabilize the host.\n\n## Use when\n- Designing or auditing a plugin loading pipeline (discovery, manifest parsing, signature verification, sandbox spawn).\n- Reviewing a plugin manifest for over-broad permissions, undeclared network\u002Ffilesystem access, or unsafe native bridges.\n- Investigating a suspected plugin escape, data exfiltration, or host crash caused by extension code.\n- Operating in mode(s): `implementation`, `review`.\n\n## Do not use when\n- Vetting an entire third-party repository before onboarding (use `untrusted-project-security`).\n- Scanning dependency packages for known CVEs or typosquatting (use `supply-chain-security`).\n- Reviewing first-party application code with no extension boundary (use `security-review`).\n\n## Required context\n- Plugin manifest schema and the capability catalog (filesystem, network, process, device, UI surface permissions).\n- Host sandbox architecture (in-process WASM, out-of-process IPC, container boundary) and enforcement points.\n- Threat model for the extension ecosystem (untrusted authors, malicious updates, confused-deputy flows).\n\n## Procedure\n1. **Inventory the trust boundary**: list every host API exposed to plugins (file, network, clipboard, shell, DOM) and classify each by risk (read-only, mutating, exfiltrating, executing).\n2. **Verify the manifest**: require explicit capability declarations with versioned schema; deny by default anything not declared. Reject wildcard permissions (`fs:*`, `net:*`) and unpinned update channels.\n3. **Verify provenance**: require signed manifests and pinned content hashes; untrusted or unsigned plugins load only in a deny-by-default quarantine with no host capabilities.\n4. **Enforce runtime isolation**: run plugin code in the sandbox (WASM memory-isolated module or separate OS process with seccomp\u002FAppArmor profile); mediate every host call through a capability-checked broker that logs allow\u002Fdeny decisions.\n5. **Check update and lifecycle hygiene**: updates re-verify signatures and re-prompt on permission expansion; disable or revoke kills plugin processes and revokes tokens within seconds.\n6. **Verify with adversarial tests**: attempt manifest-declared vs actual behavior mismatch, path traversal via plugin file APIs (`..\u002F..\u002Fetc\u002Fpasswd`), SSRF via plugin fetch, and host-handle leakage across the bridge.\n\n## Decision rules\n- **Deny by default**: any capability not explicitly declared and approved is denied at runtime, never warned-and-allowed.\n- **No ambient authority**: plugins receive only explicit handles passed through the broker; inheriting host environment, tokens, or filesystem roots is prohibited.\n- **Permission expansion requires re-consent**: an update requesting new capabilities must not auto-install; it re-enters review.\n- **Broker mediates everything**: direct FFI, raw sockets, or unsandboxed `eval` from plugin context are forbidden.\n\n## Evidence required\n- Capability matrix: declared vs exercised permissions per plugin with broker allow\u002Fdeny log excerpt.\n- Adversarial test results (traversal, SSRF, escape attempts blocked).\n- Passing execution log from `scripts\u002Fverify.sh`.\n\n## Output contract\n- Security audit report (findings by severity with manifest excerpts and broker logs).\n- Vulnerability remediation patches (manifest tightening, broker policy fixes, sandbox profile updates).\n- Security gate evidence (signed manifest verification + capability test results).\n\n## Stop conditions\n- All in-scope plugins run under declared least-privilege capabilities with broker enforcement verified by adversarial tests.\n- Unsigned or over-permissioned plugins quarantined or remediated.\n- Token budget exhausted.\n- Blocked on external dependency.\n\n## Escalation rules\n- Escalate to lead architect if a business-critical plugin cannot function without a high-risk capability (e.g. raw socket access).\n- Escalate immediately upon discovering an active sandbox escape or data exfiltration path.\n",{},"main","1cd515630b8ceb57777d466bee4970fe7c2e30e0",".agents\u002Fskills\u002Fplugin-security",0,"https:\u002F\u002Fgithub.com\u002FpoppyTM\u002Foride","https:\u002F\u002Fgithub.com\u002FpoppyTM","https:\u002F\u002Fpoppy.lat","Construímos linguagens de programação e ferramentas para quem lê código com o mesmo cuidado com que escreve.","2026-09-30 10:15:52",{"source":7,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add poppyTM\u002Foride --skill plugin-security",{"tool":37,"command":38},"bunx","bunx skills add poppyTM\u002Foride --skill plugin-security",{"tool":40,"command":41},"pnpm","pnpm dlx skills add poppyTM\u002Foride --skill plugin-security","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FpoppyTM\u002Foride\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fplugin-security\u002FSKILL.md",true,[45,51,55,59,65],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"checks\u002Fplugin-security-checklist.md","REFERENCE","参考文档",1558,"https:\u002F\u002Fgithub.com\u002FpoppyTM\u002Foride\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fplugin-security\u002Fchecks\u002Fplugin-security-checklist.md",{"path":52,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":53,"sourceHtmlUrl":54},"manifest.json",1608,"https:\u002F\u002Fgithub.com\u002FpoppyTM\u002Foride\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fplugin-security\u002Fmanifest.json",{"path":56,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":57,"sourceHtmlUrl":58},"references\u002Fplugin-security-guide.md",2717,"https:\u002F\u002Fgithub.com\u002FpoppyTM\u002Foride\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fplugin-security\u002Freferences\u002Fplugin-security-guide.md",{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"scripts\u002Fverify.sh","SCRIPT","脚本",4058,"https:\u002F\u002Fgithub.com\u002FpoppyTM\u002Foride\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fplugin-security\u002Fscripts\u002Fverify.sh",{"path":66,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":67,"sourceHtmlUrl":68},"templates\u002Fplugin-security-report.md",1185,"https:\u002F\u002Fgithub.com\u002FpoppyTM\u002Foride\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fplugin-security\u002Ftemplates\u002Fplugin-security-report.md",[70,76,82,89,96,103],{"skillNo":71,"name":72,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":75,"publishedAt":18},"01M78FHQN254KEH0DETXT5JM29","zoom-reflow","https:\u002F\u002Fgithub.com\u002FpoppyTM\u002Foride\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Fzoom-reflow\u002FSKILL.md",[],[],{"skillNo":77,"name":78,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":18},"01M78FHP1880S695V8GQEE0RXK","wireframe-styleguide","https:\u002F\u002Fgithub.com\u002FpoppyTM\u002Foride\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Fwireframe-styleguide\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":18},"01M78FHHYM6AN2H819FABW01DZ","visual-regression","Pixel-by-pixel snapshot testing, Playwright integration, dynamic content masking, deterministic font rendering, and cross-browser CI gates","https:\u002F\u002Fgithub.com\u002FpoppyTM\u002Foride\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Fvisual-regression\u002FSKILL.md",[],[],{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":18},"01M78FHE53D8DD0QVRY5C37DA4","ui-implementation","Component-driven UI implementation, multi-state matrix (default, hover, focus-visible, active, disabled, loading, empty, error), DTCG design tokens, responsive layout contracts, and accessibility tree mapping.","https:\u002F\u002Fgithub.com\u002FpoppyTM\u002Foride\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Fui-implementation\u002FSKILL.md",[],[],{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":18},"01M78FHBJ1KXFF734GFE509TBJ","tui-editor-engine","Text buffer and editing semantics for a terminal code editor — index conversion, transaction-first editing, multi-cursor invariants, undo grouping, and large-file behaviour.","https:\u002F\u002Fgithub.com\u002FpoppyTM\u002Foride\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Ftui-editor-engine\u002FSKILL.md",[],[],{"skillNo":104,"name":105,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":18},"01M78FH9X6CPJX1H61ZDWTTVW8","tree-sitter-context-indexing","https:\u002F\u002Fgithub.com\u002FpoppyTM\u002Foride\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Ftree-sitter-context-indexing\u002FSKILL.md",[],[]]