// @bun
var r=Object.defineProperty;var l=(a)=>a;function p(a,t){this[a]=l.bind(null,t)}var m=(a,t)=>{for(var n in t)r(a,n,{get:t[n],enumerable:!0,configurable:!0,set:p.bind(t,n)})};var u=(a,t)=>()=>(a&&(t=a(a=0)),t);import{CodeBlock as s}from"@contractspec/lib.design-system";import o from"@contractspec/lib.ui-link";import{ChevronRight as i}from"lucide-react";import{jsx as e,jsxs as c}from"react/jsx-runtime";function v(){return c("div",{className:"space-y-8",children:[c("div",{className:"space-y-3",children:[e("h1",{className:"font-bold text-4xl",children:"Marketplace manifest"}),e("p",{className:"text-lg text-muted-foreground",children:"ContractSpec publishes a multi-plugin Cursor marketplace catalog from a single root manifest."})]}),c("div",{className:"card-subtle space-y-4 p-6",children:[e("h2",{className:"font-bold text-2xl",children:"Root manifest shape"}),c("p",{className:"text-muted-foreground text-sm",children:["Cursor reads"," ",e("code",{children:"packages/apps-registry/cursor-marketplace/.cursor-plugin/marketplace.json"})," ","for the catalog and resolves each plugin source path from there."]}),e(s,{language:"json",filename:"packages/apps-registry/cursor-marketplace/.cursor-plugin/marketplace.json",code:`{
  "name": "contractspec-marketplace",
  "owner": { "name": "ContractSpec Team" },
  "plugins": [
    {
      "name": "contractspec",
      "source": "plugins/contractspec"
    },
    {
      "name": "contractspec-contracts-spec",
      "source": "plugins/contractspec-contracts-spec"
    }
  ]
}`})]}),c("div",{className:"card-subtle space-y-4 p-6",children:[e("h2",{className:"font-bold text-2xl",children:"Per-plugin contract"}),e("p",{className:"text-muted-foreground text-sm",children:"Each plugin source must include a Cursor plugin manifest and composable assets. The publishable plugin is derived from a reusable pack and then validated here."}),e(s,{language:"text",filename:"plugin-layout",code:`plugins/<plugin-name>/
  .cursor-plugin/plugin.json
  rules/
  commands/
  agents/
  skills/
  .mcp.json`}),e(s,{language:"bash",filename:"validate-catalog",code:`bun run plugin:contractspec:validate

# Optional in offline environments
SKIP_PLUGIN_NETWORK_CHECK=1 bun run plugin:contractspec:validate`})]}),c("div",{className:"flex items-center gap-4 pt-4",children:[c(o,{href:"/docs/ecosystem/integrations",className:"btn-primary",children:["Integrations ",e(i,{size:16})]}),e(o,{href:"/docs/ecosystem/templates",className:"btn-ghost",children:"Plugin authoring templates"})]})]})}export{v as EcosystemRegistryPage};
