[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7EKFR495R34YBAJS7M9ASE4":3,"skill-same:01M7EKFR495R34YBAJS7M9ASE4":68},{"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":13,"repositoryHtmlUrl":25,"repositoryHomepageUrl":6,"ownerHtmlUrl":26,"ownerBlogUrl":27,"ownerDescription":28,"updatedAt":29,"install":30,"resources":43},"01M7EKFR495R34YBAJS7M9ASE4","plugin-security",null,"raillen\u002Fdaisy-code-editor","raillen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F50306048?v=4","01M7EKBDVVBSPF21PBPVJYMNYR","Raillen Santos","01M7EKBDWD12A1K9N9Y638FGX9",0,"MIT","https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\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","2e465213b972294984c8c9515a47f811e4b358da",".agents\u002Fskills\u002Fplugin-security","https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor","https:\u002F\u002Fgithub.com\u002Fraillen","https:\u002F\u002Fraillen.com","\u003C\u003CMarketing & IT>>\r\n\r\n@poppy-team\r\n@wasd-lat ","2026-10-16 09:17:52",{"source":7,"skillName":5,"commands":31,"prompt":41,"zipAvailable":42},[32,35,38],{"tool":33,"command":34},"npx","npx skills add raillen\u002Fdaisy-code-editor --skill plugin-security",{"tool":36,"command":37},"bunx","bunx skills add raillen\u002Fdaisy-code-editor --skill plugin-security",{"tool":39,"command":40},"pnpm","pnpm dlx skills add raillen\u002Fdaisy-code-editor --skill plugin-security","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fplugin-security\u002FSKILL.md",true,[44,50,54,58,64],{"path":45,"resourceType":46,"resourceTypeDesc":47,"sizeBytes":48,"sourceHtmlUrl":49},"checks\u002Fplugin-security-checklist.md","REFERENCE","参考文档",1558,"https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fplugin-security\u002Fchecks\u002Fplugin-security-checklist.md",{"path":51,"resourceType":46,"resourceTypeDesc":47,"sizeBytes":52,"sourceHtmlUrl":53},"manifest.json",1608,"https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fplugin-security\u002Fmanifest.json",{"path":55,"resourceType":46,"resourceTypeDesc":47,"sizeBytes":56,"sourceHtmlUrl":57},"references\u002Fplugin-security-guide.md",2717,"https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fplugin-security\u002Freferences\u002Fplugin-security-guide.md",{"path":59,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":62,"sourceHtmlUrl":63},"scripts\u002Fverify.sh","SCRIPT","脚本",4058,"https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fplugin-security\u002Fscripts\u002Fverify.sh",{"path":65,"resourceType":46,"resourceTypeDesc":47,"sizeBytes":66,"sourceHtmlUrl":67},"templates\u002Fplugin-security-report.md",1185,"https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fplugin-security\u002Ftemplates\u002Fplugin-security-report.md",[69,75,81,88,95,102],{"skillNo":70,"name":71,"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":72,"categories":73,"keywords":74,"publishedAt":18},"01M7EKQYSDAX3SGSCRF873Z8E2","zoom-reflow","https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Fzoom-reflow\u002FSKILL.md",[],[],{"skillNo":76,"name":77,"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":78,"categories":79,"keywords":80,"publishedAt":18},"01M7EKQX0MWJNQD482GGZPGES4","wireframe-styleguide","https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Fwireframe-styleguide\u002FSKILL.md",[],[],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":18},"01M7EKQS57FS6JYE6KWW6X5ADJ","visual-regression","Pixel-by-pixel snapshot testing, Playwright integration, dynamic content masking, deterministic font rendering, and cross-browser CI gates","https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Fvisual-regression\u002FSKILL.md",[],[],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":18},"01M7EKQMFR7651NVH100P5781Z","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\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Fui-implementation\u002FSKILL.md",[],[],{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":18},"01M7EKQG3NVX6DPCYS6Q4PA71V","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\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Ftui-editor-engine\u002FSKILL.md",[],[],{"skillNo":103,"name":104,"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":105,"categories":106,"keywords":107,"publishedAt":18},"01M7EKQEJ993JGC72FE2KFY3ZZ","tree-sitter-context-indexing","https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Ftree-sitter-context-indexing\u002FSKILL.md",[],[]]