{
  "type": "featherpanel.plugins.index",
  "total": 17,
  "documents": [
    {
      "file": "ai-guide.md",
      "id": "ai-guide",
      "title": "AI / LLM Agent Guide: FeatherPanel Plugins",
      "blurb": "Primary contract for generating or modifying plugins. Follow every rule unless the user overrides it.",
      "path": "/icanhasfeatherpanel/plugins/ai-guide.md"
    },
    {
      "file": "getting-started.md",
      "id": "getting-started",
      "title": "Getting Started",
      "blurb": "backend/storage/addons/{identifier}/",
      "path": "/icanhasfeatherpanel/plugins/getting-started.md"
    },
    {
      "file": "examples.md",
      "id": "examples",
      "title": "Real Plugin Examples (Patterns, Not Clones)",
      "blurb": "These are **real addons** that ship with / are developed against FeatherPanel. Use them as pattern references — copy structure and idioms, n",
      "path": "/icanhasfeatherpanel/plugins/examples.md"
    },
    {
      "file": "recipes.md",
      "id": "recipes",
      "title": "Recipes (Copy-Paste)",
      "blurb": "Replace `helloplugin` / `HelloPlugin` consistently. Prefer studying [examples.md](./examples.md) for production shapes.",
      "path": "/icanhasfeatherpanel/plugins/recipes.md"
    },
    {
      "file": "README.md",
      "id": "README",
      "title": "FeatherPanel Plugin Developer Documentation",
      "blurb": "Complete reference for building FeatherPanel plugins (addons). Written for **humans and LLMs**.",
      "path": "/icanhasfeatherpanel/plugins/README.md"
    },
    {
      "file": "themes.md",
      "id": "themes",
      "title": "Theme packs",
      "blurb": "Ship selectable colors (and optional CSS) under Preferences → Appearance → Theme packs. No panel rebuild when someone installs your pack.",
      "path": "/icanhasfeatherpanel/plugins/themes.md"
    },
    {
      "file": "ui-packs.md",
      "id": "ui-packs",
      "title": "UI Packs & Overrides",
      "blurb": "UI packs can replace shell regions, hide slots, swap whole pages, and register toolbar actions. Create with Dev template **`ui-pack`** (`Plu",
      "path": "/icanhasfeatherpanel/plugins/ui-packs.md"
    },
    {
      "file": "power-sdk.md",
      "id": "power-sdk",
      "title": "Power SDK (`window.FeatherPanel`)",
      "blurb": "Runtime host API for plugins — events, cancellable actions, toasts, modals, search, shortcuts. Source: `frontendv2/src/lib/plugin-sdk/` (hos",
      "path": "/icanhasfeatherpanel/plugins/power-sdk.md"
    },
    {
      "file": "backend.md",
      "id": "backend",
      "title": "Backend Plugin Development",
      "blurb": "Core runtime: `backend/app/Plugins/*`",
      "path": "/icanhasfeatherpanel/plugins/backend.md"
    },
    {
      "file": "conf-yml.md",
      "id": "conf-yml",
      "title": "Plugin Manifest: `conf.yml`",
      "blurb": "Path: `backend/storage/addons/{identifier}/conf.yml`",
      "path": "/icanhasfeatherpanel/plugins/conf-yml.md"
    },
    {
      "file": "cron-and-commands.md",
      "id": "cron-and-commands",
      "title": "Cron Jobs & CLI Commands",
      "blurb": "{identifier}/Cron/{ClassName}.php",
      "path": "/icanhasfeatherpanel/plugins/cron-and-commands.md"
    },
    {
      "file": "database.md",
      "id": "database",
      "title": "Migrations & Chat Models",
      "blurb": "{identifier}/Migrations/*.sql",
      "path": "/icanhasfeatherpanel/plugins/database.md"
    },
    {
      "file": "frontend.md",
      "id": "frontend",
      "title": "Frontend Manifests & Assets",
      "blurb": "Frontend integration is mostly **declarative JSON** under `Frontend/`, plus static HTML/JS/CSS published from `Frontend/Components/` (URL pr",
      "path": "/icanhasfeatherpanel/plugins/frontend.md"
    },
    {
      "file": "middleware-and-hooks.md",
      "id": "middleware-and-hooks",
      "title": "Middleware & PHP Event Hooks",
      "blurb": "During boot, each loaded plugin’s `processEvents(PluginEvents $event)` runs. Register listeners with `$event->on($eventId, $callback)`.",
      "path": "/icanhasfeatherpanel/plugins/middleware-and-hooks.md"
    },
    {
      "file": "mixins.md",
      "id": "mixins",
      "title": "Plugin Mixins",
      "blurb": "Mixins are reusable PHP capabilities that plugins can opt into. Core code lives under `backend/app/Plugins/Mixins/`.",
      "path": "/icanhasfeatherpanel/plugins/mixins.md"
    },
    {
      "file": "packaging.md",
      "id": "packaging",
      "title": "Packaging, Install & Distribution",
      "blurb": "backend/storage/addons/{identifier}/",
      "path": "/icanhasfeatherpanel/plugins/packaging.md"
    },
    {
      "file": "public-pages.md",
      "id": "public-pages",
      "title": "Public Pages (`public.json`)",
      "blurb": "Unauthenticated (or publicly reachable) plugin pages are declared in:",
      "path": "/icanhasfeatherpanel/plugins/public-pages.md"
    }
  ]
}
