pm-workflow-studio 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/CLAUDE.md +31 -0
- package/.claude/agents/demand-analyst.md +26 -0
- package/.claude/agents/dev-planner.md +22 -0
- package/.claude/agents/product-manager.md +25 -0
- package/.claude/agents/quality-reviewer.md +31 -0
- package/.claude/agents/tech-architect.md +22 -0
- package/.claude/agents/ui-designer.md +39 -0
- package/.claude/commands/pm-workflow/analyze.md +6 -0
- package/.claude/commands/pm-workflow/architect.md +6 -0
- package/.claude/commands/pm-workflow/deliver.md +6 -0
- package/.claude/commands/pm-workflow/design.md +6 -0
- package/.claude/commands/pm-workflow/help.md +6 -0
- package/.claude/commands/pm-workflow/init.md +8 -0
- package/.claude/commands/pm-workflow/plan.md +6 -0
- package/.claude/commands/pm-workflow/review.md +6 -0
- package/.claude/commands/pm-workflow/status.md +6 -0
- package/.claude/commands/pm-workflow.md +13 -0
- package/.claude/settings.json +15 -0
- package/.claude/skills/demand-analysis/SKILL.md +50 -0
- package/.claude/skills/demand-analysis/templates/handoff-prd.md +39 -0
- package/.claude/skills/demand-analysis/templates/prd.md +85 -0
- package/.claude/skills/dev-task-planning/SKILL.md +37 -0
- package/.claude/skills/dev-task-planning/templates/dev-tasks.md +54 -0
- package/.claude/skills/impeccable/SKILL.md +169 -0
- package/.claude/skills/impeccable/reference/adapt.md +190 -0
- package/.claude/skills/impeccable/reference/animate.md +175 -0
- package/.claude/skills/impeccable/reference/audit.md +133 -0
- package/.claude/skills/impeccable/reference/bolder.md +113 -0
- package/.claude/skills/impeccable/reference/brand.md +118 -0
- package/.claude/skills/impeccable/reference/clarify.md +174 -0
- package/.claude/skills/impeccable/reference/codex.md +105 -0
- package/.claude/skills/impeccable/reference/cognitive-load.md +106 -0
- package/.claude/skills/impeccable/reference/color-and-contrast.md +105 -0
- package/.claude/skills/impeccable/reference/colorize.md +154 -0
- package/.claude/skills/impeccable/reference/craft.md +123 -0
- package/.claude/skills/impeccable/reference/critique.md +236 -0
- package/.claude/skills/impeccable/reference/delight.md +302 -0
- package/.claude/skills/impeccable/reference/distill.md +111 -0
- package/.claude/skills/impeccable/reference/document.md +427 -0
- package/.claude/skills/impeccable/reference/extract.md +69 -0
- package/.claude/skills/impeccable/reference/harden.md +347 -0
- package/.claude/skills/impeccable/reference/heuristics-scoring.md +234 -0
- package/.claude/skills/impeccable/reference/interaction-design.md +195 -0
- package/.claude/skills/impeccable/reference/layout.md +141 -0
- package/.claude/skills/impeccable/reference/live.md +622 -0
- package/.claude/skills/impeccable/reference/motion-design.md +109 -0
- package/.claude/skills/impeccable/reference/onboard.md +234 -0
- package/.claude/skills/impeccable/reference/optimize.md +258 -0
- package/.claude/skills/impeccable/reference/overdrive.md +130 -0
- package/.claude/skills/impeccable/reference/personas.md +179 -0
- package/.claude/skills/impeccable/reference/polish.md +242 -0
- package/.claude/skills/impeccable/reference/product.md +62 -0
- package/.claude/skills/impeccable/reference/quieter.md +99 -0
- package/.claude/skills/impeccable/reference/responsive-design.md +114 -0
- package/.claude/skills/impeccable/reference/shape.md +165 -0
- package/.claude/skills/impeccable/reference/spatial-design.md +100 -0
- package/.claude/skills/impeccable/reference/teach.md +156 -0
- package/.claude/skills/impeccable/reference/typeset.md +124 -0
- package/.claude/skills/impeccable/reference/typography.md +159 -0
- package/.claude/skills/impeccable/reference/ux-writing.md +107 -0
- package/.claude/skills/impeccable/scripts/cleanup-deprecated.mjs +284 -0
- package/.claude/skills/impeccable/scripts/command-metadata.json +94 -0
- package/.claude/skills/impeccable/scripts/critique-storage.mjs +242 -0
- package/.claude/skills/impeccable/scripts/design-parser.mjs +820 -0
- package/.claude/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/.claude/skills/impeccable/scripts/detect.mjs +21 -0
- package/.claude/skills/impeccable/scripts/detector/browser/injected/index.mjs +1688 -0
- package/.claude/skills/impeccable/scripts/detector/cli/main.mjs +232 -0
- package/.claude/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +4030 -0
- package/.claude/skills/impeccable/scripts/detector/detect-antipatterns.mjs +43 -0
- package/.claude/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +251 -0
- package/.claude/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +420 -0
- package/.claude/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +954 -0
- package/.claude/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +174 -0
- package/.claude/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
- package/.claude/skills/impeccable/scripts/detector/findings.mjs +12 -0
- package/.claude/skills/impeccable/scripts/detector/node/file-system.mjs +198 -0
- package/.claude/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
- package/.claude/skills/impeccable/scripts/detector/registry/antipatterns.mjs +278 -0
- package/.claude/skills/impeccable/scripts/detector/rules/checks.mjs +1948 -0
- package/.claude/skills/impeccable/scripts/detector/shared/color.mjs +124 -0
- package/.claude/skills/impeccable/scripts/detector/shared/constants.mjs +101 -0
- package/.claude/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
- package/.claude/skills/impeccable/scripts/impeccable-paths.mjs +110 -0
- package/.claude/skills/impeccable/scripts/is-generated.mjs +69 -0
- package/.claude/skills/impeccable/scripts/live-accept.mjs +595 -0
- package/.claude/skills/impeccable/scripts/live-browser-session.js +123 -0
- package/.claude/skills/impeccable/scripts/live-browser.js +4860 -0
- package/.claude/skills/impeccable/scripts/live-complete.mjs +75 -0
- package/.claude/skills/impeccable/scripts/live-completion.mjs +18 -0
- package/.claude/skills/impeccable/scripts/live-inject.mjs +446 -0
- package/.claude/skills/impeccable/scripts/live-poll.mjs +200 -0
- package/.claude/skills/impeccable/scripts/live-resume.mjs +48 -0
- package/.claude/skills/impeccable/scripts/live-server.mjs +838 -0
- package/.claude/skills/impeccable/scripts/live-session-store.mjs +254 -0
- package/.claude/skills/impeccable/scripts/live-status.mjs +47 -0
- package/.claude/skills/impeccable/scripts/live-wrap.mjs +632 -0
- package/.claude/skills/impeccable/scripts/live.mjs +247 -0
- package/.claude/skills/impeccable/scripts/load-context.mjs +141 -0
- package/.claude/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/.claude/skills/impeccable/scripts/pin.mjs +214 -0
- package/.claude/skills/pm-workflow/SKILL.md +371 -0
- package/.claude/skills/pm-workflow/assets/design-themes/README.md +56 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/OPEN_DESIGN_COMMIT +1 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/OPEN_DESIGN_IMPORT.md +28 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/OPEN_DESIGN_LICENSE +201 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/README.md +103 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/agentic/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/airbnb/DESIGN.md +393 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/airbnb/examples.html +23 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/airtable/DESIGN.md +92 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/apple/DESIGN.md +250 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/apple/examples.html +23 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/application/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/arc/DESIGN.md +152 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/artistic/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/atelier-zero/DESIGN.md +316 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/bento/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/binance/DESIGN.md +348 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/bmw/DESIGN.md +183 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/bmw-m/DESIGN.md +246 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/bold/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/brutalism/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/bugatti/DESIGN.md +271 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/cafe/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/cal/DESIGN.md +262 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/canva/DESIGN.md +157 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/cisco/DESIGN.md +201 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/claude/DESIGN.md +315 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/clay/DESIGN.md +307 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/claymorphism/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/clean/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/clickhouse/DESIGN.md +284 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/cohere/DESIGN.md +269 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/coinbase/DESIGN.md +132 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/colorful/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/composio/DESIGN.md +310 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/contemporary/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/corporate/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/cosmic/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/creative/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/cursor/DESIGN.md +312 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/dashboard/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/default/DESIGN.md +62 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/discord/DESIGN.md +162 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/dithered/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/doodle/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/dramatic/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/duolingo/DESIGN.md +154 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/editorial/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/elegant/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/elevenlabs/DESIGN.md +268 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/energetic/DESIGN.md +72 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/enterprise/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/expo/DESIGN.md +284 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/expressive/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/fantasy/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/ferrari/DESIGN.md +317 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/figma/DESIGN.md +223 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/flat/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/framer/DESIGN.md +249 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/friendly/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/futuristic/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/glassmorphism/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/gradient/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/hashicorp/DESIGN.md +281 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/hud/DESIGN.md +173 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/huggingface/DESIGN.md +149 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/huggingface/examples.html +11 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/intercom/DESIGN.md +149 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/kami/DESIGN.md +410 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/kraken/DESIGN.md +128 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/lamborghini/DESIGN.md +291 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/levels/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/linear-app/DESIGN.md +370 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/linear-app/examples.html +56 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/lingo/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/loom/DESIGN.md +201 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/lovable/DESIGN.md +301 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/luxury/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/mastercard/DESIGN.md +368 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/material/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/material/examples.html +11 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/meta/DESIGN.md +369 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/minimal/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/minimax/DESIGN.md +260 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/mintlify/DESIGN.md +329 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/miro/DESIGN.md +111 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/mission-control/DESIGN.md +474 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/mistral-ai/DESIGN.md +264 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/modern/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/mongodb/DESIGN.md +269 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/mongodb/examples.html +14 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/mono/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/neobrutalism/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/neon/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/neumorphism/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/nike/DESIGN.md +366 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/notion/DESIGN.md +312 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/notion/examples.html +64 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/nvidia/DESIGN.md +296 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/ollama/DESIGN.md +270 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/openai/DESIGN.md +140 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/openai/examples.html +14 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/opencode-ai/DESIGN.md +284 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/pacman/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/paper/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/perspective/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/pinterest/DESIGN.md +233 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/playstation/DESIGN.md +367 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/posthog/DESIGN.md +259 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/premium/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/professional/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/publication/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/raycast/DESIGN.md +271 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/raycast/examples.html +11 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/refined/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/renault/DESIGN.md +314 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/replicate/DESIGN.md +264 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/resend/DESIGN.md +306 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/retro/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/revolut/DESIGN.md +188 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/runwayml/DESIGN.md +247 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/sanity/DESIGN.md +360 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/sentry/DESIGN.md +265 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/shadcn/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/shadcn/examples.html +24 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/shopify/DESIGN.md +353 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/shopify/examples.html +11 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/simple/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/skeumorphism/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/sleek/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/spacex/DESIGN.md +197 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/spacious/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/spotify/DESIGN.md +249 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/starbucks/DESIGN.md +583 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/storytelling/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/stripe/DESIGN.md +325 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/stripe/examples.html +58 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/supabase/DESIGN.md +258 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/supabase/examples.html +26 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/superhuman/DESIGN.md +255 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/tesla/DESIGN.md +289 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/tetris/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/theverge/DESIGN.md +342 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/together-ai/DESIGN.md +266 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/totality-festival/DESIGN.md +206 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/trading-terminal/DESIGN.md +178 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/uber/DESIGN.md +298 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/urdu/DESIGN.md +1002 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/vercel/DESIGN.md +313 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/vercel/examples.html +55 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/vibrant/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/vintage/DESIGN.md +71 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/vodafone/DESIGN.md +426 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/voltagent/DESIGN.md +326 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/warm-editorial/DESIGN.md +65 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/warp/DESIGN.md +256 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/webex/DESIGN.md +207 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/webflow/DESIGN.md +95 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/webflow/examples.html +11 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/wired/DESIGN.md +281 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/wise/DESIGN.md +176 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/x-ai/DESIGN.md +260 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/x-ai/examples.html +12 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/xiaohongshu/DESIGN.md +402 -0
- package/.claude/skills/pm-workflow/assets/design-themes/open-design/zapier/DESIGN.md +331 -0
- package/.claude/skills/pm-workflow/assets/design-themes/revenuecat/DESIGN.md +209 -0
- package/.claude/skills/pm-workflow/assets/design-themes/revenuecat/examples.html +122 -0
- package/.claude/skills/pm-workflow/assets/design-themes/vben/DESIGN.md +685 -0
- package/.claude/skills/pm-workflow/assets/design-themes/vben/examples.html +155 -0
- package/.claude/skills/pm-workflow/assets/vendor/flow-viewer/MERMAID_LICENSE +21 -0
- package/.claude/skills/pm-workflow/assets/vendor/flow-viewer/SVG_PAN_ZOOM_LICENSE +23 -0
- package/.claude/skills/pm-workflow/assets/vendor/flow-viewer/THIRD_PARTY_LICENSES.md +21 -0
- package/.claude/skills/pm-workflow/assets/vendor/flow-viewer/mermaid.min.js +3298 -0
- package/.claude/skills/pm-workflow/assets/vendor/flow-viewer/svg-pan-zoom.min.js +3 -0
- package/.claude/skills/pm-workflow/references/commands/analyze.md +39 -0
- package/.claude/skills/pm-workflow/references/commands/architect.md +41 -0
- package/.claude/skills/pm-workflow/references/commands/deliver.md +29 -0
- package/.claude/skills/pm-workflow/references/commands/design.md +92 -0
- package/.claude/skills/pm-workflow/references/commands/help.md +24 -0
- package/.claude/skills/pm-workflow/references/commands/init.md +40 -0
- package/.claude/skills/pm-workflow/references/commands/plan.md +41 -0
- package/.claude/skills/pm-workflow/references/commands/review.md +33 -0
- package/.claude/skills/pm-workflow/references/commands/status.md +20 -0
- package/.claude/skills/pm-workflow/scripts/package_delivery.js +195 -0
- package/.claude/skills/pm-workflow/scripts/review_stage.js +622 -0
- package/.claude/skills/quality-review/SKILL.md +49 -0
- package/.claude/skills/quality-review/templates/review-stage.md +39 -0
- package/.claude/skills/tech-architecture/SKILL.md +49 -0
- package/.claude/skills/tech-architecture/templates/handoff-architecture.md +28 -0
- package/.claude/skills/tech-architecture/templates/tech-architecture.md +54 -0
- package/.claude/skills/ui-prototype-design/SKILL.md +125 -0
- package/.claude/skills/ui-prototype-design/templates/handoff-ui.md +40 -0
- package/.claude/skills/ui-prototype-design/templates/prototype-review.md +57 -0
- package/.claude/skills/ui-prototype-design/templates/ui-design.md +142 -0
- package/.codex/SKILL.md +374 -0
- package/.codex/agents/demand-analyst.toml +87 -0
- package/.codex/agents/dev-planner.toml +47 -0
- package/.codex/agents/openai.yaml +4 -0
- package/.codex/agents/product-manager.toml +81 -0
- package/.codex/agents/quality-reviewer.toml +76 -0
- package/.codex/agents/tech-architect.toml +57 -0
- package/.codex/agents/ui-designer.toml +132 -0
- package/.codex/assets/design-themes/README.md +56 -0
- package/.codex/assets/design-themes/open-design/OPEN_DESIGN_COMMIT +1 -0
- package/.codex/assets/design-themes/open-design/OPEN_DESIGN_IMPORT.md +28 -0
- package/.codex/assets/design-themes/open-design/OPEN_DESIGN_LICENSE +201 -0
- package/.codex/assets/design-themes/open-design/README.md +103 -0
- package/.codex/assets/design-themes/open-design/agentic/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/airbnb/DESIGN.md +393 -0
- package/.codex/assets/design-themes/open-design/airbnb/examples.html +23 -0
- package/.codex/assets/design-themes/open-design/airtable/DESIGN.md +92 -0
- package/.codex/assets/design-themes/open-design/apple/DESIGN.md +250 -0
- package/.codex/assets/design-themes/open-design/apple/examples.html +23 -0
- package/.codex/assets/design-themes/open-design/application/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/arc/DESIGN.md +152 -0
- package/.codex/assets/design-themes/open-design/artistic/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/atelier-zero/DESIGN.md +316 -0
- package/.codex/assets/design-themes/open-design/bento/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/binance/DESIGN.md +348 -0
- package/.codex/assets/design-themes/open-design/bmw/DESIGN.md +183 -0
- package/.codex/assets/design-themes/open-design/bmw-m/DESIGN.md +246 -0
- package/.codex/assets/design-themes/open-design/bold/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/brutalism/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/bugatti/DESIGN.md +271 -0
- package/.codex/assets/design-themes/open-design/cafe/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/cal/DESIGN.md +262 -0
- package/.codex/assets/design-themes/open-design/canva/DESIGN.md +157 -0
- package/.codex/assets/design-themes/open-design/cisco/DESIGN.md +201 -0
- package/.codex/assets/design-themes/open-design/claude/DESIGN.md +315 -0
- package/.codex/assets/design-themes/open-design/clay/DESIGN.md +307 -0
- package/.codex/assets/design-themes/open-design/claymorphism/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/clean/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/clickhouse/DESIGN.md +284 -0
- package/.codex/assets/design-themes/open-design/cohere/DESIGN.md +269 -0
- package/.codex/assets/design-themes/open-design/coinbase/DESIGN.md +132 -0
- package/.codex/assets/design-themes/open-design/colorful/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/composio/DESIGN.md +310 -0
- package/.codex/assets/design-themes/open-design/contemporary/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/corporate/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/cosmic/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/creative/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/cursor/DESIGN.md +312 -0
- package/.codex/assets/design-themes/open-design/dashboard/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/default/DESIGN.md +62 -0
- package/.codex/assets/design-themes/open-design/discord/DESIGN.md +162 -0
- package/.codex/assets/design-themes/open-design/dithered/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/doodle/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/dramatic/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/duolingo/DESIGN.md +154 -0
- package/.codex/assets/design-themes/open-design/editorial/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/elegant/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/elevenlabs/DESIGN.md +268 -0
- package/.codex/assets/design-themes/open-design/energetic/DESIGN.md +72 -0
- package/.codex/assets/design-themes/open-design/enterprise/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/expo/DESIGN.md +284 -0
- package/.codex/assets/design-themes/open-design/expressive/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/fantasy/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/ferrari/DESIGN.md +317 -0
- package/.codex/assets/design-themes/open-design/figma/DESIGN.md +223 -0
- package/.codex/assets/design-themes/open-design/flat/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/framer/DESIGN.md +249 -0
- package/.codex/assets/design-themes/open-design/friendly/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/futuristic/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/glassmorphism/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/gradient/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/hashicorp/DESIGN.md +281 -0
- package/.codex/assets/design-themes/open-design/hud/DESIGN.md +173 -0
- package/.codex/assets/design-themes/open-design/huggingface/DESIGN.md +149 -0
- package/.codex/assets/design-themes/open-design/huggingface/examples.html +11 -0
- package/.codex/assets/design-themes/open-design/intercom/DESIGN.md +149 -0
- package/.codex/assets/design-themes/open-design/kami/DESIGN.md +410 -0
- package/.codex/assets/design-themes/open-design/kraken/DESIGN.md +128 -0
- package/.codex/assets/design-themes/open-design/lamborghini/DESIGN.md +291 -0
- package/.codex/assets/design-themes/open-design/levels/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/linear-app/DESIGN.md +370 -0
- package/.codex/assets/design-themes/open-design/linear-app/examples.html +56 -0
- package/.codex/assets/design-themes/open-design/lingo/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/loom/DESIGN.md +201 -0
- package/.codex/assets/design-themes/open-design/lovable/DESIGN.md +301 -0
- package/.codex/assets/design-themes/open-design/luxury/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/mastercard/DESIGN.md +368 -0
- package/.codex/assets/design-themes/open-design/material/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/material/examples.html +11 -0
- package/.codex/assets/design-themes/open-design/meta/DESIGN.md +369 -0
- package/.codex/assets/design-themes/open-design/minimal/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/minimax/DESIGN.md +260 -0
- package/.codex/assets/design-themes/open-design/mintlify/DESIGN.md +329 -0
- package/.codex/assets/design-themes/open-design/miro/DESIGN.md +111 -0
- package/.codex/assets/design-themes/open-design/mission-control/DESIGN.md +474 -0
- package/.codex/assets/design-themes/open-design/mistral-ai/DESIGN.md +264 -0
- package/.codex/assets/design-themes/open-design/modern/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/mongodb/DESIGN.md +269 -0
- package/.codex/assets/design-themes/open-design/mongodb/examples.html +14 -0
- package/.codex/assets/design-themes/open-design/mono/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/neobrutalism/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/neon/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/neumorphism/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/nike/DESIGN.md +366 -0
- package/.codex/assets/design-themes/open-design/notion/DESIGN.md +312 -0
- package/.codex/assets/design-themes/open-design/notion/examples.html +64 -0
- package/.codex/assets/design-themes/open-design/nvidia/DESIGN.md +296 -0
- package/.codex/assets/design-themes/open-design/ollama/DESIGN.md +270 -0
- package/.codex/assets/design-themes/open-design/openai/DESIGN.md +140 -0
- package/.codex/assets/design-themes/open-design/openai/examples.html +14 -0
- package/.codex/assets/design-themes/open-design/opencode-ai/DESIGN.md +284 -0
- package/.codex/assets/design-themes/open-design/pacman/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/paper/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/perspective/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/pinterest/DESIGN.md +233 -0
- package/.codex/assets/design-themes/open-design/playstation/DESIGN.md +367 -0
- package/.codex/assets/design-themes/open-design/posthog/DESIGN.md +259 -0
- package/.codex/assets/design-themes/open-design/premium/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/professional/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/publication/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/raycast/DESIGN.md +271 -0
- package/.codex/assets/design-themes/open-design/raycast/examples.html +11 -0
- package/.codex/assets/design-themes/open-design/refined/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/renault/DESIGN.md +314 -0
- package/.codex/assets/design-themes/open-design/replicate/DESIGN.md +264 -0
- package/.codex/assets/design-themes/open-design/resend/DESIGN.md +306 -0
- package/.codex/assets/design-themes/open-design/retro/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/revolut/DESIGN.md +188 -0
- package/.codex/assets/design-themes/open-design/runwayml/DESIGN.md +247 -0
- package/.codex/assets/design-themes/open-design/sanity/DESIGN.md +360 -0
- package/.codex/assets/design-themes/open-design/sentry/DESIGN.md +265 -0
- package/.codex/assets/design-themes/open-design/shadcn/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/shadcn/examples.html +24 -0
- package/.codex/assets/design-themes/open-design/shopify/DESIGN.md +353 -0
- package/.codex/assets/design-themes/open-design/shopify/examples.html +11 -0
- package/.codex/assets/design-themes/open-design/simple/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/skeumorphism/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/sleek/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/spacex/DESIGN.md +197 -0
- package/.codex/assets/design-themes/open-design/spacious/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/spotify/DESIGN.md +249 -0
- package/.codex/assets/design-themes/open-design/starbucks/DESIGN.md +583 -0
- package/.codex/assets/design-themes/open-design/storytelling/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/stripe/DESIGN.md +325 -0
- package/.codex/assets/design-themes/open-design/stripe/examples.html +58 -0
- package/.codex/assets/design-themes/open-design/supabase/DESIGN.md +258 -0
- package/.codex/assets/design-themes/open-design/supabase/examples.html +26 -0
- package/.codex/assets/design-themes/open-design/superhuman/DESIGN.md +255 -0
- package/.codex/assets/design-themes/open-design/tesla/DESIGN.md +289 -0
- package/.codex/assets/design-themes/open-design/tetris/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/theverge/DESIGN.md +342 -0
- package/.codex/assets/design-themes/open-design/together-ai/DESIGN.md +266 -0
- package/.codex/assets/design-themes/open-design/totality-festival/DESIGN.md +206 -0
- package/.codex/assets/design-themes/open-design/trading-terminal/DESIGN.md +178 -0
- package/.codex/assets/design-themes/open-design/uber/DESIGN.md +298 -0
- package/.codex/assets/design-themes/open-design/urdu/DESIGN.md +1002 -0
- package/.codex/assets/design-themes/open-design/vercel/DESIGN.md +313 -0
- package/.codex/assets/design-themes/open-design/vercel/examples.html +55 -0
- package/.codex/assets/design-themes/open-design/vibrant/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/vintage/DESIGN.md +71 -0
- package/.codex/assets/design-themes/open-design/vodafone/DESIGN.md +426 -0
- package/.codex/assets/design-themes/open-design/voltagent/DESIGN.md +326 -0
- package/.codex/assets/design-themes/open-design/warm-editorial/DESIGN.md +65 -0
- package/.codex/assets/design-themes/open-design/warp/DESIGN.md +256 -0
- package/.codex/assets/design-themes/open-design/webex/DESIGN.md +207 -0
- package/.codex/assets/design-themes/open-design/webflow/DESIGN.md +95 -0
- package/.codex/assets/design-themes/open-design/webflow/examples.html +11 -0
- package/.codex/assets/design-themes/open-design/wired/DESIGN.md +281 -0
- package/.codex/assets/design-themes/open-design/wise/DESIGN.md +176 -0
- package/.codex/assets/design-themes/open-design/x-ai/DESIGN.md +260 -0
- package/.codex/assets/design-themes/open-design/x-ai/examples.html +12 -0
- package/.codex/assets/design-themes/open-design/xiaohongshu/DESIGN.md +402 -0
- package/.codex/assets/design-themes/open-design/zapier/DESIGN.md +331 -0
- package/.codex/assets/design-themes/revenuecat/DESIGN.md +209 -0
- package/.codex/assets/design-themes/revenuecat/examples.html +122 -0
- package/.codex/assets/design-themes/vben/DESIGN.md +685 -0
- package/.codex/assets/design-themes/vben/examples.html +155 -0
- package/.codex/assets/vendor/flow-viewer/MERMAID_LICENSE +21 -0
- package/.codex/assets/vendor/flow-viewer/SVG_PAN_ZOOM_LICENSE +23 -0
- package/.codex/assets/vendor/flow-viewer/THIRD_PARTY_LICENSES.md +21 -0
- package/.codex/assets/vendor/flow-viewer/mermaid.min.js +3298 -0
- package/.codex/assets/vendor/flow-viewer/svg-pan-zoom.min.js +3 -0
- package/.codex/bundled-skills/impeccable/SKILL.md +163 -0
- package/.codex/bundled-skills/impeccable/agents/openai.yaml +4 -0
- package/.codex/bundled-skills/impeccable/reference/adapt.md +190 -0
- package/.codex/bundled-skills/impeccable/reference/animate.md +175 -0
- package/.codex/bundled-skills/impeccable/reference/audit.md +132 -0
- package/.codex/bundled-skills/impeccable/reference/bolder.md +113 -0
- package/.codex/bundled-skills/impeccable/reference/brand.md +118 -0
- package/.codex/bundled-skills/impeccable/reference/clarify.md +174 -0
- package/.codex/bundled-skills/impeccable/reference/codex.md +105 -0
- package/.codex/bundled-skills/impeccable/reference/cognitive-load.md +106 -0
- package/.codex/bundled-skills/impeccable/reference/color-and-contrast.md +105 -0
- package/.codex/bundled-skills/impeccable/reference/colorize.md +154 -0
- package/.codex/bundled-skills/impeccable/reference/craft.md +123 -0
- package/.codex/bundled-skills/impeccable/reference/critique.md +259 -0
- package/.codex/bundled-skills/impeccable/reference/delight.md +302 -0
- package/.codex/bundled-skills/impeccable/reference/distill.md +111 -0
- package/.codex/bundled-skills/impeccable/reference/document.md +427 -0
- package/.codex/bundled-skills/impeccable/reference/extract.md +68 -0
- package/.codex/bundled-skills/impeccable/reference/harden.md +347 -0
- package/.codex/bundled-skills/impeccable/reference/heuristics-scoring.md +234 -0
- package/.codex/bundled-skills/impeccable/reference/interaction-design.md +195 -0
- package/.codex/bundled-skills/impeccable/reference/layout.md +141 -0
- package/.codex/bundled-skills/impeccable/reference/live.md +622 -0
- package/.codex/bundled-skills/impeccable/reference/motion-design.md +109 -0
- package/.codex/bundled-skills/impeccable/reference/onboard.md +234 -0
- package/.codex/bundled-skills/impeccable/reference/optimize.md +258 -0
- package/.codex/bundled-skills/impeccable/reference/overdrive.md +130 -0
- package/.codex/bundled-skills/impeccable/reference/personas.md +179 -0
- package/.codex/bundled-skills/impeccable/reference/polish.md +242 -0
- package/.codex/bundled-skills/impeccable/reference/product.md +62 -0
- package/.codex/bundled-skills/impeccable/reference/quieter.md +99 -0
- package/.codex/bundled-skills/impeccable/reference/responsive-design.md +114 -0
- package/.codex/bundled-skills/impeccable/reference/shape.md +165 -0
- package/.codex/bundled-skills/impeccable/reference/spatial-design.md +100 -0
- package/.codex/bundled-skills/impeccable/reference/teach.md +156 -0
- package/.codex/bundled-skills/impeccable/reference/typeset.md +124 -0
- package/.codex/bundled-skills/impeccable/reference/typography.md +159 -0
- package/.codex/bundled-skills/impeccable/reference/ux-writing.md +107 -0
- package/.codex/bundled-skills/impeccable/scripts/cleanup-deprecated.mjs +284 -0
- package/.codex/bundled-skills/impeccable/scripts/command-metadata.json +94 -0
- package/.codex/bundled-skills/impeccable/scripts/critique-storage.mjs +242 -0
- package/.codex/bundled-skills/impeccable/scripts/design-parser.mjs +820 -0
- package/.codex/bundled-skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/.codex/bundled-skills/impeccable/scripts/detect.mjs +21 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/browser/injected/index.mjs +1688 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/cli/main.mjs +232 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/detect-antipatterns-browser.js +4030 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/detect-antipatterns.mjs +43 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +251 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +420 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +954 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +174 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/findings.mjs +12 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/node/file-system.mjs +198 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/registry/antipatterns.mjs +278 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/rules/checks.mjs +1948 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/shared/color.mjs +124 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/shared/constants.mjs +101 -0
- package/.codex/bundled-skills/impeccable/scripts/detector/shared/page.mjs +7 -0
- package/.codex/bundled-skills/impeccable/scripts/impeccable-paths.mjs +110 -0
- package/.codex/bundled-skills/impeccable/scripts/is-generated.mjs +69 -0
- package/.codex/bundled-skills/impeccable/scripts/live-accept.mjs +595 -0
- package/.codex/bundled-skills/impeccable/scripts/live-browser-session.js +123 -0
- package/.codex/bundled-skills/impeccable/scripts/live-browser.js +4860 -0
- package/.codex/bundled-skills/impeccable/scripts/live-complete.mjs +75 -0
- package/.codex/bundled-skills/impeccable/scripts/live-completion.mjs +18 -0
- package/.codex/bundled-skills/impeccable/scripts/live-inject.mjs +446 -0
- package/.codex/bundled-skills/impeccable/scripts/live-poll.mjs +200 -0
- package/.codex/bundled-skills/impeccable/scripts/live-resume.mjs +48 -0
- package/.codex/bundled-skills/impeccable/scripts/live-server.mjs +838 -0
- package/.codex/bundled-skills/impeccable/scripts/live-session-store.mjs +254 -0
- package/.codex/bundled-skills/impeccable/scripts/live-status.mjs +47 -0
- package/.codex/bundled-skills/impeccable/scripts/live-wrap.mjs +632 -0
- package/.codex/bundled-skills/impeccable/scripts/live.mjs +247 -0
- package/.codex/bundled-skills/impeccable/scripts/load-context.mjs +141 -0
- package/.codex/bundled-skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/.codex/bundled-skills/impeccable/scripts/pin.mjs +214 -0
- package/.codex/references/commands/analyze.md +39 -0
- package/.codex/references/commands/architect.md +41 -0
- package/.codex/references/commands/deliver.md +29 -0
- package/.codex/references/commands/design.md +92 -0
- package/.codex/references/commands/help.md +24 -0
- package/.codex/references/commands/init.md +40 -0
- package/.codex/references/commands/plan.md +41 -0
- package/.codex/references/commands/review.md +33 -0
- package/.codex/references/commands/status.md +20 -0
- package/.codex/role-skills/demand-analysis/SKILL.md +50 -0
- package/.codex/role-skills/demand-analysis/templates/handoff-prd.md +39 -0
- package/.codex/role-skills/demand-analysis/templates/prd.md +85 -0
- package/.codex/role-skills/dev-task-planning/SKILL.md +37 -0
- package/.codex/role-skills/dev-task-planning/templates/dev-tasks.md +54 -0
- package/.codex/role-skills/quality-review/SKILL.md +49 -0
- package/.codex/role-skills/quality-review/templates/review-stage.md +39 -0
- package/.codex/role-skills/tech-architecture/SKILL.md +49 -0
- package/.codex/role-skills/tech-architecture/templates/handoff-architecture.md +28 -0
- package/.codex/role-skills/tech-architecture/templates/tech-architecture.md +54 -0
- package/.codex/role-skills/ui-prototype-design/SKILL.md +125 -0
- package/.codex/role-skills/ui-prototype-design/templates/handoff-ui.md +40 -0
- package/.codex/role-skills/ui-prototype-design/templates/prototype-review.md +57 -0
- package/.codex/role-skills/ui-prototype-design/templates/ui-design.md +142 -0
- package/.codex/scripts/package_delivery.js +195 -0
- package/.codex/scripts/review_stage.js +622 -0
- package/.codex/templates/AGENTS.md +44 -0
- package/.codex/templates/delivery-README.md +37 -0
- package/.codex/templates/framework-AGENTS.md +74 -0
- package/.codex/templates/framework-README.md +65 -0
- package/.codex/templates/project-config.md +117 -0
- package/.codex/templates/prototype-README.md +45 -0
- package/.codex/templates/workflow-state.json +47 -0
- package/README.md +28 -0
- package/bin/pmflow.js +463 -0
- package/package.json +30 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
### Purpose
|
|
2
|
+
|
|
3
|
+
Resolve one stable target, run two independent assessments, synthesize a design critique, persist a snapshot, and ask the user what to improve next. The chat response is the primary deliverable; the snapshot is an archive/backlog for future commands.
|
|
4
|
+
|
|
5
|
+
### Hard Invariants
|
|
6
|
+
|
|
7
|
+
- Assessment A (design review) and Assessment B (detector/browser evidence) are both required.
|
|
8
|
+
- Assessment A must finish before detector findings enter the parent synthesis context. Detector output is deterministic, but it still anchors judgment.
|
|
9
|
+
- If sub-agents are unavailable, fall back sequentially: finish and record Assessment A first, then run Assessment B, then synthesize.
|
|
10
|
+
- A skipped detector is a failed critique run unless `detect.mjs` is missing or crashes after a real attempt.
|
|
11
|
+
- Viewable targets require browser inspection when available.
|
|
12
|
+
- Any local server started only for critique visualization must run in the background, have a recorded stop method, and be stopped before final reporting unless the user asks to keep it.
|
|
13
|
+
- Do not claim a user-visible overlay exists unless script injection succeeded and the detector ran in the page.
|
|
14
|
+
|
|
15
|
+
### Setup
|
|
16
|
+
|
|
17
|
+
1. **Resolve the target** to a concrete file path or URL. Prefer a source path over a dev-server URL when both identify the same surface; ports drift, paths do not.
|
|
18
|
+
- "the homepage" -> `site/pages/index.astro` or `index.html`
|
|
19
|
+
- "the settings modal" -> the primary component file
|
|
20
|
+
- "this page" -> the current URL or source file
|
|
21
|
+
2. **Compute the slug**:
|
|
22
|
+
```bash
|
|
23
|
+
node .agents/skills/impeccable/scripts/critique-storage.mjs slug "<resolved-path-or-url>"
|
|
24
|
+
```
|
|
25
|
+
Keep it. If the command exits non-zero, skip persistence and trend for this run, but continue the critique.
|
|
26
|
+
3. **Read `.impeccable/critique/ignore.md`** if it exists. Drop matching findings silently; it is the only prior-run input critique consumes.
|
|
27
|
+
|
|
28
|
+
### Assessment Orchestration
|
|
29
|
+
|
|
30
|
+
Delegate Assessment A and Assessment B to separate sub-agents when possible. They must not see each other's output. Do not show findings to the user until synthesis.
|
|
31
|
+
|
|
32
|
+
Codex sub-agent gate:
|
|
33
|
+
- If `spawn_agent` is exposed and the user explicitly allowed sub-agents, delegation, or parallel agent work, spawn A and B immediately.
|
|
34
|
+
- If `spawn_agent` is exposed but the user did not explicitly allow sub-agents, ask exactly once: "Impeccable critique is designed to run two independent sub-agents for an unanchored assessment. May I use sub-agents for this critique?" Then stop until the user answers.
|
|
35
|
+
- If allowed, spawn A and B. If declined, run sequentially and report `Assessment independence: degraded (sub-agents declined by user)`.
|
|
36
|
+
- If `spawn_agent` is not exposed, do not ask; run sequentially and report `Assessment independence: degraded (spawn_agent unavailable in this session)`.
|
|
37
|
+
- If spawning fails after permission, run sequentially and report `Assessment independence: degraded (sub-agent spawn failed: <exact error>)`.
|
|
38
|
+
Prefer `fork_context: false` with self-contained prompts containing cwd, target, live URL, references, product context, and output contract. If using `fork_context: true`, omit `agent_type`, `model`, and `reasoning_effort`.
|
|
39
|
+
|
|
40
|
+
If browser automation is available, each assessment creates its own new tab. Never reuse an existing tab, even if it is already at the right URL.
|
|
41
|
+
|
|
42
|
+
### Assessment A: Design Review
|
|
43
|
+
|
|
44
|
+
Read relevant source files and visually inspect the live page when browser automation is available. Think like a design director.
|
|
45
|
+
|
|
46
|
+
Evaluate:
|
|
47
|
+
- **AI slop**: Would someone believe "AI made this" immediately? Check all DON'T guidance from the parent Impeccable skill.
|
|
48
|
+
- **Holistic design**: hierarchy, IA, emotional fit, discoverability, composition, typography, color, accessibility, states, copy, and edge cases.
|
|
49
|
+
- **Cognitive load**: consult [cognitive-load](cognitive-load.md); report checklist failures and decision points with >4 visible options.
|
|
50
|
+
- **Emotional journey**: peak-end rule, emotional valleys, reassurance at high-stakes moments.
|
|
51
|
+
- **Nielsen heuristics**: consult [heuristics-scoring](heuristics-scoring.md); score all 10 heuristics 0-4.
|
|
52
|
+
|
|
53
|
+
Return: AI slop verdict, heuristic scores, cognitive load, emotional journey, 2-3 strengths, 3-5 priority issues, persona red flags, minor observations, and provocative questions.
|
|
54
|
+
|
|
55
|
+
### Assessment B: Detector + Browser Evidence
|
|
56
|
+
|
|
57
|
+
Run the bundled detector and browser visualization evidence. Assessment B is mandatory and must remain isolated from Assessment A until both are complete.
|
|
58
|
+
|
|
59
|
+
CLI scan:
|
|
60
|
+
```bash
|
|
61
|
+
node .agents/skills/impeccable/scripts/detect.mjs --json [--fast] [target]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
- Pass markup files/directories as `[target]`; do not pass CSS-only files.
|
|
65
|
+
- For URLs, skip CLI scan and use browser visualization.
|
|
66
|
+
- For 200+ scannable files, use `--fast`; for 500+, narrow scope or ask.
|
|
67
|
+
- Exit code 0 = clean; 2 = findings.
|
|
68
|
+
- If the detector entrypoint is missing or fails to load, report deterministic scan unavailable and continue with browser/manual review.
|
|
69
|
+
|
|
70
|
+
Browser visualization is required for a viewable target when browser automation is available. Use a localhost dev/static URL for local files; avoid `file://` unless the available browser explicitly supports this workflow. Overlay flow:
|
|
71
|
+
|
|
72
|
+
1. Create a fresh tab and navigate.
|
|
73
|
+
2. Preflight mutable injection by setting `document.title` and appending a `<script>` tag. Read-only evaluate APIs do not count.
|
|
74
|
+
3. If mutation is unavailable, skip live server, browser presentation, and injection; report fallback signal.
|
|
75
|
+
4. If mutation is available, start `node .agents/skills/impeccable/scripts/live-server.mjs --background`, present the browser if supported, label `[Human]`, scroll top, inject `http://localhost:PORT/detect.js`, wait 2-3 seconds, read `impeccable` console messages, then stop the live server.
|
|
76
|
+
5. For multi-view targets, inject on 3-5 representative pages.
|
|
77
|
+
|
|
78
|
+
Codex Browser note: Use the Browser skill. Do not spend a Browser attempt on `file://`. Only call `visibility.set(true)` after mutable script injection is confirmed for the `[Human]` overlay path; verify with `get()`. Use `tab.dev.logs({ filter: "impeccable" })` for console results. Its Playwright `evaluate(...)` surface is read-only; do not rely on it for mutation.
|
|
79
|
+
|
|
80
|
+
Return: CLI findings JSON/counts, browser console findings if applicable, false positives, and skipped/failed browser steps with concrete reasons.
|
|
81
|
+
|
|
82
|
+
After Assessment B returns usable CLI findings, reuse them. Do not rerun `detect.mjs` in the parent unless Assessment B failed, was truncated, or omitted count, rule names, or file locations.
|
|
83
|
+
|
|
84
|
+
Codex failure accounting: final Run Notes must include target slug, ignore list, assessment independence, CLI detector, browser visibility, overlay injection, live-server cleanup, temp-file cleanup, and any fallback signal used. Do not run repo status checks, late API spelunking, or unrelated verification after the report is assembled.
|
|
85
|
+
|
|
86
|
+
### Generate Combined Critique Report
|
|
87
|
+
|
|
88
|
+
Synthesize both assessments into a single report. Do NOT simply concatenate. Weave the findings together, noting where the LLM review and detector agree, where the detector caught issues the LLM missed, and where detector findings are false positives.
|
|
89
|
+
|
|
90
|
+
The chat response is the primary user-facing deliverable. Present the full structured critique below in chat; do not replace it with a summary and a link. The persisted snapshot is only an archive/backlog for later commands.
|
|
91
|
+
|
|
92
|
+
Codex final-answer note: `$impeccable critique` produces a report artifact, so the final chat response should intentionally exceed the usual concise close-out style. Do not title the final response "Critique Summary" unless the user explicitly asked for a summary.
|
|
93
|
+
|
|
94
|
+
Structure your feedback as a design director would:
|
|
95
|
+
|
|
96
|
+
#### Design Health Score
|
|
97
|
+
> *Consult [heuristics-scoring](heuristics-scoring.md)*
|
|
98
|
+
|
|
99
|
+
Present the Nielsen's 10 heuristics scores as a table:
|
|
100
|
+
|
|
101
|
+
| # | Heuristic | Score | Key Issue |
|
|
102
|
+
|---|-----------|-------|-----------|
|
|
103
|
+
| 1 | Visibility of System Status | ? | [specific finding or "n/a" if solid] |
|
|
104
|
+
| 2 | Match System / Real World | ? | |
|
|
105
|
+
| 3 | User Control and Freedom | ? | |
|
|
106
|
+
| 4 | Consistency and Standards | ? | |
|
|
107
|
+
| 5 | Error Prevention | ? | |
|
|
108
|
+
| 6 | Recognition Rather Than Recall | ? | |
|
|
109
|
+
| 7 | Flexibility and Efficiency | ? | |
|
|
110
|
+
| 8 | Aesthetic and Minimalist Design | ? | |
|
|
111
|
+
| 9 | Error Recovery | ? | |
|
|
112
|
+
| 10 | Help and Documentation | ? | |
|
|
113
|
+
| **Total** | | **??/40** | **[Rating band]** |
|
|
114
|
+
|
|
115
|
+
Be honest with scores. A 4 means genuinely excellent. Most real interfaces score 20-32.
|
|
116
|
+
|
|
117
|
+
#### Anti-Patterns Verdict
|
|
118
|
+
|
|
119
|
+
**Start here.** Does this look AI-generated?
|
|
120
|
+
|
|
121
|
+
**LLM assessment**: Your own evaluation of AI slop tells. Cover overall aesthetic feel, layout sameness, generic composition, missed opportunities for personality.
|
|
122
|
+
|
|
123
|
+
**Deterministic scan**: Summarize what the automated detector found, with counts and file locations. Note any additional issues the detector caught that you missed, and flag any false positives.
|
|
124
|
+
|
|
125
|
+
**Visual overlays** (if injection succeeded): Tell the user that overlays are now visible in the **[Human]** tab in their browser, highlighting the detected issues. Summarize what the console output reported. If browser visualization was attempted but injection failed, say that no reliable user-visible overlay is available and report the fallback signal instead.
|
|
126
|
+
|
|
127
|
+
#### Overall Impression
|
|
128
|
+
A brief gut reaction: what works, what doesn't, and the single biggest opportunity.
|
|
129
|
+
|
|
130
|
+
#### What's Working
|
|
131
|
+
Highlight 2-3 things done well. Be specific about why they work.
|
|
132
|
+
|
|
133
|
+
#### Priority Issues
|
|
134
|
+
The 3-5 most impactful design problems, ordered by importance.
|
|
135
|
+
|
|
136
|
+
For each issue, tag with **P0-P3 severity** (consult [heuristics-scoring](heuristics-scoring.md) for severity definitions):
|
|
137
|
+
- **[P?] What**: Name the problem clearly
|
|
138
|
+
- **Why it matters**: How this hurts users or undermines goals
|
|
139
|
+
- **Fix**: What to do about it (be concrete)
|
|
140
|
+
- **Suggested command**: Which command could address this (from: $impeccable adapt, $impeccable animate, $impeccable audit, $impeccable bolder, $impeccable clarify, $impeccable colorize, $impeccable critique, $impeccable delight, $impeccable distill, $impeccable document, $impeccable harden, $impeccable layout, $impeccable onboard, $impeccable optimize, $impeccable overdrive, $impeccable polish, $impeccable quieter, $impeccable shape, $impeccable typeset)
|
|
141
|
+
|
|
142
|
+
#### Persona Red Flags
|
|
143
|
+
> *Consult [personas](personas.md)*
|
|
144
|
+
|
|
145
|
+
Auto-select 2-3 personas most relevant to this interface type (use the selection table in the reference). If `AGENTS.md` contains a `## Design Context` section from `impeccable teach`, also generate 1-2 project-specific personas from the audience/brand info.
|
|
146
|
+
|
|
147
|
+
For each selected persona, walk through the primary user action and list specific red flags found:
|
|
148
|
+
|
|
149
|
+
**Alex (Power User)**: No keyboard shortcuts detected. Form requires 8 clicks for primary action. Forced modal onboarding. High abandonment risk.
|
|
150
|
+
|
|
151
|
+
**Jordan (First-Timer)**: Icon-only nav in sidebar. Technical jargon in error messages ("404 Not Found"). No visible help. Will abandon at step 2.
|
|
152
|
+
|
|
153
|
+
Be specific. Name the exact elements and interactions that fail each persona. Don't write generic persona descriptions; write what broke for them.
|
|
154
|
+
|
|
155
|
+
#### Minor Observations
|
|
156
|
+
Quick notes on smaller issues worth addressing.
|
|
157
|
+
|
|
158
|
+
#### Questions to Consider
|
|
159
|
+
Provocative questions that might unlock better solutions:
|
|
160
|
+
- "What if the primary action were more prominent?"
|
|
161
|
+
- "Does this need to feel this complex?"
|
|
162
|
+
- "What would a confident version of this look like?"
|
|
163
|
+
|
|
164
|
+
#### Run Notes
|
|
165
|
+
Keep this compact. Include status for target slug, ignore list, assessment independence, CLI detector, browser visibility, overlay injection, live server cleanup, and temp-file cleanup. For failed or skipped steps, give the concrete observed reason and the fallback signal used. In the final chat response, also include snapshot write and trend read status after persistence has run.
|
|
166
|
+
|
|
167
|
+
Codex Run Notes are final-chat only. Do not include this section in the persisted snapshot body, because persistence, trend read, and temp cleanup happen after the snapshot write and would otherwise archive stale status such as "pending after persistence."
|
|
168
|
+
|
|
169
|
+
**Remember**:
|
|
170
|
+
- Be direct. Vague feedback wastes everyone's time.
|
|
171
|
+
- Be specific. "The submit button," not "some elements."
|
|
172
|
+
- Say what's wrong AND why it matters to users.
|
|
173
|
+
- Give concrete suggestions. Cut "consider exploring..." entirely.
|
|
174
|
+
- Prioritize ruthlessly. If everything is important, nothing is.
|
|
175
|
+
- Don't soften criticism. Developers need honest feedback to ship great design.
|
|
176
|
+
|
|
177
|
+
### Persist the Snapshot
|
|
178
|
+
|
|
179
|
+
Once the report above is finalized, write it to `.impeccable/critique/` so the user can refer back, and so `$impeccable polish` can pick up the priority issues without a copy-paste.
|
|
180
|
+
|
|
181
|
+
Skip this step if the Setup slug was null (vague or root-level target).
|
|
182
|
+
|
|
183
|
+
1. **Write the body to a temp file** so you can pipe it to the helper. Use the full critique report (heuristic table, anti-patterns verdict, priority issues, persona red flags, minor observations, and questions), but stop before the "Ask the User" / "Recommended Actions" sections that come later.
|
|
184
|
+
|
|
185
|
+
Codex: exclude Run Notes from the temp body file; Run Notes are final-chat only because persistence, trend read, and temp cleanup happen after the snapshot write.
|
|
186
|
+
|
|
187
|
+
2. **Pass the structured metadata** through `IMPECCABLE_CRITIQUE_META` (JSON), then run the write command:
|
|
188
|
+
```bash
|
|
189
|
+
IMPECCABLE_CRITIQUE_META='{"target":"<user phrasing>","total_score":<n>,"p0_count":<n>,"p1_count":<n>}' \
|
|
190
|
+
node .agents/skills/impeccable/scripts/critique-storage.mjs write <slug> <body-file>
|
|
191
|
+
```
|
|
192
|
+
The helper prints the absolute path it wrote.
|
|
193
|
+
|
|
194
|
+
3. **Delete the temp body file** after the write attempt completes, whether the write succeeded or failed. If deletion fails, mention `temp-file cleanup failed: <reason>` briefly in the final output, but do not block the critique.
|
|
195
|
+
|
|
196
|
+
4. **Read the trend** for context:
|
|
197
|
+
```bash
|
|
198
|
+
node .agents/skills/impeccable/scripts/critique-storage.mjs trend <slug> 5
|
|
199
|
+
```
|
|
200
|
+
This returns a JSON array of the last 5 frontmatter entries (including the one you just wrote).
|
|
201
|
+
|
|
202
|
+
5. **Append a single line to the user-visible output**, after the report and before the questions:
|
|
203
|
+
|
|
204
|
+
> **Trend for `<slug>` (last 5 runs): 24 → 28 → 32 → 29 → 32**
|
|
205
|
+
> Wrote `.impeccable/critique/<filename>`.
|
|
206
|
+
|
|
207
|
+
If this is the first run for the slug, the trend is just one score; say so: "First run for this target, no trend yet."
|
|
208
|
+
|
|
209
|
+
This is fire-and-forget. Do not show the user the helper's JSON output; only the human-readable trend line and the written path. Failures here should not block the rest of the flow; print the error and move on.
|
|
210
|
+
|
|
211
|
+
### Ask the User
|
|
212
|
+
|
|
213
|
+
**After presenting findings**, use targeted questions based on what was actually found. STOP and use Codex's structured user-input/question tool when available; if unavailable, ask directly in chat to clarify what you cannot infer. These answers will shape the action plan.
|
|
214
|
+
|
|
215
|
+
Ask questions along these lines (adapt to the specific findings; do NOT ask generic questions):
|
|
216
|
+
|
|
217
|
+
1. **Priority direction**: Based on the issues found, ask which category matters most to the user right now. For example: "I found problems with visual hierarchy, color usage, and information overload. Which area should we tackle first?" Offer the top 2-3 issue categories as options.
|
|
218
|
+
|
|
219
|
+
2. **Design intent**: If the critique found a tonal mismatch, ask whether it was intentional. For example: "The interface feels clinical and corporate. Is that the intended tone, or should it feel warmer/bolder/more playful?" Offer 2-3 tonal directions as options based on what would fix the issues found.
|
|
220
|
+
|
|
221
|
+
3. **Scope**: Ask how much the user wants to take on. For example: "I found N issues. Want to address everything, or focus on the top 3?" Offer scope options like "Top 3 only", "All issues", "Critical issues only".
|
|
222
|
+
|
|
223
|
+
4. **Constraints** (optional; only ask if relevant): If the findings touch many areas, ask if anything is off-limits. For example: "Should any sections stay as-is?" This prevents the plan from touching things the user considers done.
|
|
224
|
+
|
|
225
|
+
**Rules for questions**:
|
|
226
|
+
- Every question must reference specific findings from the report. Never ask generic "who is your audience?" questions.
|
|
227
|
+
- Keep it to 2-4 questions maximum. Respect the user's time.
|
|
228
|
+
- Offer concrete options, not open-ended prompts.
|
|
229
|
+
- If findings are straightforward (e.g., only 1-2 clear issues), skip questions and go directly to Recommended Actions.
|
|
230
|
+
|
|
231
|
+
Codex final-question gate: The user-visible response must either include the targeted questions or explicitly say `Questions skipped: <reason>` because the findings were straightforward. Each question must include 2-3 concrete answer options tied to the actual critique findings. Do not end with only open-ended questions.
|
|
232
|
+
|
|
233
|
+
### Recommended Actions
|
|
234
|
+
|
|
235
|
+
**After receiving the user's answers**, present a prioritized action summary reflecting the user's priorities and scope from Ask the User.
|
|
236
|
+
|
|
237
|
+
#### Action Summary
|
|
238
|
+
|
|
239
|
+
List recommended commands in priority order, based on the user's answers:
|
|
240
|
+
|
|
241
|
+
1. **`$command-name`**: Brief description of what to fix (specific context from critique findings)
|
|
242
|
+
2. **`$command-name`**: Brief description (specific context)
|
|
243
|
+
...
|
|
244
|
+
|
|
245
|
+
**Rules for recommendations**:
|
|
246
|
+
- Only recommend commands from: $impeccable adapt, $impeccable animate, $impeccable audit, $impeccable bolder, $impeccable clarify, $impeccable colorize, $impeccable critique, $impeccable delight, $impeccable distill, $impeccable document, $impeccable harden, $impeccable layout, $impeccable onboard, $impeccable optimize, $impeccable overdrive, $impeccable polish, $impeccable quieter, $impeccable shape, $impeccable typeset
|
|
247
|
+
- Order by the user's stated priorities first, then by impact
|
|
248
|
+
- Each item's description should carry enough context that the command knows what to focus on
|
|
249
|
+
- Map each Priority Issue to the appropriate command
|
|
250
|
+
- Skip commands that would address zero issues
|
|
251
|
+
- If the user chose a limited scope, only include items within that scope
|
|
252
|
+
- If the user marked areas as off-limits, exclude commands that would touch those areas
|
|
253
|
+
- End with `$impeccable polish` as the final step if any fixes were recommended
|
|
254
|
+
|
|
255
|
+
After presenting the summary, tell the user:
|
|
256
|
+
|
|
257
|
+
> You can ask me to run these one at a time, all at once, or in any order you prefer.
|
|
258
|
+
>
|
|
259
|
+
> Re-run `$impeccable critique` after fixes to see your score improve.
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
> **Additional context needed**: what's appropriate for the domain (playful vs professional vs quirky vs elegant).
|
|
2
|
+
|
|
3
|
+
Find the moments where personality and unexpected polish would turn a functional interface into one users remember and tell other people about. Add only where the moment earns it; delight everywhere reads as noise.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Register
|
|
8
|
+
|
|
9
|
+
Brand: delight can be distributed across copy voice, section transitions, discovery rewards, seasonal touches, personality across the whole surface.
|
|
10
|
+
|
|
11
|
+
Product: delight at specific moments, not pages. Completion, first-time actions, error recovery, milestone crossings. Reliability and consistency carry the rest of the experience; delight pushed everywhere reads as noise.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Assess Delight Opportunities
|
|
16
|
+
|
|
17
|
+
Identify where delight would enhance (not distract from) the experience:
|
|
18
|
+
|
|
19
|
+
1. **Find natural delight moments**:
|
|
20
|
+
- **Success states**: Completed actions (save, send, publish)
|
|
21
|
+
- **Empty states**: First-time experiences, onboarding
|
|
22
|
+
- **Loading states**: Waiting periods that could be entertaining
|
|
23
|
+
- **Achievements**: Milestones, streaks, completions
|
|
24
|
+
- **Interactions**: Hover states, clicks, drags
|
|
25
|
+
- **Errors**: Softening frustrating moments
|
|
26
|
+
- **Easter eggs**: Hidden discoveries for curious users
|
|
27
|
+
|
|
28
|
+
2. **Understand the context**:
|
|
29
|
+
- What's the brand personality? (Playful? Professional? Quirky? Elegant?)
|
|
30
|
+
- Who's the audience? (Tech-savvy? Creative? Corporate?)
|
|
31
|
+
- What's the emotional context? (Accomplishment? Exploration? Frustration?)
|
|
32
|
+
- What's appropriate? (Banking app ≠ gaming app)
|
|
33
|
+
|
|
34
|
+
3. **Define delight strategy**:
|
|
35
|
+
- **Subtle sophistication**: Refined micro-interactions (luxury brands)
|
|
36
|
+
- **Playful personality**: Whimsical illustrations and copy (consumer apps)
|
|
37
|
+
- **Helpful surprises**: Anticipating needs before users ask (productivity tools)
|
|
38
|
+
- **Sensory richness**: Satisfying sounds, smooth animations (creative tools)
|
|
39
|
+
|
|
40
|
+
If any of these are unclear from the codebase, STOP and use Codex's structured user-input/question tool when available; if unavailable, ask directly in chat to clarify what you cannot infer.
|
|
41
|
+
|
|
42
|
+
**CRITICAL**: Delight should enhance usability, never obscure it. If users notice the delight more than accomplishing their goal, you've gone too far.
|
|
43
|
+
|
|
44
|
+
## Delight Principles
|
|
45
|
+
|
|
46
|
+
Follow these guidelines:
|
|
47
|
+
|
|
48
|
+
### Delight Amplifies, Never Blocks
|
|
49
|
+
- Delight moments should be quick (< 1 second)
|
|
50
|
+
- Never delay core functionality for delight
|
|
51
|
+
- Make delight skippable or subtle
|
|
52
|
+
- Respect user's time and task focus
|
|
53
|
+
|
|
54
|
+
### Surprise and Discovery
|
|
55
|
+
- Hide delightful details for users to discover
|
|
56
|
+
- Reward exploration and curiosity
|
|
57
|
+
- Don't announce every delight moment
|
|
58
|
+
- Let users share discoveries with others
|
|
59
|
+
|
|
60
|
+
### Appropriate to Context
|
|
61
|
+
- Match delight to emotional moment (celebrate success, empathize with errors)
|
|
62
|
+
- Respect the user's state (don't be playful during critical errors)
|
|
63
|
+
- Match brand personality and audience expectations
|
|
64
|
+
- Cultural sensitivity (what's delightful varies by culture)
|
|
65
|
+
|
|
66
|
+
### Compound Over Time
|
|
67
|
+
- Delight should remain fresh with repeated use
|
|
68
|
+
- Vary responses (not same animation every time)
|
|
69
|
+
- Reveal deeper layers with continued use
|
|
70
|
+
- Build anticipation through patterns
|
|
71
|
+
|
|
72
|
+
## Delight Techniques
|
|
73
|
+
|
|
74
|
+
Add personality and joy through these methods:
|
|
75
|
+
|
|
76
|
+
### Micro-interactions & Animation
|
|
77
|
+
|
|
78
|
+
**Button delight**:
|
|
79
|
+
```css
|
|
80
|
+
/* Satisfying button press */
|
|
81
|
+
.button {
|
|
82
|
+
transition: transform 0.1s, box-shadow 0.1s;
|
|
83
|
+
}
|
|
84
|
+
.button:active {
|
|
85
|
+
transform: translateY(2px);
|
|
86
|
+
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* Ripple effect on click */
|
|
90
|
+
/* Smooth lift on hover */
|
|
91
|
+
.button:hover {
|
|
92
|
+
transform: translateY(-2px);
|
|
93
|
+
transition: transform 0.2s cubic-bezier(0.25, 1, 0.5, 1); /* ease-out-quart */
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Loading delight**:
|
|
98
|
+
- Playful loading animations (not just spinners)
|
|
99
|
+
- Personality in loading messages (write product-specific ones, not generic AI filler)
|
|
100
|
+
- Progress indication with encouraging messages
|
|
101
|
+
- Skeleton screens with subtle animations
|
|
102
|
+
|
|
103
|
+
**Success animations**:
|
|
104
|
+
- Checkmark draw animation
|
|
105
|
+
- Confetti burst for major achievements
|
|
106
|
+
- Gentle scale + fade for confirmation
|
|
107
|
+
- Satisfying sound effects (subtle)
|
|
108
|
+
|
|
109
|
+
**Hover surprises**:
|
|
110
|
+
- Icons that animate on hover
|
|
111
|
+
- Color shifts or glow effects
|
|
112
|
+
- Tooltip reveals with personality
|
|
113
|
+
- Cursor changes (custom cursors for branded experiences)
|
|
114
|
+
|
|
115
|
+
### Personality in Copy
|
|
116
|
+
|
|
117
|
+
**Playful error messages**:
|
|
118
|
+
```
|
|
119
|
+
"Error 404"
|
|
120
|
+
"This page is playing hide and seek. (And winning)"
|
|
121
|
+
|
|
122
|
+
"Connection failed"
|
|
123
|
+
"Looks like the internet took a coffee break. Want to retry?"
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Encouraging empty states**:
|
|
127
|
+
```
|
|
128
|
+
"No projects"
|
|
129
|
+
"Your canvas awaits. Create something amazing."
|
|
130
|
+
|
|
131
|
+
"No messages"
|
|
132
|
+
"Inbox zero! You're crushing it today."
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Playful labels & tooltips**:
|
|
136
|
+
```
|
|
137
|
+
"Delete"
|
|
138
|
+
"Send to void" (for playful brand)
|
|
139
|
+
|
|
140
|
+
"Help"
|
|
141
|
+
"Rescue me" (tooltip)
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**IMPORTANT**: Match copy personality to brand. Banks shouldn't be wacky, but they can be warm.
|
|
145
|
+
|
|
146
|
+
### Illustrations & Visual Personality
|
|
147
|
+
|
|
148
|
+
**Custom illustrations**:
|
|
149
|
+
- Empty state illustrations (not stock icons)
|
|
150
|
+
- Error state illustrations (friendly monsters, quirky characters)
|
|
151
|
+
- Loading state illustrations (animated characters)
|
|
152
|
+
- Success state illustrations (celebrations)
|
|
153
|
+
|
|
154
|
+
**Icon personality**:
|
|
155
|
+
- Custom icon set matching brand personality
|
|
156
|
+
- Animated icons (subtle motion on hover/click)
|
|
157
|
+
- Illustrative icons (more detailed than generic)
|
|
158
|
+
- Consistent style across all icons
|
|
159
|
+
|
|
160
|
+
**Background effects**:
|
|
161
|
+
- Subtle particle effects
|
|
162
|
+
- Gradient mesh backgrounds
|
|
163
|
+
- Geometric patterns
|
|
164
|
+
- Parallax depth
|
|
165
|
+
- Time-of-day themes (morning vs night)
|
|
166
|
+
|
|
167
|
+
### Satisfying Interactions
|
|
168
|
+
|
|
169
|
+
**Drag and drop delight**:
|
|
170
|
+
- Lift effect on drag (shadow, scale)
|
|
171
|
+
- Snap animation when dropped
|
|
172
|
+
- Satisfying placement sound
|
|
173
|
+
- Undo toast ("Dropped in wrong place? [Undo]")
|
|
174
|
+
|
|
175
|
+
**Toggle switches**:
|
|
176
|
+
- Smooth slide with spring physics
|
|
177
|
+
- Color transition
|
|
178
|
+
- Haptic feedback on mobile
|
|
179
|
+
- Optional sound effect
|
|
180
|
+
|
|
181
|
+
**Progress & achievements**:
|
|
182
|
+
- Streak counters with celebratory milestones
|
|
183
|
+
- Progress bars that "celebrate" at 100%
|
|
184
|
+
- Badge unlocks with animation
|
|
185
|
+
- Playful stats ("You're on fire! 5 days in a row")
|
|
186
|
+
|
|
187
|
+
**Form interactions**:
|
|
188
|
+
- Input fields that animate on focus
|
|
189
|
+
- Checkboxes with a satisfying scale pulse when checked
|
|
190
|
+
- Success state that celebrates valid input
|
|
191
|
+
- Auto-grow textareas
|
|
192
|
+
|
|
193
|
+
### Sound Design
|
|
194
|
+
|
|
195
|
+
**Subtle audio cues** (when appropriate):
|
|
196
|
+
- Notification sounds (distinctive but not annoying)
|
|
197
|
+
- Success sounds (satisfying "ding")
|
|
198
|
+
- Error sounds (empathetic, not harsh)
|
|
199
|
+
- Typing sounds for chat/messaging
|
|
200
|
+
- Ambient background audio (very subtle)
|
|
201
|
+
|
|
202
|
+
**IMPORTANT**:
|
|
203
|
+
- Respect system sound settings
|
|
204
|
+
- Provide mute option
|
|
205
|
+
- Keep volumes quiet (subtle cues, not alarms)
|
|
206
|
+
- Don't play on every interaction (sound fatigue is real)
|
|
207
|
+
|
|
208
|
+
### Easter Eggs & Hidden Delights
|
|
209
|
+
|
|
210
|
+
**Discovery rewards**:
|
|
211
|
+
- Konami code unlocks special theme
|
|
212
|
+
- Hidden keyboard shortcuts (Cmd+K for special features)
|
|
213
|
+
- Hover reveals on logos or illustrations
|
|
214
|
+
- Alt text jokes on images (for screen reader users too!)
|
|
215
|
+
- Console messages for developers ("Like what you see? We're hiring!")
|
|
216
|
+
|
|
217
|
+
**Seasonal touches**:
|
|
218
|
+
- Holiday themes (subtle, tasteful)
|
|
219
|
+
- Seasonal color shifts
|
|
220
|
+
- Weather-based variations
|
|
221
|
+
- Time-based changes (dark at night, light during day)
|
|
222
|
+
|
|
223
|
+
**Contextual personality**:
|
|
224
|
+
- Different messages based on time of day
|
|
225
|
+
- Responses to specific user actions
|
|
226
|
+
- Randomized variations (not same every time)
|
|
227
|
+
- Progressive reveals with continued use
|
|
228
|
+
|
|
229
|
+
### Loading & Waiting States
|
|
230
|
+
|
|
231
|
+
**Make waiting engaging**:
|
|
232
|
+
- Interesting loading messages that rotate
|
|
233
|
+
- Progress bars with personality
|
|
234
|
+
- Mini-games during long loads
|
|
235
|
+
- Fun facts or tips while waiting
|
|
236
|
+
- Countdown with encouraging messages
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
Loading messages: write ones specific to your product, not generic AI filler:
|
|
240
|
+
- "Crunching your latest numbers..."
|
|
241
|
+
- "Syncing with your team's changes..."
|
|
242
|
+
- "Preparing your dashboard..."
|
|
243
|
+
- "Checking for updates since yesterday..."
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**WARNING**: Avoid cliched loading messages like "Herding pixels", "Teaching robots to dance", "Consulting the magic 8-ball", "Counting backwards from infinity". These are AI-slop copy, instantly recognizable as machine-generated. Write messages that are specific to what your product actually does.
|
|
247
|
+
|
|
248
|
+
### Celebration Moments
|
|
249
|
+
|
|
250
|
+
**Success celebrations**:
|
|
251
|
+
- Confetti for major milestones
|
|
252
|
+
- Animated checkmarks for completions
|
|
253
|
+
- Progress bar celebrations at 100%
|
|
254
|
+
- "Achievement unlocked" style notifications
|
|
255
|
+
- Personalized messages ("You published your 10th article!")
|
|
256
|
+
|
|
257
|
+
**Milestone recognition**:
|
|
258
|
+
- First-time actions get special treatment
|
|
259
|
+
- Streak tracking and celebration
|
|
260
|
+
- Progress toward goals
|
|
261
|
+
- Anniversary celebrations
|
|
262
|
+
|
|
263
|
+
## Implementation Patterns
|
|
264
|
+
|
|
265
|
+
**Animation libraries**:
|
|
266
|
+
- Framer Motion (React)
|
|
267
|
+
- GSAP (universal)
|
|
268
|
+
- Lottie (After Effects animations)
|
|
269
|
+
- Canvas confetti (party effects)
|
|
270
|
+
|
|
271
|
+
**Sound libraries**:
|
|
272
|
+
- Howler.js (audio management)
|
|
273
|
+
- Use-sound (React hook)
|
|
274
|
+
|
|
275
|
+
**Physics libraries**:
|
|
276
|
+
- React Spring (spring physics)
|
|
277
|
+
- Popmotion (animation primitives)
|
|
278
|
+
|
|
279
|
+
**IMPORTANT**: File size matters. Compress images, optimize animations, lazy load delight features.
|
|
280
|
+
|
|
281
|
+
**NEVER**:
|
|
282
|
+
- Delay core functionality for delight
|
|
283
|
+
- Force users through delightful moments (make skippable)
|
|
284
|
+
- Use delight to hide poor UX
|
|
285
|
+
- Overdo it (less is more)
|
|
286
|
+
- Ignore accessibility (animate responsibly, provide alternatives)
|
|
287
|
+
- Make every interaction delightful (special moments should be special)
|
|
288
|
+
- Sacrifice performance for delight
|
|
289
|
+
- Be inappropriate for context (read the room)
|
|
290
|
+
|
|
291
|
+
## Verify Delight Quality
|
|
292
|
+
|
|
293
|
+
Test that delight actually delights:
|
|
294
|
+
|
|
295
|
+
- **User reactions**: Do users smile? Share screenshots?
|
|
296
|
+
- **Doesn't annoy**: Still pleasant after 100th time?
|
|
297
|
+
- **Doesn't block**: Can users opt out or skip?
|
|
298
|
+
- **Performant**: No jank, no slowdown
|
|
299
|
+
- **Appropriate**: Matches brand and context
|
|
300
|
+
- **Accessible**: Works with reduced motion, screen readers
|
|
301
|
+
|
|
302
|
+
When the moments feel earned, hand off to `$impeccable polish` for the final pass.
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
Strip a design to its essence. Remove anything that doesn't earn its place: redundant elements, repeated information, decorative noise, cosmetic complexity.
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Assess Current State
|
|
7
|
+
|
|
8
|
+
Analyze what makes the design feel complex or cluttered:
|
|
9
|
+
|
|
10
|
+
1. **Identify complexity sources**:
|
|
11
|
+
- **Too many elements**: Competing buttons, redundant information, visual clutter
|
|
12
|
+
- **Excessive variation**: Too many colors, fonts, sizes, styles without purpose
|
|
13
|
+
- **Information overload**: Everything visible at once, no progressive disclosure
|
|
14
|
+
- **Visual noise**: Unnecessary borders, shadows, backgrounds, decorations
|
|
15
|
+
- **Confusing hierarchy**: Unclear what matters most
|
|
16
|
+
- **Feature creep**: Too many options, actions, or paths forward
|
|
17
|
+
|
|
18
|
+
2. **Find the essence**:
|
|
19
|
+
- What's the primary user goal? (There should be ONE)
|
|
20
|
+
- What's actually necessary vs nice-to-have?
|
|
21
|
+
- What can be removed, hidden, or combined?
|
|
22
|
+
- What's the 20% that delivers 80% of value?
|
|
23
|
+
|
|
24
|
+
If any of these are unclear from the codebase, STOP and use Codex's structured user-input/question tool when available; if unavailable, ask directly in chat to clarify what you cannot infer.
|
|
25
|
+
|
|
26
|
+
**CRITICAL**: Simplicity is not about removing features. It's about removing obstacles between users and their goals. Every element should justify its existence.
|
|
27
|
+
|
|
28
|
+
## Plan Simplification
|
|
29
|
+
|
|
30
|
+
Create a ruthless editing strategy:
|
|
31
|
+
|
|
32
|
+
- **Core purpose**: What's the ONE thing this should accomplish?
|
|
33
|
+
- **Essential elements**: What's truly necessary to achieve that purpose?
|
|
34
|
+
- **Progressive disclosure**: What can be hidden until needed?
|
|
35
|
+
- **Consolidation opportunities**: What can be combined or integrated?
|
|
36
|
+
|
|
37
|
+
**IMPORTANT**: Simplification is hard. It requires saying no to good ideas to make room for great execution. Be ruthless.
|
|
38
|
+
|
|
39
|
+
## Simplify the Design
|
|
40
|
+
|
|
41
|
+
Systematically remove complexity across these dimensions:
|
|
42
|
+
|
|
43
|
+
### Information Architecture
|
|
44
|
+
- **Reduce scope**: Remove secondary actions, optional features, redundant information
|
|
45
|
+
- **Progressive disclosure**: Hide complexity behind clear entry points (accordions, modals, step-through flows)
|
|
46
|
+
- **Combine related actions**: Merge similar buttons, consolidate forms, group related content
|
|
47
|
+
- **Clear hierarchy**: ONE primary action, few secondary actions, everything else tertiary or hidden
|
|
48
|
+
- **Remove redundancy**: If it's said elsewhere, don't repeat it here
|
|
49
|
+
|
|
50
|
+
### Visual Simplification
|
|
51
|
+
- **Reduce color palette**: Use 1-2 colors plus neutrals, not 5-7 colors
|
|
52
|
+
- **Limit typography**: One font family, 3-4 sizes maximum, 2-3 weights
|
|
53
|
+
- **Remove decorations**: Eliminate borders, shadows, backgrounds that don't serve hierarchy or function
|
|
54
|
+
- **Flatten structure**: Reduce nesting, remove unnecessary containers; never nest cards inside cards
|
|
55
|
+
- **Remove unnecessary cards**: Cards aren't needed for basic layout; use spacing and alignment instead
|
|
56
|
+
- **Consistent spacing**: Use one spacing scale, remove arbitrary gaps
|
|
57
|
+
|
|
58
|
+
### Layout Simplification
|
|
59
|
+
- **Linear flow**: Replace complex grids with simple vertical flow where possible
|
|
60
|
+
- **Remove sidebars**: Move secondary content inline or hide it
|
|
61
|
+
- **Full-width**: Use available space generously instead of complex multi-column layouts
|
|
62
|
+
- **Consistent alignment**: Pick left or center, stick with it
|
|
63
|
+
- **Generous white space**: Let content breathe, don't pack everything tight
|
|
64
|
+
|
|
65
|
+
### Interaction Simplification
|
|
66
|
+
- **Reduce choices**: Fewer buttons, fewer options, clearer path forward (paradox of choice is real)
|
|
67
|
+
- **Smart defaults**: Make common choices automatic, only ask when necessary
|
|
68
|
+
- **Inline actions**: Replace modal flows with inline editing where possible
|
|
69
|
+
- **Remove steps**: Can signup be one step instead of three? Can checkout be simplified?
|
|
70
|
+
- **Clear CTAs**: ONE obvious next step, not five competing actions
|
|
71
|
+
|
|
72
|
+
### Content Simplification
|
|
73
|
+
- **Shorter copy**: Cut every sentence in half, then do it again
|
|
74
|
+
- **Active voice**: "Save changes" not "Changes will be saved"
|
|
75
|
+
- **Remove jargon**: Plain language always wins
|
|
76
|
+
- **Scannable structure**: Short paragraphs, bullet points, clear headings
|
|
77
|
+
- **Essential information only**: Remove marketing fluff, legalese, hedging
|
|
78
|
+
- **Remove redundant copy**: No headers restating intros, no repeated explanations, say it once
|
|
79
|
+
|
|
80
|
+
### Code Simplification
|
|
81
|
+
- **Remove unused code**: Dead CSS, unused components, orphaned files
|
|
82
|
+
- **Flatten component trees**: Reduce nesting depth
|
|
83
|
+
- **Consolidate styles**: Merge similar styles, use utilities consistently
|
|
84
|
+
- **Reduce variants**: Does that component need 12 variations, or can 3 cover 90% of cases?
|
|
85
|
+
|
|
86
|
+
**NEVER**:
|
|
87
|
+
- Remove necessary functionality (simplicity ≠ feature-less)
|
|
88
|
+
- Sacrifice accessibility for simplicity (clear labels and ARIA still required)
|
|
89
|
+
- Make things so simple they're unclear (mystery ≠ minimalism)
|
|
90
|
+
- Remove information users need to make decisions
|
|
91
|
+
- Eliminate hierarchy completely (some things should stand out)
|
|
92
|
+
- Oversimplify complex domains (match complexity to actual task complexity)
|
|
93
|
+
|
|
94
|
+
## Verify Simplification
|
|
95
|
+
|
|
96
|
+
Ensure simplification improves usability:
|
|
97
|
+
|
|
98
|
+
- **Faster task completion**: Can users accomplish goals more quickly?
|
|
99
|
+
- **Reduced cognitive load**: Is it easier to understand what to do?
|
|
100
|
+
- **Still complete**: Are all necessary features still accessible?
|
|
101
|
+
- **Clearer hierarchy**: Is it obvious what matters most?
|
|
102
|
+
- **Better performance**: Does simpler design load faster?
|
|
103
|
+
|
|
104
|
+
## Document Removed Complexity
|
|
105
|
+
|
|
106
|
+
If you removed features or options:
|
|
107
|
+
- Document why they were removed
|
|
108
|
+
- Consider if they need alternative access points
|
|
109
|
+
- Note any user feedback to monitor
|
|
110
|
+
|
|
111
|
+
When the cuts feel right, hand off to `$impeccable polish` for the final pass. As Antoine de Saint-Exupéry put it: "Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away."
|