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

1.8 KiB

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.