Problem
Leadtype is intentionally a framework-agnostic docs pipeline, but the framework story needs a clear boundary so integrations can be idiomatic without pulling framework dependencies into core.
The core should own source resolution, MDX transforms, markdown flattening, llms.txt, llms-full.txt, search artifacts, linting, Agent Readability files, and package-bundled AGENTS.md.
Framework integrations should be thin, optional, and native-feeling:
- Next.js users should see App Router route handlers and
generateStaticParams().
- Nuxt users should see Nitro routes/middleware and Vue composables.
- SvelteKit users should see
+page.server.ts, +server.ts, entries(), and stores/runes.
- Astro users should see
getStaticPaths(), endpoints, Content Collections interop, and islands where relevant.
- Fumadocs users should get a focused adapter over the same source primitive.
Proposal
Document and enforce the core/adapters boundary.
Core package:
- No runtime dependency on Next, Nuxt, SvelteKit, Astro, React, Vue, or Svelte.
- Owns framework-neutral artifacts and source/search primitives.
- Provides plain data structures that adapters can consume.
Adapter/docs layer:
- Uses native framework conventions.
- Keeps behavior thin and testable.
- Provides examples that users can copy into their app.
Possible adapter entry points over time:
leadtype/adapters/next
leadtype/adapters/nuxt
leadtype/adapters/sveltekit
leadtype/adapters/astro
leadtype/search/react
leadtype/search/vue
leadtype/search/svelte
Acceptance Criteria
Problem
Leadtype is intentionally a framework-agnostic docs pipeline, but the framework story needs a clear boundary so integrations can be idiomatic without pulling framework dependencies into core.
The core should own source resolution, MDX transforms, markdown flattening,
llms.txt,llms-full.txt, search artifacts, linting, Agent Readability files, and package-bundledAGENTS.md.Framework integrations should be thin, optional, and native-feeling:
generateStaticParams().+page.server.ts,+server.ts,entries(), and stores/runes.getStaticPaths(), endpoints, Content Collections interop, and islands where relevant.Proposal
Document and enforce the core/adapters boundary.
Core package:
Adapter/docs layer:
Possible adapter entry points over time:
leadtype/adapters/nextleadtype/adapters/nuxtleadtype/adapters/sveltekitleadtype/adapters/astroleadtype/search/reactleadtype/search/vueleadtype/search/svelteAcceptance Criteria