wizz-method 2.0.0 → 2.1.1
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/LICENSE +60 -30
- package/README.md +80 -31
- package/SECURITY.md +24 -0
- package/THIRD-PARTY-NOTICES.md +136 -0
- package/package.json +31 -17
- package/skills-registry.yaml +128 -7
- package/src/bmm-skills/1-analysis/research/wizz-domain-research/SKILL.md +3 -4
- package/src/bmm-skills/1-analysis/research/wizz-domain-research/domain-steps/step-06-research-synthesis.md +1 -1
- package/src/bmm-skills/1-analysis/research/wizz-market-research/SKILL.md +3 -4
- package/src/bmm-skills/1-analysis/research/wizz-market-research/steps/step-06-research-completion.md +1 -1
- package/src/bmm-skills/1-analysis/research/wizz-technical-research/SKILL.md +3 -4
- package/src/bmm-skills/1-analysis/research/wizz-technical-research/technical-steps/step-06-research-synthesis.md +1 -1
- package/src/bmm-skills/1-analysis/wizz-agent-analyst/SKILL.md +3 -4
- package/src/bmm-skills/1-analysis/wizz-agent-tech-writer/SKILL.md +3 -4
- package/src/bmm-skills/1-analysis/wizz-document-project/SKILL.md +3 -4
- package/src/bmm-skills/1-analysis/wizz-document-project/workflows/deep-dive-instructions.md +1 -1
- package/src/bmm-skills/1-analysis/wizz-document-project/workflows/full-scan-instructions.md +1 -1
- package/src/bmm-skills/1-analysis/wizz-prfaq/SKILL.md +3 -4
- package/src/bmm-skills/1-analysis/wizz-prfaq/references/verdict.md +1 -1
- package/src/bmm-skills/1-analysis/wizz-product-brief/SKILL.md +1 -1
- package/src/bmm-skills/2-plan-workflows/wizz-agent-pm/SKILL.md +3 -4
- package/src/bmm-skills/2-plan-workflows/wizz-agent-ux-designer/SKILL.md +3 -4
- package/src/bmm-skills/2-plan-workflows/wizz-create-prd/SKILL.md +1 -1
- package/src/bmm-skills/2-plan-workflows/wizz-edit-prd/SKILL.md +1 -1
- package/src/bmm-skills/2-plan-workflows/wizz-prd/SKILL.md +1 -1
- package/src/bmm-skills/2-plan-workflows/wizz-ux/SKILL.md +1 -1
- package/src/bmm-skills/2-plan-workflows/wizz-validate-prd/SKILL.md +1 -1
- package/src/bmm-skills/3-solutioning/wizz-agent-architect/SKILL.md +3 -4
- package/src/bmm-skills/3-solutioning/wizz-architecture/SKILL.md +9 -9
- package/src/bmm-skills/3-solutioning/wizz-architecture/references/headless.md +1 -1
- package/src/bmm-skills/3-solutioning/wizz-check-implementation-readiness/SKILL.md +3 -4
- package/src/bmm-skills/3-solutioning/wizz-check-implementation-readiness/steps/step-06-final-assessment.md +1 -1
- package/src/bmm-skills/3-solutioning/wizz-create-architecture/SKILL.md +1 -1
- package/src/bmm-skills/3-solutioning/wizz-create-epics-and-stories/SKILL.md +3 -4
- package/src/bmm-skills/3-solutioning/wizz-create-epics-and-stories/steps/step-04-final-validation.md +1 -1
- package/src/bmm-skills/3-solutioning/wizz-generate-project-context/SKILL.md +3 -4
- package/src/bmm-skills/3-solutioning/wizz-generate-project-context/steps/step-03-complete.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-agent-dev/SKILL.md +3 -4
- package/src/bmm-skills/4-implementation/wizz-checkpoint-preview/SKILL.md +3 -4
- package/src/bmm-skills/4-implementation/wizz-checkpoint-preview/step-05-wrapup.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-code-review/SKILL.md +3 -4
- package/src/bmm-skills/4-implementation/wizz-code-review/customize.toml +3 -8
- package/src/bmm-skills/4-implementation/wizz-code-review/review-prompts/blind-hunter.md +20 -0
- package/src/bmm-skills/4-implementation/wizz-code-review/steps/step-04-present.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-correct-course/SKILL.md +4 -5
- package/src/bmm-skills/4-implementation/wizz-create-story/SKILL.md +4 -5
- package/src/bmm-skills/4-implementation/wizz-dev-story/SKILL.md +4 -5
- package/src/bmm-skills/4-implementation/wizz-investigate/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-qa-generate-e2e-tests/SKILL.md +4 -5
- package/src/bmm-skills/4-implementation/wizz-quick-dev/SKILL.md +4 -5
- package/src/bmm-skills/4-implementation/wizz-quick-dev/customize.toml +10 -22
- package/src/bmm-skills/4-implementation/wizz-quick-dev/review-prompts/blind-hunter.md +20 -0
- package/src/bmm-skills/4-implementation/wizz-quick-dev/step-05-present.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-quick-dev/step-oneshot.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-retrospective/SKILL.md +1 -2
- package/src/bmm-skills/4-implementation/wizz-sprint-planning/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-sprint-status/SKILL.md +5 -6
- package/src/core-skills/_shared/handoff-protocol.md +9 -0
- package/src/core-skills/wizz-advanced-elicitation/SKILL.md +2 -2
- package/src/core-skills/wizz-brainstorming/SKILL.md +6 -6
- package/src/core-skills/wizz-brainstorming/references/converge.md +1 -1
- package/src/core-skills/wizz-brainstorming/references/finalize.md +1 -1
- package/src/core-skills/wizz-brainstorming/references/headless.md +3 -3
- package/src/core-skills/wizz-brainstorming/references/mode-autonomous.md +1 -1
- package/src/core-skills/wizz-customize/SKILL.md +13 -10
- package/src/core-skills/wizz-forge-idea/SKILL.md +6 -6
- package/src/core-skills/wizz-forge-idea/scripts/__pycache__/resolve_personas.cpython-314.pyc +0 -0
- package/src/core-skills/wizz-forge-idea/scripts/resolve_personas.py +17 -1
- package/src/core-skills/wizz-party-mode/SKILL.md +3 -3
- package/src/core-skills/wizz-party-mode/references/create-party.md +1 -1
- package/src/core-skills/wizz-party-mode/references/party-memory.md +2 -2
- package/src/core-skills/wizz-party-mode/scripts/__pycache__/resolve_party.cpython-314.pyc +0 -0
- package/src/core-skills/wizz-party-mode/scripts/resolve_party.py +17 -1
- package/src/core-skills/wizz-review-adversarial-general/SKILL.md +1 -1
- package/src/core-skills/wizz-spec/SKILL.md +5 -5
- package/src/modules/lowticket/README.md +6 -6
- package/src/modules/lowticket/module.yaml +4 -1
- package/src/modules/lowticket/skills/{lowticket-funil → wizz-lowticket-funil}/SKILL.md +4 -4
- package/src/modules/lowticket/skills/{lowticket-funil → wizz-lowticket-funil}/references/copy-das-paginas.md +1 -1
- package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/SKILL.md +1 -1
- package/src/modules/lowticket/skills/{lowticket-minerador → wizz-lowticket-minerador}/SKILL.md +3 -3
- package/src/modules/lowticket/skills/{lowticket-minerador → wizz-lowticket-minerador}/references/rubrica.md +1 -1
- package/src/modules/lowticket/skills/{lowticket-pagina → wizz-lowticket-pagina}/SKILL.md +4 -4
- package/src/modules/lowticket/skills/{lowticket-trafego → wizz-lowticket-trafego}/SKILL.md +3 -3
- package/src/modules/lowticket/skills/{lowticket-trafego → wizz-lowticket-trafego}/references/reguas.md +1 -1
- package/src/modules/wizz/_shared/communication-rules.md +1 -1
- package/src/modules/wizz/_shared/despacho-barato.md +9 -0
- package/src/modules/wizz/_shared/token-economy.md +7 -0
- package/src/modules/wizz/agents/wizz-ads/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-ads/customize.toml +1 -2
- package/src/modules/wizz/agents/wizz-copy/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-copy/customize.toml +1 -2
- package/src/modules/wizz/agents/wizz-designer/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-designer/customize.toml +1 -2
- package/src/modules/wizz/agents/wizz-growth/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-growth/customize.toml +1 -2
- package/src/modules/wizz/agents/wizz-maestro/SKILL.md +5 -5
- package/src/modules/wizz/agents/wizz-maestro/customize.toml +4 -8
- package/src/modules/wizz/agents/wizz-memoria/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-memoria/customize.toml +1 -2
- package/src/modules/wizz/agents/wizz-qa/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-qa/customize.toml +1 -2
- package/src/modules/wizz/agents/wizz-seo/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-seo/customize.toml +1 -2
- package/src/modules/wizz/agents/wizz-social/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-social/customize.toml +1 -2
- package/src/modules/wizz/module.yaml +3 -0
- package/src/modules/wizz/overrides/wizz-agent-analyst.toml +1 -2
- package/src/modules/wizz/overrides/wizz-agent-architect.toml +1 -2
- package/src/modules/wizz/overrides/wizz-agent-dev.toml +1 -2
- package/src/modules/wizz/overrides/wizz-agent-pm.toml +1 -2
- package/src/modules/wizz/overrides/wizz-agent-tech-writer.toml +1 -2
- package/src/modules/wizz/overrides/wizz-agent-ux-designer.toml +1 -2
- package/src/modules/wizz/subagents/codex/wizz-exec-haiku.toml +2 -0
- package/src/modules/wizz/subagents/codex/wizz-exec-opus.toml +2 -0
- package/src/modules/wizz/subagents/codex/wizz-exec-review.toml +2 -0
- package/src/modules/wizz/subagents/codex/wizz-exec-sonnet.toml +2 -0
- package/src/modules/wizz/subagents/gemini/wizz-exec-haiku.md +4 -1
- package/src/modules/wizz/subagents/gemini/wizz-exec-opus.md +4 -1
- package/src/modules/wizz/subagents/gemini/wizz-exec-review.md +4 -1
- package/src/modules/wizz/subagents/gemini/wizz-exec-sonnet.md +4 -1
- package/src/modules/wizz/subagents/opencode/wizz-exec-haiku.md +4 -1
- package/src/modules/wizz/subagents/opencode/wizz-exec-opus.md +4 -1
- package/src/modules/wizz/subagents/opencode/wizz-exec-review.md +4 -1
- package/src/modules/wizz/subagents/opencode/wizz-exec-sonnet.md +4 -1
- package/src/modules/wizz/subagents/spec.yaml +148 -0
- package/src/modules/wizz/subagents/wizz-exec-haiku.md +4 -1
- package/src/modules/wizz/subagents/wizz-exec-opus.md +4 -1
- package/src/modules/wizz/subagents/wizz-exec-review.md +4 -1
- package/src/modules/wizz/subagents/wizz-exec-sonnet.md +4 -1
- package/src/scripts/__pycache__/resolve_customization.cpython-314.pyc +0 -0
- package/src/scripts/memlog.js +368 -0
- package/src/scripts/resolve_customization.py +124 -15
- package/src/skills-lib/_shared/complexity-signal.md +14 -0
- package/src/skills-lib/wizz-canvas-design/canvas-fonts/InstrumentSerif-OFL.txt +93 -0
- package/src/skills-lib/wizz-huashu-design/references/sfx-library.md +1 -1
- package/src/skills-lib/wizz-huashu-design/scripts/add-music.sh +1 -1
- package/src/skills-lib/wizz-huashu-design/scripts/mix-voiceover.sh +1 -1
- package/src/skills-lib/wizz-impeccable/LICENSE.txt +202 -0
- package/src/skills-lib/wizz-offer-forge/SKILL.md +1 -1
- package/src/skills-lib/wizz-react-components/LICENSE.txt +202 -0
- package/src/skills-lib/wizz-router/SKILL.md +2 -2
- package/src/skills-lib/wizz-supabase-postgres-best-practices/LICENSE +21 -0
- package/src/skills-lib/wizz-taste-skill/SKILL.md +1 -1
- package/src/skills-lib/wizz-tracking-audit/SKILL.md +1 -1
- package/tools/fetch-assets.mjs +70 -38
- package/tools/hooks/README.md +22 -0
- package/tools/hooks/rtk-rewrite.sh +280 -0
- package/tools/hooks/security-defensive-context.js +70 -0
- package/tools/hooks/session-rules.js +368 -0
- package/tools/hooks/wizz-decision-trace.js +389 -0
- package/tools/hooks/wizz-router-enforce.js +258 -0
- package/tools/installer/banner.js +1 -1
- package/tools/installer/commands/doctor.js +124 -0
- package/tools/installer/commands/fetch-assets.js +7 -8
- package/tools/installer/commands/install.js +1 -1
- package/tools/installer/commands/resolve.js +95 -0
- package/tools/installer/core/doctor.js +648 -0
- package/tools/installer/core/hash-cache.js +156 -0
- package/tools/installer/core/help-catalog.js +4 -1
- package/tools/installer/core/hooks-settings.js +178 -0
- package/tools/installer/core/installer.js +297 -15
- package/tools/installer/core/legacy-warnings.js +0 -4
- package/tools/installer/core/manifest-generator.js +121 -43
- package/tools/installer/core/manifest.js +36 -32
- package/tools/installer/core/module-config-writer.js +4 -1
- package/tools/installer/core/python-check.js +60 -63
- package/tools/installer/core/quick-update.js +76 -43
- package/tools/installer/core/resolved-config.js +168 -0
- package/tools/installer/core/resolved-customizations.js +736 -0
- package/tools/installer/core/resolved-includes.js +262 -0
- package/tools/installer/core/resolved-schema.js +148 -0
- package/tools/installer/core/user-file-preservation.js +40 -8
- package/tools/installer/core/wizz-dir.js +117 -0
- package/tools/installer/core/yaml-cache.js +105 -0
- package/tools/installer/fs-native.js +97 -6
- package/tools/installer/ide/_config-driven.js +12 -75
- package/tools/installer/ide/platform-codes.js +111 -16
- package/tools/installer/ide/platform-codes.yaml +45 -100
- package/tools/installer/ide/shared/path-utils.js +6 -208
- package/tools/installer/install-messages.yaml +4 -14
- package/tools/installer/modules/channel-plan.js +15 -2
- package/tools/installer/modules/config-collector.js +762 -0
- package/tools/installer/modules/config-values.js +352 -0
- package/tools/installer/modules/custom-module-manager.js +161 -28
- package/tools/installer/modules/env-vars.js +119 -0
- package/tools/installer/modules/external-manager.js +133 -60
- package/tools/installer/modules/git-cache-utils.js +125 -0
- package/tools/installer/modules/module-catalog.js +565 -0
- package/tools/installer/modules/module-installer.js +618 -0
- package/tools/installer/modules/module-interface.js +86 -0
- package/tools/installer/modules/official-modules.js +98 -2172
- package/tools/installer/modules/pin-spec.js +125 -0
- package/tools/installer/modules/plugin-resolver.js +4 -0
- package/tools/installer/modules/skills-lib.js +3 -6
- package/tools/installer/prompts.js +0 -3
- package/tools/installer/ui.js +89 -54
- package/tools/installer/wizz-cli.js +1 -1
- package/tools/lib/frontmatter.js +139 -0
- package/tools/lib/sync-targets.mjs +49 -0
- package/tools/lib/walk.js +93 -0
- package/wizz-modules.yaml +9 -0
- package/src/scripts/__pycache__/memlog.cpython-313.pyc +0 -0
- package/src/scripts/memlog.py +0 -233
- package/src/scripts/tests/__pycache__/test_memlog.cpython-313-pytest-9.1.1.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-313-pytest-9.1.1.pyc +0 -0
- package/src/scripts/tests/test_memlog.py +0 -306
- package/src/skills-lib/wizz-huashu-design/assets/showcases/INDEX.md +0 -115
- package/src/skills-lib/wizz-huashu-design/assets/showcases/cover/cover-build.html +0 -235
- package/src/skills-lib/wizz-huashu-design/assets/showcases/cover/cover-build.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/cover/cover-pentagram.html +0 -229
- package/src/skills-lib/wizz-huashu-design/assets/showcases/cover/cover-pentagram.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/cover/cover-takram.html +0 -288
- package/src/skills-lib/wizz-huashu-design/assets/showcases/cover/cover-takram.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/infographic/infographic-build.html +0 -503
- package/src/skills-lib/wizz-huashu-design/assets/showcases/infographic/infographic-build.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/infographic/infographic-pentagram.html +0 -600
- package/src/skills-lib/wizz-huashu-design/assets/showcases/infographic/infographic-pentagram.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/infographic/infographic-takram.html +0 -670
- package/src/skills-lib/wizz-huashu-design/assets/showcases/infographic/infographic-takram.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/ppt/ppt-build.html +0 -382
- package/src/skills-lib/wizz-huashu-design/assets/showcases/ppt/ppt-build.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/ppt/ppt-pentagram.html +0 -536
- package/src/skills-lib/wizz-huashu-design/assets/showcases/ppt/ppt-pentagram.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/ppt/ppt-takram.html +0 -497
- package/src/skills-lib/wizz-huashu-design/assets/showcases/ppt/ppt-takram.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-nav/ainav-build.html +0 -385
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-nav/ainav-build.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-nav/ainav-pentagram.html +0 -422
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-nav/ainav-pentagram.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-nav/ainav-takram.html +0 -499
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-nav/ainav-takram.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-writing/aiwriting-build.html +0 -562
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-writing/aiwriting-build.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-writing/aiwriting-pentagram.html +0 -548
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-writing/aiwriting-pentagram.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-writing/aiwriting-takram.html +0 -696
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-ai-writing/aiwriting-takram.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-devdocs/devdocs-build.html +0 -372
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-devdocs/devdocs-build.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-devdocs/devdocs-pentagram.html +0 -460
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-devdocs/devdocs-pentagram.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-devdocs/devdocs-takram.html +0 -494
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-devdocs/devdocs-takram.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-homepage/homepage-build.html +0 -367
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-homepage/homepage-build.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-homepage/homepage-pentagram.html +0 -368
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-homepage/homepage-pentagram.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-homepage/homepage-takram.html +0 -459
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-homepage/homepage-takram.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-saas/saas-build.html +0 -493
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-saas/saas-build.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-saas/saas-pentagram.html +0 -556
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-saas/saas-pentagram.png +0 -0
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-saas/saas-takram.html +0 -604
- package/src/skills-lib/wizz-huashu-design/assets/showcases/website-saas/saas-takram.png +0 -0
- package/tools/installer/file-ops.js +0 -204
- package/tools/installer/ide/shared/skill-manifest.js +0 -57
- package/tools/installer/yaml-format.js +0 -245
- package/web-bundles/README.md +0 -46
- package/web-bundles/brainstorming-coach/INSTRUCTIONS.md +0 -86
- package/web-bundles/brainstorming-coach/SKILL.md +0 -83
- package/web-bundles/brainstorming-coach/brain-methods.csv +0 -62
- package/web-bundles/bundles.json +0 -139
- package/web-bundles/market-and-industry-research/INSTRUCTIONS.md +0 -88
- package/web-bundles/market-and-industry-research/SKILL.md +0 -59
- package/web-bundles/prd-coach/INSTRUCTIONS.md +0 -86
- package/web-bundles/prd-coach/SKILL.md +0 -101
- package/web-bundles/prd-coach/prd-template.md +0 -165
- package/web-bundles/prd-coach/prd-validation-checklist.md +0 -135
- package/web-bundles/prfaq-coach/INSTRUCTIONS.md +0 -86
- package/web-bundles/prfaq-coach/SKILL.md +0 -139
- package/web-bundles/product-brief-coach/INSTRUCTIONS.md +0 -86
- package/web-bundles/product-brief-coach/SKILL.md +0 -113
- package/web-bundles/ux-coach/INSTRUCTIONS.md +0 -92
- package/web-bundles/ux-coach/SKILL.md +0 -187
- package/web-bundles/ux-coach/ux-validation.md +0 -100
- /package/src/modules/lowticket/skills/{lowticket-funil → wizz-lowticket-funil}/references/mapa-do-funil.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/CATALOGO.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/01-principios.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/02-diagnostico-funil.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/03-campanha-bidcap.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/04-criativos.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/04a-criativos-ia.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/04b-criativos-formatos.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/05-oferta.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/06-pagina-vendas.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/06a-instagram.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/06b-player-vsl.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/07-funil-upsell.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/07a-copy-humanizacao.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/08-pesquisa-publico.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/09-especialista-coproducao.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/10-levantar-caixa.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/11-checklist-roi.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/12-mineracao-ofertas.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/12a-mineracao-veredito.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/12b-fabrica-de-ofertas.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/12c-anatomia-low-ticket.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/13-benchmarks-vsl.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/14-vocabulario.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/15-como-estender.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/17-rastreamento.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/18-copy-desejo-oferta.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/INDEX.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/guardrails.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/knowledge/pontos-em-aberto.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-metodologia → wizz-lowticket-metodologia}/references/swipe-file.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-pagina → wizz-lowticket-pagina}/references/metas-e-medicao.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-pagina → wizz-lowticket-pagina}/references/padroes-de-codigo.md +0 -0
- /package/src/modules/lowticket/skills/{lowticket-trafego → wizz-lowticket-trafego}/references/formato-do-diagnostico.md +0 -0
|
@@ -1,306 +0,0 @@
|
|
|
1
|
-
# /// script
|
|
2
|
-
# requires-python = ">=3.10"
|
|
3
|
-
# dependencies = ["pytest>=8.0"]
|
|
4
|
-
# ///
|
|
5
|
-
"""Tests for memlog.py. Run: uv run --with pytest pytest scripts/tests/test_memlog.py
|
|
6
|
-
|
|
7
|
-
The spine under test is the flat, append-only, chronological invariant: every entry is
|
|
8
|
-
one line recorded at the end in the order it happened — no sections, no grouping, and no
|
|
9
|
-
lifecycle status the log would have to mutate.
|
|
10
|
-
"""
|
|
11
|
-
import json
|
|
12
|
-
import sys
|
|
13
|
-
from pathlib import Path
|
|
14
|
-
|
|
15
|
-
import pytest
|
|
16
|
-
|
|
17
|
-
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
|
|
18
|
-
import memlog # noqa: E402
|
|
19
|
-
|
|
20
|
-
MEMLOG = ".memlog.md"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
@pytest.fixture
|
|
24
|
-
def ws(tmp_path):
|
|
25
|
-
return str(tmp_path)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def read(ws):
|
|
29
|
-
return (Path(ws) / MEMLOG).read_text(encoding="utf-8")
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def body_of(ws):
|
|
33
|
-
return memlog.split(read(ws))[1]
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def entries(ws):
|
|
37
|
-
return [ln for ln in body_of(ws).splitlines() if ln.startswith("- ")]
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def init(ws, **fields):
|
|
41
|
-
fields = fields or {"topic": "Reinvent the lunchbox", "goal": "ideas for a pitch"}
|
|
42
|
-
argv = ["init", "--workspace", ws]
|
|
43
|
-
for k, v in fields.items():
|
|
44
|
-
argv += ["--field", f"{k}={v}"]
|
|
45
|
-
assert memlog.main(argv) == 0
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
def append(ws, text, entry_type=None, by=None):
|
|
49
|
-
argv = ["append", "--workspace", ws, "--text", text]
|
|
50
|
-
if entry_type:
|
|
51
|
-
argv += ["--type", entry_type]
|
|
52
|
-
if by:
|
|
53
|
-
argv += ["--by", by]
|
|
54
|
-
assert memlog.main(argv) == 0
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
# --- init ---------------------------------------------------------------
|
|
58
|
-
|
|
59
|
-
def test_init_writes_frontmatter_fields(ws):
|
|
60
|
-
init(ws)
|
|
61
|
-
meta, body = memlog.split(read(ws))
|
|
62
|
-
assert meta["topic"] == "Reinvent the lunchbox"
|
|
63
|
-
assert meta["goal"] == "ideas for a pitch"
|
|
64
|
-
assert "updated" in meta
|
|
65
|
-
assert body.strip() == ""
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
def test_init_has_no_lifecycle_status(ws):
|
|
69
|
-
# A memory log carries no "status" flag; completion is an appended entry, not frontmatter.
|
|
70
|
-
init(ws)
|
|
71
|
-
meta, _ = memlog.split(read(ws))
|
|
72
|
-
assert "status" not in meta
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
def test_init_arbitrary_fields(ws):
|
|
76
|
-
init(ws, topic="T", audience="board")
|
|
77
|
-
meta, _ = memlog.split(read(ws))
|
|
78
|
-
assert meta["audience"] == "board"
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
def test_init_refuses_overwrite(ws):
|
|
82
|
-
init(ws)
|
|
83
|
-
assert memlog.main(["init", "--workspace", ws, "--field", "topic=other"]) == 2
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
def test_init_creates_missing_workspace(tmp_path):
|
|
87
|
-
nested = str(tmp_path / "a" / "b")
|
|
88
|
-
assert memlog.main(["init", "--workspace", nested, "--field", "topic=T"]) == 0
|
|
89
|
-
assert (Path(nested) / MEMLOG).is_file()
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
def test_init_rejects_malformed_field(ws):
|
|
93
|
-
assert memlog.main(["init", "--workspace", ws, "--field", "noequals"]) == 2
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
# --- addressing: --workspace and --path are interchangeable --------------
|
|
97
|
-
|
|
98
|
-
def test_path_addressing_targets_the_file_directly(tmp_path):
|
|
99
|
-
target = tmp_path / "run" / ".memlog.md"
|
|
100
|
-
assert memlog.main(["init", "--path", str(target), "--field", "topic=T"]) == 0
|
|
101
|
-
assert target.is_file()
|
|
102
|
-
assert memlog.main(["append", "--path", str(target), "--text", "an idea", "--type", "idea"]) == 0
|
|
103
|
-
body = memlog.split(target.read_text(encoding="utf-8"))[1]
|
|
104
|
-
assert "- (idea) an idea" in body
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
def test_workspace_and_path_resolve_to_same_file(ws):
|
|
108
|
-
init(ws)
|
|
109
|
-
via_path = str(Path(ws) / MEMLOG)
|
|
110
|
-
assert memlog.main(["append", "--path", via_path, "--text", "from path"]) == 0
|
|
111
|
-
assert memlog.main(["append", "--workspace", ws, "--text", "from workspace"]) == 0
|
|
112
|
-
assert entries(ws) == ["- from path", "- from workspace"]
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
def test_target_is_required(ws):
|
|
116
|
-
with pytest.raises(SystemExit):
|
|
117
|
-
memlog.main(["append", "--text", "orphan"]) # neither --workspace nor --path
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
# --- append: flat chronological order is the whole point -----------------
|
|
121
|
-
|
|
122
|
-
def test_append_lands_at_end_in_order(ws):
|
|
123
|
-
init(ws)
|
|
124
|
-
append(ws, "first")
|
|
125
|
-
append(ws, "second")
|
|
126
|
-
append(ws, "third")
|
|
127
|
-
assert entries(ws) == ["- first", "- second", "- third"]
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
def test_no_sections_or_headings_ever(ws):
|
|
131
|
-
init(ws)
|
|
132
|
-
append(ws, "started foo", entry_type="technique")
|
|
133
|
-
append(ws, "an idea", entry_type="idea")
|
|
134
|
-
append(ws, "started bar", entry_type="technique")
|
|
135
|
-
assert "## " not in body_of(ws) # the flat log never grows headings
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
def test_type_renders_as_inline_tag(ws):
|
|
139
|
-
init(ws)
|
|
140
|
-
append(ws, "the earth revolves around the sun", entry_type="idea")
|
|
141
|
-
append(ws, "how do we handle stampede?", entry_type="question")
|
|
142
|
-
body = body_of(ws)
|
|
143
|
-
assert "- (idea) the earth revolves around the sun" in body
|
|
144
|
-
assert "- (question) how do we handle stampede?" in body
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
def test_append_without_type_is_plain_note(ws):
|
|
148
|
-
init(ws)
|
|
149
|
-
append(ws, "bare entry")
|
|
150
|
-
assert entries(ws) == ["- bare entry"]
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
def test_completion_is_an_entry_not_a_status(ws):
|
|
154
|
-
# The documented way to mark a session done: append it. Frontmatter never gains a status.
|
|
155
|
-
init(ws)
|
|
156
|
-
append(ws, "session complete", entry_type="event")
|
|
157
|
-
meta, _ = memlog.split(read(ws))
|
|
158
|
-
assert "status" not in meta
|
|
159
|
-
assert entries(ws)[-1] == "- (event) session complete"
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
def test_append_collapses_newlines_into_one_line(ws):
|
|
163
|
-
init(ws)
|
|
164
|
-
append(ws, "line one\nline two\n spaced out")
|
|
165
|
-
assert entries(ws) == ["- line one line two spaced out"]
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
def test_revisited_technique_is_just_a_later_entry(ws):
|
|
169
|
-
# the user's model: switching techniques is an entry, not a section to return to
|
|
170
|
-
init(ws)
|
|
171
|
-
append(ws, "started SCAMPER", entry_type="technique")
|
|
172
|
-
append(ws, "magnetic latch", entry_type="idea")
|
|
173
|
-
append(ws, "started Six Hats", entry_type="technique")
|
|
174
|
-
append(ws, "stale data risk", entry_type="idea")
|
|
175
|
-
append(ws, "started SCAMPER", entry_type="technique") # back to SCAMPER — just appended again
|
|
176
|
-
append(ws, "stackable tiers", entry_type="idea")
|
|
177
|
-
assert entries(ws) == [
|
|
178
|
-
"- (technique) started SCAMPER",
|
|
179
|
-
"- (idea) magnetic latch",
|
|
180
|
-
"- (technique) started Six Hats",
|
|
181
|
-
"- (idea) stale data risk",
|
|
182
|
-
"- (technique) started SCAMPER",
|
|
183
|
-
"- (idea) stackable tiers",
|
|
184
|
-
]
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
def test_by_renders_attribution_in_tag(ws):
|
|
188
|
-
# Creative Partner mode must record whose idea each one was
|
|
189
|
-
init(ws)
|
|
190
|
-
append(ws, "magnetic latch lid", entry_type="idea", by="user")
|
|
191
|
-
append(ws, "lid doubles as a plate", entry_type="idea", by="coach")
|
|
192
|
-
body = body_of(ws)
|
|
193
|
-
assert "- (idea by user) magnetic latch lid" in body
|
|
194
|
-
assert "- (idea by coach) lid doubles as a plate" in body
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
def test_by_without_type_renders_alone(ws):
|
|
198
|
-
init(ws)
|
|
199
|
-
append(ws, "off-the-cuff thought", by="coach")
|
|
200
|
-
assert entries(ws) == ["- (by coach) off-the-cuff thought"]
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
def test_heterogeneous_entry_types_coexist(ws):
|
|
204
|
-
init(ws)
|
|
205
|
-
append(ws, "an idea", entry_type="idea")
|
|
206
|
-
append(ws, "an open question", entry_type="question")
|
|
207
|
-
append(ws, "a decision we made", entry_type="decision")
|
|
208
|
-
append(ws, "user wants mobile-first", entry_type="direction")
|
|
209
|
-
body = body_of(ws)
|
|
210
|
-
for tag in ("(idea)", "(question)", "(decision)", "(direction)"):
|
|
211
|
-
assert tag in body
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
def test_free_vocabulary_is_not_enforced(ws):
|
|
215
|
-
# The tool is neutral: any --type the host skill names renders verbatim.
|
|
216
|
-
init(ws)
|
|
217
|
-
append(ws, "a custom kind", entry_type="crack")
|
|
218
|
-
append(ws, "another", entry_type="lock")
|
|
219
|
-
body = body_of(ws)
|
|
220
|
-
assert "- (crack) a custom kind" in body
|
|
221
|
-
assert "- (lock) another" in body
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
# --- set: generic descriptive frontmatter, no lifecycle semantics --------
|
|
225
|
-
|
|
226
|
-
def test_set_adds_field(ws):
|
|
227
|
-
init(ws)
|
|
228
|
-
memlog.main(["set", "--workspace", ws, "--key", "mode", "--value", "partner"])
|
|
229
|
-
assert memlog.split(read(ws))[0]["mode"] == "partner"
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
def test_set_replaces_field(ws):
|
|
233
|
-
init(ws, topic="T", mode="facilitator")
|
|
234
|
-
memlog.main(["set", "--workspace", ws, "--key", "mode", "--value", "partner"])
|
|
235
|
-
assert memlog.split(read(ws))[0]["mode"] == "partner"
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
def test_set_preserves_body(ws):
|
|
239
|
-
init(ws)
|
|
240
|
-
append(ws, "keep me", entry_type="idea")
|
|
241
|
-
memlog.main(["set", "--workspace", ws, "--key", "mode", "--value", "partner"])
|
|
242
|
-
meta, body = memlog.split(read(ws))
|
|
243
|
-
assert meta["mode"] == "partner"
|
|
244
|
-
assert "- (idea) keep me" in body
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
def test_updated_stays_last(ws):
|
|
248
|
-
init(ws)
|
|
249
|
-
memlog.main(["set", "--workspace", ws, "--key", "owner", "--value", "Wizz"])
|
|
250
|
-
meta = memlog.split(read(ws))[0]
|
|
251
|
-
assert list(meta)[-1] == "updated"
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
# --- robustness ---------------------------------------------------------
|
|
255
|
-
|
|
256
|
-
def test_roundtrip_render_is_stable(ws):
|
|
257
|
-
init(ws)
|
|
258
|
-
append(ws, "one", entry_type="idea")
|
|
259
|
-
first = read(ws)
|
|
260
|
-
meta, body = memlog.split(first)
|
|
261
|
-
assert memlog.render(meta, body) == first
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
def test_commas_in_field_survive(ws):
|
|
265
|
-
init(ws, topic="cars, trains, and planes")
|
|
266
|
-
append(ws, "z", entry_type="idea")
|
|
267
|
-
meta, _ = memlog.split(read(ws))
|
|
268
|
-
assert meta["topic"] == "cars, trains, and planes"
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
def test_triple_dash_in_field_does_not_corrupt_frontmatter(ws):
|
|
272
|
-
# A `---` inside a value must NOT be read as the closing fence: topic stays intact
|
|
273
|
-
# and the body never leaks frontmatter text.
|
|
274
|
-
init(ws, topic="Pricing --- tiers --- and add-ons")
|
|
275
|
-
append(ws, "an idea", entry_type="idea")
|
|
276
|
-
meta, body = memlog.split(read(ws))
|
|
277
|
-
assert meta["topic"] == "Pricing --- tiers --- and add-ons"
|
|
278
|
-
assert entries(ws) == ["- (idea) an idea"]
|
|
279
|
-
assert "topic:" not in body # frontmatter never bled into the body
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
def test_newline_in_field_is_neutralized(ws):
|
|
283
|
-
# A value carrying a newline can't break the fence on the next round-trip.
|
|
284
|
-
memlog.main(["init", "--workspace", ws, "--field", "topic=line one\nline two"])
|
|
285
|
-
append(ws, "x", entry_type="idea")
|
|
286
|
-
meta, _ = memlog.split(read(ws))
|
|
287
|
-
assert "\n" not in meta["topic"]
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
def test_append_emits_json_ack(ws, capsys):
|
|
291
|
-
init(ws)
|
|
292
|
-
append(ws, "x", entry_type="idea")
|
|
293
|
-
out = json.loads(capsys.readouterr().out.strip().splitlines()[-1])
|
|
294
|
-
assert out["ok"] is True
|
|
295
|
-
assert out["entries"] == 1
|
|
296
|
-
assert out["memlog"].endswith(MEMLOG)
|
|
297
|
-
assert "status" not in out # no lifecycle status
|
|
298
|
-
assert "section" not in out # sections are gone
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
def test_ack_entry_count_climbs(ws, capsys):
|
|
302
|
-
init(ws)
|
|
303
|
-
append(ws, "a")
|
|
304
|
-
append(ws, "b")
|
|
305
|
-
out = json.loads(capsys.readouterr().out.strip().splitlines()[-1])
|
|
306
|
-
assert out["entries"] == 2
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
# Design Philosophy Showcases — 样例资产索引
|
|
2
|
-
|
|
3
|
-
> 8 种场景 × 3 种风格 = 24 个预制设计样例
|
|
4
|
-
> 用于 Phase 3 推荐设计方向时,直接展示「这个风格做出来长什么样」
|
|
5
|
-
|
|
6
|
-
## 风格说明
|
|
7
|
-
|
|
8
|
-
| 代号 | 流派 | 风格名称 | 视觉气质 |
|
|
9
|
-
|------|------|---------|---------|
|
|
10
|
-
| **Pentagram** | 信息建筑派 | Pentagram / Michael Bierut | 黑白克制、瑞士网格、强字体层级、#E63946红色强调 |
|
|
11
|
-
| **Build** | 极简主义派 | Build Studio | 奢侈品级留白(70%+)、微妙字重(200-600)、#D4A574暖金、精致 |
|
|
12
|
-
| **Takram** | 东方哲学派 | Takram | 柔和科技感、自然色(米色/灰/绿)、圆角、图表如艺术 |
|
|
13
|
-
|
|
14
|
-
## 场景速查表
|
|
15
|
-
|
|
16
|
-
### 内容设计场景
|
|
17
|
-
|
|
18
|
-
| # | 场景 | 规格 | Pentagram | Build | Takram |
|
|
19
|
-
|---|------|------|-----------|-------|--------|
|
|
20
|
-
| 1 | 公众号封面 | 1200×510 | `cover/cover-pentagram` | `cover/cover-build` | `cover/cover-takram` |
|
|
21
|
-
| 2 | PPT数据页 | 1920×1080 | `ppt/ppt-pentagram` | `ppt/ppt-build` | `ppt/ppt-takram` |
|
|
22
|
-
| 3 | 竖版信息图 | 1080×1920 | `infographic/infographic-pentagram` | `infographic/infographic-build` | `infographic/infographic-takram` |
|
|
23
|
-
|
|
24
|
-
### 网站设计场景
|
|
25
|
-
|
|
26
|
-
| # | 场景 | 规格 | Pentagram | Build | Takram |
|
|
27
|
-
|---|------|------|-----------|-------|--------|
|
|
28
|
-
| 4 | 个人主页 | 1440×900 | `website-homepage/homepage-pentagram` | `website-homepage/homepage-build` | `website-homepage/homepage-takram` |
|
|
29
|
-
| 5 | AI导航站 | 1440×900 | `website-ai-nav/ainav-pentagram` | `website-ai-nav/ainav-build` | `website-ai-nav/ainav-takram` |
|
|
30
|
-
| 6 | AI写作工具 | 1440×900 | `website-ai-writing/aiwriting-pentagram` | `website-ai-writing/aiwriting-build` | `website-ai-writing/aiwriting-takram` |
|
|
31
|
-
| 7 | SaaS落地页 | 1440×900 | `website-saas/saas-pentagram` | `website-saas/saas-build` | `website-saas/saas-takram` |
|
|
32
|
-
| 8 | 开发者文档 | 1440×900 | `website-devdocs/devdocs-pentagram` | `website-devdocs/devdocs-build` | `website-devdocs/devdocs-takram` |
|
|
33
|
-
|
|
34
|
-
> 每个条目同时有 `.html`(源码)和 `.png`(截图)两个文件
|
|
35
|
-
|
|
36
|
-
## 使用说明
|
|
37
|
-
|
|
38
|
-
### Phase 3 推荐时引用
|
|
39
|
-
推荐设计方向后,可展示对应场景的预制截图:
|
|
40
|
-
```
|
|
41
|
-
「这是 Pentagram 风格做公众号封面的效果 → [展示 cover/cover-pentagram.png]」
|
|
42
|
-
「Takram 风格做 PPT 数据页是这种感觉 → [展示 ppt/ppt-takram.png]」
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### 场景匹配优先级
|
|
46
|
-
1. 用户需求的场景有精确匹配 → 直接展示对应场景
|
|
47
|
-
2. 无精确匹配但类型相近 → 展示最近似的场景(如「产品官网」→ 展示 SaaS 落地页)
|
|
48
|
-
3. 完全不匹配 → 跳过预制样例,直接进 Phase 3.5 现场生成
|
|
49
|
-
|
|
50
|
-
### 横向对比展示
|
|
51
|
-
同一场景的 3 个风格适合并排展示,帮助用户直观比较:
|
|
52
|
-
- 「这是同一个公众号封面,分别用 3 种风格实现的效果」
|
|
53
|
-
- 展示顺序:Pentagram(理性克制)→ Build(奢华极简)→ Takram(柔和温暖)
|
|
54
|
-
|
|
55
|
-
## 内容详情
|
|
56
|
-
|
|
57
|
-
### 公众号封面(cover/)
|
|
58
|
-
- 内容:Claude Code Agent 工作流 — 8 个并行 Agent 架构
|
|
59
|
-
- Pentagram:巨大红色「8」+ 瑞士网格线 + 数据条
|
|
60
|
-
- Build:超细字重「Agent」悬浮于 70% 留白中 + 暖金细线
|
|
61
|
-
- Takram:8 节点放射状流程图作为艺术品 + 米色底
|
|
62
|
-
|
|
63
|
-
### PPT数据页(ppt/)
|
|
64
|
-
- 内容:GLM-4.7 开源模型 Coding 能力突破(AIME 95.7 / SWE-bench 73.8% / τ²-Bench 87.4)
|
|
65
|
-
- Pentagram:260px「95.7」锚点 + 红/灰/浅灰对比条形图
|
|
66
|
-
- Build:三组 120px 超细数字悬浮 + 暖金渐变对比条
|
|
67
|
-
- Takram:SVG 雷达图 + 三色叠加 + 圆角数据卡片
|
|
68
|
-
|
|
69
|
-
### 竖版信息图(infographic/)
|
|
70
|
-
- 内容:AI 记忆系统 CLAUDE.md 从 93KB 优化到 22KB
|
|
71
|
-
- Pentagram:巨大「93→22」数字 + 编号区块 + CSS 数据条
|
|
72
|
-
- Build:极致留白 + 柔影卡片 + 暖金连接线
|
|
73
|
-
- Takram:SVG 环形图 + 有机曲线流程图 + 毛玻璃卡片
|
|
74
|
-
|
|
75
|
-
### 个人主页(website-homepage/)
|
|
76
|
-
- 内容:独立开发者 Alex Chen 的作品集首页
|
|
77
|
-
- Pentagram:112px 大名 + 瑞士网格分栏 + 编辑数字
|
|
78
|
-
- Build:玻璃态导航 + 悬浮统计卡片 + 超细字重
|
|
79
|
-
- Takram:纸质纹理 + 小圆形头像 + 发丝细分隔线 + 不对称布局
|
|
80
|
-
|
|
81
|
-
### AI导航站(website-ai-nav/)
|
|
82
|
-
- 内容:AI Compass — 500+ AI 工具目录
|
|
83
|
-
- Pentagram:方角搜索框 + 编号工具列表 + 大写分类标签
|
|
84
|
-
- Build:圆角搜索框 + 精致白色工具卡片 + 药丸标签
|
|
85
|
-
- Takram:有机错位卡片布局 + 柔和分类标签 + 图表式连接
|
|
86
|
-
|
|
87
|
-
### AI写作工具(website-ai-writing/)
|
|
88
|
-
- 内容:Inkwell — AI 写作助手
|
|
89
|
-
- Pentagram:86px 大标题 + 线框编辑器模型 + 网格特性列
|
|
90
|
-
- Build:漂浮编辑器卡片 + 暖金 CTA + 奢华写作体验
|
|
91
|
-
- Takram:诗意衬线标题 + 有机编辑器 + 流程图
|
|
92
|
-
|
|
93
|
-
### SaaS落地页(website-saas/)
|
|
94
|
-
- 内容:Meridian — 商业智能分析平台
|
|
95
|
-
- Pentagram:黑白分栏 + 结构化仪表盘 + 140px「3x」锚点
|
|
96
|
-
- Build:悬浮仪表盘卡片 + SVG 面积图 + 暖金渐变
|
|
97
|
-
- Takram:圆角柱状图 + 流程节点 + 柔和地球色
|
|
98
|
-
|
|
99
|
-
### 开发者文档(website-devdocs/)
|
|
100
|
-
- 内容:Nexus API — 统一 AI 模型网关
|
|
101
|
-
- Pentagram:左侧导航栏 + 方角代码块 + 红色字符串高亮
|
|
102
|
-
- Build:居中漂浮代码卡片 + 柔影 + 暖金图标
|
|
103
|
-
- Takram:米色代码块 + 流程图连接 + 虚线特性卡片
|
|
104
|
-
|
|
105
|
-
## 文件统计
|
|
106
|
-
|
|
107
|
-
- HTML 源文件:24 个
|
|
108
|
-
- PNG 截图:24 个
|
|
109
|
-
- 总资产:48 个文件
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
**版本**:v1.0
|
|
114
|
-
**创建日期**:2026-02-13
|
|
115
|
-
**适用于**:design-philosophy skill Phase 3 推荐环节
|
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="zh-CN">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=1200">
|
|
6
|
-
<title>Claude Code Agent - Build Studio Style</title>
|
|
7
|
-
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;500;600&display=swap" rel="stylesheet">
|
|
8
|
-
<style>
|
|
9
|
-
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
10
|
-
body {
|
|
11
|
-
width: 1200px;
|
|
12
|
-
height: 510px;
|
|
13
|
-
overflow: hidden;
|
|
14
|
-
margin: 0;
|
|
15
|
-
background: #FAFAF8;
|
|
16
|
-
font-family: 'Inter', sans-serif;
|
|
17
|
-
position: relative;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/* Subtle top gradient wash */
|
|
21
|
-
.wash {
|
|
22
|
-
position: absolute;
|
|
23
|
-
top: 0;
|
|
24
|
-
left: 0;
|
|
25
|
-
width: 1200px;
|
|
26
|
-
height: 510px;
|
|
27
|
-
background: radial-gradient(ellipse 800px 400px at 30% 40%, rgba(212, 165, 116, 0.06) 0%, transparent 70%);
|
|
28
|
-
z-index: 0;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/* Main layout */
|
|
32
|
-
.layout {
|
|
33
|
-
position: absolute;
|
|
34
|
-
top: 0;
|
|
35
|
-
left: 0;
|
|
36
|
-
width: 1200px;
|
|
37
|
-
height: 510px;
|
|
38
|
-
display: flex;
|
|
39
|
-
align-items: center;
|
|
40
|
-
justify-content: center;
|
|
41
|
-
z-index: 1;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.center-block {
|
|
45
|
-
text-align: center;
|
|
46
|
-
max-width: 700px;
|
|
47
|
-
margin-top: -24px; /* slight upward shift for golden ratio vertical center */
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/* Floating "Agent" */
|
|
51
|
-
.floating-agent {
|
|
52
|
-
font-family: 'Inter', sans-serif;
|
|
53
|
-
font-weight: 200;
|
|
54
|
-
font-size: 128px;
|
|
55
|
-
letter-spacing: -4px;
|
|
56
|
-
color: #1A1A18;
|
|
57
|
-
line-height: 1;
|
|
58
|
-
margin-bottom: 16px;
|
|
59
|
-
position: relative;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
.floating-agent span {
|
|
63
|
-
position: relative;
|
|
64
|
-
display: inline-block;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/* Slight weight shift on first letter for visual interest */
|
|
68
|
-
.floating-agent .accent-letter {
|
|
69
|
-
font-weight: 300;
|
|
70
|
-
color: #2A2A28;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/* Gold underline accent */
|
|
74
|
-
.gold-line {
|
|
75
|
-
width: 48px;
|
|
76
|
-
height: 1px;
|
|
77
|
-
background: #D4A574;
|
|
78
|
-
margin: 0 auto 32px;
|
|
79
|
-
opacity: 0.7;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/* Subtitle — label tier: smallest text, widest spacing */
|
|
83
|
-
.subtitle {
|
|
84
|
-
font-family: 'Inter', sans-serif;
|
|
85
|
-
font-weight: 400;
|
|
86
|
-
font-size: 10px;
|
|
87
|
-
letter-spacing: 6px;
|
|
88
|
-
text-transform: uppercase;
|
|
89
|
-
color: #B0ACA4;
|
|
90
|
-
margin-bottom: 24px;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/* Description line — body tier */
|
|
94
|
-
.desc {
|
|
95
|
-
font-family: 'Inter', sans-serif;
|
|
96
|
-
font-weight: 300;
|
|
97
|
-
font-size: 13px;
|
|
98
|
-
color: #A8A4A0;
|
|
99
|
-
letter-spacing: 0.3px;
|
|
100
|
-
line-height: 2;
|
|
101
|
-
max-width: 400px;
|
|
102
|
-
margin: 0 auto;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/* Minimal agent indicators — 8 thin vertical lines */
|
|
106
|
-
.agent-indicators {
|
|
107
|
-
position: absolute;
|
|
108
|
-
bottom: 48px;
|
|
109
|
-
left: 50%;
|
|
110
|
-
transform: translateX(-50%);
|
|
111
|
-
display: flex;
|
|
112
|
-
gap: 16px;
|
|
113
|
-
align-items: flex-end;
|
|
114
|
-
z-index: 2;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
.indicator {
|
|
118
|
-
width: 1px;
|
|
119
|
-
background: #D8D4CE;
|
|
120
|
-
border-radius: 0.5px;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
.indicator.gold {
|
|
124
|
-
background: #D4A574;
|
|
125
|
-
width: 1.5px;
|
|
126
|
-
opacity: 0.8;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/* Corner marks */
|
|
130
|
-
.corner-mark {
|
|
131
|
-
position: absolute;
|
|
132
|
-
z-index: 2;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
.corner-mark svg {
|
|
136
|
-
display: block;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
.corner-tl { top: 48px; left: 48px; }
|
|
140
|
-
.corner-br { bottom: 48px; right: 48px; transform: rotate(180deg); }
|
|
141
|
-
|
|
142
|
-
/* Side text */
|
|
143
|
-
.side-label {
|
|
144
|
-
position: absolute;
|
|
145
|
-
font-family: 'Inter', sans-serif;
|
|
146
|
-
font-weight: 400;
|
|
147
|
-
font-size: 8px;
|
|
148
|
-
letter-spacing: 4px;
|
|
149
|
-
text-transform: uppercase;
|
|
150
|
-
color: #CBC7C0;
|
|
151
|
-
z-index: 2;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
.side-left {
|
|
155
|
-
left: 48px;
|
|
156
|
-
top: 50%;
|
|
157
|
-
transform: translateY(-50%) rotate(-90deg);
|
|
158
|
-
transform-origin: center center;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
.side-right {
|
|
162
|
-
right: 48px;
|
|
163
|
-
top: 50%;
|
|
164
|
-
transform: translateY(-50%) rotate(90deg);
|
|
165
|
-
transform-origin: center center;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/* Removed shadow-card — Build purity demands uninterrupted whitespace */
|
|
169
|
-
|
|
170
|
-
/* Number 8 whisper */
|
|
171
|
-
.number-whisper {
|
|
172
|
-
position: absolute;
|
|
173
|
-
top: 48px;
|
|
174
|
-
right: 96px;
|
|
175
|
-
font-family: 'Inter', sans-serif;
|
|
176
|
-
font-weight: 200;
|
|
177
|
-
font-size: 24px;
|
|
178
|
-
color: #D4A574;
|
|
179
|
-
opacity: 0.35;
|
|
180
|
-
z-index: 2;
|
|
181
|
-
}
|
|
182
|
-
</style>
|
|
183
|
-
</head>
|
|
184
|
-
<body>
|
|
185
|
-
|
|
186
|
-
<div class="wash"></div>
|
|
187
|
-
|
|
188
|
-
<!-- Corner marks -->
|
|
189
|
-
<div class="corner-mark corner-tl">
|
|
190
|
-
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
191
|
-
<path d="M0 0L0 20" stroke="#D4A574" stroke-width="0.5" opacity="0.4"/>
|
|
192
|
-
<path d="M0 0L20 0" stroke="#D4A574" stroke-width="0.5" opacity="0.4"/>
|
|
193
|
-
</svg>
|
|
194
|
-
</div>
|
|
195
|
-
<div class="corner-mark corner-br">
|
|
196
|
-
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
197
|
-
<path d="M0 0L0 20" stroke="#D4A574" stroke-width="0.5" opacity="0.4"/>
|
|
198
|
-
<path d="M0 0L20 0" stroke="#D4A574" stroke-width="0.5" opacity="0.4"/>
|
|
199
|
-
</svg>
|
|
200
|
-
</div>
|
|
201
|
-
|
|
202
|
-
<!-- Side labels -->
|
|
203
|
-
<div class="side-label side-left">Claude Code</div>
|
|
204
|
-
<div class="side-label side-right">Parallel Workflow</div>
|
|
205
|
-
|
|
206
|
-
<!-- Number whisper -->
|
|
207
|
-
<div class="number-whisper">8</div>
|
|
208
|
-
|
|
209
|
-
<!-- Main content -->
|
|
210
|
-
<div class="layout">
|
|
211
|
-
<div class="center-block">
|
|
212
|
-
<div class="subtitle">Parallel Architecture</div>
|
|
213
|
-
<div class="floating-agent"><span><span class="accent-letter">A</span>gent</span></div>
|
|
214
|
-
<div class="gold-line"></div>
|
|
215
|
-
<div class="desc">
|
|
216
|
-
Eight autonomous agents orchestrated in parallel,<br>
|
|
217
|
-
each solving a distinct piece of the whole.
|
|
218
|
-
</div>
|
|
219
|
-
</div>
|
|
220
|
-
</div>
|
|
221
|
-
|
|
222
|
-
<!-- Agent indicators -->
|
|
223
|
-
<div class="agent-indicators">
|
|
224
|
-
<div class="indicator" style="height: 20px;"></div>
|
|
225
|
-
<div class="indicator" style="height: 28px;"></div>
|
|
226
|
-
<div class="indicator gold" style="height: 36px;"></div>
|
|
227
|
-
<div class="indicator" style="height: 22px;"></div>
|
|
228
|
-
<div class="indicator" style="height: 32px;"></div>
|
|
229
|
-
<div class="indicator gold" style="height: 40px;"></div>
|
|
230
|
-
<div class="indicator" style="height: 24px;"></div>
|
|
231
|
-
<div class="indicator" style="height: 30px;"></div>
|
|
232
|
-
</div>
|
|
233
|
-
|
|
234
|
-
</body>
|
|
235
|
-
</html>
|
|
Binary file
|