@xulthekl/team-flow 0.22.4
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/.agents/plugins/marketplace.json +20 -0
- package/.agents/skills +1 -0
- package/.claude/always/phase-guard.md +3 -0
- package/.claude-plugin/marketplace.json +20 -0
- package/.claude-plugin/plugin.json +31 -0
- package/.codex-plugin/plugin.json +45 -0
- package/.codexignore +6 -0
- package/.cursor-plugin/marketplace.json +17 -0
- package/.cursor-plugin/plugin.json +31 -0
- package/.github/copilot-instructions.md +15 -0
- package/.github/dependabot.yml +10 -0
- package/.github/plugin/marketplace.json +42 -0
- package/.github/workflows/ci.yml +98 -0
- package/.github/workflows/hol-plugin-scanner.yml +17 -0
- package/.opencode/INSTALL.md +61 -0
- package/.opencode/plugins/team-flow.js +70 -0
- package/AGENTS.md +280 -0
- package/CHANGELOG.md +635 -0
- package/CONTRIBUTING.md +115 -0
- package/GEMINI.md +14 -0
- package/HANDOFF.md +219 -0
- package/INSTALL.md +810 -0
- package/LICENSE +21 -0
- package/README.md +185 -0
- package/SECURITY.md +37 -0
- package/agents/bug-investigator.md +180 -0
- package/agents/change-split-auditor.md +257 -0
- package/agents/code-reviewer.md +171 -0
- package/agents/cross-change-consistency-checker.md +215 -0
- package/agents/prd-completeness-reviewer.md +197 -0
- package/agents/prototype-builder.md +230 -0
- package/agents/prototype-env-scout.md +156 -0
- package/agents/prototype-reviewer.md +226 -0
- package/assets/icon.svg +6 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +5 -0
- package/dist/parsing/change-parser.d.ts +12 -0
- package/dist/parsing/change-parser.js +54 -0
- package/dist/parsing/requirement-blocks.d.ts +31 -0
- package/dist/parsing/requirement-blocks.js +192 -0
- package/dist/schema/base.d.ts +7 -0
- package/dist/schema/base.js +1 -0
- package/dist/schema/change.d.ts +25 -0
- package/dist/schema/change.js +1 -0
- package/dist/schema/index.d.ts +3 -0
- package/dist/schema/index.js +1 -0
- package/dist/schema/spec.d.ts +11 -0
- package/dist/schema/spec.js +1 -0
- package/dist/validation/constants.d.ts +42 -0
- package/dist/validation/constants.js +42 -0
- package/dist/validation/tokenizer.d.ts +17 -0
- package/dist/validation/tokenizer.js +173 -0
- package/dist/validation/types.d.ts +40 -0
- package/dist/validation/types.js +1 -0
- package/dist/validation/validator.d.ts +21 -0
- package/dist/validation/validator.js +489 -0
- package/docs/README_en.md +358 -0
- package/docs/artifact-contract.md +96 -0
- package/docs/decision-points.md +88 -0
- package/docs/e2e-integration-design.md +207 -0
- package/docs/examples/README.md +25 -0
- package/docs/examples/add-dark-mode/README.md +13 -0
- package/docs/examples/add-dark-mode/design.md +49 -0
- package/docs/examples/add-dark-mode/execution-contract.md +56 -0
- package/docs/examples/add-dark-mode/proposal.md +46 -0
- package/docs/examples/add-dark-mode/specs/ui-theme/spec.md +35 -0
- package/docs/examples/add-dark-mode/tasks.md +26 -0
- package/docs/examples/refactor-auth-boundary/README.md +15 -0
- package/docs/examples/refactor-auth-boundary/design.md +41 -0
- package/docs/examples/refactor-auth-boundary/execution-contract.md +61 -0
- package/docs/examples/refactor-auth-boundary/proposal.md +47 -0
- package/docs/examples/refactor-auth-boundary/specs/auth-boundary/spec.md +45 -0
- package/docs/examples/refactor-auth-boundary/tasks.md +25 -0
- package/docs/plans/2026-07-07-fix-batch-design.md +68 -0
- package/docs/plans/2026-07-20-001-refactor-skill-collaboration-protocol-plan.md +128 -0
- package/docs/platform-matrix.md +45 -0
- package/docs/prototype-design-research.md +206 -0
- package/docs/release-checklist.md +96 -0
- package/docs/showcase.html +699 -0
- package/docs/skill-rename-v0.8.0.md +49 -0
- package/docs/state-machine.md +162 -0
- package/gemini-extension.json +6 -0
- package/hooks/hooks-cursor.json +8 -0
- package/hooks/hooks.json +26 -0
- package/hooks/pre-tool-use-guard +116 -0
- package/hooks/session-start +14 -0
- package/llms.txt +51 -0
- package/package.json +48 -0
- package/plugin.json +27 -0
- package/prd/v1/plan.md +443 -0
- package/prd/v1/prd.md +580 -0
- package/scripts/check-update.mjs +91 -0
- package/scripts/check-version-consistency.mjs +345 -0
- package/scripts/ensure-branch.mjs +71 -0
- package/scripts/get-config +31 -0
- package/scripts/guard/checks/artifacts-exist.mjs +36 -0
- package/scripts/guard/checks/contract-current.mjs +33 -0
- package/scripts/guard/checks/contract-fresh.mjs +17 -0
- package/scripts/guard/checks/dp-gate-passed.mjs +35 -0
- package/scripts/guard/checks/dp3-approved.mjs +22 -0
- package/scripts/guard/checks/execution-plan-ready.mjs +40 -0
- package/scripts/guard/checks/execution-reviews-passed.mjs +36 -0
- package/scripts/guard/checks/schema-valid.mjs +63 -0
- package/scripts/guard/checks/specs-merged.mjs +51 -0
- package/scripts/guard/checks/tasks-complete.mjs +31 -0
- package/scripts/guard/checks/tests-passing.mjs +31 -0
- package/scripts/guard/design-token-guard.mjs +237 -0
- package/scripts/guard/guard.mjs +205 -0
- package/scripts/infer-workflow.mjs +136 -0
- package/scripts/install-amazon-q.mjs +9 -0
- package/scripts/install-cline.mjs +9 -0
- package/scripts/install-continue.mjs +9 -0
- package/scripts/install-cursor.mjs +265 -0
- package/scripts/install-git-hooks.mjs +82 -0
- package/scripts/install-kiro.mjs +9 -0
- package/scripts/install-pi.mjs +9 -0
- package/scripts/install-qoder.mjs +9 -0
- package/scripts/install-qwen.mjs +9 -0
- package/scripts/install-roocode.mjs +9 -0
- package/scripts/install-windsurf.mjs +9 -0
- package/scripts/install-zcode.mjs +265 -0
- package/scripts/lib/cmd-audit.mjs +127 -0
- package/scripts/lib/cmd-checkpoint.mjs +118 -0
- package/scripts/lib/cmd-config.mjs +88 -0
- package/scripts/lib/cmd-doctor.mjs +267 -0
- package/scripts/lib/cmd-execution.mjs +206 -0
- package/scripts/lib/cmd-handoff.mjs +94 -0
- package/scripts/lib/cmd-inject.mjs +310 -0
- package/scripts/lib/cmd-install-amazon-q.mjs +11 -0
- package/scripts/lib/cmd-install-cline.mjs +11 -0
- package/scripts/lib/cmd-install-continue.mjs +11 -0
- package/scripts/lib/cmd-install-cursor.mjs +14 -0
- package/scripts/lib/cmd-install-kiro.mjs +11 -0
- package/scripts/lib/cmd-install-pi.mjs +11 -0
- package/scripts/lib/cmd-install-qoder.mjs +11 -0
- package/scripts/lib/cmd-install-qwen.mjs +11 -0
- package/scripts/lib/cmd-install-roocode.mjs +11 -0
- package/scripts/lib/cmd-install-windsurf.mjs +11 -0
- package/scripts/lib/cmd-install-workbuddy.mjs +359 -0
- package/scripts/lib/cmd-install-zcode.mjs +14 -0
- package/scripts/lib/cmd-isolate.mjs +37 -0
- package/scripts/lib/cmd-list.mjs +71 -0
- package/scripts/lib/cmd-runtime.mjs +85 -0
- package/scripts/lib/cmd-solutions.mjs +71 -0
- package/scripts/lib/cmd-state.mjs +231 -0
- package/scripts/lib/cmd-sync.mjs +102 -0
- package/scripts/lib/cmd-validate.mjs +105 -0
- package/scripts/lib/cmd-version.mjs +148 -0
- package/scripts/lib/config-loader.mjs +107 -0
- package/scripts/lib/execution-plan.mjs +492 -0
- package/scripts/lib/execution-recommendation.mjs +221 -0
- package/scripts/lib/hash.mjs +74 -0
- package/scripts/lib/install.mjs +267 -0
- package/scripts/lib/platform-runtime-inventory.mjs +27 -0
- package/scripts/lib/platforms.mjs +165 -0
- package/scripts/lib/prototype-sync.mjs +192 -0
- package/scripts/lib/sdd-overlay.mjs +262 -0
- package/scripts/lib/shell-quote.mjs +4 -0
- package/scripts/lib/solutions-capture.mjs +102 -0
- package/scripts/lib/solutions-index-gen.mjs +112 -0
- package/scripts/lib/solutions-inject.mjs +77 -0
- package/scripts/lib/solutions-promote.mjs +145 -0
- package/scripts/lib/spec-paths.mjs +85 -0
- package/scripts/lib/state-loader.mjs +154 -0
- package/scripts/lint/lint-skills.mjs +149 -0
- package/scripts/lint/rules/behavior-consistency.mjs +56 -0
- package/scripts/lint/rules/dp-trigger-points.mjs +60 -0
- package/scripts/lint/rules/exception-handling.mjs +59 -0
- package/scripts/lint/rules/no-contradictory-instructions.mjs +67 -0
- package/scripts/lint/rules/no-redundant-checks.mjs +50 -0
- package/scripts/lint/rules/token-rules.mjs +122 -0
- package/scripts/review-package +44 -0
- package/scripts/task-brief +40 -0
- package/scripts/team-flow.mjs +164 -0
- package/scripts/token-baseline.mjs +158 -0
- package/scripts/validate-artifacts +96 -0
- package/scripts/verify-marketplace-release.mjs +59 -0
- package/skills/architecture-design/SKILL.md +140 -0
- package/skills/architecture-design/chapters/ch01-4a-domains.md +27 -0
- package/skills/architecture-design/chapters/ch02-change-cascade.md +27 -0
- package/skills/architecture-design/chapters/ch03-architecture-outputs.md +25 -0
- package/skills/architecture-design/chapters/ch04-entity-to-aggregate.md +27 -0
- package/skills/architecture-design/chapters/ch05-cqrs.md +32 -0
- package/skills/architecture-design/chapters/ch06-integration.md +54 -0
- package/skills/architecture-design/cheatsheet.md +51 -0
- package/skills/architecture-design/glossary.md +23 -0
- package/skills/architecture-design/patterns.md +32 -0
- package/skills/bug-investigator/SKILL.md +77 -0
- package/skills/build-executor/SKILL.md +163 -0
- package/skills/build-executor/implementer-prompt.md +162 -0
- package/skills/build-executor/references/execution-modes.md +86 -0
- package/skills/build-executor/task-reviewer-prompt.md +195 -0
- package/skills/ce-brainstorm/SKILL.md +415 -0
- package/skills/ce-brainstorm/references/agents/slack-researcher.md +127 -0
- package/skills/ce-brainstorm/references/blindspot-pass.md +70 -0
- package/skills/ce-brainstorm/references/brainstorm-sections.md +285 -0
- package/skills/ce-brainstorm/references/handoff.md +168 -0
- package/skills/ce-brainstorm/references/html-rendering.md +634 -0
- package/skills/ce-brainstorm/references/markdown-rendering.md +241 -0
- package/skills/ce-brainstorm/references/model-tiers.md +9 -0
- package/skills/ce-brainstorm/references/prd-mapping.md +71 -0
- package/skills/ce-brainstorm/references/product-pressure-test.md +42 -0
- package/skills/ce-brainstorm/references/reasoning-elevation.md +63 -0
- package/skills/ce-brainstorm/references/settled-decisions.md +45 -0
- package/skills/ce-brainstorm/references/synthesis-summary.md +282 -0
- package/skills/ce-brainstorm/references/universal-brainstorming.md +73 -0
- package/skills/ce-brainstorm/references/verdict-routing.md +26 -0
- package/skills/ce-brainstorm/references/visual-probes.md +158 -0
- package/skills/ce-brainstorm/scripts/visual-probe-server.js +418 -0
- package/skills/ce-compound/SKILL.md +114 -0
- package/skills/ce-compound/assets/resolution-template.md +94 -0
- package/skills/ce-compound/references/agents/best-practices-researcher.md +115 -0
- package/skills/ce-compound/references/agents/data-integrity-guardian.md +68 -0
- package/skills/ce-compound/references/agents/framework-docs-researcher.md +93 -0
- package/skills/ce-compound/references/agents/pattern-recognition-specialist.md +55 -0
- package/skills/ce-compound/references/agents/performance-oracle.md +108 -0
- package/skills/ce-compound/references/agents/security-sentinel.md +91 -0
- package/skills/ce-compound/references/agents/session-historian.md +83 -0
- package/skills/ce-compound/references/concepts-vocabulary.md +78 -0
- package/skills/ce-compound/references/full-mode-workflow.md +413 -0
- package/skills/ce-compound/references/grounding-validation.md +84 -0
- package/skills/ce-compound/references/lightweight-mode.md +53 -0
- package/skills/ce-compound/references/output-standards.md +182 -0
- package/skills/ce-compound/references/promotion-rules.md +38 -0
- package/skills/ce-compound/references/schema.yaml +231 -0
- package/skills/ce-compound/references/three-tier-index.md +55 -0
- package/skills/ce-compound/references/v0.5-upgrade.md +32 -0
- package/skills/ce-compound/references/write-flow.md +36 -0
- package/skills/ce-compound/references/yaml-schema.md +118 -0
- package/skills/ce-compound/scripts/session-history/discover-sessions.sh +130 -0
- package/skills/ce-compound/scripts/session-history/extract-errors.py +254 -0
- package/skills/ce-compound/scripts/session-history/extract-metadata.py +456 -0
- package/skills/ce-compound/scripts/session-history/extract-skeleton.py +575 -0
- package/skills/ce-compound/scripts/validate-doc-claims.py +346 -0
- package/skills/ce-compound/scripts/validate-frontmatter.py +137 -0
- package/skills/ce-ideate/SKILL.md +402 -0
- package/skills/ce-ideate/references/agents/issue-intelligence-analyst.md +200 -0
- package/skills/ce-ideate/references/agents/learnings-researcher.md +247 -0
- package/skills/ce-ideate/references/agents/slack-researcher.md +127 -0
- package/skills/ce-ideate/references/agents/web-researcher.md +121 -0
- package/skills/ce-ideate/references/divergent-ideation.md +89 -0
- package/skills/ce-ideate/references/html-rendering.md +634 -0
- package/skills/ce-ideate/references/ideation-sections.md +191 -0
- package/skills/ce-ideate/references/markdown-rendering.md +238 -0
- package/skills/ce-ideate/references/post-ideation-workflow.md +167 -0
- package/skills/ce-ideate/references/universal-ideation.md +107 -0
- package/skills/ce-ideate/references/web-research-cache.md +56 -0
- package/skills/ce-plan/SKILL.md +137 -0
- package/skills/ce-plan/references/agents/agent-native-planning-strategist.md +62 -0
- package/skills/ce-plan/references/agents/architecture-strategist.md +46 -0
- package/skills/ce-plan/references/agents/best-practices-researcher.md +114 -0
- package/skills/ce-plan/references/agents/data-integrity-guardian.md +68 -0
- package/skills/ce-plan/references/agents/data-migration-reviewer.md +103 -0
- package/skills/ce-plan/references/agents/deployment-verification-agent.md +157 -0
- package/skills/ce-plan/references/agents/framework-docs-researcher.md +93 -0
- package/skills/ce-plan/references/agents/git-history-analyzer.md +40 -0
- package/skills/ce-plan/references/agents/learnings-researcher.md +247 -0
- package/skills/ce-plan/references/agents/pattern-recognition-specialist.md +55 -0
- package/skills/ce-plan/references/agents/performance-oracle.md +108 -0
- package/skills/ce-plan/references/agents/repo-research-analyst.md +258 -0
- package/skills/ce-plan/references/agents/security-sentinel.md +91 -0
- package/skills/ce-plan/references/agents/slack-researcher.md +127 -0
- package/skills/ce-plan/references/agents/spec-flow-analyzer.md +80 -0
- package/skills/ce-plan/references/agents/web-researcher.md +121 -0
- package/skills/ce-plan/references/approach-altitude.md +55 -0
- package/skills/ce-plan/references/change-splitting.md +65 -0
- package/skills/ce-plan/references/completion-contract.md +33 -0
- package/skills/ce-plan/references/core-principles.md +40 -0
- package/skills/ce-plan/references/deepening-workflow.md +263 -0
- package/skills/ce-plan/references/dependency-graph.md +36 -0
- package/skills/ce-plan/references/html-rendering.md +634 -0
- package/skills/ce-plan/references/intake-routing.md +189 -0
- package/skills/ce-plan/references/markdown-rendering.md +238 -0
- package/skills/ce-plan/references/plan-handoff.md +150 -0
- package/skills/ce-plan/references/plan-sections.md +427 -0
- package/skills/ce-plan/references/plan-structure.md +120 -0
- package/skills/ce-plan/references/planning-modes.md +69 -0
- package/skills/ce-plan/references/reasoning-elevation.md +63 -0
- package/skills/ce-plan/references/research-workflow.md +165 -0
- package/skills/ce-plan/references/review-and-write.md +127 -0
- package/skills/ce-plan/references/settled-decisions.md +45 -0
- package/skills/ce-plan/references/synthesis-summary.md +418 -0
- package/skills/ce-plan/references/universal-planning.md +168 -0
- package/skills/ce-proof/SKILL.md +346 -0
- package/skills/ce-strategy/SKILL.md +97 -0
- package/skills/ce-strategy/references/interview.md +143 -0
- package/skills/ce-strategy/references/strategy-template.md +89 -0
- package/skills/code-reviewer/SKILL.md +84 -0
- package/skills/code-reviewer/code-reviewer-prompt.md +195 -0
- package/skills/contract-builder/SKILL.md +72 -0
- package/skills/design-system/SKILL.md +75 -0
- package/skills/design-system/references/agents/design-system-architect.md +138 -0
- package/skills/design-system/references/creation-flow.md +170 -0
- package/skills/design-system/references/preview-template.html +319 -0
- package/skills/design-system/references/token-derivation.md +115 -0
- package/skills/design-system/references/variant-schema.md +60 -0
- package/skills/e2e/SKILL.md +56 -0
- package/skills/e2e/references/test-verifier.md +40 -0
- package/skills/need-explorer/SKILL.md +79 -0
- package/skills/prototype/SKILL.md +98 -0
- package/skills/prototype/references/agents/design-system-architect.md +122 -0
- package/skills/prototype/references/checklist.md +82 -0
- package/skills/prototype/references/craft/accessibility-baseline.md +71 -0
- package/skills/prototype/references/craft/anti-ai-slop.md +87 -0
- package/skills/prototype/references/craft/laws-of-ux.md +60 -0
- package/skills/prototype/references/craft/state-coverage.md +81 -0
- package/skills/prototype/references/craft/typography-hierarchy.md +50 -0
- package/skills/prototype/references/layouts.md +223 -0
- package/skills/prototype/references/orchestration-flow.md +101 -0
- package/skills/prototype/references/prototype-scaffold/assets/design-tokens.css +19 -0
- package/skills/prototype/references/prototype-scaffold/components/button.html +3 -0
- package/skills/prototype/references/prototype-scaffold/design-system.md +7 -0
- package/skills/prototype/references/prototype-scaffold/flow.md +11 -0
- package/skills/prototype/references/prototype-scaffold/index.html +20 -0
- package/skills/prototype/references/prototype-scaffold/pages/index.html +11 -0
- package/skills/prototype/references/template.html +396 -0
- package/skills/release-archivist/SKILL.md +166 -0
- package/skills/release-archivist/references/closing-procedures.md +81 -0
- package/skills/session-handoff/SKILL.md +110 -0
- package/skills/session-handoff/references/context-extraction.md +70 -0
- package/skills/session-handoff/references/handoff-template.md +90 -0
- package/skills/session-handoff/references/skill-recommendation.md +43 -0
- package/skills/spec-merger/SKILL.md +66 -0
- package/skills/spec-writer/SKILL.md +149 -0
- package/skills/workflow-bootstrap/SKILL.md +148 -0
- package/skills/workflow-bootstrap/references/agents/codebase-recon-analyst.md +121 -0
- package/skills/workflow-bootstrap/references/b1-reconnaissance.md +80 -0
- package/skills/workflow-bootstrap/scripts/recon-probe.sh +328 -0
- package/skills/workflow-feedback/SKILL.md +120 -0
- package/skills/workflow-feedback/references/category-guide.md +121 -0
- package/skills/workflow-feedback/references/feedback-template.md +73 -0
- package/skills/workflow-feedback/references/review-mode.md +92 -0
- package/skills/workflow-orchestrator/SKILL.md +94 -0
- package/skills/workflow-orchestrator/references/feedback-loops.md +56 -0
- package/skills/workflow-orchestrator/references/s1-path-router.md +81 -0
- package/skills/workflow-orchestrator/references/s2-prd-prototype-loop.md +96 -0
- package/skills/workflow-orchestrator/references/s3-plan-pipeline.md +50 -0
- package/skills/workflow-orchestrator/references/s4-split-validate.md +108 -0
- package/skills/workflow-orchestrator/references/s5-monitoring.md +61 -0
- package/skills/workflow-orchestrator/references/state-model.md +185 -0
- package/skills/workflow-start/SKILL.md +147 -0
- package/skills/workflow-start/references/routing-rules.md +155 -0
- package/src/index.ts +16 -0
- package/src/parsing/change-parser.ts +79 -0
- package/src/parsing/requirement-blocks.ts +244 -0
- package/src/schema/base.ts +8 -0
- package/src/schema/change.ts +29 -0
- package/src/schema/index.ts +3 -0
- package/src/schema/spec.ts +12 -0
- package/src/validation/constants.ts +53 -0
- package/src/validation/tokenizer.ts +180 -0
- package/src/validation/types.ts +47 -0
- package/src/validation/validator.ts +552 -0
- package/templates/abandonment-summary.md +29 -0
- package/templates/design.md +37 -0
- package/templates/execution-contract.md +99 -0
- package/templates/plan.md +86 -0
- package/templates/prd.md +468 -0
- package/templates/proposal.md +37 -0
- package/templates/spec.md +31 -0
- package/templates/tasks.md +47 -0
- package/tests/e2e.test.mjs +266 -0
- package/tests/lib/cmd-audit.test.mjs +202 -0
- package/tests/lib/cmd-checkpoint.test.mjs +98 -0
- package/tests/lib/cmd-config.test.mjs +101 -0
- package/tests/lib/cmd-doctor.test.mjs +450 -0
- package/tests/lib/cmd-execution.test.mjs +647 -0
- package/tests/lib/cmd-handoff.test.mjs +137 -0
- package/tests/lib/cmd-inject.test.mjs +218 -0
- package/tests/lib/cmd-install-workbuddy.test.mjs +113 -0
- package/tests/lib/cmd-install-zcode.test.mjs +42 -0
- package/tests/lib/cmd-isolate.test.mjs +68 -0
- package/tests/lib/cmd-list.test.mjs +127 -0
- package/tests/lib/cmd-runtime.test.mjs +83 -0
- package/tests/lib/cmd-state-missing.test.mjs +65 -0
- package/tests/lib/cmd-state.test.mjs +365 -0
- package/tests/lib/cmd-sync-paths.test.mjs +84 -0
- package/tests/lib/cmd-validate-paths.test.mjs +90 -0
- package/tests/lib/config-loader.test.mjs +175 -0
- package/tests/lib/ensure-branch.test.mjs +59 -0
- package/tests/lib/execution-control-plane.test.mjs +168 -0
- package/tests/lib/execution-plan.test.mjs +474 -0
- package/tests/lib/guard-specs-merged.test.mjs +108 -0
- package/tests/lib/guard-tests-passing.test.mjs +112 -0
- package/tests/lib/guard-transitions.test.mjs +262 -0
- package/tests/lib/guard.test.mjs +611 -0
- package/tests/lib/hash.test.mjs +138 -0
- package/tests/lib/infer-workflow.test.mjs +161 -0
- package/tests/lib/install-git-hooks.test.mjs +20 -0
- package/tests/lib/marketplace-release-docs.test.mjs +31 -0
- package/tests/lib/minimality-discipline.test.mjs +37 -0
- package/tests/lib/model-profiles-docs.test.mjs +33 -0
- package/tests/lib/node20-compatibility.test.mjs +73 -0
- package/tests/lib/node20-test-entry.test.mjs +17 -0
- package/tests/lib/platform-runtime-distribution.test.mjs +150 -0
- package/tests/lib/raw-mode-smoke.test.mjs +42 -0
- package/tests/lib/sdd-overlay.test.mjs +118 -0
- package/tests/lib/spec-paths.test.mjs +80 -0
- package/tests/lib/state-loader.test.mjs +251 -0
- package/tests/lib/token-baseline.test.mjs +72 -0
- package/tests/lib/token-rules.test.mjs +94 -0
- package/tests/lib/verify-marketplace-release.test.mjs +128 -0
- package/tests/tsconfig.json +12 -0
- package/token-baseline.json +95 -0
- package/tsconfig.json +14 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# 构图法则(认知/感知/行为启发式)
|
|
2
|
+
|
|
3
|
+
> 这些法则决定 **WHAT to compose**——页面放什么、放多少、放在哪;
|
|
4
|
+
> 不决定 **how to render**——颜色、字体、阴影的渲染细节见其余 craft 规则。
|
|
5
|
+
|
|
6
|
+
## 感知:格式塔
|
|
7
|
+
|
|
8
|
+
- **接近性**:相关元素靠近、无关元素远离。用间距分组,不靠画框——边框越多页面越噪
|
|
9
|
+
(见 `anti-ai-slop.md` 七大罪 ⑤ AI 瓷砖)
|
|
10
|
+
- **相似性**:同类元素共享视觉属性(颜色、形状、尺寸),用户学一次即可迁移理解
|
|
11
|
+
- **闭合性**:大脑自动补全不完整图形——无 borders 仅有背景色分隔的卡片依然被读作卡片,
|
|
12
|
+
不必把每个容器都描出来
|
|
13
|
+
|
|
14
|
+
## 决策:希克定律
|
|
15
|
+
|
|
16
|
+
- 决策时间随选项数量对数增长:**每个决策点 ≤3 个选项**
|
|
17
|
+
- 选择过载杀死转化——5 个 CTA 并排 = 用户选择离开
|
|
18
|
+
- 手段:合并同类选项、低频选项收进"更多"、分步渐进呈现(见下方表单绑定)
|
|
19
|
+
|
|
20
|
+
## 记忆:米勒与考恩
|
|
21
|
+
|
|
22
|
+
- **米勒 7±2**:导航项 ≤7 个,超出则分组为下拉
|
|
23
|
+
- **考恩 4**:真实工作记忆容量约 4 组块——仪表盘 KPI 分组 ≤4 组,
|
|
24
|
+
更多则用 tab / 视图切换分层承载
|
|
25
|
+
|
|
26
|
+
## 动作:费茨定律
|
|
27
|
+
|
|
28
|
+
- 到达目标的时间 = f(距离 / 尺寸):**主 CTA 尺寸最大、距用户光标路径最近**
|
|
29
|
+
(桌面端通常在内容区右下)
|
|
30
|
+
- 破坏性操作(删除、退订)远离主路径,增加操作成本
|
|
31
|
+
- 贴屏边缘的按钮天然易达(光标可甩到边),通栏底部操作可利用此特性
|
|
32
|
+
|
|
33
|
+
## 行为:冯·雷斯托夫与多尔蒂
|
|
34
|
+
|
|
35
|
+
- **冯·雷斯托夫(隔离效应)**:每页一个突出元素——即 `../checklist.md` P1.1
|
|
36
|
+
"一个决断性亮点"。全部强调 = 没有强调
|
|
37
|
+
- **多尔蒂阈值**:系统反馈 <400ms 时交互才有"跟手感";
|
|
38
|
+
超过 400ms 必须给加载反馈(见 `state-coverage.md` 加载阈值表)
|
|
39
|
+
|
|
40
|
+
## 页面类型绑定
|
|
41
|
+
|
|
42
|
+
| 页面类型 | 主用法则 | 构图含义 |
|
|
43
|
+
|---------|---------|---------|
|
|
44
|
+
| 仪表盘 | 考恩 4 + 费茨 | KPI 分组 ≤4;主操作(新建/导出)最大且最近光标 |
|
|
45
|
+
| 表单 | 希克 + 渐进呈现 | 每步 ≤3 组字段;条件字段按选择展开;主提交按钮大且唯一 |
|
|
46
|
+
| 列表/表格 | 格式塔分组 | 用间距分组、行 hover 高亮;批量操作条仅选中后出现 |
|
|
47
|
+
| 定价/套餐对比 | 冯·雷斯托夫 | 推荐套餐单独高亮(边框 + 徽章 + 放大 CTA),禁止三档同时高亮 |
|
|
48
|
+
| 空态/错误态 | 多尔蒂 + 希克 | 即时反馈;引导动作 ≤2 个 |
|
|
49
|
+
|
|
50
|
+
## 一句话总结
|
|
51
|
+
|
|
52
|
+
> 法则决定放什么、放多少;craft 规则决定怎么画。两者缺一:
|
|
53
|
+
> 只有法则 = 正确但平庸;只有渲染 = 精致但无逻辑。
|
|
54
|
+
|
|
55
|
+
## 关联参考
|
|
56
|
+
|
|
57
|
+
- `../checklist.md` — P1.1 决断性亮点(冯·雷斯托夫)、P1.5 CTA 说明动作
|
|
58
|
+
- `state-coverage.md` — 多尔蒂阈值与加载阈值表
|
|
59
|
+
- `anti-ai-slop.md` — 80/20 灵魂法则(20% 独特选择往往就是那个冯·雷斯托夫元素)
|
|
60
|
+
- `typography-hierarchy.md` — 间距即层级(格式塔接近性的落地)
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# 五状态覆盖契约
|
|
2
|
+
|
|
3
|
+
> AI 设计最可靠的失败是只画了有数据态。
|
|
4
|
+
|
|
5
|
+
有数据态(Populated)只是五个状态之一。只演示"happy path"的原型无法验证产品逻辑完整性,
|
|
6
|
+
而真实世界的用户一定会遇到空屏、错误与极端数据。**每个页面、每个关键组件必须覆盖五状态。**
|
|
7
|
+
|
|
8
|
+
## 五个必备状态
|
|
9
|
+
|
|
10
|
+
| 状态 | 触发条件 | 必备内容 |
|
|
11
|
+
|------|---------|---------|
|
|
12
|
+
| **Loading 加载中** | 数据请求进行中 | 骨架屏(与真实布局同构)或 spinner;占位保住布局,不跳动 |
|
|
13
|
+
| **Empty 空态** | 数据为零(新用户 / 筛选无结果) | 插画或图标 + 一行解释 + 主行动按钮 |
|
|
14
|
+
| **Error 错误** | 请求失败 / 校验失败 / 无权限 | 发生了什么 + 为什么 + 怎么办 + 重试入口 |
|
|
15
|
+
| **Populated 有数据** | 正常数据 | 真实感业务数据、真实感数量(不是恰好 3 条) |
|
|
16
|
+
| **Edge 极端** | 极限数据 | 超长文本、超大数字、单条记录、满页(分页边界)、特殊字符 |
|
|
17
|
+
|
|
18
|
+
## 表单专属状态
|
|
19
|
+
|
|
20
|
+
表单在五状态之外额外覆盖三态:
|
|
21
|
+
|
|
22
|
+
- **untouched 未触碰**:初始态,无校验提示;主 CTA 禁用或可点按设计系统约定
|
|
23
|
+
- **dirty 已修改**:字段级校验反馈——错误色 + 文字说明,不能只靠颜色(无障碍要求)
|
|
24
|
+
- **submitted-pending 提交中**:按钮 loading 态防重复提交,表单整体只读
|
|
25
|
+
|
|
26
|
+
## 空状态构成
|
|
27
|
+
|
|
28
|
+
三要素缺一不可:
|
|
29
|
+
|
|
30
|
+
1. **插画/图标** — 内联 SVG,风格与页面一致(单色线稿优先,禁止 emoji)
|
|
31
|
+
2. **一行解释** — 说明为何为空:"暂无符合条件的工单",不是"暂无数据"
|
|
32
|
+
3. **主行动** — 引导下一步:"创建第一张工单",而非只有"刷新"
|
|
33
|
+
|
|
34
|
+
筛选后的空状态必须提供"清除筛选"入口。
|
|
35
|
+
|
|
36
|
+
## 错误必须回答的三个问题
|
|
37
|
+
|
|
38
|
+
- **发生了什么**:"无法连接服务器",不是"系统错误"
|
|
39
|
+
- **为什么**(已知时):"网络可能不稳定" / "该字段为必填项"
|
|
40
|
+
- **怎么办**:"请重试" / "请检查标红字段"
|
|
41
|
+
|
|
42
|
+
禁止向用户暴露技术堆栈;须保留错误 ID 供支持引用。
|
|
43
|
+
|
|
44
|
+
## 重试纪律
|
|
45
|
+
|
|
46
|
+
- 第 1 次重试:立即(用户手动触发)
|
|
47
|
+
- 自动重试:2s → 4s → 8s 退避
|
|
48
|
+
- 连续 3 次失败:停止自动重试,展示"请联系支持" + 错误 ID
|
|
49
|
+
- 长任务(上传 / 报表生成)须展示进度,不能只有 spinner
|
|
50
|
+
|
|
51
|
+
## 加载阈值
|
|
52
|
+
|
|
53
|
+
| 时长 | 策略 |
|
|
54
|
+
|------|------|
|
|
55
|
+
| 0–300ms | 不展示任何加载态(防闪烁) |
|
|
56
|
+
| 300ms–1s | 骨架屏(与真实内容布局同构) |
|
|
57
|
+
| 1s+ | 骨架 + spinner,或转入明确加载态 |
|
|
58
|
+
| 60s+ | 停止等待,转错误态并提供重试 |
|
|
59
|
+
|
|
60
|
+
## 测试矩阵模板
|
|
61
|
+
|
|
62
|
+
每页交付前逐格填写,作为原型验收项:
|
|
63
|
+
|
|
64
|
+
| 页面/组件 | Loading | Empty | Error | Populated | Edge |
|
|
65
|
+
|----------|---------|-------|-------|-----------|------|
|
|
66
|
+
| 订单列表 | ☐ 骨架屏 | ☐ 插画+创建入口 | ☐ 重试+错误ID | ☐ 47 条 | ☐ 标题 50 字 |
|
|
67
|
+
| KPI 仪表盘 | ☐ | ☐ | ☐ | ☐ | ☐ 数字过亿 |
|
|
68
|
+
| 新建表单 | — | — | ☐ 字段级+摘要 | ☐ | ☐ 备注 500 字 |
|
|
69
|
+
|
|
70
|
+
## ARIA 与状态切换
|
|
71
|
+
|
|
72
|
+
- 加载容器 `aria-busy="true"`,完成后置 `false`
|
|
73
|
+
- 动态注入的错误信息 `aria-live="polite"`(紧急错误用 `assertive`)
|
|
74
|
+
- 状态切换管理焦点:提交失败后焦点回到第一个错误字段;弹层打开后焦点移入弹层
|
|
75
|
+
- 禁止用 `alert()` 呈现错误
|
|
76
|
+
|
|
77
|
+
## 关联参考
|
|
78
|
+
|
|
79
|
+
- `../checklist.md` — P0/P1/P2 质量检查清单
|
|
80
|
+
- `accessibility-baseline.md` — ARIA 纪律与焦点管理细则
|
|
81
|
+
- `laws-of-ux.md` — 多尔蒂阈值(反馈 <400ms)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# 排版层级规则
|
|
2
|
+
|
|
3
|
+
层级决定三件事:**入口**(用户第一眼落在哪)、**节奏**(信息分块、有呼吸)、**张力**(主次形成视觉动势)。
|
|
4
|
+
|
|
5
|
+
## 两种失败模式
|
|
6
|
+
|
|
7
|
+
| 模式 | 症状 | 解法 |
|
|
8
|
+
|------|------|------|
|
|
9
|
+
| 扁平层级 | 所有文字大小接近,页面没有焦点 | 建立三级模型,拉大一级标题 |
|
|
10
|
+
| 噪声层级 | 字号过多互相打架,一页 8 种字号 | 收敛到三级,合并相近级别 |
|
|
11
|
+
|
|
12
|
+
## 三级工作模型
|
|
13
|
+
|
|
14
|
+
| 级别 | 承担 | 建议字号 | 字重 |
|
|
15
|
+
|------|------|---------|------|
|
|
16
|
+
| **一级** | h1 / hero 主标题 | 40–56px | 600 |
|
|
17
|
+
| **二级** | h2 / 分区标题 | 28–32px | 600 |
|
|
18
|
+
| **三级** | h3 / 卡片标题 | 18–20px | 600 |
|
|
19
|
+
|
|
20
|
+
正文 15–16px / 字重 400;辅助文字 13–14px。
|
|
21
|
+
相邻级别字号比 ≥1.25,否则层级不显。
|
|
22
|
+
|
|
23
|
+
## 细节规则
|
|
24
|
+
|
|
25
|
+
- **ALL CAPS 必加字距** — 全大写英文标签(eyebrow、tag、按钮)letter-spacing ≥0.06em。
|
|
26
|
+
这是最可靠的 AI-slop 信号之一:AI 生成的全大写标签几乎从不加字距。
|
|
27
|
+
中文无大小写之分,此规则仅约束英文标签。
|
|
28
|
+
- **Display 48px+ 负字距** — letter-spacing: -0.02em,大字需要收紧,否则显得松散。
|
|
29
|
+
- **行长 50–75ch** — 正文 `max-width: 65ch`;行过长回扫困难;卡片内说明可更短(45ch)。
|
|
30
|
+
- **三字重系统** — 400(正文)/ 550(强调,字体缺失时回退 500)/ 600(标题)。
|
|
31
|
+
不用 300(过细,B 端屏幕可读性差)与 700+(过重,噪声层级)。
|
|
32
|
+
- **禁止两端对齐** — `text-align: justify` 在中英混排中产生大词隙(河流效应),统一 `left`。
|
|
33
|
+
- **标题字体用 `var(--font-display)`** — 见 `../checklist.md` P0.2。
|
|
34
|
+
|
|
35
|
+
## 间距即层级
|
|
36
|
+
|
|
37
|
+
间距比字号更能建立层级:
|
|
38
|
+
|
|
39
|
+
- **区块间距**(section 之间):64–96px
|
|
40
|
+
- **元素间距**(区块内卡片/表单组之间):16–24px
|
|
41
|
+
- **行内间距**(label 与 input、图标与文字之间):4–8px
|
|
42
|
+
|
|
43
|
+
间距层级必须与信息层级一致:**区块 > 元素 > 行内**。
|
|
44
|
+
分不清段落边界时,问题往往不在字号,而在间距——见 `laws-of-ux.md` 格式塔接近性。
|
|
45
|
+
|
|
46
|
+
## 关联参考
|
|
47
|
+
|
|
48
|
+
- `../checklist.md` — P0.2 标题字体、P1.3 标题词数、P1.4 lead 宽度
|
|
49
|
+
- `anti-ai-slop.md` — 衬线误用(七大罪 ④)
|
|
50
|
+
- `laws-of-ux.md` — 格式塔接近性(间距即分组)
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
# Layouts(B 端 section 骨架库 · v0.18.0)
|
|
2
|
+
|
|
3
|
+
> 把 section 直接落入 `template.html` 的 `<main id="content">`。**不要从零写 section**——
|
|
4
|
+
> 选最接近的 layout,整段粘贴,再换文案。所有片段只用下方「class 契约」里列出的类,
|
|
5
|
+
> 结构元素一律带 `data-testid`(页面级 `P-{xx}-{slug}` / 场景级 `S-{nn}-{slug}`)。
|
|
6
|
+
> B 端导向:管理后台 / 表单 / 仪表盘 / 文档索引,而非 C 端营销落地页。
|
|
7
|
+
|
|
8
|
+
## Class 契约(inventory · 与 template.html 的 `<style>` 一一对应)
|
|
9
|
+
|
|
10
|
+
| 分组 | 类名 |
|
|
11
|
+
|------|------|
|
|
12
|
+
| 布局原语 | `section` `container` `stack` `row` `row-between` `rule` `grid-2` `grid-3` `grid-4` `grid-2-1` `grid-1-2` |
|
|
13
|
+
| 文字辅助 | `eyebrow` `lead` `num` `meta` |
|
|
14
|
+
| Hero | `hero` `hero-center` `hero-split` `hero-cta` |
|
|
15
|
+
| 按钮 | `btn` `btn-primary` `btn-secondary` `btn-ghost` |
|
|
16
|
+
| 卡片/特性/数据 | `card` `card-flat` `feature` `feature-mark` `stat` `stat-num` `stat-label` |
|
|
17
|
+
| 引言 | `quote` `quote-mark` `quote-author` `pull` |
|
|
18
|
+
| 徽标 | `pill` `tag` |
|
|
19
|
+
| 表单 | `field` `input` `textarea` |
|
|
20
|
+
| 表格 | `ds-table` `num-col` |
|
|
21
|
+
| 占位/日志 | `ph-img` `log-row` |
|
|
22
|
+
| 页面框架 | `topnav` `pagefoot` |
|
|
23
|
+
|
|
24
|
+
**硬规则**:如果你想用一个不在这张表里的 class,**先在 `<style>` 里把它定义出来**。
|
|
25
|
+
绝不允许凭空发明一个没有 CSS 支撑的全局类。宁可定义,不可漂移。
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 1. hero(居中)
|
|
30
|
+
|
|
31
|
+
**use-when**:页面开场,一句话主张 + 两个动作。概览页 / 文档索引页首选。
|
|
32
|
+
|
|
33
|
+
```html
|
|
34
|
+
<section class="hero section" data-testid="P-01-hero">
|
|
35
|
+
<div class="container hero-center">
|
|
36
|
+
<p class="eyebrow">模块名 · 分组</p>
|
|
37
|
+
<h1>一句话主张,不超过 14 个字</h1>
|
|
38
|
+
<p class="lead">一句补充说明,点出对使用者的价值,不堆砌形容词。</p>
|
|
39
|
+
<div class="hero-cta">
|
|
40
|
+
<a class="btn btn-primary" href="#">主操作</a>
|
|
41
|
+
<a class="btn btn-secondary" href="#">次要操作</a>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</section>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**纪律**:h1 ≤14 字;eyebrow 用作面包屑式分组;CTA 最多两个,主次分明。
|
|
48
|
+
|
|
49
|
+
## 2. hero-split(左文右图)
|
|
50
|
+
|
|
51
|
+
**use-when**:需要展示界面截图 / 示意图的开场。左文案,右 16:9 占位图。
|
|
52
|
+
|
|
53
|
+
```html
|
|
54
|
+
<section class="hero section" data-testid="P-02-hero-split">
|
|
55
|
+
<div class="container hero-split">
|
|
56
|
+
<div class="stack">
|
|
57
|
+
<p class="eyebrow">能力分组</p>
|
|
58
|
+
<h1>左栏主张,简短有力</h1>
|
|
59
|
+
<p class="lead">右栏放界面截图或流程示意,文图各占一半。</p>
|
|
60
|
+
<div class="hero-cta">
|
|
61
|
+
<a class="btn btn-primary" href="#">进入</a>
|
|
62
|
+
<a class="btn btn-ghost" href="#">了解文档</a>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
<div class="ph-img" data-testid="P-02-shot">界面截图占位 16:9</div>
|
|
66
|
+
</div>
|
|
67
|
+
</section>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**纪律**:图用 `ph-img`(16:9)占位;不要把营销插画放进 B 端后台。
|
|
71
|
+
|
|
72
|
+
## 3. features(三联特性)
|
|
73
|
+
|
|
74
|
+
**use-when**:并列说明 3 项能力 / 字段 / 入口。
|
|
75
|
+
|
|
76
|
+
```html
|
|
77
|
+
<section class="section" data-testid="P-03-features">
|
|
78
|
+
<div class="container grid-3">
|
|
79
|
+
<div class="feature">
|
|
80
|
+
<div class="feature-mark" aria-hidden="true">
|
|
81
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M4 6h16M4 12h16M4 18h10"/></svg>
|
|
82
|
+
</div>
|
|
83
|
+
<h3>特性一</h3>
|
|
84
|
+
<p>一句话说明这项能力解决什么。</p>
|
|
85
|
+
</div>
|
|
86
|
+
<div class="feature">
|
|
87
|
+
<div class="feature-mark" aria-hidden="true">
|
|
88
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="8"/><path d="M12 8v4l3 2"/></svg>
|
|
89
|
+
</div>
|
|
90
|
+
<h3>特性二</h3>
|
|
91
|
+
<p>一句话说明这项能力解决什么。</p>
|
|
92
|
+
</div>
|
|
93
|
+
<div class="feature">
|
|
94
|
+
<div class="feature-mark" aria-hidden="true">
|
|
95
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 13l4 4L19 7"/></svg>
|
|
96
|
+
</div>
|
|
97
|
+
<h3>特性三</h3>
|
|
98
|
+
<p>一句话说明这项能力解决什么。</p>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
</section>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**纪律**:图标统一单线 SVG(`stroke-width="1.6"`、`stroke="currentColor"`)。
|
|
105
|
+
**不要给每个标题都配图标**——三个一行可以,满屏图标即噪声。
|
|
106
|
+
|
|
107
|
+
## 4. stats(数据行)
|
|
108
|
+
|
|
109
|
+
**use-when**:用真实数字建立信任 / 概览。**只用真实数字,不臆造指标。**
|
|
110
|
+
|
|
111
|
+
```html
|
|
112
|
+
<section class="section" data-testid="P-04-stats">
|
|
113
|
+
<div class="container grid-3">
|
|
114
|
+
<div class="stat"><span class="stat-num num">1,284</span><span class="stat-label">本月处理工单</span></div>
|
|
115
|
+
<div class="stat"><span class="stat-num num">99.2%</span><span class="stat-label">SLA 达成率</span></div>
|
|
116
|
+
<div class="stat"><span class="stat-num num">3.4h</span><span class="stat-label">平均响应时长</span></div>
|
|
117
|
+
</div>
|
|
118
|
+
</section>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**纪律**:数字用 `num`(等宽 tabular-nums);一行 ≤3 个;**不要编造指标**——没有真实来源就不放 stats。
|
|
122
|
+
|
|
123
|
+
## 5. quote(引言)
|
|
124
|
+
|
|
125
|
+
**use-when**:一句用户 / 业务方背书,调节节奏。**一页一条,绝不连放两条。**
|
|
126
|
+
|
|
127
|
+
```html
|
|
128
|
+
<section class="section" data-testid="P-05-quote">
|
|
129
|
+
<div class="container">
|
|
130
|
+
<figure class="quote" style="margin:0">
|
|
131
|
+
<div class="quote-mark" aria-hidden="true">“</div>
|
|
132
|
+
<p>这套流程把跨部门对齐从两天压到了半小时。</p>
|
|
133
|
+
<figcaption class="quote-author">—— 某业务负责人</figcaption>
|
|
134
|
+
</figure>
|
|
135
|
+
</div>
|
|
136
|
+
</section>
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**纪律**:每页最多一条;不要 quote 紧跟 quote;用真实归属,不写假名人名言。
|
|
140
|
+
|
|
141
|
+
## 6. cta-strip(行动召唤条)
|
|
142
|
+
|
|
143
|
+
**use-when**:页面收口,一个决定性动作。留白要足。
|
|
144
|
+
|
|
145
|
+
```html
|
|
146
|
+
<section class="section" data-testid="P-06-cta">
|
|
147
|
+
<div class="container hero-center">
|
|
148
|
+
<h2>准备好开始了吗</h2>
|
|
149
|
+
<p class="lead">一个决定性诉求,一句话讲清下一步。</p>
|
|
150
|
+
<div class="hero-cta">
|
|
151
|
+
<a class="btn btn-primary" href="#">立即开始</a>
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
</section>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**纪律**:只放一个主按钮;上下留白用 `--section-pad`,别挤。
|
|
158
|
+
|
|
159
|
+
## 7. log(列表 / 变更记录)
|
|
160
|
+
|
|
161
|
+
**use-when**:变更记录 / 操作流水 / 文档条目列表。日期 + 内容,**边框只在上方,不围一圈。**
|
|
162
|
+
|
|
163
|
+
```html
|
|
164
|
+
<section class="section" data-testid="P-07-log">
|
|
165
|
+
<div class="container stack">
|
|
166
|
+
<h2>变更记录</h2>
|
|
167
|
+
<div>
|
|
168
|
+
<div class="log-row"><span class="num">2026-07-25</span><span class="body">上线工单批量导出。<span class="tag">feature</span></span></div>
|
|
169
|
+
<div class="log-row"><span class="num">2026-07-18</span><span class="body">修复 SLA 统计口径偏差。<span class="tag">fix</span></span></div>
|
|
170
|
+
<div class="log-row"><span class="num">2026-07-10</span><span class="body">新增仪表盘暗色主题。<span class="tag">feature</span></span></div>
|
|
171
|
+
</div>
|
|
172
|
+
</div>
|
|
173
|
+
</section>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**纪律**:日期用 `num`;状态用 `tag`;行间分隔靠 `log-row` 的 top border,**不要给整列加外框**。
|
|
177
|
+
|
|
178
|
+
## 8. pricing(对比表)
|
|
179
|
+
|
|
180
|
+
**use-when**:套餐 / 规格 / 字段对比。细边框、等宽数字、高亮一列。
|
|
181
|
+
|
|
182
|
+
```html
|
|
183
|
+
<section class="section" data-testid="P-08-pricing">
|
|
184
|
+
<div class="container">
|
|
185
|
+
<table class="ds-table">
|
|
186
|
+
<thead>
|
|
187
|
+
<tr><th>规格</th><th class="num-col">席位</th><th class="num-col">存储</th><th>支持</th></tr>
|
|
188
|
+
</thead>
|
|
189
|
+
<tbody>
|
|
190
|
+
<tr><td>团队版 <span class="pill">推荐</span></td><td class="num-col">50</td><td class="num-col">200GB</td><td>工作日</td></tr>
|
|
191
|
+
<tr><td>企业版</td><td class="num-col">不限</td><td class="num-col">2TB</td><td>7×24</td></tr>
|
|
192
|
+
</tbody>
|
|
193
|
+
</table>
|
|
194
|
+
</div>
|
|
195
|
+
</section>
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**纪律**:边框走 hairline(`ds-table` 已定义);数字列右对齐 + `num-col`;**只高亮一列**(用 `pill` 标注推荐项)。
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 页面类型节奏表(B 端)
|
|
203
|
+
|
|
204
|
+
| 页面类型 | section 节奏(自上而下) |
|
|
205
|
+
|----------|--------------------------|
|
|
206
|
+
| 管理后台列表页 | `hero-center` → `log`/列表(`ds-table`) → `stats` 汇总 |
|
|
207
|
+
| 表单页 | `hero-center` → 表单分组(`field`/`input`/`textarea`) → `cta-strip` |
|
|
208
|
+
| 仪表盘 | `stats` → `grid-2-1` 图表区 → `log` 最近动态 |
|
|
209
|
+
| Landing / 概览 | `hero` → `features` → `stats`/`quote` → `cta-strip` |
|
|
210
|
+
| 文档索引 | `hero-center` → `log` 条目列表 → `cta-strip` |
|
|
211
|
+
|
|
212
|
+
## 抗疲劳规则(anti-fatigue)
|
|
213
|
+
|
|
214
|
+
**两个 stats 行连放、两个 features 三联连放——都会造成视觉疲劳。必须交替。**
|
|
215
|
+
节奏靠「数据 → 文字 → 列表 → 图」的强弱交替来维持;连续同型 section 是默认错误。
|
|
216
|
+
|
|
217
|
+
## 起飞前检查清单(pre-flight)
|
|
218
|
+
|
|
219
|
+
- [ ] 通读 `template.html` 直到 `</style>`,确认要用的类都已在契约里。
|
|
220
|
+
- [ ] **先定 section 清单,再写文案**(结构先于文字)。
|
|
221
|
+
- [ ] 每屏单一 accent,使用处 ≤2(主按钮 + 一处强调,够了)。
|
|
222
|
+
- [ ] 所有结构元素带 `data-testid`;只引用契约内的类,缺类先定义再用。
|
|
223
|
+
- [ ] stats 全为真实数字;quote 每页一条;同型 section 不连放。
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Prototype 内部编排流程(v0.15.0,v0.18.0 工艺升级)
|
|
2
|
+
|
|
3
|
+
> 本 skill 主代理只编排不实施。所有非交互步骤(探查/绘制/评审/设计系统产出)派子代理,遵循 §18.1 subagent 结构化交接协议(status/deliverable/blockers/outstanding_questions/summary)。人工评审/路由由主代理用阻塞问题工具执行(subagent 不能 AskUserQuestion)。
|
|
4
|
+
|
|
5
|
+
## 子代理决策点中继(v0.21.0,§22.1.1 stop-and-resume)
|
|
6
|
+
|
|
7
|
+
子代理(scout / builder)**没有 AskUserQuestion**。当其在决策点经 `SendMessage(to: "main")` 发来结构化提问请求(`<agent-message>` 含 `{ question, why, options[] }`)并停止时,主代理**负责中继**:
|
|
8
|
+
|
|
9
|
+
1. **收通知识别**:经 `task-notification` 收到子代理提问请求(**不要用 TaskOutput 轮询**,对齐 §22.2 等待范式)。识别其为「中继请求」而非终态交接(子代理末条消息会明示「已发问、等待回传」)。
|
|
10
|
+
2. **代问用户**:用 `AskUserQuestion` 把问题转给 LT(包装措辞、给选项);属主代理权限内的技术决策可自行拍板。并行多子代理提问可**合并为一个多问弹窗**一次问完。
|
|
11
|
+
3. **回传即唤醒**:拿到答案后 `SendMessage(to: <agentId>)` 回传——该调用**自动 resume 已停止的子代理**带答案续跑。
|
|
12
|
+
|
|
13
|
+
**请求-应答匹配纪律(实证暴露的真风险,必守)**:
|
|
14
|
+
- 维护每子代理的「未决提问请求」台账,**仅回传子代理实际提出过的提问**;**不要自发追加问题**再把答案错配回传(实录中主代理曾把无主答案回传给未发追问的子代理,被子代理按「正确优先」拒绝)。
|
|
15
|
+
- 回传时附上下文(「这是你关于 X 提问的回答:Y」),便于子代理校验对应性。
|
|
16
|
+
- harness 不支持 resume 时,降级为读子代理 `blocked` 返回 + 携答案**重新派发**。
|
|
17
|
+
|
|
18
|
+
## 步骤 ① 环境探查 + 方案设计(子代理)
|
|
19
|
+
|
|
20
|
+
派发插件 agent `prototype-env-scout`(只读,tools 硬限 Read/Bash/Grep/Glob),传入:PRD 路径、config 的 `prototype.designSystem`/`prototype.entry`、当前 git 分支。简报写在 response,主代理按需落盘。
|
|
21
|
+
|
|
22
|
+
子代理探查并产出环境简报:
|
|
23
|
+
- **设计系统现状**:`design-system.md` 是否存在?9 段 schema 完整度?缺失哪些段?
|
|
24
|
+
- **原型仓库分支**:当前分支、是否已有 `prototype/`、与 PRD 版本分支是否对齐
|
|
25
|
+
- **PRD 版本**:`iteration_version`、冻结状态、UI 功能点清单(§4/§7)
|
|
26
|
+
- **已有页面**:现有 prototype/ 页面/组件清单(迭代时)
|
|
27
|
+
- **原型方案设计建议**:页面结构、组件复用、导航 flow 草案
|
|
28
|
+
- **差异化方向(v0.18.0)**:产出 2-3 个差异化方向(布局策略 / 视觉侧重 / 风险权衡),附推荐方向 + 理由
|
|
29
|
+
|
|
30
|
+
子代理按 §18.1 返回。若发现 `.team-flow/design-system/` 缺失 → 在 `outstanding_questions`/`blockers` 标注,主代理转入设计系统创建(见下)。
|
|
31
|
+
|
|
32
|
+
## 步骤 ①b 设计系统创建(条件,调用独立 skill,v0.19.0)
|
|
33
|
+
|
|
34
|
+
环境简报显示设计系统缺失/不完整时:
|
|
35
|
+
1. 主代理调用 `/team-flow:design-system` skill(独立入口,用户主导交互创建)。
|
|
36
|
+
2. design-system skill 内部执行:需求收集(≤5 个预填推荐问题)→ 确定性 token 派生 → 草稿生成(base.md + 变体)→ 预览生成(preview.html)→ 用户评审确认 → 落盘 `.team-flow/design-system/` + guard 校验。
|
|
37
|
+
3. 创建完成后回 ① 补齐环境简报。
|
|
38
|
+
|
|
39
|
+
> **v0.19.0 变更**:①b 从"内部派 design-system-architect 种子代理"升级为"调用独立 design-system skill"。architect 迁移为 design-system skill 的内部执行引擎。存储从 `prototype/design-system.md` 迁移到 `.team-flow/design-system/`(base.md + 变体)。
|
|
40
|
+
|
|
41
|
+
## 步骤 ② 方案评审 + 人工评审(主代理)
|
|
42
|
+
|
|
43
|
+
主代理评审 ① 的环境简报 + 原型方案设计,然后用 AskUserQuestion 与 LT 确认:
|
|
44
|
+
- **方向选定(v0.18.0)**:呈现 2-3 个差异化方向对比,LT 选定一个锁定
|
|
45
|
+
- 原型方案(页面结构/导航)是否认可
|
|
46
|
+
- 设计系统/分支/版本是否明确
|
|
47
|
+
- 是否进入绘制
|
|
48
|
+
|
|
49
|
+
LT 确认后进入 ③。**confirmed_plan 序列化**:将 scout 简报的选定方向(布局策略/视觉侧重)+「Prototype Plan」段(页面清单/组件清单/导航流)+ 人工确认结论(含明确的设计系统路径/分支/版本)拼为 `confirmed_plan`,作为 ③ prototype-builder 的入参。
|
|
50
|
+
|
|
51
|
+
## 步骤 ③ 原型绘制(子代理)
|
|
52
|
+
|
|
53
|
+
派发插件 agent `prototype-builder`(有 Write),传入:已确认的原型方案(含选定方向)、`design-system.md` 路径、目标分支/版本、PRD 路径。
|
|
54
|
+
|
|
55
|
+
**prompt 组装顺序契约(v0.18.0)**:`design-system.md → references/template.html → references/layouts.md → references/checklist.md → references/craft/(按页面类型选择注入)→ PRD`。craft 注入策略:仪表盘→laws-of-ux+state-coverage;表单→state-coverage+accessibility-baseline;列表→typography-hierarchy;通用→anti-ai-slop(始终注入)。
|
|
56
|
+
|
|
57
|
+
prototype-builder **从种子模板组合**(template.html + layouts.md 骨架),先报 section 列表,再填充真实文案,P0/P1/P2 自检后提交。零外部依赖、复用设计系统 token、禁止内联样式漂移。按 §18.1 返回 deliverable = prototype/ 入口绝对路径。
|
|
58
|
+
|
|
59
|
+
**主代理严禁在此步直接 Write/Edit 原型文件。**
|
|
60
|
+
|
|
61
|
+
**交接后产物校验(v0.20.0,defense in depth,设计 §22.1)**:收到 builder 交接、**派 reviewer 之前**,主代理**不信 `status=done` 字面值**,先机械校验入口产物真实落盘:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
test -f <prototype_path>/index.html && test -s <prototype_path>/index.html && echo OK
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
- `OK` → 进入 ④ 评审。
|
|
68
|
+
- 缺失/为空(builder 谎报 done 或中途耗尽预算)→ **不派 reviewer(避免对空目录空转评审)**,`SendMessage` resume builder 续写(指出缺失文件),或按 builder 返回的 `blockers` 裁决。
|
|
69
|
+
- 此校验与 builder 的 Deliverable Hard Gate 互为冗余:即便个别 agent 未守闸门谎报 done,编排层仍在此截断缺陷向下游传导。
|
|
70
|
+
|
|
71
|
+
## 步骤 ④ 原型评审(子代理)
|
|
72
|
+
|
|
73
|
+
派发插件 agent `prototype-reviewer`(只读,独立上下文),**传入:`prd_path`、`prototype_path`(及当前轮次 N)**,执行:
|
|
74
|
+
- PRD 6 维度(D1-D6,D6 含五状态契约)
|
|
75
|
+
- **P0 工艺机械检查(v0.18.0)**:裸 hex / 靛蓝黑名单 / emoji / 填充文案 / scrollIntoView / data-testid / accent 超限——P0 违规 = Critical
|
|
76
|
+
- **Craft Quality 4 席 rubric(v0.18.0)**:工艺(×0.4)+品牌(×0.2)+无障碍(×0.2)+文案(×0.2) 加权合成
|
|
77
|
+
|
|
78
|
+
报告写 response,主代理落盘到 `prd/vN/prototype-auto-review.md`。
|
|
79
|
+
|
|
80
|
+
判定(v0.18.0 升级):
|
|
81
|
+
- **PASS**:Critical=0 且 Important=0 且 craft 合成 ≥6.0
|
|
82
|
+
- **PASS_WITH_WARNINGS**:Critical=0 且(Important>0 或 craft 合成 <6.0),无未清 must-fix
|
|
83
|
+
- **FAIL**:Critical>0(含 P0 违规)或有未清 must-fix
|
|
84
|
+
|
|
85
|
+
## 步骤 ⑤ 循环编排(主代理)
|
|
86
|
+
|
|
87
|
+
- FAIL → 主代理把不一致项交给 prototype-builder 修正(回 ③),重新 ④ 评审,**≤3 轮**。
|
|
88
|
+
- **收敛检测**:连续两轮不一致项集合无缩小(修正无效/误报死循环)→ 立即转人工,不等满 3 轮。
|
|
89
|
+
- PASS / PASS_WITH_WARNINGS → 进入 ⑥。
|
|
90
|
+
|
|
91
|
+
## 步骤 ⑥ 人工评审路由(主代理)
|
|
92
|
+
|
|
93
|
+
主代理用 AskUserQuestion 呈现评审结论 + 争议项,LT 选择:
|
|
94
|
+
- **PRD 有问题** → 回 orchestrator S2 修订 PRD(**vN 内修订 + 变更履历,非升版**;见 feedback-loops 设计)→ PRD 更新后再回 ① 更新原型。**独立调用 fallback**(非 orchestrator 触发时):无 S2 可回,直接提示 LT 修订 `prd/vN/prd.md` 后重入本 skill。
|
|
95
|
+
- **原型需调整**(美观/体验/品牌/信息密度等自动评审查不到的维度)→ 回 ③ 派 prototype-builder 实施调整
|
|
96
|
+
- **通过** → 冻结:PRD frontmatter `frozen: true`(frozen_downstream),prototype 定版
|
|
97
|
+
|
|
98
|
+
## 子代理阻断处理(§18.1)
|
|
99
|
+
|
|
100
|
+
- 子代理返回 `done_with_questions` → 主代理批量确认 `outstanding_questions`(可合并为一次 AskUserQuestion)。
|
|
101
|
+
- 子代理返回 `blocked` → 主代理裁决 `blockers[]` 后续跑/重启该子代理(如设计系统缺失、PRD 未冻结等阻断)。
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
:root{
|
|
2
|
+
/* A1-identity:由 design-system.md 渲染覆盖,此处为骨架占位 */
|
|
3
|
+
--color-primary: #c96442; /* 占位,渲染时替换为品牌主色 */
|
|
4
|
+
--color-neutral-900: #1a1916;
|
|
5
|
+
--bg: #fafaf7; --surface: #ffffff; --fg: #1a1916; --muted: #6b6964; --border: #e8e5df;
|
|
6
|
+
--accent: #c96442;
|
|
7
|
+
--font-display: 'Iowan Old Style', Charter, Georgia, serif;
|
|
8
|
+
--font-body: -apple-system, 'Segoe UI', system-ui, sans-serif;
|
|
9
|
+
/* A2-derived:由 color-mix 公式派生 */
|
|
10
|
+
--accent-hover: color-mix(in oklab, var(--accent), black 8%);
|
|
11
|
+
--accent-active: color-mix(in oklab, var(--accent), black 14%);
|
|
12
|
+
/* B-slot 别名层 */
|
|
13
|
+
--fg-2: var(--fg); --meta: var(--muted); --border-soft: var(--border);
|
|
14
|
+
/* structure */
|
|
15
|
+
--space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px;
|
|
16
|
+
--radius-1: 4px; --radius-2: 8px;
|
|
17
|
+
--font-base: 16px;
|
|
18
|
+
/* 由 design-system.md 渲染;修改走 design-system,不在此硬编码新值 */
|
|
19
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Design System(已迁移到 .team-flow/design-system/,v0.19.0)
|
|
2
|
+
|
|
3
|
+
> **v0.19.0 变更**:设计系统存储位置从 `prototype/design-system.md` 迁移到 `.team-flow/design-system/`(base.md + 变体文件)。
|
|
4
|
+
> 请使用 `/team-flow:design-system` skill 创建和管理设计系统。
|
|
5
|
+
> 本文件仅作迁移提示占位,不再作为 token 真相源。
|
|
6
|
+
>
|
|
7
|
+
> 新位置:`.team-flow/design-system/base.md`(品牌共享层)+ `b-end.md` / `c-end.md`(端变体)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="zh">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Prototype · {project}</title>
|
|
7
|
+
<link rel="stylesheet" href="assets/design-tokens.css">
|
|
8
|
+
<style>/* 页面级仅做布局骨架;组件样式走 design-system tokens */</style>
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<nav id="nav"><!-- 全局导航:链接各页面 --></nav>
|
|
12
|
+
<main id="app"><!-- 页面内容容器 --></main>
|
|
13
|
+
<!-- Tweaks 控件:替代云端工具栏,纯本地 -->
|
|
14
|
+
<div id="tweaks">
|
|
15
|
+
<label>主题 <select id="theme"><option>light</option><option>dark</option></select></label>
|
|
16
|
+
<label>密度 <input type="range" id="density" min="0" max="2" value="1"></label>
|
|
17
|
+
</div>
|
|
18
|
+
<script>/* 页面内交互,无远程依赖。tweaks 控件用原生 JS + localStorage */</script>
|
|
19
|
+
</body>
|
|
20
|
+
</html>
|