# whynot-design — automation targets. Run `make` (or `make help`) for the list. # # The designbook (Claude Design project) mirrors into this repo at designbook/. # It is pulled with the `/design-sync` skill in Claude Code — component by # component, never a wholesale replace — which is an agent step, not a shell one. # After a sync, `make designbook-sync` captures what changed into RecentChanges.md. NODE ?= node # Prefer the llm-connect venv (where llm_connect is installed); fall back to python3. PYTHON ?= $(shell [ -x $(HOME)/llm-connect/.venv/bin/python ] && echo $(HOME)/llm-connect/.venv/bin/python || echo python3) .DEFAULT_GOAL := help .PHONY: help designbook-sync designbook-check recent-changes sync-styles test help: ## Show this help. @grep -hE '^[a-zA-Z_-]+:.*?## ' $(MAKEFILE_LIST) \ | awk 'BEGIN{FS=":.*?## "}{printf " \033[1m%-16s\033[0m %s\n", $$1, $$2}' designbook-sync: ## After a /design-sync pull, record what changed + last-sync time into RecentChanges.md. @echo "Pull the designbook first (in Claude Code): /design-sync" @echo " then record the pull time: node scripts/designbook-sync.mjs --mark-synced" @echo "This reports the diff + last /design-sync time (and warns if the cloud is newer):" $(NODE) scripts/designbook-sync.mjs designbook-check: ## Ask Claude Design (via llm-connect) if the cloud is newer; warn if the mirror is stale. $(PYTHON) scripts/check_designbook_staleness.py $(ARGS) recent-changes: ## Regenerate RecentChanges.md (alias of the reporter; --range supported). $(NODE) scripts/designbook-sync.mjs $(ARGS) sync-styles: ## Regenerate src/elements/_styles.js from components.css. $(NODE) scripts/sync-shared-styles.mjs test: ## Run the Playwright visual-regression suite. pnpm test:visual