asw/openspec/specs/packs/spec.md
Ludo 5bf233348d
feat: add OpenSpec specs and changes for ASW restructure
Specs: repo-structure, 10 framework layer specs, packs, site.
Changes: repo-restructure (10 tasks), css-refactor (12 tasks),
legacy-import (proposal + triage categories).

Supersede docs/css-refactor-plan.md in favor of OpenSpec change.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 14:58:39 +02:00

46 lines
1.8 KiB
Markdown

# 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/<engine>/` 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.