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
package/bin/pmflow.js
ADDED
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require("node:fs");
|
|
4
|
+
const path = require("node:path");
|
|
5
|
+
|
|
6
|
+
const PACKAGE_ROOT = path.resolve(__dirname, "..");
|
|
7
|
+
const CODEX_MIRROR = path.join(PACKAGE_ROOT, ".codex");
|
|
8
|
+
const CLAUDE_MIRROR = path.join(PACKAGE_ROOT, ".claude");
|
|
9
|
+
const CODEX_TEMPLATES = path.join(CODEX_MIRROR, "templates");
|
|
10
|
+
const CODEX_ROLE_SKILLS = path.join(CODEX_MIRROR, "role-skills");
|
|
11
|
+
const CODEX_BUNDLED_SKILLS = path.join(CODEX_MIRROR, "bundled-skills");
|
|
12
|
+
|
|
13
|
+
const DOC_TEMPLATES = [
|
|
14
|
+
["project-config.md", "project-config.md"],
|
|
15
|
+
["demand-analysis/templates/prd.md", "prd.md"],
|
|
16
|
+
["demand-analysis/templates/handoff-prd.md", "handoff-prd.md"],
|
|
17
|
+
["tech-architecture/templates/tech-architecture.md", "tech-architecture.md"],
|
|
18
|
+
["tech-architecture/templates/handoff-architecture.md", "handoff-architecture.md"],
|
|
19
|
+
["ui-prototype-design/templates/ui-design.md", "ui-design.md"],
|
|
20
|
+
["ui-prototype-design/templates/handoff-ui.md", "handoff-ui.md"],
|
|
21
|
+
["ui-prototype-design/templates/prototype-review.md", "prototype-review.md"],
|
|
22
|
+
["dev-task-planning/templates/dev-tasks.md", "dev-tasks.md"],
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
function printHelp() {
|
|
26
|
+
console.log(`PM Workflow Studio
|
|
27
|
+
|
|
28
|
+
Usage:
|
|
29
|
+
pmflow init [--ai auto|codex|claude] [--root <dir>] [--name <product name>]
|
|
30
|
+
pm-workflow init [--ai auto|codex|claude] [--root <dir>] [--name <product name>]
|
|
31
|
+
|
|
32
|
+
Options:
|
|
33
|
+
--ai, --cli AI CLI layout to generate. Defaults to auto.
|
|
34
|
+
auto: choose by target directory, empty dirs default to Codex.
|
|
35
|
+
codex: generate .codex + .agents structure.
|
|
36
|
+
claude: generate .claude structure for Claude Code.
|
|
37
|
+
--root Target workspace directory. Defaults to current directory.
|
|
38
|
+
--name Product name for generated templates. Defaults to "My Product".
|
|
39
|
+
-h, --help Show help.
|
|
40
|
+
|
|
41
|
+
Examples:
|
|
42
|
+
pmflow init --ai codex --root ./pm-workflow-demo --name "习惯打卡"
|
|
43
|
+
pmflow init --ai claude --root ./pm-workflow-claude-demo --name "习惯打卡"
|
|
44
|
+
pmflow init --ai auto --name "习惯打卡"
|
|
45
|
+
|
|
46
|
+
Runtime:
|
|
47
|
+
Requires Node.js only. Python is not required for pmflow init.
|
|
48
|
+
`);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function fail(message) {
|
|
52
|
+
console.error(`pmflow: ${message}`);
|
|
53
|
+
console.error("Run `pmflow --help` for usage.");
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function exists(target) {
|
|
58
|
+
return fs.existsSync(target);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function isDirectory(target) {
|
|
62
|
+
try {
|
|
63
|
+
return fs.statSync(target).isDirectory();
|
|
64
|
+
} catch (_error) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function ensureDir(target) {
|
|
70
|
+
fs.mkdirSync(target, { recursive: true });
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function relativeTo(root, target) {
|
|
74
|
+
return path.relative(root, target).split(path.sep).join("/");
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function normalizeAi(value) {
|
|
78
|
+
const normalized = String(value || "auto").toLowerCase();
|
|
79
|
+
if (normalized === "claude-code") return "claude";
|
|
80
|
+
if (["auto", "codex", "claude"].includes(normalized)) return normalized;
|
|
81
|
+
if (normalized === "kiro") {
|
|
82
|
+
fail("--ai kiro is not supported yet. Use --ai auto, --ai codex, or --ai claude.");
|
|
83
|
+
}
|
|
84
|
+
fail(`unsupported --ai value "${value}". Expected auto, codex, or claude.`);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function parseInitArgs(argv) {
|
|
88
|
+
const options = {
|
|
89
|
+
ai: "auto",
|
|
90
|
+
root: ".",
|
|
91
|
+
name: "My Product",
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
95
|
+
const arg = argv[index];
|
|
96
|
+
if (arg === "-h" || arg === "--help") {
|
|
97
|
+
printHelp();
|
|
98
|
+
process.exit(0);
|
|
99
|
+
}
|
|
100
|
+
if (arg === "--ai" || arg === "--cli") {
|
|
101
|
+
const value = argv[index + 1];
|
|
102
|
+
if (!value) fail(`${arg} requires a value.`);
|
|
103
|
+
options.ai = normalizeAi(value);
|
|
104
|
+
index += 1;
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (arg.startsWith("--ai=")) {
|
|
108
|
+
options.ai = normalizeAi(arg.slice("--ai=".length));
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (arg.startsWith("--cli=")) {
|
|
112
|
+
options.ai = normalizeAi(arg.slice("--cli=".length));
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (arg === "--root") {
|
|
116
|
+
const value = argv[index + 1];
|
|
117
|
+
if (!value) fail("--root requires a value.");
|
|
118
|
+
options.root = value;
|
|
119
|
+
index += 1;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
if (arg.startsWith("--root=")) {
|
|
123
|
+
options.root = arg.slice("--root=".length);
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
if (arg === "--name") {
|
|
127
|
+
const value = argv[index + 1];
|
|
128
|
+
if (!value) fail("--name requires a value.");
|
|
129
|
+
options.name = value;
|
|
130
|
+
index += 1;
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
if (arg.startsWith("--name=")) {
|
|
134
|
+
options.name = arg.slice("--name=".length);
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
fail(`unknown argument "${arg}".`);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return options;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function templatePath(name) {
|
|
144
|
+
const centralPath = path.join(CODEX_TEMPLATES, name);
|
|
145
|
+
if (exists(centralPath)) return centralPath;
|
|
146
|
+
const rolePath = path.join(CODEX_ROLE_SKILLS, name);
|
|
147
|
+
if (exists(rolePath)) return rolePath;
|
|
148
|
+
fail(`template not found in .codex mirror: ${name}`);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function renderTemplate(name, productName) {
|
|
152
|
+
return fs.readFileSync(templatePath(name), "utf8").replaceAll("{{PRODUCT_NAME}}", productName);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function writeIfMissing(target, content) {
|
|
156
|
+
if (exists(target)) return false;
|
|
157
|
+
ensureDir(path.dirname(target));
|
|
158
|
+
fs.writeFileSync(target, content, "utf8");
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function detectCli(root, requested) {
|
|
163
|
+
if (requested !== "auto") return requested;
|
|
164
|
+
if (exists(path.join(root, ".claude"))) return "claude";
|
|
165
|
+
if (exists(path.join(root, ".codex")) || exists(path.join(root, ".agents"))) return "codex";
|
|
166
|
+
return "codex";
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
function ignoredByDefault(itemPath) {
|
|
170
|
+
const name = path.basename(itemPath);
|
|
171
|
+
return name === "__pycache__" || name === ".DS_Store" || name.endsWith(".pyc");
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function copyTreeIfMissing(src, dest, ignoreFn = ignoredByDefault) {
|
|
175
|
+
if (exists(dest) || !exists(src) || ignoreFn(src)) return false;
|
|
176
|
+
const stat = fs.statSync(src);
|
|
177
|
+
if (stat.isDirectory()) {
|
|
178
|
+
ensureDir(dest);
|
|
179
|
+
for (const name of fs.readdirSync(src).sort()) {
|
|
180
|
+
copyTreeIfMissing(path.join(src, name), path.join(dest, name), ignoreFn);
|
|
181
|
+
}
|
|
182
|
+
} else {
|
|
183
|
+
ensureDir(path.dirname(dest));
|
|
184
|
+
fs.copyFileSync(src, dest);
|
|
185
|
+
}
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
function copyMirrorChildren(srcRoot, destRoot, options = {}) {
|
|
190
|
+
const copied = [];
|
|
191
|
+
if (!isDirectory(srcRoot)) return copied;
|
|
192
|
+
ensureDir(destRoot);
|
|
193
|
+
for (const name of fs.readdirSync(srcRoot).sort()) {
|
|
194
|
+
if (options.skipNames && options.skipNames.has(name)) continue;
|
|
195
|
+
const src = path.join(srcRoot, name);
|
|
196
|
+
const dest = path.join(destRoot, name);
|
|
197
|
+
if (copyTreeIfMissing(src, dest, options.ignoreFn || ignoredByDefault)) {
|
|
198
|
+
copied.push(relativeTo(options.reportRoot || destRoot, dest));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return copied;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
function copyCodexAgents(root) {
|
|
205
|
+
const target = path.join(root, ".codex", "agents");
|
|
206
|
+
const copied = [];
|
|
207
|
+
ensureDir(target);
|
|
208
|
+
const source = path.join(CODEX_MIRROR, "agents");
|
|
209
|
+
if (!isDirectory(source)) return copied;
|
|
210
|
+
for (const name of fs.readdirSync(source).sort()) {
|
|
211
|
+
if (!name.endsWith(".toml")) continue;
|
|
212
|
+
const src = path.join(source, name);
|
|
213
|
+
const dest = path.join(target, name);
|
|
214
|
+
if (!exists(dest)) {
|
|
215
|
+
fs.copyFileSync(src, dest);
|
|
216
|
+
copied.push(relativeTo(root, dest));
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return copied;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
function copyCodexSkill(root) {
|
|
223
|
+
const target = path.join(root, ".agents", "skills", "pm-workflow");
|
|
224
|
+
const ignore = (itemPath) => {
|
|
225
|
+
if (ignoredByDefault(itemPath)) return true;
|
|
226
|
+
const parent = path.basename(path.dirname(itemPath));
|
|
227
|
+
return parent === "agents" && path.basename(itemPath).endsWith(".toml");
|
|
228
|
+
};
|
|
229
|
+
if (copyTreeIfMissing(CODEX_MIRROR, target, ignore)) {
|
|
230
|
+
return [relativeTo(root, target)];
|
|
231
|
+
}
|
|
232
|
+
return [];
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
function copyRoleSkills(root) {
|
|
236
|
+
const copied = [];
|
|
237
|
+
const targetRoot = path.join(root, ".agents", "skills");
|
|
238
|
+
ensureDir(targetRoot);
|
|
239
|
+
if (!isDirectory(CODEX_ROLE_SKILLS)) return copied;
|
|
240
|
+
for (const name of fs.readdirSync(CODEX_ROLE_SKILLS).sort()) {
|
|
241
|
+
const src = path.join(CODEX_ROLE_SKILLS, name);
|
|
242
|
+
if (!isDirectory(src)) continue;
|
|
243
|
+
const dest = path.join(targetRoot, name);
|
|
244
|
+
if (copyTreeIfMissing(src, dest)) {
|
|
245
|
+
copied.push(relativeTo(root, dest));
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return copied;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
function copyImpeccableSkill(root) {
|
|
252
|
+
const src = path.join(CODEX_BUNDLED_SKILLS, "impeccable");
|
|
253
|
+
const dest = path.join(root, ".agents", "skills", "impeccable");
|
|
254
|
+
if (exists(dest)) return [];
|
|
255
|
+
if (!exists(path.join(src, "SKILL.md"))) return [];
|
|
256
|
+
copyTreeIfMissing(src, dest);
|
|
257
|
+
return [relativeTo(root, dest)];
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
function removeCodexAgentManifest(skillDir) {
|
|
261
|
+
const openaiManifest = path.join(skillDir, "agents", "openai.yaml");
|
|
262
|
+
if (exists(openaiManifest)) fs.unlinkSync(openaiManifest);
|
|
263
|
+
const agentsDir = path.join(skillDir, "agents");
|
|
264
|
+
if (isDirectory(agentsDir) && fs.readdirSync(agentsDir).length === 0) {
|
|
265
|
+
fs.rmdirSync(agentsDir);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
function writePluginManifest(root) {
|
|
270
|
+
const manifest = `{
|
|
271
|
+
"name": "pm-workflow",
|
|
272
|
+
"version": "0.1.0",
|
|
273
|
+
"description": "Codex-native AI product development studio framework.",
|
|
274
|
+
"author": {
|
|
275
|
+
"name": "[TODO: author name]",
|
|
276
|
+
"email": "[TODO: author email]",
|
|
277
|
+
"url": "[TODO: author url]"
|
|
278
|
+
},
|
|
279
|
+
"homepage": "[TODO: homepage]",
|
|
280
|
+
"repository": "[TODO: repository]",
|
|
281
|
+
"license": "[TODO: license]",
|
|
282
|
+
"keywords": ["codex", "product-management", "workflow", "prototype", "planning"],
|
|
283
|
+
"skills": "./.agents/skills/",
|
|
284
|
+
"interface": {
|
|
285
|
+
"displayName": "PM Workflow",
|
|
286
|
+
"shortDescription": "AI 产品开发工作室:从模糊想法到可执行开发蓝图。",
|
|
287
|
+
"longDescription": "A Codex-native product development studio with role agents, repo-scoped skills, staged documents, quality reviews, HTML prototypes, and delivery packaging.",
|
|
288
|
+
"developerName": "[TODO: developer name]",
|
|
289
|
+
"category": "Productivity",
|
|
290
|
+
"capabilities": ["Interactive", "Write"],
|
|
291
|
+
"defaultPrompt": [
|
|
292
|
+
"我想做一个产品,帮我从需求开始梳理",
|
|
293
|
+
"澄清需求",
|
|
294
|
+
"开始分析需求",
|
|
295
|
+
"审核一下当前阶段"
|
|
296
|
+
],
|
|
297
|
+
"brandColor": "#2563EB"
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
`;
|
|
301
|
+
return writeIfMissing(path.join(root, ".codex-plugin", "plugin.json"), manifest);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
function createCommonStructure(root, productName, includeAgentsMd) {
|
|
305
|
+
const dirs = [
|
|
306
|
+
path.join(root, "docs"),
|
|
307
|
+
path.join(root, "prototype"),
|
|
308
|
+
path.join(root, "prototype", "directions"),
|
|
309
|
+
path.join(root, "prototype", "pages"),
|
|
310
|
+
path.join(root, "prototype", "layout"),
|
|
311
|
+
path.join(root, "prototype", "components"),
|
|
312
|
+
path.join(root, "prototype", "assets"),
|
|
313
|
+
path.join(root, "prototype", "review"),
|
|
314
|
+
path.join(root, "prototype", "review", "screenshots"),
|
|
315
|
+
path.join(root, "prototype", "review", "screenshots", "desktop"),
|
|
316
|
+
path.join(root, "prototype", "review", "screenshots", "tablet"),
|
|
317
|
+
path.join(root, "prototype", "review", "screenshots", "mobile"),
|
|
318
|
+
path.join(root, "outputs", "dev-package"),
|
|
319
|
+
];
|
|
320
|
+
dirs.forEach(ensureDir);
|
|
321
|
+
|
|
322
|
+
const created = [];
|
|
323
|
+
for (const [templateName, filename] of DOC_TEMPLATES) {
|
|
324
|
+
const target = path.join(root, "docs", filename);
|
|
325
|
+
if (writeIfMissing(target, renderTemplate(templateName, productName))) {
|
|
326
|
+
created.push(relativeTo(root, target));
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
const statePath = path.join(root, "docs", "workflow-state.json");
|
|
331
|
+
if (writeIfMissing(statePath, renderTemplate("workflow-state.json", productName))) {
|
|
332
|
+
created.push("docs/workflow-state.json");
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
if (includeAgentsMd) {
|
|
336
|
+
const agentsPath = path.join(root, "AGENTS.md");
|
|
337
|
+
if (writeIfMissing(agentsPath, renderTemplate("framework-AGENTS.md", productName))) {
|
|
338
|
+
created.push("AGENTS.md");
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
const readmePath = path.join(root, "README.md");
|
|
343
|
+
if (writeIfMissing(readmePath, renderTemplate("framework-README.md", productName))) {
|
|
344
|
+
created.push("README.md");
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
const prototypeReadmePath = path.join(root, "prototype", "README.md");
|
|
348
|
+
if (writeIfMissing(prototypeReadmePath, renderTemplate("prototype-README.md", productName))) {
|
|
349
|
+
created.push("prototype/README.md");
|
|
350
|
+
}
|
|
351
|
+
return created;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
function createCodexStructure(root, productName) {
|
|
355
|
+
[
|
|
356
|
+
path.join(root, ".codex", "agents"),
|
|
357
|
+
path.join(root, ".agents", "context"),
|
|
358
|
+
path.join(root, ".agents", "skills"),
|
|
359
|
+
].forEach(ensureDir);
|
|
360
|
+
|
|
361
|
+
const created = createCommonStructure(root, productName, true);
|
|
362
|
+
const configToml = `[agents]
|
|
363
|
+
max_threads = 6
|
|
364
|
+
max_depth = 1
|
|
365
|
+
job_max_runtime_seconds = 1800
|
|
366
|
+
`;
|
|
367
|
+
const configPath = path.join(root, ".codex", "config.toml");
|
|
368
|
+
if (writeIfMissing(configPath, configToml)) created.push(".codex/config.toml");
|
|
369
|
+
|
|
370
|
+
const copiedPlatform = copyMirrorChildren(CODEX_MIRROR, path.join(root, ".codex"), {
|
|
371
|
+
skipNames: new Set(["agents"]),
|
|
372
|
+
reportRoot: root,
|
|
373
|
+
}).concat(copyCodexAgents(root));
|
|
374
|
+
const copiedSkills = copyCodexSkill(root).concat(copyRoleSkills(root), copyImpeccableSkill(root));
|
|
375
|
+
if (writePluginManifest(root)) created.push(".codex-plugin/plugin.json");
|
|
376
|
+
return [created, copiedPlatform, copiedSkills];
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
function createClaudeStructure(root, productName) {
|
|
380
|
+
const created = createCommonStructure(root, productName, false);
|
|
381
|
+
const copiedClaude = copyMirrorChildren(CLAUDE_MIRROR, path.join(root, ".claude"), {
|
|
382
|
+
reportRoot: root,
|
|
383
|
+
});
|
|
384
|
+
removeCodexAgentManifest(path.join(root, ".claude", "skills", "impeccable"));
|
|
385
|
+
return [created, copiedClaude, []];
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
function createStructure(rootInput, productName, cli) {
|
|
389
|
+
const root = path.resolve(rootInput);
|
|
390
|
+
ensureDir(root);
|
|
391
|
+
const hadPlatformMarker =
|
|
392
|
+
exists(path.join(root, ".claude")) || exists(path.join(root, ".codex")) || exists(path.join(root, ".agents"));
|
|
393
|
+
const selectedCli = detectCli(root, cli);
|
|
394
|
+
|
|
395
|
+
let created;
|
|
396
|
+
let copiedPlatform;
|
|
397
|
+
let copiedSkills;
|
|
398
|
+
let platformName;
|
|
399
|
+
let directorySummary;
|
|
400
|
+
let nextStep;
|
|
401
|
+
|
|
402
|
+
if (selectedCli === "claude") {
|
|
403
|
+
[created, copiedPlatform, copiedSkills] = createClaudeStructure(root, productName);
|
|
404
|
+
platformName = "Claude Code";
|
|
405
|
+
directorySummary = "docs/, prototype/, prototype/review/screenshots/, outputs/dev-package/, .claude/";
|
|
406
|
+
nextStep = "Next step: start Claude Code in this directory, then describe your product idea or run `/pm-workflow:init`.";
|
|
407
|
+
} else {
|
|
408
|
+
[created, copiedPlatform, copiedSkills] = createCodexStructure(root, productName);
|
|
409
|
+
platformName = "Codex";
|
|
410
|
+
directorySummary = "docs/, prototype/, prototype/review/screenshots/, outputs/dev-package/, .codex/, .agents/context/, .agents/skills/";
|
|
411
|
+
nextStep = "Next step: start Codex in this directory, then describe your product idea or say `澄清需求`.";
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
console.log(`Project structure created: ${root}`);
|
|
415
|
+
console.log(`Selected CLI structure: ${platformName}`);
|
|
416
|
+
if (cli === "auto" && selectedCli === "codex" && !hadPlatformMarker) {
|
|
417
|
+
console.log("Auto mode defaulted to Codex for an empty directory. Use `--ai claude` to create a Claude Code workspace.");
|
|
418
|
+
}
|
|
419
|
+
console.log(`Created or confirmed directories: ${directorySummary}`);
|
|
420
|
+
|
|
421
|
+
if (created.length) {
|
|
422
|
+
console.log("Template files created:");
|
|
423
|
+
for (const item of created) console.log(` + ${item}`);
|
|
424
|
+
} else {
|
|
425
|
+
console.log("Template files already existed; no template files overwritten.");
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
if (copiedPlatform.length) {
|
|
429
|
+
console.log(`${platformName} platform files copied:`);
|
|
430
|
+
for (const item of copiedPlatform) console.log(` + ${item}`);
|
|
431
|
+
} else {
|
|
432
|
+
console.log(`${platformName} platform files already existed or source package was unavailable.`);
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
if (copiedSkills.length) {
|
|
436
|
+
console.log("Repo-scoped skills copied:");
|
|
437
|
+
for (const item of copiedSkills) console.log(` + ${item}`);
|
|
438
|
+
} else {
|
|
439
|
+
console.log("Repo-scoped skills already existed or not used by this CLI structure.");
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
console.log(nextStep);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
function runInit(argv) {
|
|
446
|
+
const options = parseInitArgs(argv);
|
|
447
|
+
createStructure(options.root, options.name, options.ai);
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
function main() {
|
|
451
|
+
const [command, ...rest] = process.argv.slice(2);
|
|
452
|
+
if (!command || command === "-h" || command === "--help") {
|
|
453
|
+
printHelp();
|
|
454
|
+
return;
|
|
455
|
+
}
|
|
456
|
+
if (command === "init") {
|
|
457
|
+
runInit(rest);
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
460
|
+
fail(`unknown command "${command}".`);
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
main();
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pm-workflow-studio",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "AI product development studio CLI for Codex and Claude Code.",
|
|
5
|
+
"type": "commonjs",
|
|
6
|
+
"bin": {
|
|
7
|
+
"pmflow": "bin/pmflow.js",
|
|
8
|
+
"pm-workflow": "bin/pmflow.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"bin/",
|
|
12
|
+
".codex/",
|
|
13
|
+
".claude/",
|
|
14
|
+
"README.md"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"test": "node bin/pmflow.js --help"
|
|
18
|
+
},
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=16"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"pm-workflow",
|
|
24
|
+
"product-management",
|
|
25
|
+
"codex",
|
|
26
|
+
"claude-code",
|
|
27
|
+
"ai-workflow"
|
|
28
|
+
],
|
|
29
|
+
"license": "UNLICENSED"
|
|
30
|
+
}
|