@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,70 @@
|
|
|
1
|
+
# Blindspot Pass
|
|
2
|
+
|
|
3
|
+
The interview machinery in this skill assumes the user can evaluate what it asks. On territory the user doesn't know, that assumption fails: questions extract guesses, not requirements. The blindspot pass converts the user's unknown unknowns into known unknowns — it maps the decision surface of the flagged territory so the user chooses among options they can now evaluate, instead of generating answers from nothing.
|
|
4
|
+
|
|
5
|
+
A blindspot pass is a decision map, not a tutorial. Test for every item: it must end in something the user will decide, delegate, or explicitly defer during this brainstorm. An item that feeds no decision is domain trivia — cut it.
|
|
6
|
+
|
|
7
|
+
## Trigger
|
|
8
|
+
|
|
9
|
+
Two signals arm the pass:
|
|
10
|
+
|
|
11
|
+
- **Opening signal** — the user explicitly flags missing working knowledge of the domain or the territory the topic touches: "I know nothing about X", "never touched the auth modules", "I don't know what's possible here", "I don't know what I should be asking".
|
|
12
|
+
- **Mid-dialogue signal** — two consecutive answers show the user *cannot evaluate* the question's substance: "I don't know", "whatever you think", "you decide" in response to questions that need domain judgment.
|
|
13
|
+
|
|
14
|
+
**Can't-evaluate vs. hasn't-decided — the guard against over-firing.** A user who understands the options but hasn't picked one needs the normal interview, not a teaching pass. Offer only when the signal shows the user cannot weigh the options at all. Offering a blindspot pass to a domain expert who is merely undecided is the failure mode; when the signal is ambiguous, keep interviewing.
|
|
15
|
+
|
|
16
|
+
## The gate
|
|
17
|
+
|
|
18
|
+
The gate is **territory-scoped, not conversation-wide**. Questions about the user's own problem, users, evidence, and priorities proceed normally — the user is the authority on those. The gate fires only before the first substantive question *into the flagged territory* (the domain or system area the user cannot evaluate).
|
|
19
|
+
|
|
20
|
+
Never silently switch into teaching. The offer is a blocking question (Interaction Rule 4), asked once per flagged territory. If the user declines, do not re-offer for that territory — fill gaps with recommended defaults recorded as explicit assumptions, per the normal rigor-probe discipline.
|
|
21
|
+
|
|
22
|
+
**Non-interactive degradation:** in a pipeline or headless run where no user can answer, never fire the offer — treat flagged territory exactly like a declined offer (recommended defaults recorded as explicit assumptions) and continue.
|
|
23
|
+
|
|
24
|
+
## Offer
|
|
25
|
+
|
|
26
|
+
Use this wording, substituting the territory:
|
|
27
|
+
|
|
28
|
+
> Part of this sits in territory you've flagged as unfamiliar (<territory>). I can map the decision surface first — the decisions you'll face there, the realistic options for each, and what I'd default to — so you're choosing rather than guessing. Or we keep going with questions and I fill gaps with defaults recorded as assumptions. Which do you prefer?
|
|
29
|
+
|
|
30
|
+
Two options: **Map the territory first** / **Proceed with questions** (defaults become assumptions).
|
|
31
|
+
|
|
32
|
+
## Building the map
|
|
33
|
+
|
|
34
|
+
Ground it before writing it:
|
|
35
|
+
|
|
36
|
+
- **In-repo territory** (a module, subsystem, or pattern in this codebase): use the Phase 1.1 grounding — the scout's dossier and targeted reads. If the scout has not returned yet, wait for it or read the relevant area directly; do not map in-repo territory from model knowledge alone.
|
|
37
|
+
- **External domain** (a technology, practice, or field outside the repo): research with whatever web tools are reachable. When none are, model knowledge is allowed, but label each such item **Unverified — from model knowledge, not checked against current sources**.
|
|
38
|
+
|
|
39
|
+
**The territory closes questions the user should never be asked.** Before an item goes on the map, check whether the codebase or sources already answer it — if so, it is not a decision: show the question and the found answer with its citation as settled ground, not as an option menu. The map holds only what genuinely needs the user's judgment. But a question closed off-screen isn't closed — territory-answered items are shown, never silently resolved.
|
|
40
|
+
|
|
41
|
+
While grounding, hunt hazards specifically: things that bite silently (wrong-by-default data, filters that pass bad rows, escaping that corrupts output), unwritten conventions the code enforces that no doc states, and half-built or reverted prior attempts at the same job — the reason a prior attempt died is usually the landmine.
|
|
42
|
+
|
|
43
|
+
The map is **3-7 items**, delivered in chat. Each item is a **decision** the user will face or a **hazard** that constrains one, in at most 4 lines — an item that runs longer has started teaching instead of framing the decision; cut it back:
|
|
44
|
+
|
|
45
|
+
- what the decision or hazard is, in the user's vocabulary — when a term of art is unavoidable, define it and name what knowing it unlocks the user to decide
|
|
46
|
+
- why it matters *for this topic* — tie it to something the user said, not to the domain in general; a hazard states what it changes about the task
|
|
47
|
+
- decisions only: the realistic options (2-4), one clause each on the trade-off that matters here — list only options you would defend if the user picked them; a menu padded with options the map itself rules out is a strawman, not a choice. An option you ruled out belongs in why-it-matters as one clause ("subdomain isolation is closed — single-domain config"), never in the menu
|
|
48
|
+
- decisions only: the recommended default, stated plainly
|
|
49
|
+
|
|
50
|
+
A hazard is not a vote — it gets no option menu and no default. When a hazard forces a choice among genuinely viable mitigations, that choice is its own decision item and the hazard is its why-it-matters.
|
|
51
|
+
|
|
52
|
+
The highest-stakes item earns first placement, not extra length — depth belongs in the walk-through after the user selects it, not in the map.
|
|
53
|
+
|
|
54
|
+
Order items by how much the user's answer would change the product shape — architecture-changing decisions first, hazards and reversible choices last. Do not pad to 7; a territory with three real decisions gets three items.
|
|
55
|
+
|
|
56
|
+
## Re-entering the dialogue
|
|
57
|
+
|
|
58
|
+
After the map, ask **one** multi-select blocking question (a legitimate Rule 3 compatible set): *"Which of these do you want to walk through now? Anything unselected takes the recommended default, recorded as an explicit assumption."*
|
|
59
|
+
|
|
60
|
+
Then:
|
|
61
|
+
|
|
62
|
+
- **Selected decisions** — walk through one per turn as informed single-select menus. Post-pass, menus over mapped options are the right form even where Rule 5 would normally prefer open-ended: the options no longer steer, they recall what was just taught.
|
|
63
|
+
- **Unselected decisions and hazards** — record the recommended default (or the hazard's constraint) as an explicit assumption, the same way rigor-probe uncertainty is recorded: in the Product Contract on the software route, in the synthesis on the universal route.
|
|
64
|
+
- **"I want to actually learn this one"** — offer a handoff to the `ce-explain` skill for that item (offer, don't auto-fire); the brainstorm resumes when they return or continues with the default meanwhile.
|
|
65
|
+
|
|
66
|
+
The pass never resolves decisions by itself and never replaces the dialogue. It runs once, converts blindspots into questions the user can answer, and the normal flow — rigor probes, approaches, synthesis — continues on informed ground.
|
|
67
|
+
|
|
68
|
+
## Universal route
|
|
69
|
+
|
|
70
|
+
The pass applies unchanged on the non-software route (an unfamiliar craft, market, or process — "I need to grade this video but don't know what color grading is"). Grounding is web research or labeled model knowledge; delegated defaults land as named assumptions in the wrap-up synthesis instead of a Product Contract.
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
# Brainstorm Sections
|
|
2
|
+
|
|
3
|
+
This reference describes what makes a great PRD document (产品需求文档)
|
|
4
|
+
produced by `ce-brainstorm`.
|
|
5
|
+
It does NOT prescribe how the doc looks on the page — rendering is handled by
|
|
6
|
+
the format-specific references (`markdown-rendering.md`, `html-rendering.md`).
|
|
7
|
+
|
|
8
|
+
## The outcome
|
|
9
|
+
|
|
10
|
+
A great brainstorm produces the PRD document (业务要件) that defines **WHAT** to build.
|
|
11
|
+
`ce-plan` then reads the PRD and produces an **independent implementation plan** (实施方案) that defines **HOW** to build it.
|
|
12
|
+
The PRD and plan are separate documents in the same `prd/vN/` directory.
|
|
13
|
+
|
|
14
|
+
The PRD enables three audiences to act:
|
|
15
|
+
|
|
16
|
+
- **The planning agent** (`ce-plan` or a human) produces an implementation
|
|
17
|
+
plan based on the PRD, without inventing user behavior, scope boundaries, or success
|
|
18
|
+
criteria — the brainstorm answered those.
|
|
19
|
+
- **The reviewer** sees the framing choices, distinguishes pinned from open,
|
|
20
|
+
and catches scope gaps before planning.
|
|
21
|
+
- **The future reader** traces why the proposed thing matters, who it's for,
|
|
22
|
+
and what success looks like.
|
|
23
|
+
|
|
24
|
+
Sections earn their place by serving one of these audiences. Omit padding.
|
|
25
|
+
|
|
26
|
+
## PRD skeleton contract
|
|
27
|
+
|
|
28
|
+
New `ce-brainstorm` outputs follow the PRD artifact contract:
|
|
29
|
+
|
|
30
|
+
- **Path:** `prd/vN/prd.md` (N is the iteration version number, e.g., v1, v2).
|
|
31
|
+
- **Metadata:** `project_name`, `iteration_version`, `prd_template` (template path).
|
|
32
|
+
- **Template source:** read `prd.template` from project configuration, or use
|
|
33
|
+
the default `templates/prd.md`.
|
|
34
|
+
- **Structure:** the PRD contains 11 chapters as defined by the PRD template:
|
|
35
|
+
1. 版本修订记录
|
|
36
|
+
2. 业务流程一览
|
|
37
|
+
3. D7.1_业务流程
|
|
38
|
+
4. D7.2_画面原型及设计
|
|
39
|
+
5. D7.3_报表清单
|
|
40
|
+
6. D7.4_业务术语字典
|
|
41
|
+
7. D7.5_系统功能清单
|
|
42
|
+
8. D7.6_系统功能处理说明书
|
|
43
|
+
9. D7.7_要件定义自查报告
|
|
44
|
+
10. D7.8_要件定义完成报告
|
|
45
|
+
11. D7.9_评审会议纪
|
|
46
|
+
|
|
47
|
+
- **Filling rule:** the brainstorm phase fills chapters where information is
|
|
48
|
+
available from the dialogue; chapters without dialogue content retain
|
|
49
|
+
template placeholders. Do not fabricate content for empty chapters —
|
|
50
|
+
they belong to later BA processes or will be addressed by `ce-plan` in its
|
|
51
|
+
implementation plan.
|
|
52
|
+
|
|
53
|
+
A brainstorm-produced PRD is kept **light and standalone-readable**. It
|
|
54
|
+
includes only chapters that carry real information from the brainstorm
|
|
55
|
+
dialogue, leaving the rest as template placeholders. Empty chapters serve
|
|
56
|
+
as a reminder of what still needs to be defined.
|
|
57
|
+
|
|
58
|
+
Historical `docs/brainstorms/*-requirements.*` files remain valid legacy
|
|
59
|
+
inputs. Do not migrate or rewrite them when creating new artifacts.
|
|
60
|
+
|
|
61
|
+
## Decide whether a doc is warranted at all
|
|
62
|
+
|
|
63
|
+
Brainstorm dialogue does not always need to produce a PRD document.
|
|
64
|
+
Skip document creation when **both** hold:
|
|
65
|
+
|
|
66
|
+
- The user only needs brief alignment — no exploration produced novel scope,
|
|
67
|
+
framing, or decisions worth preserving in IDed shape.
|
|
68
|
+
- Any durable decisions made during the dialogue can flow naturally to
|
|
69
|
+
downstream artifacts (`ce-plan`, the commit message, `docs/solutions/`)
|
|
70
|
+
without a PRD document as an intermediary.
|
|
71
|
+
|
|
72
|
+
The trigger for creating a doc is when the dialogue surfaced enough
|
|
73
|
+
structural decisions, scope boundaries, or acceptance criteria that
|
|
74
|
+
downstream consumers (planner, reviewer, future reader) need them in a
|
|
75
|
+
durable, IDed form — not just as conversational artifacts.
|
|
76
|
+
|
|
77
|
+
**Stress test:** a brainstorm about a tiny bug fix where the user asks "fix
|
|
78
|
+
this with a null check or with upstream validation?" and the agent confirms
|
|
79
|
+
"upstream validation, here's why" doesn't need a PRD document. The
|
|
80
|
+
decision flows to `ce-plan` (or directly to commit message, or to
|
|
81
|
+
`docs/solutions/` if it's a pattern worth carrying) without a PRD
|
|
82
|
+
artifact in the middle.
|
|
83
|
+
|
|
84
|
+
Conversely, a brainstorm about a multi-actor feature with contested scope
|
|
85
|
+
and several behavioral conditions probably does need a doc — the planning
|
|
86
|
+
agent needs the structured content the dialogue produced.
|
|
87
|
+
|
|
88
|
+
## Match depth to content
|
|
89
|
+
|
|
90
|
+
When a PRD IS warranted, depth matches what the dialogue produced. A
|
|
91
|
+
brainstorm with sparse content produces a sparse doc; one with rich content
|
|
92
|
+
produces a rich doc. Don't add ceremony to make a slim brainstorm look
|
|
93
|
+
substantial.
|
|
94
|
+
|
|
95
|
+
## Prose economy
|
|
96
|
+
|
|
97
|
+
Match-depth-to-content sizes *which* sections appear and how deep each goes.
|
|
98
|
+
This sizes *how the kept prose reads*. A section can be material and still be
|
|
99
|
+
written loosely — the failure mode is a material section padded into a wall of
|
|
100
|
+
text where contradictions hide and a downstream agent loses the thread. Length
|
|
101
|
+
that earns its place is fine; wordiness around that length is not.
|
|
102
|
+
|
|
103
|
+
Hold every kept section to these:
|
|
104
|
+
|
|
105
|
+
- **Lead with the decision or outcome.** Put the conclusion first, then the
|
|
106
|
+
reason, then background; keep one claim plus its support per paragraph. Don't
|
|
107
|
+
bury the chosen scope, an open blocker, or a Key Decision beneath its
|
|
108
|
+
rationale.
|
|
109
|
+
- **One idea per sentence.** A requirement is a handful of sentences, not one
|
|
110
|
+
sentence with five semicolons and four parentheticals. If a sentence needs a
|
|
111
|
+
second parenthetical to stay true, split it.
|
|
112
|
+
- **A requirement is one sentence of intent plus at most one qualifier.** When
|
|
113
|
+
a requirement would specify two outcomes ("either A or B, planning decides"),
|
|
114
|
+
state the intent and send the fork to Outstanding Questions — don't write both
|
|
115
|
+
arms in full inside the requirement.
|
|
116
|
+
- **Cut hedges and intensifiers.** "Critically", "deliberately", "explicitly",
|
|
117
|
+
"genuinely", "actually", "simply" carry nothing a downstream agent acts on.
|
|
118
|
+
- **Prefer the verb to the nominalization.** "Demote the grid", not "the
|
|
119
|
+
demotion of the grid is the deliberate change in this brief".
|
|
120
|
+
- **Summary and motivation serve different purposes.** When both appear in a
|
|
121
|
+
chapter, the lead (summary or conclusion) is forward-looking — what is being
|
|
122
|
+
proposed or decided. The supporting context is backward-looking / situational —
|
|
123
|
+
why this proposal exists or why this decision was made. Don't restate the
|
|
124
|
+
proposal inside the motivation paragraph; the remedy lives in the conclusion.
|
|
125
|
+
|
|
126
|
+
Precision is not padding: keep IDs, dates, actor names, domain terms,
|
|
127
|
+
conditionals, and exact thresholds verbatim; when a concrete anchor is knowable
|
|
128
|
+
from the work already done, use it instead of a vague abstraction. Economy
|
|
129
|
+
targets the connective tissue around precision, never the precision itself.
|
|
130
|
+
|
|
131
|
+
**Resolve in place; don't stratify.** When a later decision answers a parked
|
|
132
|
+
question or supersedes earlier text, rewrite or remove the original entry —
|
|
133
|
+
don't append a separate "resolutions" layer that leaves the superseded text
|
|
134
|
+
standing, and don't keep superseded prose as strikethrough. Version control
|
|
135
|
+
holds the history. Stacked question/resolution strata double the reading surface
|
|
136
|
+
and hide which text is live.
|
|
137
|
+
|
|
138
|
+
**Named test, run before the doc is declared written:** could a reader find a
|
|
139
|
+
contradiction in each section in one pass? A sentence carrying more than one
|
|
140
|
+
parenthetical, or a requirement specifying two outcomes, fails the test — split
|
|
141
|
+
it or defer it.
|
|
142
|
+
|
|
143
|
+
## PRD chapter contract
|
|
144
|
+
|
|
145
|
+
When a PRD is warranted, the document follows the PRD template structure. The
|
|
146
|
+
brainstorm dialogue fills chapters where information is available; chapters
|
|
147
|
+
without dialogue content retain template placeholders.
|
|
148
|
+
|
|
149
|
+
### Always filled (from dialogue or metadata)
|
|
150
|
+
|
|
151
|
+
- **§1 版本修订记录** — auto-filled from metadata (date, user, iteration
|
|
152
|
+
version). §1.2 修订记录 carries the brainstorm date and a one-line summary
|
|
153
|
+
of what was brainstormed.
|
|
154
|
+
- **§2 业务流程一览** — filled from brainstorm's Key Flows and Actors. Each
|
|
155
|
+
identified business process gets a row in the flow overview table.
|
|
156
|
+
- **§7 D7.5_系统功能清单** — filled from brainstorm's Requirements. Each
|
|
157
|
+
requirement maps to a system function entry.
|
|
158
|
+
|
|
159
|
+
### Conditionally filled (when dialogue covers the topic)
|
|
160
|
+
|
|
161
|
+
- **§3 D7.1_业务流程** — filled when brainstorm produced multi-step Key Flows
|
|
162
|
+
with enough detail for process diagrams.
|
|
163
|
+
- **§4 D7.2_画面原型及设计** — filled when brainstorm involves UI/visual
|
|
164
|
+
components. Prototype references go here.
|
|
165
|
+
- **§6 D7.4_业务术语字典** — filled with domain terms defined during brainstorm
|
|
166
|
+
dialogue.
|
|
167
|
+
- **§8 D7.6_系统功能处理说明书** — partially filled: §8.2 全局说明
|
|
168
|
+
(permissions, interactions, exceptions) from Key Decisions and constraints;
|
|
169
|
+
§8.4 功能模块 from Requirements. Hardware/network/performance sections
|
|
170
|
+
retain placeholders.
|
|
171
|
+
|
|
172
|
+
### Always placeholder (belong to later processes)
|
|
173
|
+
|
|
174
|
+
- **§5 D7.3_报表清单** — retains template placeholder. Report details are
|
|
175
|
+
defined during detailed design.
|
|
176
|
+
- **§9 D7.7_要件定义自查报告** — retains template placeholder. Self-check
|
|
177
|
+
is a BA process artifact.
|
|
178
|
+
- **§10 D7.8_要件定义完成报告** — retains template placeholder. Completion
|
|
179
|
+
report is a closing artifact.
|
|
180
|
+
- **§11 D7.9_评审会议纪** — retains template placeholder. Review minutes
|
|
181
|
+
are recorded during review meetings.
|
|
182
|
+
|
|
183
|
+
## PRD chapters: fill when material
|
|
184
|
+
|
|
185
|
+
The agent decides per brainstorm which PRD chapters carry information from the
|
|
186
|
+
dialogue. Filling a chapter with placeholder content is worse than leaving it
|
|
187
|
+
as template placeholder.
|
|
188
|
+
|
|
189
|
+
- **§2 业务流程一览** — fill when brainstorm identified business processes,
|
|
190
|
+
user journeys, or system interactions. Each distinct process gets a row. Skip
|
|
191
|
+
rows for processes not discussed.
|
|
192
|
+
|
|
193
|
+
- **§3 D7.1_业务流程** — fill when brainstorm produced detailed multi-step
|
|
194
|
+
flows with enough granularity for process diagrams. Include the flow diagram
|
|
195
|
+
placeholder and step-by-step descriptions. Skip when flows are high-level
|
|
196
|
+
only.
|
|
197
|
+
|
|
198
|
+
- **§4 D7.2_画面原型及设计** — fill when brainstorm involves UI changes.
|
|
199
|
+
Include module names, page names, and prototype references. Skip entirely
|
|
200
|
+
when the brainstorm is non-visual (backend, data, API only).
|
|
201
|
+
|
|
202
|
+
- **§6 D7.4_业务术语字典** — fill with domain terms actively defined during
|
|
203
|
+
dialogue. Only include terms where the conversation pinned down a precise
|
|
204
|
+
meaning. Skip terms merely mentioned in passing.
|
|
205
|
+
|
|
206
|
+
- **§7 D7.5_系统功能清单** — fill from brainstorm Requirements. Each R-ID
|
|
207
|
+
maps to a system function entry with the requirement's intent as the function
|
|
208
|
+
description.
|
|
209
|
+
|
|
210
|
+
- **§8 D7.6_系统功能处理说明书** — partially fill §8.2 when dialogue covered
|
|
211
|
+
permissions, interactions, or exception handling. Fill §8.4 from Requirements.
|
|
212
|
+
Skip §8.3 (hardware/network) and §8.5 (non-functional) unless the brainstorm
|
|
213
|
+
explicitly covered these.
|
|
214
|
+
|
|
215
|
+
## Agent agency
|
|
216
|
+
|
|
217
|
+
The chapter catalog is a floor, not a ceiling. When the brainstorm's content
|
|
218
|
+
doesn't fit any catalog chapter, introduce a new one — don't force the content
|
|
219
|
+
into a chapter it doesn't belong in. Content drives chapter choices, not vice
|
|
220
|
+
versa.
|
|
221
|
+
|
|
222
|
+
The agent also picks per artifact:
|
|
223
|
+
|
|
224
|
+
- How much depth each present chapter gets
|
|
225
|
+
- Whether supplementary diagrams or visuals appear inline or as appendices
|
|
226
|
+
- How to organize the function module details within §8.4
|
|
227
|
+
|
|
228
|
+
## PRD metadata fields
|
|
229
|
+
|
|
230
|
+
Every PRD produced by `ce-brainstorm` carries metadata in YAML frontmatter.
|
|
231
|
+
|
|
232
|
+
### Required
|
|
233
|
+
|
|
234
|
+
- **`title`** — PRD title in format `{项目名称}_D7_业务要件` (matching the H1).
|
|
235
|
+
- **`project_name`** — the project or product name.
|
|
236
|
+
- **`iteration_version`** — the iteration version (e.g., "v1", "v2"),
|
|
237
|
+
corresponding to the `prd/vN/` directory.
|
|
238
|
+
- **`date`** — creation date in ISO 8601 (`YYYY-MM-DD`).
|
|
239
|
+
- **`prd_template`** — relative path to the PRD template used (e.g.,
|
|
240
|
+
`templates/prd.md`).
|
|
241
|
+
- **`prd_readiness`** — always `requirements-only` for new `ce-brainstorm`
|
|
242
|
+
outputs. `ce-plan` produces a separate `plan.md` document (not modifying the PRD).
|
|
243
|
+
|
|
244
|
+
### No status field
|
|
245
|
+
|
|
246
|
+
PRD artifacts have no `status` field. `prd_readiness` is document completeness,
|
|
247
|
+
not execution progress.
|
|
248
|
+
|
|
249
|
+
### Field-name stability
|
|
250
|
+
|
|
251
|
+
Field names are stable across PRD revisions. Adding new fields is fine; renaming
|
|
252
|
+
existing fields breaks downstream consumers.
|
|
253
|
+
|
|
254
|
+
## ID and content rules
|
|
255
|
+
|
|
256
|
+
- **Stable IDs.** PRD tables use the PRD template's numbering format
|
|
257
|
+
(e.g., `X.X.X.X_a1_f1`). R-IDs in brainstorm Requirements map to this
|
|
258
|
+
format when inserted into PRD tables.
|
|
259
|
+
- **Plain prefix.** In brainstorm dialogue, use plain prefixes (`R1.`, `F1.`)
|
|
260
|
+
for readability. When rendering into PRD tables, convert to the template's
|
|
261
|
+
hierarchical numbering.
|
|
262
|
+
- **Bold leader labels** inside Flows and Acceptance Examples
|
|
263
|
+
(`**Trigger:**`, `**Covers R4, R8.**`) provide structure without deeper
|
|
264
|
+
heading levels.
|
|
265
|
+
- **Repo-relative paths.** Always. Never absolute paths.
|
|
266
|
+
- **No process exhaust.** No "captured at Phase X" notes, no `## Next Steps`
|
|
267
|
+
pointing to ce-plan, no italic provenance lines. Engineering process
|
|
268
|
+
metadata belongs in commit messages and tool output, not the artifact.
|
|
269
|
+
- **No implementation details by default.** Libraries, schemas, endpoints,
|
|
270
|
+
file layouts, code structure stay out unless the brainstorm itself is
|
|
271
|
+
inherently about a technical or architectural change and those details are
|
|
272
|
+
the subject of the decision.
|
|
273
|
+
|
|
274
|
+
## Rendering
|
|
275
|
+
|
|
276
|
+
The format-specific references describe how to render these chapters in each
|
|
277
|
+
output format:
|
|
278
|
+
|
|
279
|
+
- **Markdown rendering:** `references/markdown-rendering.md`
|
|
280
|
+
- **HTML rendering:** `references/html-rendering.md`
|
|
281
|
+
|
|
282
|
+
This reference (`brainstorm-sections.md`) is about WHAT the PRD contains;
|
|
283
|
+
rendering references are about HOW each format presents it. The PRD is
|
|
284
|
+
written in one format — markdown OR HTML, never both — based on the
|
|
285
|
+
resolved output mode. The chapter catalog is the same regardless of format.
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Handoff
|
|
2
|
+
|
|
3
|
+
This content is loaded when Phase 4 begins — after the PRD document is
|
|
4
|
+
written.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
#### 4.1 Present Next-Step Options
|
|
9
|
+
|
|
10
|
+
The Phase 4 menu's visible option count varies by state: no PRD document
|
|
11
|
+
hides the review and Proof options, `OUTPUT_FORMAT=html` also hides
|
|
12
|
+
the review option (ce-doc-review is markdown-only today), unresolved `Resolve
|
|
13
|
+
Before Planning` hides both `Create the implementation plan` and `Ship it
|
|
14
|
+
autonomously with lfg`, and the lfg option is also hidden for non-software
|
|
15
|
+
brainstorms (`execution` other than `code`). Count the visible options for the
|
|
16
|
+
current state and choose the rendering mode accordingly:
|
|
17
|
+
|
|
18
|
+
- **Visible count fits the current platform's option cap:** use the platform's blocking question tool (`AskUserQuestion` in Claude Code — call `ToolSearch` with `select:AskUserQuestion` first if its schema isn't loaded; `request_user_input` in Codex; `ask_question` in Antigravity CLI (`agy`), `ask_user` in Pi (requires the `pi-ask-user` extension)). Claude Code `AskUserQuestion` supports up to 4 explicit options, and Codex `request_user_input` supports only 2-3 explicit options.
|
|
19
|
+
- **Visible count exceeds the current platform's option cap:** render as a numbered list in chat. This is the narrow option-overflow fallback; trimming would hide legitimate choices (plan, ship, review, Proof/browser, refine are all distinct destinations). Include a hint that free-form input is accepted ("Pick a number or describe what you want.") so the numbered list retains the blocking tool's open-endedness.
|
|
20
|
+
|
|
21
|
+
Never silently skip the question.
|
|
22
|
+
|
|
23
|
+
If `Resolve Before Planning` contains any items:
|
|
24
|
+
- Ask the blocking questions now, one at a time, by default
|
|
25
|
+
- If the user explicitly wants to proceed anyway, first convert each remaining item into an explicit decision, assumption, or `Deferred to Planning` question
|
|
26
|
+
- If the user chooses to pause instead, present the handoff as paused or blocked rather than complete
|
|
27
|
+
- Do not offer the `Create the implementation plan` or `Ship it autonomously with lfg` options while `Resolve Before Planning` remains non-empty
|
|
28
|
+
|
|
29
|
+
In both preambles below, the "Pick a number or describe what you want." hint applies only in numbered-list mode. When using the blocking tool, omit that line and pass the remaining stem as the question.
|
|
30
|
+
|
|
31
|
+
**Path format:** Use absolute paths for chat-output file references — relative paths are not auto-linked as clickable in most terminals.
|
|
32
|
+
|
|
33
|
+
**Preamble when no blocking questions remain:**
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
Brainstorm complete.
|
|
37
|
+
|
|
38
|
+
PRD document: <absolute path to PRD document> # omit line if no artifact was created
|
|
39
|
+
|
|
40
|
+
What would you like to do next? (Pick a number or describe what you want.)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Preamble when blocking questions remain and user wants to pause:**
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
Brainstorm paused. I'm holding planning until the remaining questions are resolved — say the word and I'll proceed anyway, recording each open item as an explicit assumption or a question deferred to planning.
|
|
47
|
+
|
|
48
|
+
PRD document: <absolute path to PRD document> # omit line if no artifact was created
|
|
49
|
+
|
|
50
|
+
What would you like to do next? (Pick a number or describe what you want.)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
The override sentence is load-bearing, not padding: the planning options are hidden while `Resolve Before Planning` is non-empty, so without it the user is told planning is blocked and is never told the block is theirs to lift. `Resolve Before Planning` is your own judgment call — an over-cautious read of it must not silently strand the user with no visible way forward. Hiding the option withholds the *recommendation*; it never withholds the *choice*.
|
|
54
|
+
|
|
55
|
+
Present only the options that apply. Renumber so visible options stay contiguous starting at 1.
|
|
56
|
+
|
|
57
|
+
1. **Create the implementation plan** *(recommended)* - Hand off to `ce-plan` and sharpen the PRD document into a complete, testable plan. Shown only when `Resolve Before Planning` is empty.
|
|
58
|
+
2. **Ship it autonomously with `lfg`** - Hand the requirements to the full autonomous pipeline: `lfg` plans (`ce-plan`), implements, simplifies, runs independent code review and applies the fixes, opens a PR, and watches CI to green — hands-off, no check-ins. It plans first (unlike a raw `/goal` straight from requirements), so it's the safer autonomous path. Best when you trust the requirements and want it built and shipped without steering. **Opens a PR and pushes a branch.** Shown only for software brainstorms (`execution: code`) with `Resolve Before Planning` empty **and a PRD document was created** — `lfg` hands `ce-plan` the PRD path in pipeline mode and cannot prompt, so with no artifact (e.g. a brief-alignment brainstorm that skipped doc creation per the "Decide whether a doc is warranted" rule) there is nothing to enrich; offer option 1 instead, which can plan interactively from the conversation. For a quicker plan-then-decide flow, or to run a `/goal` yourself, pick option 1 and choose at the `ce-plan` handoff.
|
|
59
|
+
3. **Pressure-test the requirements** - Dispatch reviewer agents with `ce-doc-review` to find gaps, conflicts, weak premises, and scope issues in the requirements; auto-apply safe fixes; route the rest interactively. Shown only when a markdown PRD document exists **and `OUTPUT_FORMAT=md`** — ce-doc-review's walkthrough applies markdown-only mutations (`##`/`###` heading inserts, single-file markdown edits via apply-set) and would corrupt an HTML artifact, so HTML brainstorms skip this option until ce-doc-review gains HTML-aware mutation support. Under HTML mode, surface a one-line note above the menu: `Requirements review unavailable in output:html mode — ce-doc-review is markdown-only today. Switch to output:md if you want a review pass.`
|
|
60
|
+
4. **Publish to Proof — shareable link** - Publish the markdown PRD document to Every's Proof editor and get a shareable link to read, comment on, or share with others. One-way: the local doc stays canonical. Shown only when a markdown PRD document exists. **Render only when `OUTPUT_FORMAT=md`** (Proof operates on markdown and cannot ingest HTML).
|
|
61
|
+
4. **Open in browser** — open the HTML PRD document locally for review and sharing. Shown only when an HTML PRD document exists. **Render only when `OUTPUT_FORMAT=html`.** Replaces "Publish to Proof" at the same slot under exclusive output mode — the artifact is either markdown OR HTML, never both, so exactly one of the two labels applies per run.
|
|
62
|
+
5. **More clarifying questions to sharpen the scope** - Keep refining scope, edge cases, constraints, and preferences through further dialogue. Always shown — so the label names the scope rather than the doc, which stays true on a run that correctly skipped doc creation.
|
|
63
|
+
|
|
64
|
+
There is no "done" / "pause" option — the blocking question already waits, and the user ends by dismissing it (Esc) or saying they're finished. The PRD document is already saved.
|
|
65
|
+
|
|
66
|
+
**Post-review nudge (subsequent rounds only):** If the user has already run `ce-doc-review` this session and residual P0/P1 findings remain unaddressed, add a one-line prose nudge adjacent to the menu (e.g., "Document review flagged 2 P1 findings you may want to address — pick \"Pressure-test the requirements\" to run another pass."). Reference the option by label, not number: the menu renumbers when `Resolve Before Planning` hides `Create the implementation plan` and the lfg option, so a hardcoded option number can point users at the wrong action. Do not add a separate menu option; reuse the existing `Pressure-test the requirements` option. Suppress this nudge when `OUTPUT_FORMAT=html` — that option is hidden in that mode, so the nudge would point users at a missing action.
|
|
67
|
+
|
|
68
|
+
#### 4.2 Handle the Selected Option
|
|
69
|
+
|
|
70
|
+
Selections may be the literal option label (when the user types the label or a close paraphrase) or the option number. Match numbers against the currently-rendered (post-trim) list. Free-form input that doesn't match an option or describe an alternative action should be treated as clarification — ask a follow-up rather than guessing.
|
|
71
|
+
|
|
72
|
+
**If user selects "Create the implementation plan":**
|
|
73
|
+
|
|
74
|
+
Immediately load the `ce-plan` skill in the current session. Pass the PRD
|
|
75
|
+
document path when one exists; otherwise pass a concise summary of the
|
|
76
|
+
finalized brainstorm decisions. When the Phase 1.1 grounding scout produced a
|
|
77
|
+
dossier and the file still exists, also pass its path
|
|
78
|
+
(`<scratch-root>/ce-brainstorm/<run-id>/grounding.md`) — it gives
|
|
79
|
+
planning verified quotes with `file:line` pointers to start from instead of
|
|
80
|
+
re-scanning the repo. Do not print the closing summary first.
|
|
81
|
+
|
|
82
|
+
**If user selects "Pressure-test the requirements":**
|
|
83
|
+
|
|
84
|
+
Load the `ce-doc-review` skill, passing the PRD document path as the argument.
|
|
85
|
+
When ce-doc-review returns "Review complete", return to the Phase 4 options
|
|
86
|
+
and re-render the menu (the requirements may have changed, so re-evaluate
|
|
87
|
+
`Resolve Before Planning`, the lfg software gate, and residual findings). If
|
|
88
|
+
residual P0/P1 findings remain unaddressed, include the post-review nudge
|
|
89
|
+
above the menu. Do not show the closing summary yet.
|
|
90
|
+
|
|
91
|
+
**If user selects "Ship it autonomously with `lfg`":**
|
|
92
|
+
|
|
93
|
+
Immediately invoke the `lfg` skill in the current session via the platform's
|
|
94
|
+
skill-invocation primitive, passing the PRD document path as its
|
|
95
|
+
argument so `lfg`'s `ce-plan` step enriches the PRD to implementation-ready
|
|
96
|
+
state rather than bootstrapping a new plan. `lfg` then owns the full pipeline
|
|
97
|
+
autonomously — plan, implement (`ce-work` in `return-to-caller` mode), simplify,
|
|
98
|
+
independent code review and applied fixes, commit/push/open PR, and CI watch to
|
|
99
|
+
green. Do not also start a `/goal` or load `ce-work` directly — `lfg`
|
|
100
|
+
orchestrates them. Unlike a goal tool, `lfg` is host-agnostic: it works wherever
|
|
101
|
+
skills run (plus `git`/`gh` for the PR/CI tail, which it guards when absent).
|
|
102
|
+
|
|
103
|
+
Where the host exposes no skill-invocation primitive, print the `lfg <plan-path>`
|
|
104
|
+
invocation for the user to run and note that it will plan, build, review, and
|
|
105
|
+
open a PR from this artifact.
|
|
106
|
+
|
|
107
|
+
Do not print the closing summary first.
|
|
108
|
+
|
|
109
|
+
**If user selects "More clarifying questions to sharpen the scope":** Return to Phase 1.3 (Collaborative Dialogue) and continue asking the user clarifying questions one at a time to further refine scope, edge cases, constraints, and preferences. Continue until the user is satisfied, then return to Phase 4. Do not show the closing summary yet.
|
|
110
|
+
|
|
111
|
+
**If user selects "Publish to Proof — shareable link":**
|
|
112
|
+
|
|
113
|
+
Load the `ce-proof` skill to publish the markdown PRD document. Pass:
|
|
114
|
+
|
|
115
|
+
- **source file:** `prd/vN/prd.md`
|
|
116
|
+
- **doc title:** `PRD: <topic title>`
|
|
117
|
+
- **identity:** `ai:compound-engineering` / `Compound Engineering`
|
|
118
|
+
|
|
119
|
+
ce-proof creates a shared Proof doc from the markdown PRD file (Create and
|
|
120
|
+
Share workflow), binds the display name, and returns the share URL. Surface
|
|
121
|
+
the URL to the user — they can open it to read, comment, or share with others
|
|
122
|
+
— then return to the Phase 4 options and re-render the menu. This is a one-way
|
|
123
|
+
publish: the local doc stays canonical and nothing syncs back, so option
|
|
124
|
+
eligibility is unchanged (no need to re-evaluate `Resolve Before Planning`,
|
|
125
|
+
the lfg software gate, or residual findings on account of Proof).
|
|
126
|
+
|
|
127
|
+
If the upload fails (network error, Proof API down), retry once after a short wait. If it still fails, tell the user the upload didn't succeed and briefly explain why, then return to the Phase 4 options — don't leave them wondering why the option did nothing.
|
|
128
|
+
|
|
129
|
+
**If user selects "Open in browser":** Display the absolute path to the `.html` PRD document so the user can open it locally. Where the platform exposes a browser-opening primitive (e.g., `open` on macOS, `xdg-open` on Linux, `start` on Windows), the agent may invoke it directly; otherwise print the absolute path and let the user open it. After the path is displayed (or the browser is opened), return to the Phase 4 options so the user can pick a follow-up action.
|
|
130
|
+
|
|
131
|
+
**If the user indicates they're finished** (says "done"/"that's all", or dismisses the menu without picking an option): display the closing summary (see 4.3) and end the turn.
|
|
132
|
+
|
|
133
|
+
#### 4.3 Closing Summary
|
|
134
|
+
|
|
135
|
+
Use the closing summary only when this run of the workflow is ending or handing off, not when returning to the Phase 4 options.
|
|
136
|
+
|
|
137
|
+
In both templates below, substitute `<absolute path to PRD document>` with the
|
|
138
|
+
actual file path written this run — `.md` for `OUTPUT_FORMAT=md`, `.html` for
|
|
139
|
+
`OUTPUT_FORMAT=html`. Do not emit a hardcoded `.md` path when the artifact is
|
|
140
|
+
HTML, or the closing summary will point users at a file that was never written.
|
|
141
|
+
|
|
142
|
+
When complete and ready for planning, display:
|
|
143
|
+
|
|
144
|
+
```text
|
|
145
|
+
Brainstorm complete!
|
|
146
|
+
|
|
147
|
+
PRD document: <absolute path to PRD document> # omit line if no artifact was created
|
|
148
|
+
|
|
149
|
+
Key decisions:
|
|
150
|
+
- [Decision 1]
|
|
151
|
+
- [Decision 2]
|
|
152
|
+
|
|
153
|
+
Recommended next step: `ce-plan <PRD document path>`
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
If the user pauses with `Resolve Before Planning` still populated, display:
|
|
157
|
+
|
|
158
|
+
```text
|
|
159
|
+
Brainstorm paused.
|
|
160
|
+
|
|
161
|
+
PRD document: <absolute path to PRD document> # omit line if no artifact was created
|
|
162
|
+
|
|
163
|
+
Planning is held on:
|
|
164
|
+
- [Blocking question 1]
|
|
165
|
+
- [Blocking question 2]
|
|
166
|
+
|
|
167
|
+
Resume with `ce-brainstorm` to resolve these — or say to plan anyway, and I'll record each open item as an explicit assumption or a question deferred to planning.
|
|
168
|
+
```
|