asw/openspec/changes/repo-restructure/tasks.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

4.6 KiB

Tasks: Repository Restructure

Task 1 — Create directory skeleton

Files: (new directories only) Action:

  • Create src/, src/layers/, src/lab/
  • Create dist/
  • Create vendor/open-props/
  • Create site/
  • Create examples/ Acceptance: Directories exist. No files moved yet. Build still passes from current layout.

Task 2 — Move CSS source to src/

Files: assets/css/layers/*.csssrc/layers/, assets/css/main.csssrc/main.css Action:

  • git mv assets/css/layers/ src/layers/
  • git mv assets/css/main.css src/main.css
  • Update @import paths in src/main.css if needed (should be relative, likely unchanged) Acceptance: src/layers/ contains all 11 CSS files. src/main.css imports them. assets/css/ is gone. Note: Site will be temporarily broken until Hugo mounts are configured (Task 5).

Task 3 — Set up vendor/

Files: vendor/open-props/, vendor/README.md Action:

  • Copy node_modules/open-props/open-props.min.cssvendor/open-props/
  • Copy node_modules/open-props/media.min.cssvendor/open-props/
  • Create vendor/open-props/VERSION with package version and date
  • Create vendor/README.md explaining what's vendored and how to update
  • Remove static/vendor/ (old location) Acceptance: vendor/open-props/ contains the two CSS files + VERSION. static/vendor/ is gone.

Task 4 — Move Hugo files to site/

Files: content/, layouts/, archetypes/, hugo.toml, hugo_stats.json Action:

  • git mv content/ site/content/
  • git mv layouts/ site/layouts/
  • git mv archetypes/ site/archetypes/
  • git mv hugo.toml site/hugo.toml
  • git mv hugo_stats.json site/hugo_stats.json
  • Move site-specific static files: static/palette-test.htmlsite/static/
  • Move static/asw.cssdist/asw.css (this is the built output) Acceptance: All Hugo content/layout/config files are in site/. Root has no Hugo files.

Task 5 — Configure Hugo module mounts

Files: site/hugo.toml Action: Add module mounts:

  • ../srcassets/css (framework CSS in Hugo's asset pipeline)
  • ../docscontent/docs (framework docs as site content)
  • ../vendor/open-propsassets/css/open-props (Open Props in asset pipeline)
  • staticstatic (site's own static files) Acceptance: hugo server --source site/ builds successfully. All pages render. CSS loads correctly.

Task 6 — Build dist/asw.css from new paths

Files: postcss.config.js, package.json Action:

  • Update PostCSS config if paths changed
  • Run: npx postcss src/main.css -o dist/asw.css
  • Run: npx postcss src/main.css -o dist/asw.min.css
  • Verify output matches previous static/asw.css
  • Add npm scripts to package.json: "build": "postcss src/main.css -o dist/asw.css" Acceptance: dist/asw.css exists and is equivalent to the previous build. npm run build works.

Task 7 — Restructure docs/

Files: docs/ Action:

  • Existing docs stay: context.md, css-refactor-plan.md, css-html-cleanup-todo.md, frontmatter.md, template-h1-title.md
  • Verify Hugo mount serves them at content/docs/
  • Add docs/llms.txt (move from legacy or create)
  • Add docs/lineage.md placeholder (Pico absorption story, Open Props relationship) Acceptance: Framework docs are all in docs/. Hugo renders them as site pages via mount.

Task 8 — Create examples/ from site content

Files: examples/ Action:

  • Identify existing pages that are pure component/layout demos
  • Create standalone HTML versions in examples/ that load dist/asw.css
  • Organize into examples/components/, examples/layout/, examples/charts/, examples/vault/ Acceptance: At least 3 example files exist, each standalone and openable in a browser.

Task 9 — Update .gitignore and clean up

Files: .gitignore, root directory Action:

  • Update .gitignore for new paths
  • Remove empty assets/ directory if still present
  • Remove static/css/layers/ (dev-mode output, will be regenerated)
  • Verify no orphaned files remain in old locations Acceptance: git status is clean. No files in old locations. .gitignore covers node_modules/, site/public/, site/resources/.

Task 10 — Verify full build cycle

Files: (none modified, verification only) Action:

  • npm run builddist/asw.css generated
  • hugo --source site/site/public/ generated
  • Spot-check 3-4 pages visually
  • Verify docs/ content appears in site
  • Verify CSS loads and renders correctly Acceptance: Full build passes. Site looks identical to pre-restructure. dist/ output is valid.