What stack packs are

A stack pack is a folder with a pack.yaml file that describes one framework or project shape to Paqad. Onboarding picks matching built-in packs for you; you only need to touch packs to inspect or override them.

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

What a stack pack is

A stack pack is a small folder that describes one framework, or one kind of project, to Paqad. Its main file is pack.yaml, a settings file written in YAML (plain text laid out as names and values). Next to it sit folders of rule files written in Markdown.

Paqad uses the packs that match your project to decide which framework rules to hand your AI coding tool, what to write into your stack documentation, how to read your test results, which files matter for a security review, and which MCP servers to list for your tools. MCP servers are helper programs an AI tool can call; they are explained on MCP servers and Paqad.

You do not have to do anything with packs for a normal setup. When you run paqad-ai onboard, Paqad detects your frameworks and picks the matching built-in packs for you.

When you need to think about packs

  • You want to see which packs are active in a project: run paqad-ai packs list.
  • Your team wants a built-in framework handled differently, for example a different test command or extra folders left out of the code search index: you can override that pack (see Creating a custom stack pack).
  • You are checking why a rule, test runner or MCP entry appears: the pack is usually where it came from.

Framework packs and archetype packs

There are two kinds of pack, set by the tier field:

  • Framework packs (the default, tier: framework) describe a framework such as Laravel, React or Django.
  • Archetype packs (tier: archetype) describe a project shape rather than a framework. The built-in ones cover Node.js command-line tools, libraries and long-running services that do not use a recognised framework.

The full list is on Built-in stack packs.

What is inside a pack

Every pack.yaml must contain name, display_name, ecosystem, version, description, maintainer and detection. The file is checked against a fixed schema (a formal description of which fields are allowed), and any field the schema does not know is an error. This is a shortened excerpt of the built-in Laravel pack:

name: laravel
display_name: Laravel
ecosystem: php
version: 1.0.0
description: Built-in Laravel coding stack pack
maintainer: paqad-ai
detection:
  manifests:
    - file: composer.json
      packages:
        - laravel/framework
traits:
  - name: boost
    display_name: Boost
    detect_package: laravel/boost
    description: Laravel application uses Laravel Boost
mcp_defaults:
  - name: laravel-boost
    when: when_trait
    trait: boost
test_runners:
  - runner_id: pest
    structured_format: junit-xml
    default_command: php artisan test
    output_source: file
    output_path_pattern: .paqad/test-results/pest.xml
docs:
  conventions_template: rules/conventions/guide.md

A trait is an add-on library the pack knows about, such as Tailwind or Pest. Built-in packs can carry extra rules that apply only when a trait is present, in capabilities/<trait>/rules/ inside the pack folder.

Which pack settings Paqad acts on in 1.91.1

FieldWhat Paqad uses it for
name, display_name, description, tierShown by paqad-ai packs list and used as headings in the generated docs/instructions/stack/frameworks.md. Framework packs are tried before archetype packs during detection.
detection, traitsUsed by stack detection. Each matching rule counts as a signal for this pack, and the pack's traits are checked the same way. See Stack detection.
docs.conventions_templateThe file it points to is copied into the "Pack Conventions" section of docs/instructions/stack/frameworks.md.
mcp_defaultsWhich MCP servers are listed for this stack. See MCP servers added for your stack.
test_runnersHow to run the tests and read their structured results. paqad-ai doctor warns when the active packs declare none.
ast.file_extensions, ragWhich files the code search index includes or skips. See RAG overview.
pentest.file_check_mapWhich security review checks apply to which file paths.
module_healthWhere source code lives, for the module map and module health reports.
visual_evidence.frontend_globsWhich changed files count as front-end work, so screenshot evidence is asked for.

The rule files in a built-in pack's rules/ folder reach your project through the rule resolver, which combines base rules, capability rules, pack rules and trait rules in a fixed order. That order is explained on Resolution order.

What a script checks and what the AI decides

Loading packs is a deterministic machine check: a script reads each pack.yaml, validates it against the schema and a set of extra checks, and sets aside any pack that fails, with a warning. The rules a pack contributes are then given to your AI tool as instructions. Whether the AI follows them, and how strictly that is enforced, depends on the host tool and how it is configured. See How it works.

Commands for working with packs

  • paqad-ai packs list shows the packs in effect and where each came from.
  • paqad-ai packs create <name> scaffolds a new pack folder.
  • paqad-ai packs validate <path> checks a pack folder.
  • paqad-ai packs install <source> and paqad-ai packs remove <name> add or remove a global or project pack.

Every option is listed on the packs command reference.

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