// @bun
import{CodeBlock as k}from"@contractspec/lib.design-system";import m from"@contractspec/lib.ui-link";import{ChevronRight as C}from"lucide-react";import{jsx as a,jsxs as n}from"react/jsx-runtime";function P(){return n("div",{className:"space-y-8",children:[n("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."})]}),n("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(k,{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`})]}),n("div",{className:"card-subtle space-y-4 p-6",children:[a("h2",{className:"font-bold text-2xl",children:"Providers and adapters"}),n("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."})]}),n("div",{className:"flex items-center gap-4 pt-4",children:[n(m,{href:"/docs/ecosystem/registry",className:"btn-primary",children:["Marketplace manifest ",a(C,{size:16})]}),a(m,{href:"/docs/ecosystem/templates",className:"btn-ghost",children:"Authoring templates"})]})]})}import{CodeBlock as s}from"@contractspec/lib.design-system";import d from"@contractspec/lib.ui-link";import{ChevronRight as S}from"lucide-react";import{jsx as e,jsxs as t}from"react/jsx-runtime";function w(){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(s,{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(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"
    },
    {
      "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(s,{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(d,{href:"/docs/ecosystem/templates",className:"btn-primary",children:["Author a plugin ",e(S,{size:16})]}),e(d,{href:"/docs/ecosystem/registry",className:"btn-ghost",children:"Manifest details"})]})]})}import{CodeBlock as i}from"@contractspec/lib.design-system";import u from"@contractspec/lib.ui-link";import{ChevronRight as E}from"lucide-react";import{jsx as c,jsxs as l}from"react/jsx-runtime";function L(){return l("div",{className:"space-y-8",children:[l("div",{className:"space-y-3",children:[c("h1",{className:"font-bold text-4xl",children:"Marketplace manifest"}),c("p",{className:"text-lg text-muted-foreground",children:"ContractSpec publishes a multi-plugin Cursor marketplace catalog from a single root manifest."})]}),l("div",{className:"card-subtle space-y-4 p-6",children:[c("h2",{className:"font-bold text-2xl",children:"Root manifest shape"}),l("p",{className:"text-muted-foreground text-sm",children:["Cursor reads"," ",c("code",{children:"packages/apps-registry/cursor-marketplace/.cursor-plugin/marketplace.json"})," ","for the catalog and resolves each plugin source path from there."]}),c(i,{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"
    }
  ]
}`})]}),l("div",{className:"card-subtle space-y-4 p-6",children:[c("h2",{className:"font-bold text-2xl",children:"Per-plugin contract"}),c("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."}),c(i,{language:"text",filename:"plugin-layout",code:`plugins/<plugin-name>/
  .cursor-plugin/plugin.json
  rules/
  commands/
  agents/
  skills/
  .mcp.json`}),c(i,{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`})]}),l("div",{className:"flex items-center gap-4 pt-4",children:[l(u,{href:"/docs/ecosystem/integrations",className:"btn-primary",children:["Integrations ",c(E,{size:16})]}),c(u,{href:"/docs/ecosystem/templates",className:"btn-ghost",children:"Plugin authoring templates"})]})]})}import R from"@contractspec/lib.ui-link";import{jsx as p,jsxs as I}from"react/jsx-runtime";function g({title:v="Need the operating layer on top of OSS ContractSpec?",body:b="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:N="See what Studio adds",href:y="https://www.contractspec.studio/docs"}){return I("div",{className:"card-subtle space-y-3 p-6",children:[p("h3",{className:"font-semibold text-lg",children:v}),p("p",{className:"text-muted-foreground text-sm",children:b}),p(R,{href:y,className:"btn-primary",children:N})]})}import{CodeBlock as f}from"@contractspec/lib.design-system";import h from"@contractspec/lib.ui-link";import{ChevronRight as M}from"lucide-react";import{jsx as o,jsxs as r}from"react/jsx-runtime";function T(){return r("div",{className:"space-y-8",children:[r("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."})]}),r("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(f,{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`})]}),r("div",{className:"card-subtle space-y-4 p-6",children:[o("h2",{className:"font-bold text-2xl",children:"Template outputs"}),r("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"})]})]}),r("div",{className:"card-subtle space-y-4 p-6",children:[o("h2",{className:"font-bold text-2xl",children:"Validate before submission"}),o(f,{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(g,{title:"Need evidence-backed template iteration?",body:"Studio helps teams prioritize template changes from real product signals and export implementation-ready task packs."}),r("div",{className:"flex items-center gap-4 pt-4",children:[r(h,{href:"/docs/ecosystem/plugins",className:"btn-primary",children:["Marketplace plugins ",o(M,{size:16})]}),o(h,{href:"/docs/ecosystem/registry",className:"btn-ghost",children:"Marketplace manifest"})]})]})}import{registerDocBlocks as K}from"@contractspec/lib.contracts-spec/docs";var O=[{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."}];K(O);export{T as EcosystemTemplatesPage,L as EcosystemRegistryPage,w as EcosystemPluginsPage,P as EcosystemIntegrationsPage};
