Built-in stack packs

paqad-ai 1.91.1 ships 22 built-in packs: 19 framework packs, from Angular to Vue, and 3 archetype packs for Node.js command-line tools, libraries and services. Onboarding selects the ones that match your project.

  • Stack packs
  • Checked against paqad-ai 1.91.1
  • Reviewed 25 September 2026 by Eliyce

The 22 built-in packs

paqad-ai 1.91.1 ships 22 stack packs: 19 framework packs and 3 archetype packs. A stack pack is a folder that describes one framework or project shape to Paqad (see What stack packs are). You do not install these separately. They are part of the package, in runtime/capabilities/coding/stacks/, one folder per pack.

That folder also holds _shared/, which is not a pack. It carries rules every coding stack receives (API design, CI/CD, environment and git rules). Paqad skips any folder whose name starts with _ or . when it looks for packs.

Framework packs

"Traits" are add-on libraries a pack knows about. "Test runners" are the test tools the pack tells Paqad how to run and read. Where a pack declares no test runner, paqad-ai doctor reports a warning for structured test output.

PackEcosystemTraits declaredTest runners declared
angularnodetailwindangular-test
astronodetailwindvitest
djangopythondjango-restpytest
dotnet (ASP.NET Core)dotnetblazor, ef-core, minimal-api, mvc, razor-pages, signalr, identity, azurenone
expressnodetailwindvitest
fastapipythonpydanticpytest
flaskpythonsqlalchemy, celery, blueprints, flask-login, flask-restx, gunicornnone
flutterdartnoneflutter-test
go-webgogingo-test
kotlin-androidjvmjetpack-compose, room, hilt, retrofit, coroutines, navigation, datastorenone
laravelphpinertia, boost, sail, pest, phpunit, react, vue, tailwindpest, phpunit
nestjsnodeprisma, typeorm, graphql, microservices, swagger, passport, fastifynone
nextjsnodeapp-router, pages-router, tailwind, prisma, trpc, next-authnone
railsrubyrspecrspec
reactnodenext, remix, vite-spa, gatsby, tailwindvitest, playwright
rust-webrustaxumcargo-test
spring-bootjvmjunitjunit
sveltenodetailwindvitest
vuenodenuxt, vite-spa, quasar, tailwindvitest, playwright

Three packs also ship trait-specific rule folders, used only when that trait is detected: laravel (boost, inertia, react, tailwind, vue), react (next, remix, vite-spa, gatsby) and vue (nuxt, quasar, vite-spa).

Archetype packs for Node.js projects

Archetype packs describe what kind of project you have when there is no framework to go by.

PackMeant forTraits declaredTest runners declared
node-cliNode.js command-line tools that ship a program through the bin field of package.jsontypescript, vitest, jest, eslint, docker, monorepovitest, jest
node-libraryNode.js packages that publish a library (not a command-line tool and not a framework app)typescript, vitest, jest, eslint, publishable, monorepovitest, jest
node-serviceLong-running Node.js services without a recognised framework, such as plain HTTP servers, queue workers and scheduled jobstypescript, vitest, jest, eslint, docker, composevitest, jest

How Paqad picks packs for your project

During paqad-ai onboard, stack detection works out your frameworks and records them in .paqad/project-profile.yaml under stack_profile.frameworks. Each framework name there selects the pack with the same name. A project can match more than one pack. Two combinations are simplified on purpose: a Next.js project gets nextjs and not react, and a NestJS project gets nestjs and not express. Detection itself is covered on Stack detection.

See which packs are active

paqad-ai packs list

Each line shows where the pack came from, its name and tier, its display name, whether an override is active and whether it matches the current project:

[built-in] laravel (framework) — Laravel	override=false	matched=true

Add --json for machine-readable output.

If your framework is not listed

No pack describes it, so Paqad has no framework-specific rules, test runner settings or stack MCP entries to give you for it. Paqad's base rules still apply. In 1.91.1 you cannot add a pack for a new framework name and have it matched to a project; a custom pack takes effect only when it overrides one of the 22 names above. Creating a custom stack pack explains what that allows.

Something on this page out of date or unclear? Open an issue on GitHub and name the page.