[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GV6VG31WQVTQ0RGEEEWKQ8":3,"skill-same:01M6GV6VG31WQVTQ0RGEEEWKQ8":80},{"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":23,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":14,"repositoryHtmlUrl":45,"repositoryHomepageUrl":6,"ownerHtmlUrl":46,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":47,"install":48,"resources":61},"01M6GV6VG31WQVTQ0RGEEEWKQ8","elegy-plugin-authoring",null,"Use when creating or reviewing an Elegy system-adapter plugin that connects an agent to a data source, database, platform, API, local system, or executable boundary.","Sofreshx\u002FElegy","Sofreshx","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F46634397?v=4","01M6GV3ACQ2VKGTY22KKQDDPPG","Sfrsh","01M6GV3AYZA1GPCMY0JP2PQSVC",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FSofreshx\u002FElegy\u002Fblob\u002Fmain\u002Fskills\u002Felegy-plugin-authoring\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36],"plugin","plugin authoring","authoring","elegy plugin authoring","database","data","boundary","api","system","use","local","platform","adapter","2026-11-10 10:12:30",false,"---\nname: elegy-plugin-authoring\ndescription: Use when creating or reviewing an Elegy system-adapter plugin that connects an agent to a data source, database, platform, API, local system, or executable boundary.\n---\n\n# Elegy Plugin Authoring\n\n> **Readiness: concept; not agent-routable.** This authoring guidance is being proven under the evidence-backed readiness policy.\n\nAn Elegy plugin is a reusable system adapter: it connects an agent to a data source, database, platform, API, filesystem or operating-system boundary, or an executable\u002FCLI. Business and domain logic belongs in a library, application, or product-local tool. Do not create a plugin manifest or marketplace wrapper merely to distribute domain logic.\n\n## Workflow\n\n1. Read the nearest repo instructions, then `docs\u002Farchitecture\u002FREADME.md`, `docs\u002Farchitecture\u002Fskill-core-v1.md`, `docs\u002Farchitecture\u002Fcodex-plugin-projection.md`, `docs\u002Fspecs\u002Fplugin-connections-v1.md`, `docs\u002Fspecs\u002Fplugin-marketplace-v2.md`, and the current plugin examples that match the target lane.\n2. Apply the eligibility gate before authoring anything:\n   - Identify the external or local system boundary being adapted.\n   - Identify reusable operations an agent can invoke across tasks.\n   - Reject domain analysis, scoring, orchestration, or product workflow logic; keep it product-local.\n3. Inspect existing manifests, `distribution\u002Fsurfaces.json`, skills, runtime crates, wrappers, and marketplace state before deciding.\n4. Choose the smallest adapter lane:\n   - Adapter with a typed capability catalog: each entry declares exactly one\n     concrete interface (`cli`, `mcp-resource`, or `mcp-tool`). CLI is the\n     default local integration lane; MCP resources and tools are first-class\n     interfaces when the host needs them.\n   - Downstream adapter repository: external repo owning runtime, tests, release archive, and sidecars.\n   - Instruction-only material: publish through the host's skill lane, not the Elegy plugin marketplace.\n5. Do not extract a generalized Elegy contract until two independent working consumers exhibit the same stable boundary. Record what remains product-local.\n6. Clarify only decisions that files cannot answer: plugin purpose, public\u002Fprivate source split, runtime surface, connection\u002Fauthentication requirements, marketplace category, user-visible prompts, and acceptance evidence.\n7. Read `references\u002Fsnippets.md` after choosing the lane, then adapt the relevant snippets to the target repo.\n8. Remove every placeholder before finishing. Do not leave toy commands, dummy tests, generic skill prose, or commented-out future code.\n9. Validate with the narrowest relevant checks.\n\n## Contracts\n\n- `.elegy-plugin\u002Fplugin.json` is the plugin manifest authority.\n- Every active Elegy adapter plugin declares a typed `capabilityCatalog`.\n- Use `docs\u002Fspecs\u002Fcapability-catalog-v2.md` for new entries. The v1 `mcp` and\n  `app-binding` values are compatibility-only; `app-binding` requires a native\n  Codex app connection binding and is not a portable runtime interface.\n- New and publishable packages use `elegy-plugin\u002Fv3`. Keep Codex-native\n  package fields at the top level and put classification, connections,\n  readiness, capability authority, and expected MCP authentication under\n  `elegy`.\n- A service slug is not a Codex app ID. Connected Codex plugins require an\n  explicit opaque `connectionBindings` mapping; the host owns OAuth and\n  connection state.\n- Never put credentials, tokens, authorization codes, or an authentication flow\n  in skills, CLI arguments, or MCP tool inputs. Use a host connection or a\n  credential-owning `elegy-connection-provider\u002Fv1`.\n- `distribution\u002Fsurfaces.json` owns marketplace listing order, category, release routing, and wrapper artifact base URLs.\n- `.elegy\u002Fmarketplace.json` is generated. Do not edit it by hand.\n- Codex plugin output is a derived projection. Preserve native Codex fields\n  at the v3 top level; export removes only `schemaVersion` and `elegy`.\n- Declare every MCP server's expected authentication under\n  `elegy.mcpAuthentication`. Do not infer OAuth from a remote URL. For\n  `bearer-env`, declare only the environment-variable name under Elegy\n  governance and keep the secret outside the package.\n- Git and npm marketplace sources are descriptor-only today. They must remain\n  `NOT_AVAILABLE` until a source materializer and installed-task proof exist.\n- CLI invocation templates are the default integration contract for `cli`\n  entries. `mcp-resource` and `mcp-tool` entries are direct MCP interfaces,\n  not fallback projections. The legacy `fallback` field has no active runtime\n  consumer and must not drive routing.\n- Profiles are allowlists, not approvals. Do not treat a profile as permission for side effects.\n\n## Validation\n\nRun the checks that match the touched surfaces:\n\n```bash\ncargo run -p elegy-tooling --bin elegy-plugin-packaging -- marketplace generate --project .\ncargo run -p elegy-tooling --bin elegy-plugin-packaging -- marketplace generate --project . --check\ncargo run -p elegy-tooling --bin elegy-plugin-packaging -- marketplace validate --source .\ncargo run -p elegy-documentation -- check --project .\n```\n\nFor Rust-backed plugins, also run the relevant package tests, for example:\n\n```bash\ncargo test -p \u003Cplugin-crate>\n```\n\n## References\n\n- Snippets: `references\u002Fsnippets.md`\n- Architecture entrypoint: `docs\u002Farchitecture\u002FREADME.md`\n- Skill authority: `docs\u002Farchitecture\u002Fskill-core-v1.md`\n- Codex projection: `docs\u002Farchitecture\u002Fcodex-plugin-projection.md`\n- Marketplace contract: `docs\u002Fspecs\u002Fplugin-marketplace-v2.md`\n","# Elegy Plugin Authoring\n\n> **Readiness: concept; not agent-routable.** This authoring guidance is being proven under the evidence-backed readiness policy.\n\nAn Elegy plugin is a reusable system adapter: it connects an agent to a data source, database, platform, API, filesystem or operating-system boundary, or an executable\u002FCLI. Business and domain logic belongs in a library, application, or product-local tool. Do not create a plugin manifest or marketplace wrapper merely to distribute domain logic.\n\n## Workflow\n\n1. Read the nearest repo instructions, then `docs\u002Farchitecture\u002FREADME.md`, `docs\u002Farchitecture\u002Fskill-core-v1.md`, `docs\u002Farchitecture\u002Fcodex-plugin-projection.md`, `docs\u002Fspecs\u002Fplugin-connections-v1.md`, `docs\u002Fspecs\u002Fplugin-marketplace-v2.md`, and the current plugin examples that match the target lane.\n2. Apply the eligibility gate before authoring anything:\n   - Identify the external or local system boundary being adapted.\n   - Identify reusable operations an agent can invoke across tasks.\n   - Reject domain analysis, scoring, orchestration, or product workflow logic; keep it product-local.\n3. Inspect existing manifests, `distribution\u002Fsurfaces.json`, skills, runtime crates, wrappers, and marketplace state before deciding.\n4. Choose the smallest adapter lane:\n   - Adapter with a typed capability catalog: each entry declares exactly one\n     concrete interface (`cli`, `mcp-resource`, or `mcp-tool`). CLI is the\n     default local integration lane; MCP resources and tools are first-class\n     interfaces when the host needs them.\n   - Downstream adapter repository: external repo owning runtime, tests, release archive, and sidecars.\n   - Instruction-only material: publish through the host's skill lane, not the Elegy plugin marketplace.\n5. Do not extract a generalized Elegy contract until two independent working consumers exhibit the same stable boundary. Record what remains product-local.\n6. Clarify only decisions that files cannot answer: plugin purpose, public\u002Fprivate source split, runtime surface, connection\u002Fauthentication requirements, marketplace category, user-visible prompts, and acceptance evidence.\n7. Read `references\u002Fsnippets.md` after choosing the lane, then adapt the relevant snippets to the target repo.\n8. Remove every placeholder before finishing. Do not leave toy commands, dummy tests, generic skill prose, or commented-out future code.\n9. Validate with the narrowest relevant checks.\n\n## Contracts\n\n- `.elegy-plugin\u002Fplugin.json` is the plugin manifest authority.\n- Every active Elegy adapter plugin declares a typed `capabilityCatalog`.\n- Use `docs\u002Fspecs\u002Fcapability-catalog-v2.md` for new entries. The v1 `mcp` and\n  `app-binding` values are compatibility-only; `app-binding` requires a native\n  Codex app connection binding and is not a portable runtime interface.\n- New and publishable packages use `elegy-plugin\u002Fv3`. Keep Codex-native\n  package fields at the top level and put classification, connections,\n  readiness, capability authority, and expected MCP authentication under\n  `elegy`.\n- A service slug is not a Codex app ID. Connected Codex plugins require an\n  explicit opaque `connectionBindings` mapping; the host owns OAuth and\n  connection state.\n- Never put credentials, tokens, authorization codes, or an authentication flow\n  in skills, CLI arguments, or MCP tool inputs. Use a host connection or a\n  credential-owning `elegy-connection-provider\u002Fv1`.\n- `distribution\u002Fsurfaces.json` owns marketplace listing order, category, release routing, and wrapper artifact base URLs.\n- `.elegy\u002Fmarketplace.json` is generated. Do not edit it by hand.\n- Codex plugin output is a derived projection. Preserve native Codex fields\n  at the v3 top level; export removes only `schemaVersion` and `elegy`.\n- Declare every MCP server's expected authentication under\n  `elegy.mcpAuthentication`. Do not infer OAuth from a remote URL. For\n  `bearer-env`, declare only the environment-variable name under Elegy\n  governance and keep the secret outside the package.\n- Git and npm marketplace sources are descriptor-only today. They must remain\n  `NOT_AVAILABLE` until a source materializer and installed-task proof exist.\n- CLI invocation templates are the default integration contract for `cli`\n  entries. `mcp-resource` and `mcp-tool` entries are direct MCP interfaces,\n  not fallback projections. The legacy `fallback` field has no active runtime\n  consumer and must not drive routing.\n- Profiles are allowlists, not approvals. Do not treat a profile as permission for side effects.\n\n## Validation\n\nRun the checks that match the touched surfaces:\n\n```bash\ncargo run -p elegy-tooling --bin elegy-plugin-packaging -- marketplace generate --project .\ncargo run -p elegy-tooling --bin elegy-plugin-packaging -- marketplace generate --project . --check\ncargo run -p elegy-tooling --bin elegy-plugin-packaging -- marketplace validate --source .\ncargo run -p elegy-documentation -- check --project .\n```\n\nFor Rust-backed plugins, also run the relevant package tests, for example:\n\n```bash\ncargo test -p \u003Cplugin-crate>\n```\n\n## References\n\n- Snippets: `references\u002Fsnippets.md`\n- Architecture entrypoint: `docs\u002Farchitecture\u002FREADME.md`\n- Skill authority: `docs\u002Farchitecture\u002Fskill-core-v1.md`\n- Codex projection: `docs\u002Farchitecture\u002Fcodex-plugin-projection.md`\n- Marketplace contract: `docs\u002Fspecs\u002Fplugin-marketplace-v2.md`\n",{"name":5,"description":7},"main","cdaaaccc462c986f4a2c0032b75698f15c71f62b","skills\u002Felegy-plugin-authoring","https:\u002F\u002Fgithub.com\u002FSofreshx\u002FElegy","https:\u002F\u002Fgithub.com\u002FSofreshx","2026-11-02 22:33:10",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add Sofreshx\u002FElegy --skill elegy-plugin-authoring",{"tool":54,"command":55},"bunx","bunx skills add Sofreshx\u002FElegy --skill elegy-plugin-authoring",{"tool":57,"command":58},"pnpm","pnpm dlx skills add Sofreshx\u002FElegy --skill elegy-plugin-authoring","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSofreshx\u002FElegy\u002Fblob\u002Fmain\u002Fskills\u002Felegy-plugin-authoring\u002FSKILL.md",true,[62,68,72,76],{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},"readiness.json","REFERENCE","参考文档",725,"https:\u002F\u002Fgithub.com\u002FSofreshx\u002FElegy\u002Fblob\u002Fmain\u002Fskills\u002Felegy-plugin-authoring\u002Freadiness.json",{"path":69,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":70,"sourceHtmlUrl":71},"README.md",669,"https:\u002F\u002Fgithub.com\u002FSofreshx\u002FElegy\u002Fblob\u002Fmain\u002Fskills\u002Felegy-plugin-authoring\u002FREADME.md",{"path":73,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Fprivate-plugin-release-pipeline.md",6038,"https:\u002F\u002Fgithub.com\u002FSofreshx\u002FElegy\u002Fblob\u002Fmain\u002Fskills\u002Felegy-plugin-authoring\u002Freferences\u002Fprivate-plugin-release-pipeline.md",{"path":77,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fsnippets.md",3100,"https:\u002F\u002Fgithub.com\u002FSofreshx\u002FElegy\u002Fblob\u002Fmain\u002Fskills\u002Felegy-plugin-authoring\u002Freferences\u002Fsnippets.md",[81,98,124,143,159,178],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":90,"publishedAt":37},"01M6GV77GEYNKPE96EFA282AY0","elegy-skill-authoring","Doctrine for drafting, auditing, and fixing Elegy skills. Use when creating a new skill, running an audit against an existing one, or triaging structural and content findings.","https:\u002F\u002Fgithub.com\u002FSofreshx\u002FElegy\u002Fblob\u002Fmain\u002Fskills\u002Felegy-skill-authoring\u002FSKILL.md",[87],{"categoryNo":88,"categoryName":89,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[91,26,92,93,94,95,33,96,97],"elegy skill authoring","skill authoring","structural","new skill","doctrine","audit","content",{"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":37},"01M6GV6FK50JQ7XPFA0EVCFDBJ","elegy-obsidian","Read, write, and search a local Obsidian vault via the official Obsidian Desktop CLI (v1.12.7+). Non-authoritative convenience layer; durable planning state continues to flow through elegy-planning and SQLite. User-invoked; do not auto-load.","https:\u002F\u002Fgithub.com\u002FSofreshx\u002FElegy\u002Fblob\u002Fmain\u002Fskills\u002Felegy-obsidian\u002FSKILL.md",[],[105,106,107,108,109,110,111,112,113,114,115,34,116,117,118,119,120,121,122,123],"obsidian","elegy obsidian","tasks","notes","official","cli","tags","load","mirror","true","desktop","do","auto","obsidian vault","sqlite","vault","search","state","planning",{"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":130,"publishedAt":37},"01M6GV61N0F34CMFA7F4AT7C2D","elegy-doc-practices","Use when an agent or contributor needs to classify, place, scaffold, or validate documentation in the Elegy ecosystem — the central doctrine for ADRs, specs, guides, notes, and roadmap material across Elegy and downstream repos.","https:\u002F\u002Fgithub.com\u002FSofreshx\u002FElegy\u002Fblob\u002Fmain\u002Fskills\u002Felegy-doc-practices\u002FSKILL.md",[],[131,132,133,108,134,135,136,33,137,95,138,139,140,141,142],"elegy doc practices","doc","ecosystem","validate","guides","material","roadmap","across","classify","scaffold","repos","documentation",{"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":153,"publishedAt":37},"01M6GV5RR6R3XF7Q1EP9QZ4GVK","test-skill","A test skill for the app-binding fixture.","https:\u002F\u002Fgithub.com\u002FSofreshx\u002FElegy\u002Fblob\u002Fmain\u002Fshared\u002Fplugin-sdk\u002Ftests\u002Ffixtures\u002Fapp-binding-plugin\u002Fskills\u002Ftest-skill\u002FSKILL.md",[149,152],{"categoryNo":150,"categoryName":151,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":88,"categoryName":89,"taxonomyType":21,"taxonomyTypeDesc":22},[154,155,156,157,158],"test","Test Skill","binding","app","fixture",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":37},"01M6GV59H2X6CJAYJCX7S4ERJE","elegy-planning","Use when an agent needs to create, inspect, update, validate, or export durable planning state — goals, roadmaps, plans, work points, todos, issues, review points, insights, and project runs — through the dedicated elegy-planning CLI over SQLite.","https:\u002F\u002Fgithub.com\u002FSofreshx\u002FElegy\u002Fblob\u002Fmain\u002Fplugins\u002Fplanning\u002Fskills\u002Felegy-planning\u002FSKILL.md",[],[123,166,110,167,134,168,169,170,171,172,173,33,174,119,175,122,176,177],"elegy planning","review","project","inspect","insights","plans","goals","export","work","issues","update","create",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":184,"publishedAt":37},"01M6GV4X2GKY7SF0RM1FCHMXHF","elegy-observe","Observe desktop and OS state for agentic workflows. Snapshot running processes, track foreground and visible windows, capture screen, read clipboard, diff filesystem changes, and query system information.","https:\u002F\u002Fgithub.com\u002FSofreshx\u002FElegy\u002Fblob\u002Fmain\u002Fplugins\u002Fobserve\u002Fskills\u002Felegy-observe\u002FSKILL.md",[],[185,186,187,188,189,190,191,192,193,194,195,196,197,32,122,115,198,199,200,201],"elegy observe","observe","snapshot","information","capture screen","processes","screen","os","clipboard","diff","read","capture","filesystem","windows","agentic workflows","workflows","agentic"]