productfoo 0.0.0-stage → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +338 -2
- package/bin/foo +3 -0
- package/bin/foo.mjs +42 -0
- package/commands/bug.md +31 -0
- package/commands/discovery.md +28 -0
- package/commands/ideate.md +27 -0
- package/commands/init.md +28 -0
- package/commands/pitch.md +27 -0
- package/commands/preview.md +25 -0
- package/commands/research.md +31 -0
- package/commands/roast.md +27 -0
- package/commands/spec.md +30 -0
- package/config/pricing.yaml +198 -0
- package/config/routing-policy.yaml +171 -0
- package/dist-public/src/activeModel.d.ts +83 -0
- package/dist-public/src/activeModel.js +331 -0
- package/dist-public/src/agentAdapters.d.ts +122 -0
- package/dist-public/src/agentAdapters.js +178 -0
- package/dist-public/src/agentState.d.ts +43 -0
- package/dist-public/src/agentState.js +177 -0
- package/dist-public/src/bugCapsule.d.ts +94 -0
- package/dist-public/src/bugCapsule.js +227 -0
- package/dist-public/src/bugCapture.d.ts +26 -0
- package/dist-public/src/bugCapture.js +251 -0
- package/dist-public/src/bugOwnerLog.d.ts +93 -0
- package/dist-public/src/bugOwnerLog.js +304 -0
- package/dist-public/src/bugReportStore.d.ts +48 -0
- package/dist-public/src/bugReportStore.js +860 -0
- package/dist-public/src/bugSpecContext.d.ts +7 -0
- package/dist-public/src/bugSpecContext.js +129 -0
- package/dist-public/src/channelFreshness.d.ts +25 -0
- package/dist-public/src/channelFreshness.js +194 -0
- package/dist-public/src/cli.d.ts +30 -0
- package/dist-public/src/cli.js +1667 -0
- package/dist-public/src/cliArgs.d.ts +7 -0
- package/dist-public/src/cliArgs.js +44 -0
- package/dist-public/src/codeCatalog.d.ts +41 -0
- package/dist-public/src/codeCatalog.js +197 -0
- package/dist-public/src/commandContract.d.ts +84 -0
- package/dist-public/src/commandContract.js +390 -0
- package/dist-public/src/commandUsage.d.ts +3 -0
- package/dist-public/src/commandUsage.js +30 -0
- package/dist-public/src/commands/agent.d.ts +60 -0
- package/dist-public/src/commands/agent.js +1353 -0
- package/dist-public/src/commands/asp.d.ts +8 -0
- package/dist-public/src/commands/asp.js +669 -0
- package/dist-public/src/commands/evalCmd.d.ts +4 -0
- package/dist-public/src/commands/evalCmd.js +405 -0
- package/dist-public/src/commands/login.d.ts +25 -0
- package/dist-public/src/commands/login.js +94 -0
- package/dist-public/src/commands/loop.d.ts +16 -0
- package/dist-public/src/commands/loop.js +619 -0
- package/dist-public/src/commands/reconcile.d.ts +41 -0
- package/dist-public/src/commands/reconcile.js +292 -0
- package/dist-public/src/commands/runtime.d.ts +1 -0
- package/dist-public/src/commands/runtime.js +36 -0
- package/dist-public/src/commands/scanRedact.d.ts +8 -0
- package/dist-public/src/commands/scanRedact.js +266 -0
- package/dist-public/src/commands/setup.d.ts +28 -0
- package/dist-public/src/commands/setup.js +398 -0
- package/dist-public/src/commands/shared.d.ts +17 -0
- package/dist-public/src/commands/shared.js +147 -0
- package/dist-public/src/commands/source.d.ts +1 -0
- package/dist-public/src/commands/source.js +134 -0
- package/dist-public/src/commands/specCmd.d.ts +24 -0
- package/dist-public/src/commands/specCmd.js +794 -0
- package/dist-public/src/commands/update.d.ts +61 -0
- package/dist-public/src/commands/update.js +244 -0
- package/dist-public/src/comprehensionSignal.d.ts +20 -0
- package/dist-public/src/comprehensionSignal.js +166 -0
- package/dist-public/src/conductor/diversity.d.ts +48 -0
- package/dist-public/src/conductor/diversity.js +423 -0
- package/dist-public/src/conductor/engine.d.ts +7 -0
- package/dist-public/src/conductor/engine.js +295 -0
- package/dist-public/src/conductor/families/ideate.d.ts +2 -0
- package/dist-public/src/conductor/families/ideate.js +255 -0
- package/dist-public/src/conductor/families/interview.d.ts +2 -0
- package/dist-public/src/conductor/families/interview.js +39 -0
- package/dist-public/src/conductor/families/specSwarm.d.ts +2 -0
- package/dist-public/src/conductor/families/specSwarm.js +146 -0
- package/dist-public/src/conductor/familyDelivery.d.ts +6 -0
- package/dist-public/src/conductor/familyDelivery.js +37 -0
- package/dist-public/src/conductor/familyPackArtifact.d.ts +4 -0
- package/dist-public/src/conductor/familyPackArtifact.js +260 -0
- package/dist-public/src/conductor/ideateDecision.d.ts +6 -0
- package/dist-public/src/conductor/ideateDecision.js +237 -0
- package/dist-public/src/conductor/pack.d.ts +26 -0
- package/dist-public/src/conductor/pack.js +75 -0
- package/dist-public/src/conductor/types.d.ts +111 -0
- package/dist-public/src/conductor/types.js +7 -0
- package/dist-public/src/configPath.d.ts +2 -0
- package/dist-public/src/configPath.js +7 -0
- package/dist-public/src/discoveryArtifacts.d.ts +54 -0
- package/dist-public/src/discoveryArtifacts.js +467 -0
- package/dist-public/src/discoveryCommand.d.ts +127 -0
- package/dist-public/src/discoveryCommand.js +2148 -0
- package/dist-public/src/discoveryConnections.d.ts +339 -0
- package/dist-public/src/discoveryConnections.js +613 -0
- package/dist-public/src/discoveryDocs.d.ts +129 -0
- package/dist-public/src/discoveryDocs.js +577 -0
- package/dist-public/src/discoveryEvidence.d.ts +59 -0
- package/dist-public/src/discoveryEvidence.js +198 -0
- package/dist-public/src/discoveryFireflies.d.ts +25 -0
- package/dist-public/src/discoveryFireflies.js +551 -0
- package/dist-public/src/discoveryGmail.d.ts +12 -0
- package/dist-public/src/discoveryGmail.js +466 -0
- package/dist-public/src/discoveryGong.d.ts +12 -0
- package/dist-public/src/discoveryGong.js +491 -0
- package/dist-public/src/discoveryLearningRouting.d.ts +90 -0
- package/dist-public/src/discoveryLearningRouting.js +405 -0
- package/dist-public/src/discoveryMatching.d.ts +26 -0
- package/dist-public/src/discoveryMatching.js +73 -0
- package/dist-public/src/discoveryOutlook.d.ts +12 -0
- package/dist-public/src/discoveryOutlook.js +492 -0
- package/dist-public/src/discoveryProcess.d.ts +221 -0
- package/dist-public/src/discoveryProcess.js +703 -0
- package/dist-public/src/discoveryProof.d.ts +143 -0
- package/dist-public/src/discoveryProof.js +529 -0
- package/dist-public/src/discoveryProviders.d.ts +152 -0
- package/dist-public/src/discoveryProviders.js +756 -0
- package/dist-public/src/discoveryReadiness.d.ts +219 -0
- package/dist-public/src/discoveryReadiness.js +672 -0
- package/dist-public/src/discoveryReconcile.d.ts +57 -0
- package/dist-public/src/discoveryReconcile.js +424 -0
- package/dist-public/src/discoverySlack.d.ts +12 -0
- package/dist-public/src/discoverySlack.js +452 -0
- package/dist-public/src/discoverySources.d.ts +56 -0
- package/dist-public/src/discoverySources.js +322 -0
- package/dist-public/src/discoverySync.d.ts +52 -0
- package/dist-public/src/discoverySync.js +151 -0
- package/dist-public/src/discoverySynthesis.d.ts +57 -0
- package/dist-public/src/discoverySynthesis.js +215 -0
- package/dist-public/src/discoveryTeams.d.ts +12 -0
- package/dist-public/src/discoveryTeams.js +516 -0
- package/dist-public/src/discoveryZoom.d.ts +12 -0
- package/dist-public/src/discoveryZoom.js +523 -0
- package/dist-public/src/elicitationSurface.d.ts +13 -0
- package/dist-public/src/elicitationSurface.js +77 -0
- package/dist-public/src/errorReport.d.ts +99 -0
- package/dist-public/src/errorReport.js +443 -0
- package/dist-public/src/errorTaxonomy.d.ts +84 -0
- package/dist-public/src/errorTaxonomy.js +189 -0
- package/dist-public/src/evalCalibration.d.ts +82 -0
- package/dist-public/src/evalCalibration.js +169 -0
- package/dist-public/src/evalChecks.d.ts +21 -0
- package/dist-public/src/evalChecks.js +295 -0
- package/dist-public/src/evalCompile.d.ts +56 -0
- package/dist-public/src/evalCompile.js +58 -0
- package/dist-public/src/evalImprove.d.ts +60 -0
- package/dist-public/src/evalImprove.js +175 -0
- package/dist-public/src/evalJudge.d.ts +47 -0
- package/dist-public/src/evalJudge.js +143 -0
- package/dist-public/src/evalLabels.d.ts +100 -0
- package/dist-public/src/evalLabels.js +287 -0
- package/dist-public/src/evalRecord.d.ts +68 -0
- package/dist-public/src/evalRecord.js +165 -0
- package/dist-public/src/evalRoast.d.ts +88 -0
- package/dist-public/src/evalRoast.js +249 -0
- package/dist-public/src/evidenceIntake.d.ts +66 -0
- package/dist-public/src/evidenceIntake.js +356 -0
- package/dist-public/src/feedback.d.ts +78 -0
- package/dist-public/src/feedback.js +294 -0
- package/dist-public/src/firefliesClient.d.ts +106 -0
- package/dist-public/src/firefliesClient.js +258 -0
- package/dist-public/src/firstMoveTensions.d.ts +10 -0
- package/dist-public/src/firstMoveTensions.js +93 -0
- package/dist-public/src/gitRun.d.ts +21 -0
- package/dist-public/src/gitRun.js +50 -0
- package/dist-public/src/githubReconcile.d.ts +94 -0
- package/dist-public/src/githubReconcile.js +205 -0
- package/dist-public/src/gmailNango.d.ts +131 -0
- package/dist-public/src/gmailNango.js +329 -0
- package/dist-public/src/gongNango.d.ts +118 -0
- package/dist-public/src/gongNango.js +308 -0
- package/dist-public/src/grammarGate.d.ts +13 -0
- package/dist-public/src/grammarGate.js +72 -0
- package/dist-public/src/harnessGates.d.ts +65 -0
- package/dist-public/src/harnessGates.js +168 -0
- package/dist-public/src/humanSurfaceEval.d.ts +19 -0
- package/dist-public/src/humanSurfaceEval.js +156 -0
- package/dist-public/src/ideate.d.ts +43 -0
- package/dist-public/src/ideate.js +255 -0
- package/dist-public/src/ideateContext.d.ts +11 -0
- package/dist-public/src/ideateContext.js +83 -0
- package/dist-public/src/index.d.ts +2 -0
- package/dist-public/src/index.js +4 -0
- package/dist-public/src/initCommand.d.ts +25 -0
- package/dist-public/src/initCommand.js +558 -0
- package/dist-public/src/interviewGate.d.ts +25 -0
- package/dist-public/src/interviewGate.js +126 -0
- package/dist-public/src/jsonFile.d.ts +2 -0
- package/dist-public/src/jsonFile.js +22 -0
- package/dist-public/src/loopBudget.d.ts +182 -0
- package/dist-public/src/loopBudget.js +494 -0
- package/dist-public/src/loopContracts.d.ts +35 -0
- package/dist-public/src/loopContracts.js +364 -0
- package/dist-public/src/machineState.d.ts +1 -0
- package/dist-public/src/machineState.js +9 -0
- package/dist-public/src/notionNango.d.ts +93 -0
- package/dist-public/src/notionNango.js +279 -0
- package/dist-public/src/orchestrationResult.d.ts +11 -0
- package/dist-public/src/orchestrationResult.js +73 -0
- package/dist-public/src/outlookNango.d.ts +124 -0
- package/dist-public/src/outlookNango.js +327 -0
- package/dist-public/src/packetCorrections.d.ts +40 -0
- package/dist-public/src/packetCorrections.js +172 -0
- package/dist-public/src/packetGlossary.d.ts +6 -0
- package/dist-public/src/packetGlossary.js +42 -0
- package/dist-public/src/packetIndex.d.ts +54 -0
- package/dist-public/src/packetIndex.js +744 -0
- package/dist-public/src/packetIndexEntry.d.ts +3 -0
- package/dist-public/src/packetIndexEntry.js +128 -0
- package/dist-public/src/packetIndexServe.d.ts +13 -0
- package/dist-public/src/packetIndexServe.js +113 -0
- package/dist-public/src/packetIndexWorker.d.ts +7 -0
- package/dist-public/src/packetIndexWorker.js +45 -0
- package/dist-public/src/packetLifecycle.d.ts +30 -0
- package/dist-public/src/packetLifecycle.js +127 -0
- package/dist-public/src/packetReconcile.d.ts +73 -0
- package/dist-public/src/packetReconcile.js +386 -0
- package/dist-public/src/packetStatus.d.ts +125 -0
- package/dist-public/src/packetStatus.js +770 -0
- package/dist-public/src/packetValidation.d.ts +17 -0
- package/dist-public/src/packetValidation.js +333 -0
- package/dist-public/src/packetVerify.d.ts +73 -0
- package/dist-public/src/packetVerify.js +303 -0
- package/dist-public/src/packetWrite.d.ts +52 -0
- package/dist-public/src/packetWrite.js +448 -0
- package/dist-public/src/pitch.d.ts +38 -0
- package/dist-public/src/pitch.js +154 -0
- package/dist-public/src/processMemo.d.ts +8 -0
- package/dist-public/src/processMemo.js +23 -0
- package/dist-public/src/productDetect.d.ts +30 -0
- package/dist-public/src/productDetect.js +376 -0
- package/dist-public/src/profile.d.ts +62 -0
- package/dist-public/src/profile.js +334 -0
- package/dist-public/src/questionModel.d.ts +46 -0
- package/dist-public/src/questionModel.js +74 -0
- package/dist-public/src/questionText.d.ts +7 -0
- package/dist-public/src/questionText.js +38 -0
- package/dist-public/src/redactConfig.d.ts +2 -0
- package/dist-public/src/redactConfig.js +11 -0
- package/dist-public/src/redactEngine.d.ts +59 -0
- package/dist-public/src/redactEngine.js +509 -0
- package/dist-public/src/redactGate.d.ts +63 -0
- package/dist-public/src/redactGate.js +209 -0
- package/dist-public/src/repoRead.d.ts +29 -0
- package/dist-public/src/repoRead.js +160 -0
- package/dist-public/src/research.d.ts +242 -0
- package/dist-public/src/research.js +1314 -0
- package/dist-public/src/researchCompletion.d.ts +34 -0
- package/dist-public/src/researchCompletion.js +123 -0
- package/dist-public/src/researchExecution.d.ts +47 -0
- package/dist-public/src/researchExecution.js +309 -0
- package/dist-public/src/researchFormat.d.ts +21 -0
- package/dist-public/src/researchFormat.js +77 -0
- package/dist-public/src/researchGate.d.ts +86 -0
- package/dist-public/src/researchGate.js +1036 -0
- package/dist-public/src/researchReceipt.d.ts +76 -0
- package/dist-public/src/researchReceipt.js +148 -0
- package/dist-public/src/researchRender.d.ts +2 -0
- package/dist-public/src/researchRender.js +267 -0
- package/dist-public/src/researchSigningKey.d.ts +19 -0
- package/dist-public/src/researchSigningKey.js +95 -0
- package/dist-public/src/riskClassify.d.ts +42 -0
- package/dist-public/src/riskClassify.js +149 -0
- package/dist-public/src/routines.d.ts +42 -0
- package/dist-public/src/routines.js +269 -0
- package/dist-public/src/routingPolicy.d.ts +172 -0
- package/dist-public/src/routingPolicy.js +646 -0
- package/dist-public/src/secretInput.d.ts +8 -0
- package/dist-public/src/secretInput.js +89 -0
- package/dist-public/src/selfCheck.d.ts +7 -0
- package/dist-public/src/selfCheck.js +473 -0
- package/dist-public/src/selfCheckCache.d.ts +29 -0
- package/dist-public/src/selfCheckCache.js +147 -0
- package/dist-public/src/severityClass.d.ts +15 -0
- package/dist-public/src/severityClass.js +22 -0
- package/dist-public/src/skillClientPolicy.d.ts +8 -0
- package/dist-public/src/skillClientPolicy.js +16 -0
- package/dist-public/src/skillLocal.d.ts +98 -0
- package/dist-public/src/skillLocal.js +463 -0
- package/dist-public/src/skillTreeDigest.d.ts +9 -0
- package/dist-public/src/skillTreeDigest.js +64 -0
- package/dist-public/src/slackNango.d.ts +62 -0
- package/dist-public/src/slackNango.js +208 -0
- package/dist-public/src/social/arxiv.d.ts +19 -0
- package/dist-public/src/social/arxiv.js +96 -0
- package/dist-public/src/social/github.d.ts +2 -0
- package/dist-public/src/social/github.js +78 -0
- package/dist-public/src/social/hackernews.d.ts +2 -0
- package/dist-public/src/social/hackernews.js +67 -0
- package/dist-public/src/social/index.d.ts +10 -0
- package/dist-public/src/social/index.js +79 -0
- package/dist-public/src/social/reddit.d.ts +2 -0
- package/dist-public/src/social/reddit.js +125 -0
- package/dist-public/src/social/types.d.ts +73 -0
- package/dist-public/src/social/types.js +61 -0
- package/dist-public/src/social/xml.d.ts +10 -0
- package/dist-public/src/social/xml.js +49 -0
- package/dist-public/src/social/youtube.d.ts +7 -0
- package/dist-public/src/social/youtube.js +217 -0
- package/dist-public/src/sourceIngress.d.ts +488 -0
- package/dist-public/src/sourceIngress.js +1651 -0
- package/dist-public/src/specAfter.d.ts +187 -0
- package/dist-public/src/specAfter.js +814 -0
- package/dist-public/src/specBudget.d.ts +124 -0
- package/dist-public/src/specBudget.js +424 -0
- package/dist-public/src/specDecisionSignals.d.ts +38 -0
- package/dist-public/src/specDecisionSignals.js +121 -0
- package/dist-public/src/specLinkedCommits.d.ts +7 -0
- package/dist-public/src/specLinkedCommits.js +107 -0
- package/dist-public/src/specSections.d.ts +105 -0
- package/dist-public/src/specSections.js +718 -0
- package/dist-public/src/statusGlyphs.d.ts +18 -0
- package/dist-public/src/statusGlyphs.js +75 -0
- package/dist-public/src/swarmCommand.d.ts +10 -0
- package/dist-public/src/swarmCommand.js +96 -0
- package/dist-public/src/teamsNango.d.ts +114 -0
- package/dist-public/src/teamsNango.js +301 -0
- package/dist-public/src/tokenStore.d.ts +10 -0
- package/dist-public/src/tokenStore.js +77 -0
- package/dist-public/src/trustEnvelope.d.ts +78 -0
- package/dist-public/src/trustEnvelope.js +392 -0
- package/dist-public/src/untrustedText.d.ts +6 -0
- package/dist-public/src/untrustedText.js +20 -0
- package/dist-public/src/updateNotice.d.ts +41 -0
- package/dist-public/src/updateNotice.js +290 -0
- package/dist-public/src/vendorYaml.d.ts +1 -0
- package/dist-public/src/vendorYaml.js +7374 -0
- package/dist-public/src/workflowRunActuals.d.ts +67 -0
- package/dist-public/src/workflowRunActuals.js +184 -0
- package/dist-public/src/zendeskDiscovery.d.ts +12 -0
- package/dist-public/src/zendeskDiscovery.js +513 -0
- package/dist-public/src/zendeskNango.d.ts +131 -0
- package/dist-public/src/zendeskNango.js +344 -0
- package/dist-public/src/zoomNango.d.ts +106 -0
- package/dist-public/src/zoomNango.js +351 -0
- package/docs/CHANGELOG.md +32 -0
- package/docs/THIRD_PARTY_NOTICES.md +36 -0
- package/package.json +71 -4
- package/schemas/bug-capsule-receipt.schema.json +54 -0
- package/schemas/bug-capsule.schema.json +189 -0
- package/schemas/discovery-evidence-envelope.schema.json +79 -0
- package/schemas/discovery-processing-receipt.schema.json +71 -0
- package/schemas/discovery-service-contract.schema.json +189 -0
- package/skills/AGENTS.md +32 -0
- package/skills/README.md +287 -0
- package/skills/bug/SKILL.md +49 -0
- package/skills/build-preview-spec/SKILL.md +103 -0
- package/skills/capture-external-artifact/SKILL.md +23 -0
- package/skills/capture-external-artifact/agents/openai.yaml +4 -0
- package/skills/capture-external-artifact/references/extractor-libraries.md +27 -0
- package/skills/check-spec-health/SKILL.md +45 -0
- package/skills/check-spec-health/agents/openai.yaml +4 -0
- package/skills/competitive-positioning/SKILL.md +86 -0
- package/skills/competitive-positioning/agents/openai.yaml +4 -0
- package/skills/cpo-lens/SKILL.md +398 -0
- package/skills/cpo-lens/agents/openai.yaml +4 -0
- package/skills/create-prd/SKILL.md +26 -0
- package/skills/create-prd/agents/openai.yaml +4 -0
- package/skills/customer-discovery/SKILL.md +192 -0
- package/skills/design-system/SKILL.md +49 -0
- package/skills/design-system/agents/openai.yaml +4 -0
- package/skills/discussion-guide/SKILL.md +75 -0
- package/skills/discussion-guide/agents/openai.yaml +4 -0
- package/skills/firecrawl-research-papers/SKILL.md +96 -0
- package/skills/firecrawl-research-papers/agents/openai.yaml +4 -0
- package/skills/foo-roast/SKILL.md +325 -0
- package/skills/generate-gtm-brief/SKILL.md +41 -0
- package/skills/generate-gtm-brief/agents/openai.yaml +4 -0
- package/skills/generate-gtm-brief/references/gtm-brief-template.md +56 -0
- package/skills/gong-quotes/SKILL.md +43 -0
- package/skills/gong-quotes/agents/openai.yaml +4 -0
- package/skills/grill-me/SKILL.md +27 -0
- package/skills/grill-me/agents/openai.yaml +4 -0
- package/skills/ideate/SKILL.md +180 -0
- package/skills/ideate/references/family-packs.md +5 -0
- package/skills/initiative-tracker/SKILL.md +23 -0
- package/skills/initiative-tracker/agents/openai.yaml +4 -0
- package/skills/interop-review/SKILL.md +25 -0
- package/skills/interop-review/agents/openai.yaml +4 -0
- package/skills/interview-me/SKILL.md +404 -0
- package/skills/interview-me/agents/openai.yaml +4 -0
- package/skills/loop-library-audit/SKILL.md +123 -0
- package/skills/pitch/SKILL.md +110 -0
- package/skills/pitch/references/opportunity-assessment.md +136 -0
- package/skills/pitch/references/prfaq-template.md +54 -0
- package/skills/pmm-release-briefing/SKILL.md +27 -0
- package/skills/pmm-release-briefing/agents/openai.yaml +4 -0
- package/skills/pmm-release-briefing/references/variant-generalized.md +16 -0
- package/skills/positioning-messaging/SKILL.md +70 -0
- package/skills/positioning-messaging/agents/openai.yaml +4 -0
- package/skills/positioning-messaging/references/guest-insights.md +1400 -0
- package/skills/preview-swarm/SKILL.md +418 -0
- package/skills/preview-swarm/agents/openai.yaml +4 -0
- package/skills/preview-swarm/references/html-effectiveness-build-previews.md +168 -0
- package/skills/product-copywriting/SKILL.md +127 -0
- package/skills/product-copywriting/agents/openai.yaml +4 -0
- package/skills/product-copywriting/references/foo-voice.md +26 -0
- package/skills/product-shape-interview/SKILL.md +219 -0
- package/skills/product-shape-interview/agents/openai.yaml +4 -0
- package/skills/ready-for-release/SKILL.md +39 -0
- package/skills/ready-for-release/agents/openai.yaml +4 -0
- package/skills/redact-transcripts/SKILL.md +23 -0
- package/skills/redact-transcripts/agents/openai.yaml +4 -0
- package/skills/research-brief/SKILL.md +48 -0
- package/skills/research-brief/agents/openai.yaml +4 -0
- package/skills/research-refresh/SKILL.md +63 -0
- package/skills/research-refresh/references/worked-cases.md +44 -0
- package/skills/review-loop/SKILL.md +200 -0
- package/skills/review-spec/SKILL.md +32 -0
- package/skills/review-spec/agents/openai.yaml +4 -0
- package/skills/rfc-from-research/SKILL.md +42 -0
- package/skills/rfc-from-research/agents/openai.yaml +4 -0
- package/skills/rfc-from-research/references/rfc-pattern.md +69 -0
- package/skills/skill-registry.yaml +810 -0
- package/skills/spec-cleanup/SKILL.md +103 -0
- package/skills/spec-cleanup/agents/openai.yaml +4 -0
- package/skills/spec-swarm/SKILL.md +87 -0
- package/skills/spec-swarm/agents/openai.yaml +4 -0
- package/skills/spec-swarm/template/SKILL.template.md +94 -0
- package/skills/spec-swarm/template/personas/accessibility-inclusion.md +40 -0
- package/skills/spec-swarm/template/personas/ai-technical-pm.md +69 -0
- package/skills/spec-swarm/template/personas/analytics-engineering.md +39 -0
- package/skills/spec-swarm/template/personas/applied-ai-eval.md +64 -0
- package/skills/spec-swarm/template/personas/business-gm-pm.md +67 -0
- package/skills/spec-swarm/template/personas/consumer-craft-pm.md +68 -0
- package/skills/spec-swarm/template/personas/content-design.md +40 -0
- package/skills/spec-swarm/template/personas/cpo.md +42 -0
- package/skills/spec-swarm/template/personas/data-science.md +42 -0
- package/skills/spec-swarm/template/personas/developer-experience.md +65 -0
- package/skills/spec-swarm/template/personas/dx-product.md +70 -0
- package/skills/spec-swarm/template/personas/field.md +43 -0
- package/skills/spec-swarm/template/personas/finance-cfo.md +40 -0
- package/skills/spec-swarm/template/personas/growth-pm.md +67 -0
- package/skills/spec-swarm/template/personas/platform-pm.md +67 -0
- package/skills/spec-swarm/template/personas/pmm.md +43 -0
- package/skills/spec-swarm/template/personas/principal-product-designer.md +42 -0
- package/skills/spec-swarm/template/personas/product-ops-program.md +41 -0
- package/skills/spec-swarm/template/personas/qa-release.md +41 -0
- package/skills/spec-swarm/template/personas/responsible-ai-safety.md +64 -0
- package/skills/spec-swarm/template/personas/security-privacy-legal.md +40 -0
- package/skills/spec-swarm/template/personas/strategy-competitive.md +41 -0
- package/skills/spec-swarm/template/personas/technical-architect.md +42 -0
- package/skills/spec-swarm/template/personas/technical-lead.md +43 -0
- package/skills/spec-swarm/template/personas/user-research.md +41 -0
- package/skills/spec-swarm-accessibility-inclusion/SKILL.md +95 -0
- package/skills/spec-swarm-accessibility-inclusion/agents/openai.yaml +4 -0
- package/skills/spec-swarm-ai-technical-pm/SKILL.md +124 -0
- package/skills/spec-swarm-analytics-engineering/SKILL.md +94 -0
- package/skills/spec-swarm-analytics-engineering/agents/openai.yaml +4 -0
- package/skills/spec-swarm-applied-ai-eval/SKILL.md +120 -0
- package/skills/spec-swarm-business-gm-pm/SKILL.md +122 -0
- package/skills/spec-swarm-consumer-craft-pm/SKILL.md +122 -0
- package/skills/spec-swarm-content-design/SKILL.md +95 -0
- package/skills/spec-swarm-content-design/agents/openai.yaml +4 -0
- package/skills/spec-swarm-cpo/SKILL.md +94 -0
- package/skills/spec-swarm-cpo/agents/openai.yaml +4 -0
- package/skills/spec-swarm-data-science/SKILL.md +95 -0
- package/skills/spec-swarm-data-science/agents/openai.yaml +4 -0
- package/skills/spec-swarm-developer-experience/SKILL.md +121 -0
- package/skills/spec-swarm-dx-product/SKILL.md +126 -0
- package/skills/spec-swarm-field/SKILL.md +96 -0
- package/skills/spec-swarm-field/agents/openai.yaml +4 -0
- package/skills/spec-swarm-finance-cfo/SKILL.md +95 -0
- package/skills/spec-swarm-finance-cfo/agents/openai.yaml +4 -0
- package/skills/spec-swarm-growth-pm/SKILL.md +122 -0
- package/skills/spec-swarm-platform-pm/SKILL.md +122 -0
- package/skills/spec-swarm-pmm/SKILL.md +96 -0
- package/skills/spec-swarm-pmm/agents/openai.yaml +4 -0
- package/skills/spec-swarm-principal-product-designer/SKILL.md +95 -0
- package/skills/spec-swarm-principal-product-designer/agents/openai.yaml +4 -0
- package/skills/spec-swarm-product-ops-program/SKILL.md +96 -0
- package/skills/spec-swarm-product-ops-program/agents/openai.yaml +4 -0
- package/skills/spec-swarm-qa-release/SKILL.md +96 -0
- package/skills/spec-swarm-qa-release/agents/openai.yaml +4 -0
- package/skills/spec-swarm-responsible-ai-safety/SKILL.md +120 -0
- package/skills/spec-swarm-security-privacy-legal/SKILL.md +95 -0
- package/skills/spec-swarm-security-privacy-legal/agents/openai.yaml +4 -0
- package/skills/spec-swarm-strategy-competitive/SKILL.md +96 -0
- package/skills/spec-swarm-strategy-competitive/agents/openai.yaml +4 -0
- package/skills/spec-swarm-technical-architect/SKILL.md +95 -0
- package/skills/spec-swarm-technical-architect/agents/openai.yaml +4 -0
- package/skills/spec-swarm-technical-lead/SKILL.md +96 -0
- package/skills/spec-swarm-technical-lead/agents/openai.yaml +4 -0
- package/skills/spec-swarm-user-research/SKILL.md +95 -0
- package/skills/spec-swarm-user-research/agents/openai.yaml +4 -0
- package/skills/strategy-check/SKILL.md +170 -0
- package/skills/strategy-check/agents/openai.yaml +4 -0
- package/skills/study-digest/SKILL.md +41 -0
- package/skills/synthetic-customer/SKILL.md +68 -0
- package/skills/update-cli-spec/SKILL.md +69 -0
- package/skills/update-cli-spec/agents/openai.yaml +4 -0
- package/skills/voc-researcher/SKILL.md +45 -0
- package/skills/voc-researcher/agents/openai.yaml +4 -0
- package/skills-lock.json +35 -0
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: preview-swarm
|
|
3
|
+
description: "Use when a spec packet, PRD-like spec, or approved intake summary needs a visual build preview, divergent product theses, selectable/commentable preview elements, convergence controls, or spec-updating feedback bundles before implementation."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Preview Swarm
|
|
7
|
+
|
|
8
|
+
Generate a self-contained, production-grade mini app that helps a user inspect and steer the agent's product judgment before implementation, then export agreed feedback back into the spec loop. Hold the `## Visual Quality Bar` below: a rough wireframe is a defect, not the target.
|
|
9
|
+
|
|
10
|
+
The goal is to make product and design judgment legible: what each direction believes, why it believes it, what it sacrifices, how confident it is, where dissent exists, and what still requires human judgment. Legibility leads and never gets traded away for decoration — but legibility no longer excuses low fidelity. The artifact must clear the `## Visual Quality Bar`; a wireframe register reads as broken software, not as "this is only a preview."
|
|
11
|
+
|
|
12
|
+
A Build Preview is a control surface, not a design handoff or stage gate. Default to one strong Build Preview when the spec points to a clear product shape. Use divergent directions only when comparison is the real product question or when multiple materially valid app structures remain unresolved.
|
|
13
|
+
|
|
14
|
+
The artifact must zoom out before it zooms in, but it must not bury the Build Preview under meta-review UI. Default to a Loopframe workbench: compact direction and page controls, one dominant preview canvas, and a right rail that explains the selected panel through the agentic loop. Let the user compare or borrow from other directions only in the context of the selected preview panel. If the user is forced to parse tables, chip walls, or separate mix-and-match inventories before the Build Preview becomes useful, the artifact has failed.
|
|
15
|
+
|
|
16
|
+
A Loopframe previews agency, not only layout:
|
|
17
|
+
|
|
18
|
+
`user surface -> agent read -> evidence thread -> action proposal -> approval boundary -> outcome/regeneration note`
|
|
19
|
+
|
|
20
|
+
Every selected panel should show what the agent believes, why it believes it, what it would do next, and where human approval is required.
|
|
21
|
+
|
|
22
|
+
## Visual Quality Bar
|
|
23
|
+
|
|
24
|
+
A Build Preview must clear a real visual-craft bar. "Make product judgment legible" is the job; a rough wireframe is a defect, not the intended register. Generate the artifact at the fidelity a designer expects from a modern frontend tool — clear hierarchy, deliberate type and spacing, realistic data, finished interaction states — then hold the clarity-first defaults on top of it. Polish never outranks legibility, but low fidelity is no longer acceptable.
|
|
25
|
+
|
|
26
|
+
Reach the bar through whatever generation capability the running harness actually has. Detect the affordance; do not assume it — productfoo runs in arbitrary harnesses and must fall back gracefully:
|
|
27
|
+
|
|
28
|
+
1. **Harness with a design-generation skill (for example `frontend-design`):** generate the artifact UI through that skill so the preview inherits its production-grade, non-generic frontend output. Give it the spec's product bet, domain data, and the Loopframe / divergence / feedback requirements below as the brief.
|
|
29
|
+
2. **Harness without one:** generate with a shadcn/React/Tailwind component vocabulary and use Impeccable as the craft gate (see `## Impeccable Collaboration Contract`). Port shadcn component patterns into the artifact; the npm package is not required.
|
|
30
|
+
3. **Neither a design-generation skill nor Impeccable:** fall back to the editorial visual grammar in `references/html-effectiveness-build-previews.md` when that local reference is available. If it is missing, record the unavailable local reference and craft-gate gap; do not fetch it remotely or silently ship the fallback as if the bar was met.
|
|
31
|
+
|
|
32
|
+
Whatever path runs, preserve the properties that make a Build Preview a control surface rather than just a mockup:
|
|
33
|
+
|
|
34
|
+
- **Self-contained and runnable with no local setup.** One artifact the user can open or paste-run with no build step, server, or account. React and Tailwind are allowed via CDN (a CDN React runtime plus the Tailwind CDN and an in-browser transform); a local build toolchain is not. The `localStorage` feedback persistence in `## HTML Mini App Requirements` must keep working.
|
|
35
|
+
- **The productfoo layer is non-negotiable** and is exactly what the mockup tools do not do: divergent product theses (`## Divergence Contract`), the Loopframe read (agent belief, evidence, approval boundary), and the comment-to-spec feedback loop (`## Comment Handoff`). The quality bar is additive — it never displaces these.
|
|
36
|
+
- **Clarity-first still governs.** Higher fidelity is not license for more surface area: `## Clarity-First Defaults`, "overwhelm is a P1," and "each revision subtracts" all still apply.
|
|
37
|
+
|
|
38
|
+
## Usage
|
|
39
|
+
|
|
40
|
+
Use with a spec packet, PRD-like spec, approved `interview-me` intake summary, or `spec-swarm` report:
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
Use $preview-swarm on <path-or-summary>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
If no artifact is provided, ask for the spec path, packet path, or approved intake summary before generating Build Previews.
|
|
47
|
+
|
|
48
|
+
## Preview Speed Contract
|
|
49
|
+
|
|
50
|
+
The mini app must feel faster than recovering from a plausible wrong build:
|
|
51
|
+
|
|
52
|
+
- Default to one strong preview when the source material already implies the product model.
|
|
53
|
+
- Divergent variants are only required when the app shape, audience, workflow model, or trust posture has multiple materially valid answers.
|
|
54
|
+
- Keep the first screen skimmable in under 60 seconds.
|
|
55
|
+
- Put explicit control actions in the artifact: `Build this`, `Revise direction`, `Show alternatives`, and `Skip preview next time`.
|
|
56
|
+
- Do not ask the user to review layout details that will be cheaper to fix after generation.
|
|
57
|
+
- Do not create a Build Preview checkpoint at all when the user clearly wants direct-to-app exploration and the risk is low.
|
|
58
|
+
|
|
59
|
+
## Clarity-First Defaults
|
|
60
|
+
|
|
61
|
+
The artifact has failed if a developer finds it confusing. Apply before the first show, every time. Full version in `references/html-effectiveness-build-previews.md`.
|
|
62
|
+
|
|
63
|
+
- One decision per screen, three choices or fewer; frame trade-offs as a labeled spectrum with exactly one recommendation.
|
|
64
|
+
- Plain language leads. Put commands, JSON, event schemas, and requirement IDs behind a single "show detail" disclosure — a terminal or raw-JSON default reads as a wireframe.
|
|
65
|
+
- Show outcomes with plain cards and state chips, not command output.
|
|
66
|
+
- Each revision subtracts: fewer words, controls, and detector findings. Adding surface area needs a reason.
|
|
67
|
+
- Fix detector P0/P1 before showing, do not merely report them; the user calling it busy or confusing is itself a P1.
|
|
68
|
+
|
|
69
|
+
## Inputs
|
|
70
|
+
|
|
71
|
+
Read the provided artifact and extract:
|
|
72
|
+
|
|
73
|
+
- Product bet
|
|
74
|
+
- Primary user, buyer, or reviewer
|
|
75
|
+
- Core workflow
|
|
76
|
+
- Page inventory implied by the workflow
|
|
77
|
+
- Component inventory implied by the workflow
|
|
78
|
+
- Required decisions the UI must support
|
|
79
|
+
- Trust, provenance, confidence, or dissent requirements
|
|
80
|
+
- Evidence boundary and private-source restrictions
|
|
81
|
+
- MVP boundary and explicit non-goals
|
|
82
|
+
- Existing open questions
|
|
83
|
+
- Swarm judgments or role-lens dissent, if available
|
|
84
|
+
|
|
85
|
+
Do not use raw private notes, transcripts, or source material unless the user explicitly approved them for this work.
|
|
86
|
+
|
|
87
|
+
## HTML Effectiveness Style
|
|
88
|
+
|
|
89
|
+
Before generating or materially revising the HTML mini app, read `references/html-effectiveness-build-previews.md`. Use it to translate the spec into a spatial, interactive artifact rather than a styled Markdown document.
|
|
90
|
+
|
|
91
|
+
Required style commitments:
|
|
92
|
+
|
|
93
|
+
- Make the artifact self-contained: one artifact the user can open or paste-run, no local build step, no server, no account. CDN-loaded React/Tailwind is allowed; a build toolchain is not.
|
|
94
|
+
- Put the Build Preview workbench above the fold: selected direction, selected page, dominant preview canvas, and right rail context.
|
|
95
|
+
- Use compact direction/page controls for divergence. Do not use a table, chip wall, or card gallery as the primary experience unless the user explicitly asks for comparison-first review.
|
|
96
|
+
- Do not render a separate storyboard when direction/page controls already switch the preview. Option switching must stay visually secondary: compact labels or segmented controls, no duplicate navigation rails, and the preview canvas should get the width.
|
|
97
|
+
- Start with the selected option's Build Preview immediately. Page purpose, promises, trace IDs, and evidence should appear in the rail after selection.
|
|
98
|
+
- Make the Build Preview the dominant object in the focused view. Keep page purpose, promises, and entry/exit context compact or in the rail so the sketch is not pushed below the fold.
|
|
99
|
+
- Do not render decision context as a permanent full-width card strip above the workbench. Put product bet, evidence boundary, source spec, and human-judgment context in a compact header line, the rail, or a closed `details` disclosure unless that context is the decision being reviewed.
|
|
100
|
+
- Use realistic fake product data inside preview panels. Fake names, records, dates, states, source labels, and edge cases should feel grounded in the spec domain. Avoid anonymous gray bars except as subtle secondary texture.
|
|
101
|
+
- In the context rail, render a Loopframe read for the selected panel: what this proves, agent belief, evidence, risk/gap, proposed spec change, approval boundary, and regeneration note.
|
|
102
|
+
- Keep rationale close to the thing it explains: inline chips, compact captions, hover/focus detail, or an adjacent detail tray; avoid long detached explanation panels.
|
|
103
|
+
- Use a sticky toolbar for mode, filters, feedback handoff, and convergence state.
|
|
104
|
+
- Treat feedback handoff as one clear path: a floating composer opens from the selected target or rail, saves locally, and immediately prepares an agent-ready Markdown handoff; JSON stays behind `Show details` for debugging, never as a competing primary action.
|
|
105
|
+
- When the generation path falls back to hand-written styling (no design-generation skill, no shadcn/Tailwind, no product design system), prefer warm editorial structure, thin borders, compact mono labels, serif display headings, and restrained color accents — the visual grammar in `references/html-effectiveness-build-previews.md`. This is the floor, not the target; prefer the `## Visual Quality Bar` paths above it.
|
|
106
|
+
|
|
107
|
+
Do not copy the guide's examples verbatim. Borrow the communication patterns: spatial comparison, live rendered choices, annotated structure, compact summaries, and export back into the agent/spec loop.
|
|
108
|
+
|
|
109
|
+
## Builder Expert Preflight
|
|
110
|
+
|
|
111
|
+
Before generating or materially revising the mini app, consult builder experts on the interaction patterns the artifact will use. Do this before writing HTML, CSS, or JavaScript.
|
|
112
|
+
|
|
113
|
+
Required builder lenses for every Build Preview mini app:
|
|
114
|
+
|
|
115
|
+
- `design engineer`: information hierarchy, interaction affordances, rationale placement, responsive composition, and whether the UI explains itself through controls instead of instruction prose.
|
|
116
|
+
- `front-end engineer`: browser interaction patterns, established libraries, gesture behavior, drag/drop, zoom/pan, state management, export behavior, and where hand-rolled code is risky.
|
|
117
|
+
- `accessibility engineer`: keyboard paths, focus states, hover alternatives, touch targets, labels, contrast, and screen-reader impact.
|
|
118
|
+
- `QA engineer`: the minimum visual and interaction checks needed before showing the artifact.
|
|
119
|
+
|
|
120
|
+
Conditional builder lenses:
|
|
121
|
+
|
|
122
|
+
- `back-end engineer`: required when comments, decisions, exports, auth, collaboration, persistence, or APIs need server ownership.
|
|
123
|
+
- `data engineer`: required when the artifact defines events, feedback schemas, metrics, provenance, freshness, or downstream analysis fields.
|
|
124
|
+
- `infrastructure engineer`: required when hosting, deployment, storage, background jobs, performance envelopes, or environment configuration matter.
|
|
125
|
+
- `security engineer`: required when the artifact touches private sources, PII, permissions, sharing, exports, auth, or source-boundary approval.
|
|
126
|
+
|
|
127
|
+
If a named builder skill is not available, apply the closest existing role lens and record the gap. Do not silently skip a missing builder expert.
|
|
128
|
+
|
|
129
|
+
Render a compact builder-preflight ledger before or alongside the artifact:
|
|
130
|
+
|
|
131
|
+
| Pattern / decision | Builder experts consulted | Recommendation | Applied? | Residual risk |
|
|
132
|
+
| --- | --- | --- | --- | --- |
|
|
133
|
+
|
|
134
|
+
Do not hand-roll established interaction primitives such as pan/zoom canvases, drag/drop, comment anchoring, keyboard navigation, or export schemas until the front-end engineer lens has either recommended a proven library/pattern or accepted a self-contained implementation with a clear reason.
|
|
135
|
+
|
|
136
|
+
When using a self-contained HTML artifact, still consult library and platform patterns. The final artifact may remain dependency-free, but its behavior should follow proven patterns for the interaction.
|
|
137
|
+
|
|
138
|
+
Builder pattern gaps must be included in the output when the current skill library lacks a distinct builder lens, especially for front-end engineering, design engineering, back-end engineering, data engineering, infrastructure engineering, or security engineering.
|
|
139
|
+
|
|
140
|
+
## Impeccable Collaboration Contract
|
|
141
|
+
|
|
142
|
+
Use Impeccable in concert with `preview-swarm` whenever the installed skill is available. Impeccable owns frontend craft pressure; `preview-swarm` owns packet traceability, divergence, comments, and spec feedback.
|
|
143
|
+
|
|
144
|
+
Start every material Build Preview run by loading project context for the source or expected artifact:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
node .agents/skills/impeccable/scripts/context.mjs --target <artifact-or-source>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Apply the returned product/design context to the Build Preview artifact before choosing layout, density, visual register, interaction vocabulary, or review depth.
|
|
151
|
+
|
|
152
|
+
Use the Impeccable command that matches the moment:
|
|
153
|
+
|
|
154
|
+
- `$impeccable shape <source-or-shape-brief>` before generation when there is no accepted Shape Brief, design direction, product model, or visual/interaction posture.
|
|
155
|
+
- `$impeccable critique <artifact>` after every generated or materially revised HTML artifact.
|
|
156
|
+
- `$impeccable audit <artifact>` when the artifact is responsive, interactive, accessibility-sensitive, keyboard-driven, state-rich, or production-like.
|
|
157
|
+
- `$impeccable polish <artifact>` when critique or audit reports P0/P1 issues, detector hits, weak hierarchy, confusing affordances, low realism, contrast problems, or interaction gaps.
|
|
158
|
+
|
|
159
|
+
Do not mark the preview-swarm output complete until one of these is true:
|
|
160
|
+
|
|
161
|
+
- Impeccable critique ran, the persisted critique path and score are recorded, and all P0/P1 findings are fixed or explicitly accepted as residual risk.
|
|
162
|
+
- Impeccable was unavailable, and a manual review gap is recorded with equivalent findings for hierarchy, realism, interaction clarity, responsive behavior, accessibility, and product-register fit.
|
|
163
|
+
|
|
164
|
+
Record the Impeccable results beside the artifact when possible. If working inside a packet, include critique, audit, or polish paths in the artifact notes or exported feedback bundle so later spec updates can trace design-review evidence.
|
|
165
|
+
|
|
166
|
+
## Interview Before Generation
|
|
167
|
+
|
|
168
|
+
Before generating the mini app, ask one question at a time when the spec does not already answer the decision. Use numbered options and the shared recommended-option style:
|
|
169
|
+
|
|
170
|
+
```text
|
|
171
|
+
Question: What kind of divergence should this run optimize for?
|
|
172
|
+
|
|
173
|
+
1. **Different product theses (Recommended)**
|
|
174
|
+
Best when the goal is to discover the strongest product model, not just compare layouts.
|
|
175
|
+
2. Different interaction models
|
|
176
|
+
Best when the product thesis is clear but the shape could be dashboard, board, wizard, canvas, or review queue.
|
|
177
|
+
3. Different review audiences
|
|
178
|
+
Best when the same spec must work for PM, designer, engineer, exec, or customer reviewer.
|
|
179
|
+
4. Maximum spread
|
|
180
|
+
Best for early exploration, but harder to converge because variants may differ on too many axes.
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Rules:
|
|
184
|
+
|
|
185
|
+
- Keep options numbered `1` through `4` when the question can reasonably fit four choices.
|
|
186
|
+
- Mark exactly one option with `(Recommended)` when there is enough evidence to recommend.
|
|
187
|
+
- Bold the recommended option label in Markdown responses.
|
|
188
|
+
- In generated HTML, render recommended choices as cards or rows with a `Recommended` badge, stronger border, and subtle background.
|
|
189
|
+
- If no recommendation is defensible, say `No recommendation yet` before the options instead of faking one.
|
|
190
|
+
- Wait for the user's answer before asking the next question.
|
|
191
|
+
- Do not ask questions that can be answered from the spec, packet, code, design system, or approved evidence.
|
|
192
|
+
|
|
193
|
+
High-value interview questions:
|
|
194
|
+
|
|
195
|
+
- What should divergent Build Previews optimize for first?
|
|
196
|
+
- What object model should anchor the IA: user journey, page map, entity map, task flow, or review workflow?
|
|
197
|
+
- Which pages must exist before component details make sense?
|
|
198
|
+
- Which reusable components are strategic decisions rather than implementation details?
|
|
199
|
+
- What decision should the user be able to make from the first screen?
|
|
200
|
+
- What must be visible without clicking?
|
|
201
|
+
- What should stay hidden until needed?
|
|
202
|
+
- What trust or provenance must the UI show?
|
|
203
|
+
- What would make the Build Preview misleading or fake?
|
|
204
|
+
- What is the convergence rule: pick one direction, merge parts, or annotate until accepted?
|
|
205
|
+
|
|
206
|
+
## Divergence Contract
|
|
207
|
+
|
|
208
|
+
Generate divergence through different product theses, not only through styling. Divergent variants are only valuable when they expose a real product decision. If the source artifact already supports one clear build direction, generate one strong preview and put alternatives behind `Show alternatives`.
|
|
209
|
+
|
|
210
|
+
When divergence is warranted, default to 3-5 variants:
|
|
211
|
+
|
|
212
|
+
- `workflow-first`: fastest path through the user job.
|
|
213
|
+
- `trust-first`: provenance, confidence, dissent, and human judgment are most visible.
|
|
214
|
+
- `comparison-first`: alternatives are side by side and easy to evaluate.
|
|
215
|
+
- `decision-ledger-first`: changes, rationale, and agreement state are primary.
|
|
216
|
+
- `collaboration-first`: comments, owners, decisions, and handoffs are primary.
|
|
217
|
+
- `radical-alt`: intentionally challenges the obvious screen model.
|
|
218
|
+
|
|
219
|
+
Each variant must include:
|
|
220
|
+
|
|
221
|
+
- An IA summary that names the variant's pages, page relationships, and core objects.
|
|
222
|
+
- A page map that lets the user click into each page.
|
|
223
|
+
- Large clickable preview panels that let the user click important reusable components from the selected page.
|
|
224
|
+
- A rendered preview panel.
|
|
225
|
+
- A short thesis or rationale available on demand, such as an `i` control attached to the Build Preview.
|
|
226
|
+
- Requirement coverage.
|
|
227
|
+
- The tradeoff it makes.
|
|
228
|
+
- What it sacrifices.
|
|
229
|
+
- Confidence.
|
|
230
|
+
- Dissent or caveat.
|
|
231
|
+
- What still needs human judgment.
|
|
232
|
+
|
|
233
|
+
Do not make rationale, confidence, or agent opinion the dominant persistent UI unless the user explicitly asks for a review ledger view. Prefer compact, on-demand rationale attached to the relevant preview element.
|
|
234
|
+
|
|
235
|
+
## IA Drilldown Contract
|
|
236
|
+
|
|
237
|
+
Every generated mini app must support this zoom path:
|
|
238
|
+
|
|
239
|
+
1. **Option switcher:** Show each divergent option as a compact control with option ID, thesis, and recommendation status.
|
|
240
|
+
2. **Page switcher:** Show the selected option's pages as a compact segmented control or minimal stepper, with the current page selected.
|
|
241
|
+
3. **Page focus:** Let the user select a page to see its purpose, entry conditions, exit conditions, primary components, and requirements covered.
|
|
242
|
+
4. **Component context:** Let the user click a reusable component from the selected page and show its context in the same lightweight rail or tray used for comments.
|
|
243
|
+
5. **Element detail:** Let the user select/comment on specific elements only after their page context is visible. Infer or attach component context when the element belongs to a component.
|
|
244
|
+
|
|
245
|
+
Model option labels like `1a`, `1b`, `1c`, and `1d` as variants of the same IA problem. Each option must make clear:
|
|
246
|
+
|
|
247
|
+
- Which pages exist.
|
|
248
|
+
- Which pages are omitted or deferred.
|
|
249
|
+
- Which components are shared.
|
|
250
|
+
- Which components are variant-specific.
|
|
251
|
+
- Which spec requirements are covered by each page/component.
|
|
252
|
+
- Which user decision the structure optimizes.
|
|
253
|
+
|
|
254
|
+
Do not produce four disconnected page mockups. Produce four navigable product structures with clickable pages and contextual component targets.
|
|
255
|
+
|
|
256
|
+
Avoid showing all pages and all components for all options at once. Prefer one selected option in focus, with lightweight controls to switch options.
|
|
257
|
+
|
|
258
|
+
Only add a storyboard when the storyboard itself is the product object being reviewed or when the IA cannot be understood from compact page controls and the preview canvas. Do not duplicate page controls with a storyboard rail.
|
|
259
|
+
|
|
260
|
+
## HTML Mini App Requirements
|
|
261
|
+
|
|
262
|
+
Generate one self-contained artifact the user can open or paste-run with no local setup. Reach the `## Visual Quality Bar` through the harness's generation path — a design-generation skill such as `frontend-design`, or shadcn/React/Tailwind via CDN with Impeccable as the gate, or the editorial fallback when neither exists. Do not require a build toolchain, server, or external account; CDN-loaded React/Tailwind is fine, a local build step is not.
|
|
263
|
+
|
|
264
|
+
Apply the Clarity-First Defaults first: the list below is a menu of elements to use when they earn their place under the clarity gate, not a mandate to render all of them at once. Default to the minimal set that makes the decision legible; add an element only when the artifact would fail the decision without it.
|
|
265
|
+
|
|
266
|
+
The mini app must include:
|
|
267
|
+
|
|
268
|
+
- A top decision strip with product bet, user/reviewer, decision to make, evidence boundary, and convergence status.
|
|
269
|
+
- Primary controls for `Build this`, `Revise direction`, `Show alternatives`, and `Skip preview next time`.
|
|
270
|
+
- Compact direction and page controls before the preview canvas.
|
|
271
|
+
- Contextual alternatives in the rail for the currently selected panel, so the user can borrow from other directions without leaving the Build Preview.
|
|
272
|
+
- A minimal page switcher for the selected variant, unless the artifact is explicitly about a storyboard.
|
|
273
|
+
- Clickable component panels inside the Build Preview. Avoid a separate component chip/list when the panel itself can be clicked.
|
|
274
|
+
- Realistic fake data in the preview canvas that demonstrates the workflow, records, states, errors, and privacy/provenance boundaries the spec cares about.
|
|
275
|
+
- A selected-page detail view with purpose, user promises, states, unresolved questions, and secondary requirement trace IDs.
|
|
276
|
+
- Component context shown in the click target summary or comment rail; do not require a separate selected-component inventory rail.
|
|
277
|
+
- Agent judgment for the selected panel: belief, evidence, uncertainty, proposed action, approval boundary, accepted spec changes, unresolved questions, and regeneration notes.
|
|
278
|
+
- Divergent variants represented as digestible thumbnails plus focused drilldown, not a wall of equally detailed panels.
|
|
279
|
+
- Stable `data-node-id` attributes on meaningful preview elements.
|
|
280
|
+
- Click-to-select preview elements.
|
|
281
|
+
- Comment entry for the selected element.
|
|
282
|
+
- Comment tags for `visual`, `workflow`, `copy`, `requirement`, `open-question`, and `cut`.
|
|
283
|
+
- Comment statuses for `proposed`, `accepted`, `rejected`, and `unresolved`.
|
|
284
|
+
- Client-side comment persistence: store comments in `localStorage` keyed by the packet Spec ID (set `data-spec-id` on `<body>`), load and re-render them on `DOMContentLoaded`, and save on every add/edit/delete/status change so feedback survives a reload without a server. Persistence is local convenience only; it must not write canonical packet files (R-009) and must not imply the comment is shared, synced, or applied.
|
|
285
|
+
- A canonical reference per comment of the form `<spec-id>#<node-id>`, plus an in-artifact deep link `#node=<node-id>`. On load, read `location.hash`; if it names a node, scroll to that `data-node-id` element and briefly flash it so the link round-trips.
|
|
286
|
+
- An obvious, persistent comment affordance with exactly one primary hand-back action: `Send to agent chat`. It compiles all saved comments into agent-ready Markdown, writes it to the clipboard, updates a visible "ready to paste" state, and (when embedded in an agent host) may post a `window.postMessage({ type: "foo.preview.feedback", format: "markdown", text })` event for automatic chat insertion. Do not present parallel primary actions such as Copy Markdown, Copy JSON, Export, or Download in the main review path.
|
|
287
|
+
- Controls to mark each variant as `keep`, `maybe`, or `cut`.
|
|
288
|
+
- A way to select one base direction.
|
|
289
|
+
- A way to mark specific panel-level ideas borrowed from other variants, shown beside the panel being reviewed rather than in a separate inventory.
|
|
290
|
+
- One primary `Send to agent chat` button that writes the compiled Markdown bundle to the clipboard (`navigator.clipboard.writeText`) with a confirmation toast and tries the host handoff event above. Each Markdown entry must render its canonical `#node=<node-id>` deep link inline so a downstream agent or person can jump back to the exact element. A secondary `Show details` disclosure may expose JSON for debugging or trace review, but JSON must not compete with the main hand-back action.
|
|
291
|
+
- Rationale, confidence, and dissent available on demand on the Build Preview itself, not as a large instruction panel.
|
|
292
|
+
- Direct affordances for important interactions. Prefer visible controls and familiar icons over instructional copy.
|
|
293
|
+
- A lightweight context rail on desktop, or tray on narrow screens, that shows the selected target and component information. The comment box itself should open as a floating composer/popover from a compact `Add comment` affordance, not live permanently inside the rail. Keep status, tags, spec impact, and export metadata minimal or progressive; do not make a persistent review-ops panel the dominant UI unless the user asks for it.
|
|
294
|
+
- A compact user-promise strip so the user can see which outcomes each direction protects or sacrifices. Keep raw requirement IDs as secondary trace metadata in the context/comment rail and export.
|
|
295
|
+
|
|
296
|
+
Recommended options and selected options inside the mini app must be separate states. The selected option owns the filled highlight: stronger border, filled background, and optional shadow/ring. A recommended-but-not-selected option must stay quieter than the selected option, using a badge plus a quiet outline or neutral background instead of the same filled treatment. Direction controls must update `aria-pressed` whenever selection changes.
|
|
297
|
+
|
|
298
|
+
Use this reusable pattern as a starting point:
|
|
299
|
+
|
|
300
|
+
```css
|
|
301
|
+
.option.active {
|
|
302
|
+
border: 2px solid #7c5cff;
|
|
303
|
+
background: #f4f1ff;
|
|
304
|
+
box-shadow: 0 0 0 3px rgba(124, 92, 255, .14);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.option.recommended:not(.active) {
|
|
308
|
+
border: 2px solid #c7bfff;
|
|
309
|
+
background: #fff;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
.recommended-badge {
|
|
313
|
+
display: inline-block;
|
|
314
|
+
font-weight: 700;
|
|
315
|
+
}
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
Adapt colors to the repo or product design system when one exists, but preserve the pattern: the selected state is the only filled card state; the recommendation is a badge or quieter secondary treatment when it is not selected.
|
|
319
|
+
|
|
320
|
+
## Design Review Gate
|
|
321
|
+
|
|
322
|
+
Before returning a generated or materially revised HTML artifact, run a design review on the written file.
|
|
323
|
+
|
|
324
|
+
- Follow the `Impeccable Collaboration Contract` above before using this fallback checklist.
|
|
325
|
+
- When Impeccable is available, run `$impeccable critique <artifact>` and persist the critique snapshot.
|
|
326
|
+
- If the artifact promises responsive behavior, accessibility, production-like polish, or important interaction mechanics, also run `$impeccable audit <artifact>` or `$impeccable polish <artifact>` as appropriate.
|
|
327
|
+
- Report the critique snapshot path, score, P0/P1 findings, detector/browser checks, and unresolved design risks in the final output.
|
|
328
|
+
- If Impeccable is unavailable, record the gap and perform a manual review against the same concerns: hierarchy, realism, interaction clarity, responsive behavior, accessibility, and whether the artifact feels like usable software.
|
|
329
|
+
|
|
330
|
+
## Comment Handoff
|
|
331
|
+
|
|
332
|
+
The comment path must feel like chatting with the preview, not managing an export panel:
|
|
333
|
+
|
|
334
|
+
1. The user selects a preview element.
|
|
335
|
+
2. The right rail or selected target shows one compact `Add comment` control.
|
|
336
|
+
3. Pressing it opens a floating composer near the selected target or lower-right viewport. The composer contains one textarea and one primary button: `Send to agent chat`.
|
|
337
|
+
4. Pressing the primary button saves the comment locally, compiles every saved comment into Markdown, copies that Markdown to the clipboard, and fires `window.postMessage({ type: "foo.preview.feedback", format: "markdown", text })` for hosts that can insert the feedback into chat automatically.
|
|
338
|
+
5. The UI confirms the next step in plain language: `Copied for chat` or `Sent to agent chat`.
|
|
339
|
+
6. JSON is available only inside `Show details`; it is a support artifact, not the user-facing handoff path.
|
|
340
|
+
|
|
341
|
+
The generated Markdown is the primary handoff. It should start with a direct instruction the user can paste without editing, for example:
|
|
342
|
+
|
|
343
|
+
```markdown
|
|
344
|
+
Please apply this Build Preview feedback. Treat proposed comments as review input; ask before changing spec requirements.
|
|
345
|
+
|
|
346
|
+
## Comments
|
|
347
|
+
- [workflow · proposed] The approval step is too hidden. (foo_preview_v0#approval-panel, #node=approval-panel)
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
The JSON details must remain structured enough for an agent to update the mini app and, after agreement, update the spec:
|
|
351
|
+
|
|
352
|
+
```json
|
|
353
|
+
{
|
|
354
|
+
"source_spec": "specs/example/spec.md",
|
|
355
|
+
"build_preview_artifact": "preview.html",
|
|
356
|
+
"selected_direction": "trust-first",
|
|
357
|
+
"adopted_panels": [
|
|
358
|
+
{
|
|
359
|
+
"from_variant": "comparison-first",
|
|
360
|
+
"from_option": "1C",
|
|
361
|
+
"from_page": "compare",
|
|
362
|
+
"label": "Tradeoff summary",
|
|
363
|
+
"description": "Explains what the host gains and gives up with each setup."
|
|
364
|
+
}
|
|
365
|
+
],
|
|
366
|
+
"comments": [
|
|
367
|
+
{
|
|
368
|
+
"id": "cmt_001",
|
|
369
|
+
"node_id": "trust-first.confidence-chip",
|
|
370
|
+
"ref": "build_preview_mini_apps_v0#trust-first.confidence-chip",
|
|
371
|
+
"link": "#node=trust-first.confidence-chip",
|
|
372
|
+
"variant": "trust-first",
|
|
373
|
+
"spec_trace": ["R-003", "R-007"],
|
|
374
|
+
"comment": "This needs to explain why confidence is low.",
|
|
375
|
+
"tag": "requirement",
|
|
376
|
+
"status": "accepted",
|
|
377
|
+
"spec_impact": "Add requirement for low-confidence explanation."
|
|
378
|
+
}
|
|
379
|
+
]
|
|
380
|
+
}
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
The `ref` and `link` fields are the canonical element pointers. `ref` is the paste-able `<spec-id>#<node-id>` token; `link` is the deep link that re-focuses the element when the artifact is reopened. The bundle is sourced from the persisted `localStorage` comments, so a reload-then-export still produces a complete bundle.
|
|
384
|
+
|
|
385
|
+
## Updating The Spec
|
|
386
|
+
|
|
387
|
+
Do not treat every comment as product truth. A comment may update the spec only when it is explicitly marked `accepted` or the user separately approves it.
|
|
388
|
+
|
|
389
|
+
When applying an accepted bundle:
|
|
390
|
+
|
|
391
|
+
1. Separate visual-only feedback from product requirements.
|
|
392
|
+
2. Update the HTML mini app for visual or interaction changes.
|
|
393
|
+
3. Update `spec.md` only for accepted requirement, workflow, source-boundary, validation, or non-goal changes.
|
|
394
|
+
4. Preserve unresolved comments as open questions.
|
|
395
|
+
5. Append a decision or review event to `events.jsonl` when working inside a spec packet.
|
|
396
|
+
|
|
397
|
+
## Output
|
|
398
|
+
|
|
399
|
+
Return:
|
|
400
|
+
|
|
401
|
+
- The generated HTML artifact path.
|
|
402
|
+
- The HTML Effectiveness patterns applied.
|
|
403
|
+
- The builder-preflight ledger.
|
|
404
|
+
- Whether the run produced one strong preview or divergent variants, and why.
|
|
405
|
+
- The divergence axes used, if divergence was warranted.
|
|
406
|
+
- The recommended base direction, if one is defensible.
|
|
407
|
+
- The single comment handoff path, including whether host auto-insert was available or the fallback was clipboard-ready Markdown.
|
|
408
|
+
- Builder pattern gaps and whether new swarm skills are needed.
|
|
409
|
+
- The Impeccable collaboration result: context target, shape decision, critique path, score, P0/P1 findings, audit/polish status, detector/browser checks, or the recorded review gap.
|
|
410
|
+
- Any user-judgment questions that remain.
|
|
411
|
+
|
|
412
|
+
## Error Handling
|
|
413
|
+
|
|
414
|
+
- If the spec or intake summary is missing, ask for it before generating Build Previews.
|
|
415
|
+
- If the artifact is too thin to support real divergence, route back to `interview-me` before generating fake options.
|
|
416
|
+
- If the request requires product taste or source-boundary approval, ask one focused question before proceeding.
|
|
417
|
+
- If comments are handed back without accepted statuses, summarize them as proposed feedback and ask for agreement before updating the spec.
|
|
418
|
+
- If the HTML artifact cannot be written, provide the complete artifact content in the response only as a fallback.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Preview Swarm"
|
|
3
|
+
short_description: "Generate primitive-HTML build previews with comments and convergence export."
|
|
4
|
+
default_prompt: "Use $preview-swarm on this spec to generate the smallest useful build preview; use divergent variants only if the product shape is unresolved, then run the Impeccable collaboration contract."
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# HTML Effectiveness Patterns For Spec Build Previews
|
|
2
|
+
|
|
3
|
+
Use these patterns as the styling fallback when `preview-swarm` cannot reach its `Visual Quality Bar` through a design-generation skill (such as `frontend-design`) or a shadcn/React/Tailwind + Impeccable path, and must hand-write the artifact's HTML/CSS. The information-design, divergence, and convergence patterns below apply on every path; the visual grammar is the floor for the hand-written fallback. They are derived from Thariq Shihipar's "Unreasonable Effectiveness of HTML" examples, especially exploration, visual directions, implementation plans, research explainers, and custom editors.
|
|
4
|
+
|
|
5
|
+
## Core Pattern
|
|
6
|
+
|
|
7
|
+
HTML works when it replaces flat prose with a spatial artifact the user can inspect, manipulate, and export.
|
|
8
|
+
|
|
9
|
+
For spec Build Previews, that means:
|
|
10
|
+
|
|
11
|
+
- Render competing directions live instead of describing them.
|
|
12
|
+
- Put tradeoffs next to the visual choice they explain.
|
|
13
|
+
- Make the user's convergence action part of the artifact.
|
|
14
|
+
- Use one obvious comment handoff that an agent can apply from chat: open a floating popover composer, save the comment, copy/send Markdown, and hide JSON details unless requested.
|
|
15
|
+
- Start at information architecture, then progressively reveal pages, components, and element comments.
|
|
16
|
+
- For agentic products, use Loopframes: show the user surface, agent read, evidence thread, action proposal, approval boundary, and regeneration note for the selected panel.
|
|
17
|
+
|
|
18
|
+
## Clarity-First Defaults
|
|
19
|
+
|
|
20
|
+
The artifact has failed if a developer finds it confusing. Lead with the decision in plain language; make the technical truth available, never the default surface. Apply these before the first show, every time — they override the maximalist element lists a generator may carry.
|
|
21
|
+
|
|
22
|
+
1. **One decision per screen, three choices or fewer.** Frame a trade-off as a labeled spectrum (for example cautious -> balanced -> fast) with exactly one recommendation. Cut any mode, tab, or panel that is not load-bearing for the decision.
|
|
23
|
+
2. **Plain language leads; jargon follows on demand.** Put commands, JSON, event schemas, requirement IDs, and other implementation detail behind a single "show detail" disclosure. A terminal or raw-JSON surface as the default reads as an unfinished wireframe, not a decision aid.
|
|
24
|
+
3. **Show outcomes, not mechanics.** Prefer plain-language cards and state chips (`source -> held`) over command output or config dumps. Keep realistic data minimal and domain-true.
|
|
25
|
+
4. **Each revision subtracts.** A good iteration removes words, controls, and panels. Track it concretely: fewer detector findings, fewer lines, fewer choices. If a revision adds surface area, justify why the decision needs it.
|
|
26
|
+
5. **Fix before you show.** Run the deterministic detector, fix every P0/P1 rather than merely reporting it, ground the visual register in the product's anti-references so it avoids generic AI slop, then re-run the detector and confirm the count dropped. Showing an unfixed artifact is the failure.
|
|
27
|
+
6. **Overwhelm is a P1.** If the user calls the artifact busy, confusing, or hard to parse, treat it as a blocking defect, not polish. The fix is almost always subtraction plus progressive disclosure, not more explanation.
|
|
28
|
+
|
|
29
|
+
## Page Anatomy
|
|
30
|
+
|
|
31
|
+
Use this structure by default:
|
|
32
|
+
|
|
33
|
+
1. Sticky toolbar
|
|
34
|
+
- Mode: compare, annotate, converge.
|
|
35
|
+
- Filters: accepted, proposed, unresolved, cut.
|
|
36
|
+
- One feedback handoff control: `Send to agent chat`; secondary JSON details only inside a disclosure.
|
|
37
|
+
- Current counts: variants kept/cut, comments, accepted spec impacts.
|
|
38
|
+
|
|
39
|
+
2. Page header
|
|
40
|
+
- Eyebrow: artifact type and source spec.
|
|
41
|
+
- Title: the product/spec decision, not a generic "Build Previews" label.
|
|
42
|
+
- Prompt box: one compact sentence describing what the artifact is trying to help decide.
|
|
43
|
+
|
|
44
|
+
3. Decision strip
|
|
45
|
+
- Decision context is on-demand by default, not a row of always-visible cards.
|
|
46
|
+
- Keep product bet, primary user/reviewer, core workflow, evidence boundary, current recommendation, and open human judgment in a compact header line, rail, or closed disclosure unless those facts are the current object of review.
|
|
47
|
+
- If a context strip is needed, it must be visually smaller than the direction controls and preview canvas.
|
|
48
|
+
|
|
49
|
+
4. Build Preview workbench
|
|
50
|
+
- Compact controls for direction and page selection.
|
|
51
|
+
- One large selected Build Preview above the fold.
|
|
52
|
+
- Component panels inside the Build Preview are the primary click targets.
|
|
53
|
+
- Do not make tables, chip walls, card galleries, or separate mix-and-match inventories the primary experience.
|
|
54
|
+
- Do not duplicate page controls with a storyboard or second navigation rail. The preview canvas should get the width.
|
|
55
|
+
|
|
56
|
+
5. Page and component context
|
|
57
|
+
- Selected page purpose, entry, exit, primary components, states, user promises, and secondary requirement traces.
|
|
58
|
+
- Component context attached to the actual preview panels whenever possible.
|
|
59
|
+
- Selected component usage, ownership, states, and spec impact appears in the context/comment rail or target summary, not a separate component inventory inspector.
|
|
60
|
+
|
|
61
|
+
6. Lightweight context/comment rail
|
|
62
|
+
- Shows the selected page, component, or element.
|
|
63
|
+
- Shows the agent's read of the selected target: belief, evidence, risk, proposed spec action, approval boundary, and regeneration note.
|
|
64
|
+
- Offers a compact `Add comment` affordance; the textarea and metadata controls open in a floating popover instead of living permanently in the rail.
|
|
65
|
+
- Offers alternatives from other directions only for the selected panel.
|
|
66
|
+
- Records adopted alternatives as structured output.
|
|
67
|
+
- Keeps tags, status, spec impact, and export preview available but not visually dominant.
|
|
68
|
+
- Uses a right rail on desktop and collapses to a tray on narrow screens.
|
|
69
|
+
- Avoids a permanent review-ops panel unless the artifact is explicitly about review operations.
|
|
70
|
+
|
|
71
|
+
7. Spec impact section
|
|
72
|
+
- Requirement coverage table or chips.
|
|
73
|
+
- Accepted changes grouped by requirement, workflow, source boundary, validation, or non-goal.
|
|
74
|
+
- Unresolved comments as open questions.
|
|
75
|
+
|
|
76
|
+
## Visual Grammar
|
|
77
|
+
|
|
78
|
+
When no design-generation skill, shadcn/Tailwind path, or product design system is available, use the guide's broad editorial grammar rather than generic dashboard chrome:
|
|
79
|
+
|
|
80
|
+
- Warm paper background, white artboards, charcoal text.
|
|
81
|
+
- Thin 1.5px borders and small radius.
|
|
82
|
+
- Serif display heading, system sans body, mono labels/chips.
|
|
83
|
+
- One restrained accent color, but do not collapse selected and recommended into the same treatment: the selected direction owns the filled highlight, while recommended-but-not-selected stays a badge or quiet outline.
|
|
84
|
+
- Compact uppercase eyebrows for context.
|
|
85
|
+
- Sticky controls, not long instruction copy.
|
|
86
|
+
- Cards only for individual artifacts, variants, tickets, or controls; avoid nested card stacks.
|
|
87
|
+
- Realistic fake product data: plausible names, records, dates, statuses, source labels, privacy states, and edge cases that make the spec behavior concrete.
|
|
88
|
+
|
|
89
|
+
Avoid:
|
|
90
|
+
|
|
91
|
+
- Decorative gradients, large empty hero sections, or marketing layouts.
|
|
92
|
+
- Build Previews that are just gray boxes without product meaning.
|
|
93
|
+
- Placeholder bars as the main content of a component panel. Use fake data first, then visual texture only if it helps scanning.
|
|
94
|
+
- Dense grids that expose every page/component at once.
|
|
95
|
+
- Long detached rationale panels that make the user read before seeing.
|
|
96
|
+
- Multiple competing export buttons. There should be one obvious path back to the agent chat; JSON/debug details stay secondary.
|
|
97
|
+
|
|
98
|
+
## Information Design For Specs
|
|
99
|
+
|
|
100
|
+
Map spec information to visual regions:
|
|
101
|
+
|
|
102
|
+
| Spec information | HTML treatment |
|
|
103
|
+
| --- | --- |
|
|
104
|
+
| Product bet | Header title or decision strip |
|
|
105
|
+
| Primary user/reviewer | Decision strip chip |
|
|
106
|
+
| Core workflow | Compact page switcher or rail context |
|
|
107
|
+
| Page inventory | Minimal segmented control or stepper for the selected variant |
|
|
108
|
+
| Component inventory | Clickable preview panels scoped to the selected page; use chips only when no panel exists |
|
|
109
|
+
| Requirements | Plain-language user-promise chips on each page/component, with raw IDs only in trace metadata |
|
|
110
|
+
| Evidence boundary | Small provenance chip or rail |
|
|
111
|
+
| Confidence/dissent | Inline badge or on-demand detail near the relevant element |
|
|
112
|
+
| Open questions | Context/comment rail and exportable Markdown |
|
|
113
|
+
| Accepted comments | Spec impact section and JSON export |
|
|
114
|
+
| Non-goals/cut line | Cut column, strike treatment, or explicit chips |
|
|
115
|
+
| Validation bar | Footer checklist or spec impact table |
|
|
116
|
+
| Agent belief | Loopframe rail attached to the selected panel |
|
|
117
|
+
| Agent action proposal | Suggested spec change with explicit approval boundary |
|
|
118
|
+
| Regeneration note | Exportable instruction for the next Build Preview iteration |
|
|
119
|
+
|
|
120
|
+
Fake data should be chosen from the spec's domain. For scheduling, show realistic meeting titles, public links, host and guest timezones, available and blocked slots, stale availability states, masked private calendar fields, and writeback evidence. For another domain, translate the same principle into domain-specific records and states.
|
|
121
|
+
|
|
122
|
+
## Divergence Patterns
|
|
123
|
+
|
|
124
|
+
Use real product-shape differences:
|
|
125
|
+
|
|
126
|
+
- Product thesis: trust-first vs workflow-first vs comparison-first.
|
|
127
|
+
- Interaction model: dashboard, board, wizard, canvas, timeline, queue.
|
|
128
|
+
- Reviewer lens: PM, designer, engineering, exec, customer-facing reviewer.
|
|
129
|
+
- Density: sparse decision surface vs dense review artifact.
|
|
130
|
+
- Evidence posture: provenance always visible vs disclosure-on-demand.
|
|
131
|
+
|
|
132
|
+
Do not produce variants that only change color, spacing, or icon style.
|
|
133
|
+
|
|
134
|
+
Represent each divergent option as a navigable IA, not only as a screen:
|
|
135
|
+
|
|
136
|
+
- `1a` can be a linear setup flow with preview and publish pages.
|
|
137
|
+
- `1b` can be a trust/proof architecture with privacy review and recheck pages.
|
|
138
|
+
- `1c` can be a comparison architecture with multiple link configurations and tradeoff pages.
|
|
139
|
+
- `1d` can be a decision-ledger architecture with review queues and unresolved decisions.
|
|
140
|
+
|
|
141
|
+
Each option should state which pages and components it adds, removes, combines, or defers.
|
|
142
|
+
|
|
143
|
+
Use Progressive Storyboard only when the IA is hard to digest or when the storyboard itself is the artifact being reviewed. Do not duplicate page controls with a storyboard:
|
|
144
|
+
|
|
145
|
+
- Put one option in focus.
|
|
146
|
+
- Show its journey as a minimal sequence with clear next/previous controls.
|
|
147
|
+
- Keep components hidden until a page is selected.
|
|
148
|
+
- In the selected page view, let the Build Preview dominate. Keep page summary and promise context compact or move it to the rail.
|
|
149
|
+
- Put component context on click in the same right rail or target summary used for comments.
|
|
150
|
+
- Prefer one component-click surface. If a preview panel already represents a component, do not also render a separate component chip for it.
|
|
151
|
+
- Avoid a separate component inventory rail or selected-component card unless the artifact is explicitly about comparing component inventories.
|
|
152
|
+
- Put comments in a lightweight right rail, tray, popover, or bottom sheet rather than around every node.
|
|
153
|
+
- Translate requirement IDs into user promises before rendering the canvas. Raw IDs belong in the right rail under `Spec trace`, not as the primary page language.
|
|
154
|
+
- Let the user compare options through compact direction controls and contextual alternatives. Use decision boards or thumbnails only when they add evidence, not as the main mechanism.
|
|
155
|
+
|
|
156
|
+
## Convergence Patterns
|
|
157
|
+
|
|
158
|
+
Borrow from custom editor examples:
|
|
159
|
+
|
|
160
|
+
- The artifact should let users manipulate the specific object under review.
|
|
161
|
+
- Comments should attach to elements, not only to the whole page.
|
|
162
|
+
- Comments should also be able to attach to pages and components.
|
|
163
|
+
- Commenting should feel lightweight: select target, write note, save. Advanced metadata can be inferred, hidden, or reviewed at export time.
|
|
164
|
+
- Keep/maybe/cut should be visible and reversible.
|
|
165
|
+
- Accepted comments should be separated from proposed comments.
|
|
166
|
+
- The primary handoff should copy/send only the useful Markdown result, not the whole UI state dump. JSON can exist behind `Show details` for agents that need structure.
|
|
167
|
+
|
|
168
|
+
The generated JSON should preserve enough structure for an agent to update `spec.md`, regenerate the HTML, or append packet events.
|