# Spec: Packs Directory: `packs/` ## Purpose Engine integration bundles. Each pack adapts ASW for a specific web server or static site generator. A pack is a self-contained directory that someone can copy into their project. ## Current Packs | Pack | Purpose | Source | |------|---------|--------| | `hugo/` | Hugo theme: layouts, partials, archetypes, static assets | Legacy repo | | `apache/` | Autoindex styling, error pages, Apache conf snippets | Legacy repo | | `caddy/` | Browse template, error pages, Caddyfile snippets | Legacy repo | | `flask/` | Python error handler, Flask integration | Legacy repo | | `nginx/` | Autoindex header, error pages, Nginx conf snippets | Legacy repo | | `pandoc/` | HTML5 template, Lua filter for ASW output | Legacy repo | | `python/` | Simple Python HTTP server with ASW styling | Legacy repo | ## Pack Contract Each pack directory MUST contain: - `README.md` — what the pack does, how to install/use it - All files needed for integration (conf snippets, templates, static assets) Each pack SHOULD: - Reference `dist/asw.css` for the framework CSS (not `src/layers/`) - Be self-contained — no dependencies outside the pack directory and `dist/` - Include example configuration ## Scenarios ### Given a new engine integration - **When** someone wants ASW support for a new engine - **Then** they create `packs//` with a README and integration files - **And** the pack references `dist/asw.css` ### Given the Hugo pack - **When** the ASW website is built - **Then** it uses `packs/hugo/` for layouts, partials, and configuration - **And** `site/` contains Hugo-specific overrides on top of the pack ## Note The Hugo pack is special: the ASW website (`site/`) is built with it. The pack provides the base; `site/` adds content and any site-specific customization. This is both a real integration and a living example.