What problem does it solve? Building a publishable Astro integration requires correctly implementing lifecycle hooks, injecting routes with absolute entrypoint paths, bridging consumer-defined components into package-owned routes, and declaring peer dependencies correctly — mistakes in any of these cause broken routes or version conflicts. ## Core Features & Use Cases - Lifecycle Hook Guidance: Covers astro:config:setup, astro:server:start, and astro:build:done with concrete patterns for route injection, Vite config mutation, and codegen timing. - Runtime Code Generation: Explains the .astro-blocks/ codegen pattern that writes consumer-specific runtime.mjs files so injected routes can import consumer components via a Vite alias. - Testing Patterns: Describes the playground workspace and withTempProject unit-test approach for exercising integrations end-to-end inside a real Astro project. - Use Case: You are packaging a CMS as an Astro integration and need to inject /cms admin routes, generate a component map at config time, and publish with astro as a peerDependency. ## Quick Start Ask the AI to help write src/plugin/index.ts for an Astro integration that injects an admin route and generates runtime files at config setup time.