// @bun
var k=Object.defineProperty;var C=(c)=>c;function P(c,n){this[c]=C.bind(null,n)}var z=(c,n)=>{for(var p in n)k(c,p,{get:n[p],enumerable:!0,configurable:!0,set:P.bind(n,p)})};var A=(c,n)=>()=>(c&&(n=c(c=0)),n);import{CodeBlock as S}from"@contractspec/lib.design-system";import g from"@contractspec/lib.ui-link";import{ChevronRight as w}from"lucide-react";import{jsx as a,jsxs as s}from"react/jsx-runtime";function E(){return s("div",{className:"space-y-8",children:[s("div",{className:"space-y-3",children:[a("h1",{className:"font-bold text-4xl",children:"Integrations"}),a("p",{className:"text-lg text-muted-foreground",children:"Reference integrations show how to extend ContractSpec with real-world adapters and generators."})]}),s("div",{className:"card-subtle space-y-4 p-6",children:[a("h2",{className:"font-bold text-2xl",children:"Reference plugin"}),a("p",{className:"text-muted-foreground text-sm",children:"The example markdown generator plugin ships as a working reference implementation."}),a(S,{language:"bash",filename:"install-example",code:`bun add @contractspec/lib.plugin.example-generator

# Or in a workspace
bun add -D @contractspec/lib.plugin.example-generator`})]}),s("div",{className:"card-subtle space-y-4 p-6",children:[a("h2",{className:"font-bold text-2xl",children:"Providers and adapters"}),s("ul",{className:"space-y-2 text-muted-foreground text-sm",children:[a("li",{children:"Payments: Stripe"}),a("li",{children:"Email: Postmark, Gmail"}),a("li",{children:"AI: OpenAI, Mistral"}),a("li",{children:"Voice: ElevenLabs, Mistral"}),a("li",{children:"Vector DB: Qdrant"}),a("li",{children:"Storage: GCS"})]}),a("p",{className:"text-muted-foreground text-sm",children:"Use provider modules as inspiration for adapter plugins."})]}),s("div",{className:"flex items-center gap-4 pt-4",children:[s(g,{href:"/docs/ecosystem/registry",className:"btn-primary",children:["Marketplace manifest ",a(w,{size:16})]}),a(g,{href:"/docs/ecosystem/templates",className:"btn-ghost",children:"Authoring templates"})]})]})}import{CodeBlock as m}from"@contractspec/lib.design-system";import f from"@contractspec/lib.ui-link";import{ChevronRight as L}from"lucide-react";import{jsx as e,jsxs as t}from"react/jsx-runtime";function R(){return t("div",{className:"space-y-8",children:[t("div",{className:"space-y-3",children:[e("h1",{className:"font-bold text-4xl",children:"Cursor marketplace plugins"}),e("p",{className:"text-lg text-muted-foreground",children:"ContractSpec ships a focused Cursor marketplace catalog for the product and key libraries."})]}),t("div",{className:"card-subtle space-y-4 p-6",children:[e("h2",{className:"font-bold text-2xl",children:"Catalog at a glance"}),t("ul",{className:"space-y-2 text-muted-foreground text-sm",children:[t("li",{children:[e("code",{children:"contractspec"})," - Product-level workflow and release guardrails."]}),t("li",{children:[e("code",{children:"contractspec-contracts-spec"})," -",e("code",{children:"@contractspec/lib.contracts-spec"})," governance."]}),t("li",{children:[e("code",{children:"contractspec-contracts-integrations"})," -",e("code",{children:"@contractspec/lib.contracts-integrations"})," governance."]}),t("li",{children:[e("code",{children:"contractspec-ai-agent"})," -",e("code",{children:"@contractspec/lib.ai-agent"})," orchestration guardrails."]})]})]}),t("div",{className:"space-y-6",children:[t("div",{className:"space-y-3",children:[e("h2",{className:"font-bold text-2xl",children:"Where plugin sources live"}),e("p",{className:"text-muted-foreground text-sm",children:"Marketplace plugin artifacts are kept in a dedicated package, while the canonical reusable source lives in agentpacks under `packs/`."}),e(m,{language:"text",filename:"catalog-layout",code:`packages/apps-registry/cursor-marketplace/
  .cursor-plugin/marketplace.json
  plugins/
    contractspec/
    contractspec-contracts-spec/
    contractspec-contracts-integrations/
    contractspec-ai-agent/

packs/
  contractspec-contracts-spec/`})]}),t("div",{className:"space-y-3",children:[e("h2",{className:"font-bold text-2xl",children:"Root marketplace manifest"}),e("p",{className:"text-muted-foreground text-sm",children:"Cursor submission reads the catalog manifest inside the marketplace package and resolves plugin paths relative to that package."}),e(m,{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"
    },
    {
      "name": "contractspec-contracts-integrations",
      "source": "plugins/contractspec-contracts-integrations"
    },
    {
      "name": "contractspec-ai-agent",
      "source": "plugins/contractspec-ai-agent"
    }
  ]
}`})]}),t("div",{className:"space-y-3",children:[e("h2",{className:"font-bold text-2xl",children:"Generated multi-host system"}),e("p",{className:"text-muted-foreground text-sm",children:"The Cursor plugin is publishable metadata only. Customer-facing Cursor, Claude Code, and Codex outputs are generated from the same pack source with hook and MCP delivery."})]}),t("div",{className:"space-y-3",children:[e("h2",{className:"font-bold text-2xl",children:"Validation gate"}),e("p",{className:"text-muted-foreground text-sm",children:"Validate all marketplace plugins before publishing."}),e(m,{language:"bash",filename:"validate-marketplace",code:`bun run plugin:contractspec:validate

# Optional when offline
SKIP_PLUGIN_NETWORK_CHECK=1 bun run plugin:contractspec:validate`})]})]}),t("div",{className:"flex items-center gap-4 pt-4",children:[t(f,{href:"/docs/ecosystem/templates",className:"btn-primary",children:["Author a plugin ",e(L,{size:16})]}),e(f,{href:"/docs/ecosystem/registry",className:"btn-ghost",children:"Manifest details"})]})]})}import{CodeBlock as d}from"@contractspec/lib.design-system";import h from"@contractspec/lib.ui-link";import{ChevronRight as I}from"lucide-react";import{jsx as r,jsxs as i}from"react/jsx-runtime";function M(){return i("div",{className:"space-y-8",children:[i("div",{className:"space-y-3",children:[r("h1",{className:"font-bold text-4xl",children:"Marketplace manifest"}),r("p",{className:"text-lg text-muted-foreground",children:"ContractSpec publishes a multi-plugin Cursor marketplace catalog from a single root manifest."})]}),i("div",{className:"card-subtle space-y-4 p-6",children:[r("h2",{className:"font-bold text-2xl",children:"Root manifest shape"}),i("p",{className:"text-muted-foreground text-sm",children:["Cursor reads"," ",r("code",{children:"packages/apps-registry/cursor-marketplace/.cursor-plugin/marketplace.json"})," ","for the catalog and resolves each plugin source path from there."]}),r(d,{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"
    }
  ]
}`})]}),i("div",{className:"card-subtle space-y-4 p-6",children:[r("h2",{className:"font-bold text-2xl",children:"Per-plugin contract"}),r("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."}),r(d,{language:"text",filename:"plugin-layout",code:`plugins/<plugin-name>/
  .cursor-plugin/plugin.json
  rules/
  commands/
  agents/
  skills/
  .mcp.json`}),r(d,{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`})]}),i("div",{className:"flex items-center gap-4 pt-4",children:[i(h,{href:"/docs/ecosystem/integrations",className:"btn-primary",children:["Integrations ",r(I,{size:16})]}),r(h,{href:"/docs/ecosystem/templates",className:"btn-ghost",children:"Plugin authoring templates"})]})]})}import T from"@contractspec/lib.ui-link";import{jsx as u,jsxs as K}from"react/jsx-runtime";function v({title:c="Need the operating layer on top of OSS ContractSpec?",body:n="ContractSpec Studio helps teams turn evidence into proposed spec changes, governed delivery loops, and execution-ready task packs while keeping the open contract system as the source of truth.",ctaLabel:p="See what Studio adds",href:y="https://www.contractspec.studio/docs"}){return K("div",{className:"card-subtle space-y-3 p-6",children:[u("h3",{className:"font-semibold text-lg",children:c}),u("p",{className:"text-muted-foreground text-sm",children:n}),u(T,{href:y,className:"btn-primary",children:p})]})}import{CodeBlock as b}from"@contractspec/lib.design-system";import N from"@contractspec/lib.ui-link";import{ChevronRight as O}from"lucide-react";import{jsx as o,jsxs as l}from"react/jsx-runtime";function _(){return l("div",{className:"space-y-8",children:[l("div",{className:"space-y-3",children:[o("h1",{className:"font-bold text-4xl",children:"Plugin authoring templates"}),o("p",{className:"text-lg text-muted-foreground",children:"Scaffold focused Cursor plugins for ContractSpec product and core libraries."})]}),l("div",{className:"card-subtle space-y-4 p-6",children:[o("h2",{className:"font-bold text-2xl",children:"Create a focused plugin"}),o("p",{className:"text-muted-foreground text-sm",children:"Start from a scoped domain and keep each plugin aligned to one product or library surface."}),o(b,{language:"bash",filename:"catalog-authoring-layout",code:`packages/apps-registry/cursor-marketplace/
  plugins/
    <plugin-name>/
      .cursor-plugin/plugin.json
      rules/
      commands/
      agents/
      skills/
      .mcp.json`})]}),l("div",{className:"card-subtle space-y-4 p-6",children:[o("h2",{className:"font-bold text-2xl",children:"Template outputs"}),l("ul",{className:"space-y-2 text-muted-foreground text-sm",children:[o("li",{children:".cursor-plugin/plugin.json with plugin metadata and paths"}),o("li",{children:"rules/, commands/, agents/, and skills/ content directories"}),o("li",{children:".mcp.json with all MCP server declarations used by the plugin"}),o("li",{children:"README.md describing scope and governance boundaries"})]})]}),l("div",{className:"card-subtle space-y-4 p-6",children:[o("h2",{className:"font-bold text-2xl",children:"Validate before submission"}),o(b,{language:"bash",filename:"validate-marketplace-catalog",code:`# Validate all plugins referenced by root marketplace manifest
bun run plugin:contractspec:validate

# Optional in offline environments
SKIP_PLUGIN_NETWORK_CHECK=1 bun run plugin:contractspec:validate`})]}),o(v,{title:"Need evidence-backed template iteration?",body:"Studio helps teams prioritize template changes from real product signals and export implementation-ready task packs."}),l("div",{className:"flex items-center gap-4 pt-4",children:[l(N,{href:"/docs/ecosystem/plugins",className:"btn-primary",children:["Marketplace plugins ",o(O,{size:16})]}),o(N,{href:"/docs/ecosystem/registry",className:"btn-ghost",children:"Marketplace manifest"})]})]})}import{registerDocBlocks as G}from"@contractspec/lib.contracts-spec/docs";var V=[{id:"docs.ecosystem.plugins",title:"Marketplace plugins",summary:"Focused Cursor marketplace plugins for product and core libraries.",kind:"usage",visibility:"public",route:"/docs/ecosystem/plugins",tags:["ecosystem","plugins","extensions"],body:"# Marketplace plugins\n\nContractSpec ships a focused Cursor marketplace catalog with plugins for the product and key libraries. Plugin sources live in `packages/apps-registry/cursor-marketplace/plugins/*`, while the root manifest at `.cursor-plugin/marketplace.json` drives submission."},{id:"docs.ecosystem.integrations",title:"Integrations",summary:"Reference plugins and integrations you can extend.",kind:"usage",visibility:"public",route:"/docs/ecosystem/integrations",tags:["ecosystem","integrations"],body:`# Integrations

Reference integrations demonstrate how to extend ContractSpec with real-world plugins. Use them as starting points for your own adapters and generators.`},{id:"docs.ecosystem.templates",title:"Plugin authoring templates",summary:"Author focused plugins with a consistent marketplace-ready layout.",kind:"usage",visibility:"public",route:"/docs/ecosystem/templates",tags:["ecosystem","templates"],body:"# Plugin authoring templates\n\nCreate each plugin under `packages/apps-registry/cursor-marketplace/plugins/<plugin-name>/` and include `.cursor-plugin/plugin.json`, `rules/`, `commands/`, `agents/`, `skills/`, and `.mcp.json`."},{id:"docs.ecosystem.registry",title:"Marketplace manifest",summary:"Manage and validate root marketplace entries for all plugins.",kind:"usage",visibility:"public",route:"/docs/ecosystem/registry",tags:["ecosystem","registry"],body:"# Marketplace manifest\n\nKeep all plugin entries in `.cursor-plugin/marketplace.json` and validate them with `bun run plugin:contractspec:validate` before submission."}];G(V);export{_ as EcosystemTemplatesPage,M as EcosystemRegistryPage,R as EcosystemPluginsPage,E as EcosystemIntegrationsPage};
