Skip to content

Built-in stack support

Requires the stacks pack:

bash
npx create-lean-agent-kit@latest . --enable-pack stacks

What it is

The stacks pack teaches your agent about the frameworks and tools in your repo. It can detect what you already use (Next.js, Hono, Prisma, …) and wire matching skills and conventions into AGENTS.md. On a greenfield project it can also scaffold a new app from a questionnaire, then run detection afterward.

Nothing runs as a Node library. The agent follows Markdown skills — leanagentkit-match-stack and leanagentkit-scaffold — backed by a registry of supported technologies.

Do I need this pack?

  • Enable if you are greenfield-scaffolding an app, or you want automatic stack detection + external skill install (Hono, Cloudflare, Tailwind, Svelte MCP, …).
  • Skip if your repo is stable, you already wrote stack conventions in AGENTS.md, and you do not need scaffold recipes.

Use cases

  • Greenfield — empty or kit-only repo; pick Next.js / SvelteKit / Hono / etc. from a questionnaire; agent runs a non-interactive generator, then match-stack. May also offer optional commit helpers.
  • Brownfield — existing Django + React monorepo; match-stack detects rows, offers skill installs, folds playbook conventions into AGENTS.md §4 / §7. Does not install commitlint/commitizen (scaffold-only — see below).
  • Additive — already have a Node app; scaffold Prisma or Tailwind without replacing the base framework. Commit helpers may be offered when the recipe touches a Node package.json.
  • Re-run after enable — you enabled Caveman or git-lifecycle; re-run match-stack so AGENTS.md §7 advertises the new skills.

How it works

PathSkillWhen
Detect / wireleanagentkit-match-stackExisting app, or after scaffold
Create / addleanagentkit-scaffoldGreenfield base app or additive ORM / UI / platform

Playbook vs external skill: some registry rows install an upstream skill or MCP (Cloudflare, Hono, Svelte, Tailwind). Others are playbook-only (React, Express, Django, Prisma, Go) — local conventions only, no external install.

Bootstrap offers stacks in Step 0; if chosen, it runs match-stack after conventions (and may offer scaffold first on greenfield).

Optional commit helpers

