{
  "schemaVersion": "rapidkit-create-planner-capabilities-v1",
  "lanes": {
    "native": {
      "status": "available",
      "meaning": "Workspai owns the scaffold contract, marker, registry, doctor, bootstrap, and workspace model path."
    },
    "official": {
      "status": "available",
      "meaning": "A stable ecosystem generator exists. Available entries run the official generator and then register the project; planned entries fall back to adopt/import."
    },
    "existing": {
      "status": "available",
      "meaning": "The project enters Workspace Intelligence through import/adopt, not native create."
    }
  },
  "nativeCreate": [
    {
      "id": "fastapi.standard",
      "runtime": "python",
      "framework": "fastapi",
      "plannerFramework": "fastapi",
      "category": "backend",
      "owner": "core",
      "stability": "stable",
      "versionPolicy": "tested-baseline",
      "moduleSupport": true,
      "workspacePythonEngine": "required"
    },
    {
      "id": "fastapi.ddd",
      "runtime": "python",
      "framework": "fastapi",
      "plannerFramework": "fastapi",
      "category": "backend",
      "owner": "core",
      "stability": "stable",
      "versionPolicy": "tested-baseline",
      "moduleSupport": true,
      "workspacePythonEngine": "required"
    },
    {
      "id": "nestjs.standard",
      "runtime": "node",
      "framework": "nestjs",
      "plannerFramework": "nestjs",
      "category": "backend",
      "owner": "core",
      "stability": "stable",
      "versionPolicy": "tested-baseline",
      "moduleSupport": true,
      "workspacePythonEngine": "optional"
    },
    {
      "id": "springboot.standard",
      "runtime": "java",
      "framework": "springboot",
      "plannerFramework": "springboot",
      "category": "backend",
      "owner": "npm",
      "stability": "stable",
      "versionPolicy": "tested-baseline",
      "moduleSupport": false,
      "workspacePythonEngine": "none"
    },
    {
      "id": "gofiber.standard",
      "runtime": "go",
      "framework": "gofiber",
      "plannerFramework": "go",
      "category": "backend",
      "owner": "npm",
      "stability": "stable",
      "versionPolicy": "tested-baseline",
      "moduleSupport": false,
      "workspacePythonEngine": "none"
    },
    {
      "id": "gogin.standard",
      "runtime": "go",
      "framework": "gogin",
      "plannerFramework": "go",
      "category": "backend",
      "owner": "npm",
      "stability": "stable",
      "versionPolicy": "tested-baseline",
      "moduleSupport": false,
      "workspacePythonEngine": "none"
    },
    {
      "id": "dotnet.webapi.clean",
      "runtime": "dotnet",
      "framework": "dotnet",
      "plannerFramework": "dotnet",
      "category": "backend",
      "owner": "npm",
      "stability": "preview",
      "versionPolicy": "tested-baseline",
      "moduleSupport": false,
      "workspacePythonEngine": "none"
    },
    {
      "id": "rust.axum",
      "runtime": "rust",
      "framework": "axum",
      "plannerFramework": "rust",
      "category": "backend",
      "owner": "npm",
      "stability": "preview",
      "versionPolicy": "tested-baseline",
      "moduleSupport": false,
      "workspacePythonEngine": "none"
    },
    {
      "id": "agent.microsoft.python",
      "runtime": "python",
      "framework": "microsoft-agent-framework",
      "plannerFramework": "microsoft-agent-framework",
      "category": "agent",
      "owner": "workspai",
      "stability": "preview",
      "versionPolicy": "tested-baseline",
      "moduleSupport": false,
      "workspacePythonEngine": "none"
    },
    {
      "id": "agent.microsoft.dotnet",
      "runtime": "dotnet",
      "framework": "microsoft-agent-framework",
      "plannerFramework": "microsoft-agent-framework",
      "category": "agent",
      "owner": "workspai",
      "stability": "preview",
      "versionPolicy": "tested-baseline",
      "moduleSupport": false,
      "workspacePythonEngine": "none"
    },
    {
      "id": "agent.openai.python",
      "runtime": "python",
      "framework": "openai-agents",
      "plannerFramework": "openai-agents",
      "category": "agent",
      "owner": "workspai",
      "stability": "stable",
      "versionPolicy": "tested-baseline",
      "moduleSupport": false,
      "workspacePythonEngine": "none"
    },
    {
      "id": "agent.openai.typescript",
      "runtime": "node",
      "framework": "openai-agents",
      "plannerFramework": "openai-agents",
      "category": "agent",
      "owner": "workspai",
      "stability": "stable",
      "versionPolicy": "tested-baseline",
      "moduleSupport": false,
      "workspacePythonEngine": "none"
    },
    {
      "id": "agent.google-adk.python",
      "runtime": "python",
      "framework": "google-adk",
      "plannerFramework": "google-adk",
      "category": "agent",
      "owner": "workspai",
      "stability": "preview",
      "versionPolicy": "tested-baseline",
      "moduleSupport": false,
      "workspacePythonEngine": "none"
    },
    {
      "id": "agent.google-adk.typescript",
      "runtime": "node",
      "framework": "google-adk",
      "plannerFramework": "google-adk",
      "category": "agent",
      "owner": "workspai",
      "stability": "preview",
      "versionPolicy": "tested-baseline",
      "moduleSupport": false,
      "workspacePythonEngine": "none"
    },
    {
      "id": "gateway.openrouter.typescript",
      "runtime": "node",
      "framework": "openrouter",
      "plannerFramework": "openrouter",
      "category": "gateway",
      "owner": "workspai",
      "stability": "stable",
      "versionPolicy": "tested-baseline",
      "moduleSupport": false,
      "workspacePythonEngine": "none"
    },
    {
      "id": "gateway.openrouter.python",
      "runtime": "python",
      "framework": "openrouter",
      "plannerFramework": "openrouter",
      "category": "gateway",
      "owner": "workspai",
      "stability": "stable",
      "versionPolicy": "tested-baseline",
      "moduleSupport": false,
      "workspacePythonEngine": "none"
    }
  ],
  "officialCreate": [
    {
      "id": "frontend.nextjs",
      "aliases": [
        "frontend.nextjs",
        "next",
        "nextjs",
        "next.js"
      ],
      "ecosystem": "nextjs",
      "plannerFramework": "nextjs",
      "runtime": "node",
      "runtimeCandidates": [
        "node"
      ],
      "workspacePythonEngine": "none",
      "status": "available",
      "canExecuteCreate": true,
      "versionPolicy": "latest-stable",
      "officialCommands": [
        "npx create-next-app@latest <name>"
      ],
      "adoptAfterCreate": true,
      "category": "frontend"
    },
    {
      "id": "frontend.remix",
      "aliases": [
        "frontend.remix",
        "remix",
        "remix-run",
        "react-router"
      ],
      "ecosystem": "remix",
      "plannerFramework": "remix",
      "runtime": "node",
      "runtimeCandidates": [
        "node"
      ],
      "workspacePythonEngine": "none",
      "status": "available",
      "canExecuteCreate": true,
      "versionPolicy": "latest-stable",
      "officialCommands": [
        "npx create-react-router@latest <name>"
      ],
      "adoptAfterCreate": true,
      "runtimeRequirements": {
        "node": ">=22.22.0"
      },
      "category": "frontend"
    },
    {
      "id": "frontend.vite-react",
      "aliases": [
        "frontend.vite-react",
        "vite-react",
        "react",
        "vite.react"
      ],
      "ecosystem": "react",
      "plannerFramework": "vite-react",
      "runtime": "node",
      "runtimeCandidates": [
        "node"
      ],
      "workspacePythonEngine": "none",
      "status": "available",
      "canExecuteCreate": true,
      "versionPolicy": "latest-stable",
      "officialCommands": [
        "npm create vite@latest <name> -- --template react-ts"
      ],
      "adoptAfterCreate": true,
      "category": "frontend"
    },
    {
      "id": "frontend.vite-vue",
      "aliases": [
        "frontend.vite-vue",
        "vite-vue",
        "vue",
        "vite.vue"
      ],
      "ecosystem": "vue",
      "plannerFramework": "vite-vue",
      "runtime": "node",
      "runtimeCandidates": [
        "node"
      ],
      "workspacePythonEngine": "none",
      "status": "available",
      "canExecuteCreate": true,
      "versionPolicy": "latest-stable",
      "officialCommands": [
        "npm create vite@latest <name> -- --template vue-ts"
      ],
      "adoptAfterCreate": true,
      "category": "frontend"
    },
    {
      "id": "frontend.vite-svelte",
      "aliases": [
        "frontend.vite-svelte",
        "vite-svelte",
        "svelte",
        "vite.svelte"
      ],
      "ecosystem": "svelte",
      "plannerFramework": "vite-svelte",
      "runtime": "node",
      "runtimeCandidates": [
        "node"
      ],
      "workspacePythonEngine": "none",
      "status": "available",
      "canExecuteCreate": true,
      "versionPolicy": "latest-stable",
      "officialCommands": [
        "npm create vite@latest <name> -- --template svelte-ts"
      ],
      "adoptAfterCreate": true,
      "category": "frontend"
    },
    {
      "id": "frontend.vite-solid",
      "aliases": [
        "frontend.vite-solid",
        "vite-solid",
        "solid",
        "solidjs",
        "vite.solid"
      ],
      "ecosystem": "solid",
      "plannerFramework": "vite-solid",
      "runtime": "node",
      "runtimeCandidates": [
        "node"
      ],
      "workspacePythonEngine": "none",
      "status": "available",
      "canExecuteCreate": true,
      "versionPolicy": "latest-stable",
      "officialCommands": [
        "npm create vite@latest <name> -- --template solid-ts"
      ],
      "adoptAfterCreate": true,
      "category": "frontend"
    },
    {
      "id": "frontend.vite-vanilla",
      "aliases": [
        "frontend.vite-vanilla",
        "vite",
        "vanilla",
        "vite-vanilla"
      ],
      "ecosystem": "vite",
      "plannerFramework": "vite-vanilla",
      "runtime": "node",
      "runtimeCandidates": [
        "node"
      ],
      "workspacePythonEngine": "none",
      "status": "available",
      "canExecuteCreate": true,
      "versionPolicy": "latest-stable",
      "officialCommands": [
        "npm create vite@latest <name> -- --template vanilla-ts"
      ],
      "adoptAfterCreate": true,
      "category": "frontend"
    },
    {
      "id": "frontend.nuxt",
      "aliases": [
        "frontend.nuxt",
        "nuxt",
        "nuxtjs",
        "nuxt.js"
      ],
      "ecosystem": "nuxt",
      "plannerFramework": "nuxt",
      "runtime": "node",
      "runtimeCandidates": [
        "node"
      ],
      "workspacePythonEngine": "none",
      "status": "available",
      "canExecuteCreate": true,
      "versionPolicy": "latest-stable",
      "officialCommands": [
        "npx create-nuxt@latest <name> --template minimal --packageManager npm --gitInit true"
      ],
      "adoptAfterCreate": true,
      "category": "frontend"
    },
    {
      "id": "frontend.angular",
      "aliases": [
        "frontend.angular",
        "angular",
        "ng"
      ],
      "ecosystem": "angular",
      "plannerFramework": "angular",
      "runtime": "node",
      "runtimeCandidates": [
        "node"
      ],
      "workspacePythonEngine": "none",
      "status": "available",
      "canExecuteCreate": true,
      "versionPolicy": "latest-stable",
      "officialCommands": [
        "npx @angular/cli@latest new <name>"
      ],
      "adoptAfterCreate": true,
      "runtimeRequirements": {
        "node": ">=20"
      },
      "category": "frontend"
    },
    {
      "id": "frontend.astro",
      "aliases": [
        "frontend.astro",
        "astro"
      ],
      "ecosystem": "astro",
      "plannerFramework": "astro",
      "runtime": "node",
      "runtimeCandidates": [
        "node"
      ],
      "workspacePythonEngine": "none",
      "status": "available",
      "canExecuteCreate": true,
      "versionPolicy": "latest-stable",
      "officialCommands": [
        "npm create astro@latest <name>"
      ],
      "adoptAfterCreate": true,
      "category": "frontend"
    },
    {
      "id": "frontend.sveltekit",
      "aliases": [
        "frontend.sveltekit",
        "sveltekit",
        "svelte-kit"
      ],
      "ecosystem": "sveltekit",
      "plannerFramework": "sveltekit",
      "runtime": "node",
      "runtimeCandidates": [
        "node"
      ],
      "workspacePythonEngine": "none",
      "status": "available",
      "canExecuteCreate": true,
      "versionPolicy": "latest-stable",
      "officialCommands": [
        "npx sv@latest create <name>"
      ],
      "adoptAfterCreate": true,
      "category": "frontend"
    },
    {
      "id": "desktop.tauri",
      "aliases": [
        "desktop.tauri",
        "tauri",
        "tauri-app"
      ],
      "ecosystem": "tauri",
      "plannerFramework": "tauri",
      "runtime": "node",
      "runtimeCandidates": [
        "node",
        "rust"
      ],
      "workspacePythonEngine": "none",
      "status": "available",
      "canExecuteCreate": true,
      "versionPolicy": "latest-stable",
      "officialCommands": [
        "npm create tauri-app@latest <name> -- --manager npm --template vanilla-ts --yes"
      ],
      "adoptAfterCreate": true,
      "category": "desktop"
    },
    {
      "id": "desktop.electron",
      "aliases": [
        "desktop.electron",
        "electron",
        "electron-forge"
      ],
      "ecosystem": "electron",
      "plannerFramework": "electron",
      "runtime": "node",
      "runtimeCandidates": [
        "node"
      ],
      "workspacePythonEngine": "none",
      "status": "available",
      "canExecuteCreate": true,
      "versionPolicy": "latest-stable",
      "officialCommands": [
        "npx create-electron-app@latest <name> --template vite --typescript"
      ],
      "adoptAfterCreate": true,
      "category": "desktop"
    },
    {
      "id": "extension.vscode",
      "aliases": [
        "extension.vscode",
        "vscode",
        "vscode-extension",
        "visual-studio-code-extension"
      ],
      "ecosystem": "vscode-extension",
      "plannerFramework": "vscode-extension",
      "runtime": "node",
      "runtimeCandidates": [
        "node"
      ],
      "workspacePythonEngine": "none",
      "status": "available",
      "canExecuteCreate": true,
      "versionPolicy": "latest-stable",
      "officialCommands": [
        "npx --package yo@latest --package generator-code@latest -- yo code <name> --quick --extensionType ts --pkgManager npm --bundle esbuild"
      ],
      "adoptAfterCreate": true,
      "runtimeRequirements": {
        "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
      },
      "category": "extension"
    },
    {
      "id": "php.laravel",
      "aliases": [
        "php.laravel",
        "laravel",
        "php-laravel"
      ],
      "ecosystem": "laravel",
      "plannerFramework": "laravel",
      "runtime": "php",
      "runtimeCandidates": [
        "php",
        "node"
      ],
      "workspacePythonEngine": "none",
      "status": "available",
      "canExecuteCreate": true,
      "versionPolicy": "latest-stable",
      "officialCommands": [
        "composer create-project --no-interaction --prefer-dist --stability=stable laravel/laravel <name>"
      ],
      "adoptAfterCreate": true,
      "category": "backend"
    },
    {
      "id": "wordpress-site",
      "aliases": [
        "wordpress",
        "wordpress-site",
        "wp",
        "wp-site"
      ],
      "ecosystem": "wordpress",
      "plannerFramework": "wordpress",
      "runtime": "php",
      "runtimeCandidates": [
        "php"
      ],
      "workspacePythonEngine": "none",
      "status": "planned",
      "canExecuteCreate": false,
      "versionPolicy": "planned",
      "officialCommands": [
        "wp core download",
        "wp config create",
        "wp db create",
        "wp core install"
      ],
      "adoptAfterCreate": true,
      "category": "backend"
    },
    {
      "id": "wordpress-block",
      "aliases": [
        "wordpress-block",
        "wp-block",
        "gutenberg-block"
      ],
      "ecosystem": "wordpress",
      "plannerFramework": "wordpress",
      "runtime": "node",
      "runtimeCandidates": [
        "node",
        "php"
      ],
      "workspacePythonEngine": "none",
      "status": "planned",
      "canExecuteCreate": false,
      "versionPolicy": "planned",
      "officialCommands": [
        "npx @wordpress/create-block@latest <slug>"
      ],
      "adoptAfterCreate": true,
      "category": "backend"
    },
    {
      "id": "symfony",
      "aliases": [
        "symfony",
        "php-symfony"
      ],
      "ecosystem": "php",
      "plannerFramework": "symfony",
      "runtime": "php",
      "runtimeCandidates": [
        "php"
      ],
      "workspacePythonEngine": "none",
      "status": "planned",
      "canExecuteCreate": false,
      "versionPolicy": "planned",
      "officialCommands": [
        "composer create-project symfony/skeleton <name>"
      ],
      "adoptAfterCreate": true,
      "category": "backend"
    },
    {
      "id": "rails",
      "aliases": [
        "rails",
        "ruby-on-rails",
        "ruby-rails"
      ],
      "ecosystem": "ruby",
      "plannerFramework": "rails",
      "runtime": "ruby",
      "runtimeCandidates": [
        "ruby"
      ],
      "workspacePythonEngine": "none",
      "status": "planned",
      "canExecuteCreate": false,
      "versionPolicy": "planned",
      "officialCommands": [
        "rails new <name>"
      ],
      "adoptAfterCreate": true,
      "category": "backend"
    }
  ],
  "existingRuntimeSignals": [
    "php",
    "ruby",
    "rust",
    "elixir",
    "clojure",
    "scala",
    "kotlin"
  ],
  "workspaceProfiles": [
    {
      "id": "minimal",
      "runtimePolicy": "single-detected",
      "runtimeFamilies": [],
      "setupRuntimeFamilies": [],
      "pythonEngineAtCreate": "skipped",
      "pythonEngineAtBootstrap": "on-demand"
    },
    {
      "id": "python-only",
      "runtimePolicy": "bounded",
      "runtimeFamilies": [
        "python"
      ],
      "setupRuntimeFamilies": [
        "python"
      ],
      "pythonEngineAtCreate": "optional-default-install",
      "pythonEngineAtBootstrap": "on-demand"
    },
    {
      "id": "node-only",
      "runtimePolicy": "bounded",
      "runtimeFamilies": [
        "node"
      ],
      "setupRuntimeFamilies": [
        "node"
      ],
      "pythonEngineAtCreate": "skipped",
      "pythonEngineAtBootstrap": "disabled"
    },
    {
      "id": "go-only",
      "runtimePolicy": "bounded",
      "runtimeFamilies": [
        "go"
      ],
      "setupRuntimeFamilies": [
        "go"
      ],
      "pythonEngineAtCreate": "skipped",
      "pythonEngineAtBootstrap": "disabled"
    },
    {
      "id": "java-only",
      "runtimePolicy": "bounded",
      "runtimeFamilies": [
        "java"
      ],
      "setupRuntimeFamilies": [
        "java"
      ],
      "pythonEngineAtCreate": "skipped",
      "pythonEngineAtBootstrap": "disabled"
    },
    {
      "id": "dotnet-only",
      "runtimePolicy": "bounded",
      "runtimeFamilies": [
        "dotnet"
      ],
      "setupRuntimeFamilies": [
        "dotnet"
      ],
      "pythonEngineAtCreate": "skipped",
      "pythonEngineAtBootstrap": "disabled"
    },
    {
      "id": "polyglot",
      "runtimePolicy": "multi-runtime",
      "runtimeFamilies": [],
      "setupRuntimeFamilies": [
        "python",
        "node",
        "go",
        "java",
        "dotnet"
      ],
      "pythonEngineAtCreate": "optional-default-install",
      "pythonEngineAtBootstrap": "on-demand"
    },
    {
      "id": "enterprise",
      "runtimePolicy": "multi-runtime",
      "runtimeFamilies": [],
      "setupRuntimeFamilies": [
        "python",
        "node",
        "go",
        "java",
        "dotnet"
      ],
      "pythonEngineAtCreate": "optional-default-install",
      "pythonEngineAtBootstrap": "on-demand"
    }
  ],
  "lifecycle": {
    "automatic": [
      "Create the workspace foundation without installing an optional workspace Python engine unless the user explicitly selected that engine in CLI workspace creation.",
      "Run the selected native or official project generator and let that generator own project dependency installation unless --skip-install is set.",
      "Register every created project and refresh the canonical contract, model, proof-backed graph, diff, impact, agent context, grounding, and evidence index."
    ],
    "explicit": [
      "Run workspai bootstrap only when the user requests profile and project dependency initialization or a required kit reports a missing workspace engine.",
      "Run workspai workspace intelligence run --for-agent <agent> --strict for a complete evidence and verification loop.",
      "Run doctor, analyze, readiness, verify, run, Goal, and repair operations when requested by the user or the governed workflow; Create does not silently claim those gates passed."
    ]
  },
  "productRules": [
    "Do not translate unsupported stack requests into unrelated native kits.",
    "If native create is unavailable, explain the lane and guide to adopt/import.",
    "The existing lane is open-ended for readable projects; existingRuntimeSignals are examples for planner detection, not an allowlist.",
    "Use the same capability contract in CLI, CI, VS Code, and AI planning surfaces.",
    "Available official generators request the upstream latest stable channel and record that policy in project evidence.",
    "Native Workspai-owned kits use tested dependency baselines so repeated creates remain deterministic.",
    "Workspace management during project creation is foundation-only; it must not install the optional Python engine. Each selected kit owns its runtime prerequisites and install flow."
  ]
}