During leanagentkit-scaffold on Node apps, the agent may ask whether to add commit helpers — Conventional Commits via commitlint, commitizen (cz), husky commit-msg, and commit-and-tag-version for releases. That prompt is scaffold-only (skill-level Step 4.6 in leanagentkit-scaffold, not listed in recipe ## Questions tables). When installed (or already present), leanagentkit-init-conventions / scaffold records in AGENTS.md §4 that subject and body/footer lines must be ≤ 100 chars (@commitlint/config-conventional) and prefers the package manager’s commit script (e.g. pnpm commit).

SituationCommit helpers offered?
Greenfield / additive scaffold that creates or updates a Node package.jsonYes (default yes)
Existing (occupied) app — bootstrap + match-stack onlyNo
Python/Go-only recipes with no Node manifestNo
Already configured (commitlint.config.*, .husky/commit-msg, or commitizen in package.json)Skipped

On a brownfield Vite + React (or similar) repo, installing the kit and running bootstrap wires stack skills — it does not ask about commitlint or commitizen. To add them later, ask the agent to run the commit-helpers steps from leanagentkit-scaffold Step 5 against your app directory, or install the packages yourself.

Related: Getting Started · Git lifecycle (branch/PR offers, not commit-message tooling) · Caveman (terse message style, not commitlint).

Supported stacks (registry)

Detection rules, install commands, and playbook paths live in the pack registry below. Edit the source file in the kit — do not edit the generated page by hand.


Stack Registry

Single source of truth mapping a detected technology → the external agent skill for it, the correct install method, and the local integration playbook. The leanagentkit-bootstrap and leanagentkit-match-stack skills read this. Edit here, not in skills.

Re-check install commands if a command fails or a year has passed since bootstrap.

How to read a row

  • Detect — evidence in the repo that turns this row "on".
  • Skill — the upstream repo.
  • Install — preferred command. npx skills add <repo> (the skills.sh CLI) works for all copy-in skills below and is the portable default. Plugin marketplaces are noted as alternatives.
  • Typeskill (copy-in files) vs mcp (running server, different setup).
  • Playbook — the local file with stack-specific conventions to apply.
  • Post-install — extra step required before the skill is usable.

Cloudflare (Workers / Pages / Agents SDK)

  • Detect: wrangler.toml / wrangler.jsonc, @cloudflare/* or wrangler in deps, .dev.vars
  • Skill: cloudflare/skills
  • Type: skill (+ optional MCP servers for docs/bindings/observability)
  • Install: npx skills add https://github.com/cloudflare/skills
    • Claude Code alt: npx skills add https://github.com/cloudflare/skills -a claude-code
    • Claude Code alt (plugin): /plugin marketplace add cloudflare/skills/plugin install cloudflare@cloudflare
    • Cursor alt: npx skills add https://github.com/cloudflare/skills -a cursor --copy
    • Cursor alt (rules): Settings → Rules → Add Rule → Remote Rule (GitHub) → cloudflare/skills
  • Provides: cloudflare, agents-sdk, durable-objects, wrangler, sandbox-sdk, web-perf, MCP-server builders
  • Optional MCP: cloudflare-docs, cloudflare-bindings, cloudflare-observability (see upstream .mcp.json)
  • Playbook: .agent/stacks/cloudflare.md
  • Post-install: none

Hono

  • Detect: hono in deps, import { Hono } from 'hono', app.get(/app.route( patterns
  • Skill: yusukebe/hono-skill
  • Type: skill (+ optional hono-docs MCP)
  • Install: npx skills add yusukebe/hono-skill
    • Claude Code alt: npx skills add yusukebe/hono-skill -a claude-code
    • Claude Code alt (plugin): /plugin marketplace add yusukebe/hono-skill/plugin install hono-skill@hono
    • Cursor alt: npx skills add yusukebe/hono-skill -a cursor --copy
  • Provides: hono (routing, context, middleware, JSX, validation, RPC, streaming) + hono request testing
  • Requires: Hono CLI as devDep → npm install -D @hono/cli
  • Optional MCP: hono-docsclaude mcp add --transport http hono-docs https://hono-docs-mcp.yusukebe.workers.dev/mcp
  • Playbook: .agent/stacks/hono.md
  • Post-install: install @hono/cli devDependency

Svelte / SvelteKit

  • Detect: svelte / @sveltejs/kit in deps, svelte.config.js, *.svelte files
  • Skill: sveltejs/ai-toolsthis is an MCP server, not a copy-in skill
  • Type: mcp (hosted at mcp.svelte.dev)
  • Install (MCP, preferred): add the remote MCP server to your agent config:
    json
    {
      "mcpServers": {
        "svelte": { "type": "http", "url": "https://mcp.svelte.dev/mcp" }
      }
    }
    • Claude Code / Cursor: install the plugin from the repo's .claude-plugin / .cursor-plugin.
    • Claude Code alt (MCP config): add to root .mcp.json:
      json
      {
        "mcpServers": {
          "svelte": { "type": "http", "url": "https://mcp.svelte.dev/mcp" }
        }
      }
    • Cursor alt (MCP config): add to .cursor/mcp.json:
      json
      {
        "mcpServers": {
          "svelte": { "type": "http", "url": "https://mcp.svelte.dev/mcp" }
        }
      }
  • Provides: live Svelte 5 / SvelteKit docs retrieval, autofix, playground generation via MCP tools
  • Playbook: .agent/stacks/svelte.md
  • Post-install: confirm the agent lists the svelte MCP tools; verify mcp.svelte.dev reachable
  • Note: because it's an MCP, there are no files to copy into .agent/skills/. The playbook still applies (conventions + "prefer the Svelte MCP for API questions").

Astro

  • Detect: astro in deps, astro.config.{mjs,ts}, *.astro files, src/pages/ with .astro routes, src/content/ collections
  • Skill: withastro/astro — skills live in the framework monorepo under .agents/skills/ (note: .agents, plural), alongside the repo's root AGENTS.md
  • Type: skill (copy-in; maintained inside the official framework repo, MIT)
  • Install: no npx skills add published — copy the skill folder(s) from the repo into your agent's skills dir:
    bash
    npx degit withastro/astro/.agents/skills .agent/skills/vendor/astro
    (or sparse-checkout .agents/skills and copy.) Point your agent at the copied folder.
    • Claude Code alt: copy into .claude/skills/:
      bash
      npx degit withastro/astro/.agents/skills .claude/skills/astro
    • Cursor alt: copy into .cursor/skills/ or .agents/skills/:
      bash
      npx degit withastro/astro/.agents/skills .cursor/skills/astro
    • Pin to a tag for stability instead of main; re-pull to update (these track framework releases).
  • Provides: Astro authoring conventions — content collections, .astro components, islands/hydration directives, routing, integrations, server/SSR vs static
  • Related (separate repos): Starlight (withastro/starlight) for docs sites; Astro DB (@astrojs/db)
  • Pairs with: UI-framework rows (React/Svelte/Vue) if islands are used, and the Cloudflare/Netlify/Vercel rows via the matching @astrojs/* adapter
  • Playbook: .agent/stacks/astro.md
  • Post-install: confirm the copied skill is listed by your agent; note the adapter in astro.config (it sets the deploy target)

shadcn-svelte (UI components)

  • Detect: components.json with a svelte/shadcn config, bits-ui / mode-watcher / formsnap in deps, $lib/components/ui/ directory, shadcn-svelte imports
  • Skill: antstanley/shadcn-svelte-skill
  • Type: skill (copy-in; 54 component references + setup/migration guides)
  • Install: clone and package into the project skills dir (preferred):
    • Cursor:
      bash
      git clone --depth 1 https://github.com/antstanley/shadcn-svelte-skill /tmp/shadcn-svelte-skill
      cd /tmp/shadcn-svelte-skill && python scripts/package_skill.py shadcn-svelte dist
      unzip -o dist/shadcn-svelte.zip -d .cursor/skills/
    • Claude Code (project):
      bash
      git clone --depth 1 https://github.com/antstanley/shadcn-svelte-skill /tmp/shadcn-svelte-skill
      cd /tmp/shadcn-svelte-skill && python scripts/package_skill.py shadcn-svelte dist
      unzip -o dist/shadcn-svelte.zip -d .claude/skills/
    • Claude Code (global): curl-piped install (secondary; pinned v1.0.3): curl -fsSL https://github.com/antstanley/shadcn-svelte-skill/releases/download/v1.0.3/install.sh | bash
      • Installs to ~/.claude/skills/shadcn-svelte.
    • From source: clone, then python scripts/package_skill.py shadcn-svelte dist and unzip into your skills dir.
  • Provides: component recipes (Button, Dialog, Form, Data Table…), Bits UI integration, Superforms/Formsnap forms, dark mode via mode-watcher, Svelte 5 + Tailwind v4 migration notes
  • Depends on: Svelte 5 (see svelte row) and Tailwind v4 (see tailwind row) — enable those rows too
  • Playbook: .agent/stacks/shadcn-svelte.md
  • Post-install: verify the agent lists the shadcn-svelte skill; ensure components.json exists (run npx shadcn-svelte@latest init if not)

Tailwind CSS v4

  • Detect: tailwindcss (v4.x) in deps, @import "tailwindcss" in CSS, @theme blocks, @tailwindcss/vite
  • Skill: Lombiq/Tailwind-Agent-Skills
  • Type: skill (with a local docs-snapshot generator)
  • Install: npx skills add Lombiq/Tailwind-Agent-Skills
    • Claude Code alt: npx skills add Lombiq/Tailwind-Agent-Skills -a claude-code
    • Cursor alt: npx skills add Lombiq/Tailwind-Agent-Skills -a cursor --copy
    • Manual: copy skills/tailwind-4-docs/ into your agent's skills dir
  • Provides: tailwind-4-docs — gotchas list, implementation playbook, local docs index
  • Playbook: .agent/stacks/tailwind.md
  • Post-install (REQUIRED): the skill does NOT bundle docs (upstream licensing). Initialize the snapshot: python skills/tailwind-4-docs/scripts/sync_tailwind_docs.py --accept-docs-license Re-run if references/docs/ is missing or older than one week.

Turborepo

  • Detect: turbo.json / turbo.jsonc, turbo in root devDependencies, monorepo workspace config (pnpm-workspace.yaml or workspaces in package.json) with apps/ + packages/
  • Skill: vercel/turborepo — skill lives in the framework monorepo under skills/turborepo/ (note: skills, alongside the repo's root AGENTS.md)
  • Type: skill (copy-in; maintained inside the official Turborepo repo, MIT)
  • Install: no npx skills add published — vendor the skill folder from the repo into your agent's skills dir:
    bash
    npx degit vercel/turborepo/skills/turborepo .agent/skills/vendor/turborepo
    • Claude Code alt: copy into .claude/skills/:
      bash
      npx degit vercel/turborepo/skills/turborepo .claude/skills/turborepo
    • Cursor alt: copy into .cursor/skills/ or .agents/skills/:
      bash
      npx degit vercel/turborepo/skills/turborepo .cursor/skills/turborepo
    • Pin to a release tag instead of main for stability; re-pull to update (these track Turborepo releases).
    • Verify whether npx skills add vercel/turborepo resolves the skills/turborepo subdir; prefer degit if it does not.
  • Provides: turborepo skill — turbo.json task config (dependsOn, outputs, inputs, env), local/remote caching, --filter / --affected, env modes, CI setup, package/monorepo best practices, boundaries; plus a /turborepo command
  • Pairs with: the framework rows for packages inside the monorepo (Next.js, React, Svelte, etc.)
  • Playbook: .agent/stacks/turbo.md
  • Post-install: confirm the agent lists the turborepo skill

Python

  • Detect: pyproject.toml, requirements.txt, setup.py, or Pipfile; *.py source files
  • Skill: (none — local playbook)
  • Type: playbook
  • Install: none
  • Provides: project layout, venv, testing conventions
  • Playbook: .agent/stacks/python.md
  • Post-install: none

FastAPI

  • Detect: fastapi in deps, from fastapi import, APIRouter patterns
  • Skill: (none — local playbook)
  • Type: playbook
  • Install: none
  • Provides: routing, dependency injection, Pydantic models, OpenAPI
  • Playbook: .agent/stacks/fastapi.md
  • Post-install: none

Django

  • Detect: django in deps, manage.py, settings.py, INSTALLED_APPS
  • Skill: (none — local playbook)
  • Type: playbook
  • Install: none
  • Provides: apps, models, views, URL routing, migrations
  • Playbook: .agent/stacks/django.md
  • Post-install: none

Node / Express

  • Detect: express in deps, require('express') or import express from 'express'
  • Skill: (none — local playbook)
  • Type: playbook
  • Install: none
  • Provides: routing, middleware, error handling
  • Playbook: .agent/stacks/express.md
  • Post-install: none

React

  • Detect: react in deps, *.tsx/*.jsx with React imports, vite.config + React plugin
  • Skill: (none — local playbook)
  • Type: playbook
  • Install: none
  • Provides: components, hooks, state, testing
  • Playbook: .agent/stacks/react.md
  • Post-install: none

Next.js

  • Detect: next in deps, next.config.{js,mjs,ts}, app/ or pages/ directory
  • Skill: (none — local playbook)
  • Type: playbook
  • Install: none
  • Provides: App Router, server components, API routes, metadata
  • Playbook: .agent/stacks/nextjs.md
  • Post-install: none

PostgreSQL + Prisma

  • Detect: prisma in deps, prisma/schema.prisma
  • Skill: (none — local playbook)
  • Type: playbook
  • Install: none
  • Provides: schema, migrations, client usage
  • Playbook: .agent/stacks/prisma.md
  • Post-install: none

PostgreSQL + Drizzle

  • Detect: drizzle-orm in deps, drizzle.config.ts, schema.ts / db/schema
  • Skill: (none — local playbook)
  • Type: playbook
  • Install: none
  • Provides: schema definitions, migrations, query patterns
  • Playbook: .agent/stacks/drizzle.md
  • Post-install: none

Go

  • Detect: go.mod, *.go files
  • Skill: (none — local playbook)
  • Type: playbook
  • Install: none
  • Provides: packages, modules, testing, error handling
  • Playbook: .agent/stacks/go.md
  • Post-install: none

Adding your own rows

To extend: add a section above with the same fields, then (optionally) create a matching .agent/stacks/<name>.md playbook. The leanagentkit-match-stack skill auto-discovers any row whose Detect condition is met.

Source: template/packs/stacks/.agent/stacks/registry.md.

Intro: docs/.partials/stacks-intro.md.

❤️ Free and open source forever under the MIT License.