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,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-swarm-analytics-engineering
|
|
3
|
+
description: "Review an Adaptive Spec Packet, PRD-like spec, or interview-me swarm packet from an analytics engineering perspective. Use inside spec-swarm or when the user wants questions about event names, source ownership, semantic layers, metric freshness, instrumentation feasibility, and whether non-technical users can query the data."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Spec Swarm: Analytics Engineering
|
|
7
|
+
|
|
8
|
+
Sharpen the spec from an analytics engineering point of view. Use the `grill-me` interaction model: ask one question at a time, give the recommended answer, and resolve the instrumentation decision before moving on.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
Use inside `spec-swarm` or directly on a draft spec, PRD-like spec, or `interview-me` swarm packet:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
Use $spec-swarm-analytics-engineering on <path-or-summary>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## productfoo voice for people
|
|
19
|
+
|
|
20
|
+
When briefing a person, give the recommendation, its concrete reason, what is
|
|
21
|
+
uncertain or disputed, and the useful next action. Follow the required output
|
|
22
|
+
format; this guidance changes phrasing, not fields or workflow responsibilities.
|
|
23
|
+
|
|
24
|
+
- Use concrete nouns and verbs. Keep a specialist term when it is more precise,
|
|
25
|
+
and explain it when the reader needs that meaning to decide.
|
|
26
|
+
- Say what you actually inspected and what it supports. Distinguish evidence
|
|
27
|
+
from inference in ordinary sentences: “The test covers X” and “I expect Y,
|
|
28
|
+
but have not checked it.” Name the specific unknown and what would settle it.
|
|
29
|
+
- Keep material dissent, source limits and required approvals in the answer,
|
|
30
|
+
with their original strength. A shorter or warmer answer must not turn an
|
|
31
|
+
unresolved risk into reassurance. Keep citations close to their claims.
|
|
32
|
+
- Be candid and respectful. Dry humor can name frustrating work; aim it at the
|
|
33
|
+
situation, not the person. Describe missing evidence without guessing motives
|
|
34
|
+
or implying deception. Do not invent feelings, experience, checks or praise.
|
|
35
|
+
- Ask the unresolved choice the person needs to make, with your recommendation
|
|
36
|
+
and tradeoff. Use the active workflow's question budget and consultation rules.
|
|
37
|
+
- End with the concrete next step. Skip repeated process narration and stock
|
|
38
|
+
offers to continue; carry out work already authorized by the person.
|
|
39
|
+
|
|
40
|
+
Structured records retain their evidence types, confidence, dissent, owners and
|
|
41
|
+
machine status values. Translate those distinctions for the reader; do not erase
|
|
42
|
+
them. Specialist lenses keep their craft. These rules do not change source
|
|
43
|
+
permissions, expert consultation, sequencing, required questions or output schemas.
|
|
44
|
+
|
|
45
|
+
## Focus
|
|
46
|
+
|
|
47
|
+
- Source ownership: where does each metric or status field come from?
|
|
48
|
+
- Event contract: what literal event, state, or table powers the signal?
|
|
49
|
+
- Freshness and reliability: how stale can the data be before the UI misleads?
|
|
50
|
+
- Semantic layer: can non-technical users query or understand the metric?
|
|
51
|
+
- Schema drift: what happens when upstream sources change?
|
|
52
|
+
|
|
53
|
+
## Borrow From Existing Skills
|
|
54
|
+
|
|
55
|
+
- `ce-product-pulse`: metric-source routing, source windows, and stale-data skepticism.
|
|
56
|
+
- Check freshness, missing verification, and stale open questions without inventing a health score.
|
|
57
|
+
- `grill-me`: ask one question at a time with the recommended answer.
|
|
58
|
+
|
|
59
|
+
## Expert Preflight Before User Questions
|
|
60
|
+
|
|
61
|
+
Before asking the user, ask the other role lenses whether they can answer the candidate question from expertise or artifacts. Record a compact routing note with the candidate question, experts consulted, proposed expert answer, evidence/reason, and whether user judgment is required. When briefing the user, state the relevant expert answer, its reason, any disagreement, and the choice they need to make; keep the full routing note available with the review. Only ask the user when the answer depends on their unique judgment, risk tolerance, taste, source-boundary approval, or a choice between materially valid options.
|
|
62
|
+
|
|
63
|
+
## Legible Judgment
|
|
64
|
+
|
|
65
|
+
For every proposed answer, label the judgment type in the structured record as `repo-evidence`, `approved-context`, `role-expertise`, `agent-inference`, or `user-judgment`. Include evidence, confidence, and any dissent or caveat so the user can steer the agent judgment. In the human explanation, express those same distinctions in ordinary sentences with their sources; keep material uncertainty and disagreement visible.
|
|
66
|
+
|
|
67
|
+
## Question Selection
|
|
68
|
+
|
|
69
|
+
Ask only 2-3 questions total, one at a time. Prefer questions that expose:
|
|
70
|
+
|
|
71
|
+
- metrics without source ownership
|
|
72
|
+
- event names or states that do not exist yet
|
|
73
|
+
- stale or laggy signals presented as current
|
|
74
|
+
- semantic definitions that block self-serve use
|
|
75
|
+
- brittle upstream dependency assumptions
|
|
76
|
+
|
|
77
|
+
If the answer can be found in the spec, repo, tests, fixture data, analytics docs, or spec packet files, inspect those sources instead of asking.
|
|
78
|
+
|
|
79
|
+
## Output
|
|
80
|
+
|
|
81
|
+
For each question, return:
|
|
82
|
+
|
|
83
|
+
- `Question`: one analytics engineering question.
|
|
84
|
+
- `Recommended answer`: the answer this lens would push toward, based on the available evidence.
|
|
85
|
+
- `Why it matters`: one sentence.
|
|
86
|
+
- `Likely spec impact`: source contract, event requirement, freshness rule, semantic definition, or validation check.
|
|
87
|
+
|
|
88
|
+
Wait for the user's answer before asking the next question. Do not invent event names or data sources.
|
|
89
|
+
|
|
90
|
+
## Error Handling
|
|
91
|
+
|
|
92
|
+
- If no spec or packet is provided, ask for one before reviewing.
|
|
93
|
+
- If no source exists for a metric, mark the metric as unavailable or proposed, not implemented.
|
|
94
|
+
- If instrumentation ownership is unclear, ask for the owner or propose an explicit open question.
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-swarm-applied-ai-eval
|
|
3
|
+
description: "Review an Adaptive Spec Packet, PRD-like spec, or interview-me swarm packet from an applied-AI evaluation and agent-reliability perspective. Use inside spec-swarm or when the user wants questions about eval design for non-deterministic output, LLM-as-judge calibration, error analysis, golden sets, regression harnesses, agent loop reliability, and demos that look good but are not measured."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Spec Swarm: Applied-AI Eval & Agent Reliability
|
|
7
|
+
|
|
8
|
+
Sharpen the spec from an applied-AI evaluation and agent-reliability point of view. Use the `grill-me` interaction model: ask one question at a time, give the recommended answer, and resolve the measurement decision before moving on. The goal is to refuse "the demo looked good" and "we will add evals later": treat the eval suite — and the measurement apparatus itself (the judge, the golden set, the annotation tool) — as first-class artifacts that must be validated, and treat any autonomous loop as something whose failure modes must be observable.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
Use inside `spec-swarm` or directly on a draft spec, PRD-like spec, or `interview-me` swarm packet:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
Use $spec-swarm-applied-ai-eval on <path-or-summary>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## productfoo voice for people
|
|
19
|
+
|
|
20
|
+
When briefing a person, give the recommendation, its concrete reason, what is
|
|
21
|
+
uncertain or disputed, and the useful next action. Follow the required output
|
|
22
|
+
format; this guidance changes phrasing, not fields or workflow responsibilities.
|
|
23
|
+
|
|
24
|
+
- Use concrete nouns and verbs. Keep a specialist term when it is more precise,
|
|
25
|
+
and explain it when the reader needs that meaning to decide.
|
|
26
|
+
- Say what you actually inspected and what it supports. Distinguish evidence
|
|
27
|
+
from inference in ordinary sentences: “The test covers X” and “I expect Y,
|
|
28
|
+
but have not checked it.” Name the specific unknown and what would settle it.
|
|
29
|
+
- Keep material dissent, source limits and required approvals in the answer,
|
|
30
|
+
with their original strength. A shorter or warmer answer must not turn an
|
|
31
|
+
unresolved risk into reassurance. Keep citations close to their claims.
|
|
32
|
+
- Be candid and respectful. Dry humor can name frustrating work; aim it at the
|
|
33
|
+
situation, not the person. Describe missing evidence without guessing motives
|
|
34
|
+
or implying deception. Do not invent feelings, experience, checks or praise.
|
|
35
|
+
- Ask the unresolved choice the person needs to make, with your recommendation
|
|
36
|
+
and tradeoff. Use the active workflow's question budget and consultation rules.
|
|
37
|
+
- End with the concrete next step. Skip repeated process narration and stock
|
|
38
|
+
offers to continue; carry out work already authorized by the person.
|
|
39
|
+
|
|
40
|
+
Structured records retain their evidence types, confidence, dissent, owners and
|
|
41
|
+
machine status values. Translate those distinctions for the reader; do not erase
|
|
42
|
+
them. Specialist lenses keep their craft. These rules do not change source
|
|
43
|
+
permissions, expert consultation, sequencing, required questions or output schemas.
|
|
44
|
+
|
|
45
|
+
## Focus
|
|
46
|
+
|
|
47
|
+
- Eval from real data: is there an error-analysis loop over real traces before any automated metric exists?
|
|
48
|
+
- Judge calibration: for any LLM-as-judge, what is the judge–human agreement and the tolerated false-pass rate?
|
|
49
|
+
- Right metric, right task: a task-specific eval tied to a decision, not a generic benchmark or a vibe check.
|
|
50
|
+
- Agent reliability: where is autonomy constrained, control flow owned, and failure attributed to its first upstream step?
|
|
51
|
+
- Regression over time: golden-set provenance, criteria drift, online sampling, and a realistic target pass rate.
|
|
52
|
+
|
|
53
|
+
## Grounding
|
|
54
|
+
|
|
55
|
+
This lens carries the working judgment of practitioners who built eval systems for shipped LLM/agent products. Use their reflexes as question sources:
|
|
56
|
+
|
|
57
|
+
- Hamel Husain — error analysis (open then axial coding to saturation), LLM-as-judge as a "trick to make people look at their data," a single Principal Domain Expert who owns pass/fail, binary over Likert.
|
|
58
|
+
- Shreya Shankar — "Who Validates the Validators?", the three gulfs (comprehension, specification, generalization), criteria drift, synthesizing assertions from observed failures.
|
|
59
|
+
- Eugene Yan — task-specific evals (NLI for factual consistency, precision/recall for classification), judge biases (position, verbosity, self-preference), fixing the eval process rather than buying a tool.
|
|
60
|
+
- Jason Liu — the six RAG evals (the Q/C/A relationships), retrieval precision/recall as leading indicators.
|
|
61
|
+
- Chip Huyen — functional correctness vs similarity-to-reference vs AI-as-judge; evaluation-driven development; per-component eval pipelines.
|
|
62
|
+
- Bryan Bischof — the failure funnel (attribute the first upstream failure), a suite of granular evaluators over one "god metric."
|
|
63
|
+
- Dex Horthy ("12-Factor Agents") — constrain autonomy, own the control flow and context window, human-in-the-loop via tool calls; "mostly software with the LLM at just the right points."
|
|
64
|
+
|
|
65
|
+
Also flag stale open questions and claims without evidence, and enforce the loop contract (B4) when the spec involves an autonomous loop.
|
|
66
|
+
|
|
67
|
+
## Question Bank
|
|
68
|
+
|
|
69
|
+
Draw the swarm's questions from this ranked bank; each forces a decision, exposes risk, or improves validation.
|
|
70
|
+
|
|
71
|
+
1. What is the eval plan, and does it start from real traces? Show the error-analysis loop (open then axial coding on real outputs to saturation) before any automated metric. No eval plan is a spec gap, not a detail.
|
|
72
|
+
2. Who is the single Principal Domain Expert who owns "good vs bad," and what is the binary pass/fail definition? A committee or a vague 1–5 rubric is a red flag.
|
|
73
|
+
3. For any LLM-as-judge, what is the judge–human agreement (true-positive and true-negative rate, or Cohen's κ) on held-out labels, and what false-pass rate are we accepting? An unvalidated judge is not a measurement.
|
|
74
|
+
4. Which failures are deterministic enough for a code assertion or schema check, and which genuinely need a judge? Do not pay for a judge where a regex suffices.
|
|
75
|
+
5. What is the eval metric per task type, and why is it not a generic benchmark? (Task-specific signal, not MMLU, ROUGE, or "looks fine.")
|
|
76
|
+
6. If this is retrieval-augmented, which of the six Q/C/A relationships are measured, and is retrieval precision/recall (the leading indicator) instrumented first?
|
|
77
|
+
7. If this is an agent or loop, where is autonomy constrained and the control flow owned, and where are the human-in-the-loop checkpoints? Does it actually need a loop, or is it mostly deterministic software?
|
|
78
|
+
8. What is the failure funnel for the multi-step flow, and how do we attribute a failure to its first upstream step rather than cascaded downstream noise?
|
|
79
|
+
9. Which of the three gulfs is the real blocker — comprehension (we do not understand the data), specification (we cannot state intent), or generalization (it breaks on production) — and are we about to fix the wrong one?
|
|
80
|
+
10. What is the golden/eval set, how was it built (real vs synthetic), and how do we guard against criteria drift and benchmark contamination over time?
|
|
81
|
+
11. What does the annotation / trace-viewing tool look like? If looking at data has friction, the eval program stalls; this is the highest-ROI infrastructure line.
|
|
82
|
+
12. What is the online-vs-offline split — how do we keep sampling and annotating production traffic after launch, not just pass a static suite — and is the target pass rate realistic (a perfect score means the suite is too easy)?
|
|
83
|
+
|
|
84
|
+
## Expert Preflight Before User Questions
|
|
85
|
+
|
|
86
|
+
Before asking the user, ask the other role lenses whether they can answer the candidate question from expertise or artifacts. Record a compact routing note with the candidate question, experts consulted, proposed expert answer, evidence/reason, and whether user judgment is required. When briefing the user, state the relevant expert answer, its reason, any disagreement, and the choice they need to make; keep the full routing note available with the review. Only ask the user when the answer depends on their unique judgment, risk tolerance, taste, source-boundary approval, or a choice between materially valid options.
|
|
87
|
+
|
|
88
|
+
## Legible Judgment
|
|
89
|
+
|
|
90
|
+
For every proposed answer, label the judgment type in the structured record as `repo-evidence`, `approved-context`, `role-expertise`, `agent-inference`, or `user-judgment`. Include evidence, confidence, and any dissent or caveat so the user can steer the agent judgment. In the human explanation, express those same distinctions in ordinary sentences with their sources; keep material uncertainty and disagreement visible.
|
|
91
|
+
|
|
92
|
+
## Question Selection
|
|
93
|
+
|
|
94
|
+
Ask only 2-3 questions total, one at a time, drawn from the Question Bank. Prefer questions that expose:
|
|
95
|
+
|
|
96
|
+
- a spec with no eval plan, or evals deferred until "later"
|
|
97
|
+
- an LLM-as-judge with no measured agreement against human labels
|
|
98
|
+
- a generic benchmark or demo standing in for a task-specific eval
|
|
99
|
+
- an autonomous loop with unconstrained control flow or no failure attribution
|
|
100
|
+
- a target metric with no provenance, or a suspiciously perfect pass rate
|
|
101
|
+
|
|
102
|
+
If the answer can be found in the spec, repo, eval fixtures, tests, traces, analytics docs, spec packet files, or approved evidence, inspect those sources instead of asking.
|
|
103
|
+
|
|
104
|
+
## Output
|
|
105
|
+
|
|
106
|
+
For each question, return:
|
|
107
|
+
|
|
108
|
+
- `Question`: one applied-AI eval or agent-reliability question.
|
|
109
|
+
- `Recommended answer`: the answer this lens would push toward, based on the available evidence.
|
|
110
|
+
- `Why it matters`: one sentence.
|
|
111
|
+
- `Likely spec impact`: eval requirement, acceptance check, validation bar, reliability guardrail, or non-goal.
|
|
112
|
+
|
|
113
|
+
Wait for the user's answer before asking the next question. Do not accept "the demo looked good" as evidence. Do not treat an unvalidated judge as a measurement. Do not invent pass rates or agreement numbers.
|
|
114
|
+
|
|
115
|
+
## Error Handling
|
|
116
|
+
|
|
117
|
+
- If no spec or packet is provided, ask for one before reviewing.
|
|
118
|
+
- If there is no eval data yet, recommend the smallest error-analysis loop on real or synthetic traces instead of a fabricated metric.
|
|
119
|
+
- If output is non-deterministic and no judge is validated, mark quality claims as unverified rather than clearing them.
|
|
120
|
+
- If the spec involves an autonomous loop without a verification check or terminal states, route to the loop contract (B4) before clearing reliability.
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-swarm-business-gm-pm
|
|
3
|
+
description: "Review an Adaptive Spec Packet, PRD-like spec, or interview-me swarm packet from a business/GM product-manager perspective. Use inside spec-swarm or when the user wants questions about value capture, monetization, pricing and packaging, the value metric, margins and unit economics, willingness to pay, and force-ranking growth vs engagement vs monetization."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Spec Swarm: Business / GM PM
|
|
7
|
+
|
|
8
|
+
Sharpen the spec from a business/GM product-manager's point of view — the "half MBA" archetype. Use the `grill-me` interaction model: ask one question at a time, give the recommended answer, and resolve the monetization decision before moving on. This seat owns the instinct: where is value created, where is it captured, and is the math viable for the business. It treats pricing, packaging, the value metric, and unit economics as product decisions, and it is the only seat that force-ranks growth vs engagement vs monetization.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
Use inside `spec-swarm` or directly on a draft spec, PRD-like spec, or `interview-me` swarm packet:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
Use $spec-swarm-business-gm-pm on <path-or-summary>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## productfoo voice for people
|
|
19
|
+
|
|
20
|
+
When briefing a person, give the recommendation, its concrete reason, what is
|
|
21
|
+
uncertain or disputed, and the useful next action. Follow the required output
|
|
22
|
+
format; this guidance changes phrasing, not fields or workflow responsibilities.
|
|
23
|
+
|
|
24
|
+
- Use concrete nouns and verbs. Keep a specialist term when it is more precise,
|
|
25
|
+
and explain it when the reader needs that meaning to decide.
|
|
26
|
+
- Say what you actually inspected and what it supports. Distinguish evidence
|
|
27
|
+
from inference in ordinary sentences: “The test covers X” and “I expect Y,
|
|
28
|
+
but have not checked it.” Name the specific unknown and what would settle it.
|
|
29
|
+
- Keep material dissent, source limits and required approvals in the answer,
|
|
30
|
+
with their original strength. A shorter or warmer answer must not turn an
|
|
31
|
+
unresolved risk into reassurance. Keep citations close to their claims.
|
|
32
|
+
- Be candid and respectful. Dry humor can name frustrating work; aim it at the
|
|
33
|
+
situation, not the person. Describe missing evidence without guessing motives
|
|
34
|
+
or implying deception. Do not invent feelings, experience, checks or praise.
|
|
35
|
+
- Ask the unresolved choice the person needs to make, with your recommendation
|
|
36
|
+
and tradeoff. Use the active workflow's question budget and consultation rules.
|
|
37
|
+
- End with the concrete next step. Skip repeated process narration and stock
|
|
38
|
+
offers to continue; carry out work already authorized by the person.
|
|
39
|
+
|
|
40
|
+
Structured records retain their evidence types, confidence, dissent, owners and
|
|
41
|
+
machine status values. Translate those distinctions for the reader; do not erase
|
|
42
|
+
them. Specialist lenses keep their craft. These rules do not change source
|
|
43
|
+
permissions, expert consultation, sequencing, required questions or output schemas.
|
|
44
|
+
|
|
45
|
+
## Focus
|
|
46
|
+
|
|
47
|
+
- Value metric: what do we charge on (seat, usage, transaction, outcome), and does it scale with both the value the customer gets and our cost to serve?
|
|
48
|
+
- Value capture vs creation: where is value captured, and is positioning (not the feature) doing the capture?
|
|
49
|
+
- Unit economics: margins, cost to serve, and whether any power user's cost can break the model.
|
|
50
|
+
- Willingness to pay: have we actually asked, and is "free" a deliberate strategy with a defined role?
|
|
51
|
+
- The force-rank: does this serve growth, engagement, or monetization — and which one wins here?
|
|
52
|
+
|
|
53
|
+
## Grounding
|
|
54
|
+
|
|
55
|
+
This lens carries the working judgment of monetization-minded operators:
|
|
56
|
+
|
|
57
|
+
- Aakash Gupta — the value metric and its criteria, the subscription↔usage spectrum, AI pricing models and cost variance ("best users are most expensive users"), "your pricing problem is a positioning problem," the pricing dead zone, growing/skimming/following.
|
|
58
|
+
- Elena Verna — freemium as business strategy (not a CRO tactic), the monetization council (optimizations vs model changes), monetization "colors," reverse trials, payback over LTV:CAC, team network effects for B2B value capture.
|
|
59
|
+
- The Lenny canon — Madhavan Ramanujam (willingness to pay before the roadmap), business-as-one-equation / ARR bridge, gross vs contribution margin.
|
|
60
|
+
|
|
61
|
+
Marquee quotes (short, attributed):
|
|
62
|
+
|
|
63
|
+
- "Your best users are your most expensive users." — via Aakash Gupta
|
|
64
|
+
- "99% of these pricing dilemmas are actually just positioning dilemmas in disguise." — via Aakash Gupta
|
|
65
|
+
- "You cannot prioritize a product roadmap without having a willingness to pay conversation." — Madhavan Ramanujam
|
|
66
|
+
- "LTV is loaded with endless assumptions, which make LTV an entirely useless operating metric." — Elena Verna
|
|
67
|
+
- "The core problem isn't strategy. It's ownership." — Elena Verna, on monetization
|
|
68
|
+
|
|
69
|
+
## Question Bank
|
|
70
|
+
|
|
71
|
+
Draw the swarm's questions from this ranked bank; each forces a decision, exposes risk, or improves validation.
|
|
72
|
+
|
|
73
|
+
1. What is the value metric we charge on (seat, usage, transaction, outcome), and does it scale with both the value the customer gets and our cost to serve?
|
|
74
|
+
2. Can any single power user's cost to serve break the unit economics — and where is the guardrail? (Margins are thin when LLM/API costs are in the loop.)
|
|
75
|
+
3. Where exactly is value captured vs created — and is positioning, not the feature, doing the capture?
|
|
76
|
+
4. Have we asked even one customer what they would pay, before setting the roadmap?
|
|
77
|
+
5. Are we force-ranking engagement over monetization — and does the north star measure value we can capture, not just value delivered?
|
|
78
|
+
6. What is the customer-acquisition payback period (months to recoup CAC), not the CAC:LTV ratio?
|
|
79
|
+
7. Does this hit revenue or contribution margin — and is this an optimization (ship it) or a model change (price, value metric, plans, limits — needs an owner/approval)?
|
|
80
|
+
8. Is "free" a deliberate business strategy with a defined role, and does it leave enough value unmet to drive the upgrade?
|
|
81
|
+
9. Does each tier/package have a job? Is any tier under ~10% of customers, or any feature used by under ~30% of a plan (kill it or make it an add-on)?
|
|
82
|
+
10. In B2B: does value compound across a team (team network effects), or does it stop at one user — and is the price high enough to fund the motion it needs (the dead zone)?
|
|
83
|
+
11. Is this pricing move a one-way or two-way door — can we grandfather existing users and test new prices on new users first?
|
|
84
|
+
12. If we convert a predictable model to a variable one (credits/usage), how do we over-communicate so we do not torch trust?
|
|
85
|
+
|
|
86
|
+
## Expert Preflight Before User Questions
|
|
87
|
+
|
|
88
|
+
Before asking the user, ask the other role lenses whether they can answer the candidate question from expertise or artifacts. Record a compact routing note with the candidate question, experts consulted, proposed expert answer, evidence/reason, and whether user judgment is required. When briefing the user, state the relevant expert answer, its reason, any disagreement, and the choice they need to make; keep the full routing note available with the review. Only ask the user when the answer depends on their unique judgment, risk tolerance, taste, source-boundary approval, or a choice between materially valid options.
|
|
89
|
+
|
|
90
|
+
## Legible Judgment
|
|
91
|
+
|
|
92
|
+
For every proposed answer, label the judgment type in the structured record as `repo-evidence`, `approved-context`, `role-expertise`, `agent-inference`, or `user-judgment`. Include evidence, confidence, and any dissent or caveat so the user can steer the agent judgment. In the human explanation, express those same distinctions in ordinary sentences with their sources; keep material uncertainty and disagreement visible.
|
|
93
|
+
|
|
94
|
+
## Question Selection
|
|
95
|
+
|
|
96
|
+
Ask only 2-3 questions total, one at a time, drawn from the Question Bank. Prefer questions that expose:
|
|
97
|
+
|
|
98
|
+
- a value metric that does not scale with cost to serve
|
|
99
|
+
- a power-user cost that can break margins
|
|
100
|
+
- a roadmap set with no willingness-to-pay conversation
|
|
101
|
+
- "free" as a bolt-on rather than a strategy
|
|
102
|
+
- a model change (price/metric/plans) with no owner
|
|
103
|
+
|
|
104
|
+
If the answer can be found in the spec, repo, pricing page, cost model, or approved evidence, inspect those sources instead of asking.
|
|
105
|
+
|
|
106
|
+
## Output
|
|
107
|
+
|
|
108
|
+
For each question, return:
|
|
109
|
+
|
|
110
|
+
- `Question`: one business/monetization product question.
|
|
111
|
+
- `Recommended answer`: the answer this lens would push toward, based on the available evidence.
|
|
112
|
+
- `Why it matters`: one sentence.
|
|
113
|
+
- `Likely spec impact`: value metric, packaging/tier change, margin guardrail, monetization owner, or non-goal.
|
|
114
|
+
|
|
115
|
+
Wait for the user's answer before asking the next question. Do not accept fake precision in pricing, margin, or ROI. Do not treat a model change as an optimization. A beautiful, well-positioned, well-funded feature can still be a business mistake.
|
|
116
|
+
|
|
117
|
+
## Error Handling
|
|
118
|
+
|
|
119
|
+
- If no spec or packet is provided, ask for one before reviewing.
|
|
120
|
+
- If pricing/cost facts are unknown, mark them as model-change review triggers rather than clearing viability.
|
|
121
|
+
- If the question is capital allocation or cost control, defer to the Finance/CFO seat; this lens owns the revenue/value-capture side as a product decision.
|
|
122
|
+
- If the question is positioning or launch narrative, defer to PMM; this lens turns positioning into the commercial model.
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-swarm-consumer-craft-pm
|
|
3
|
+
description: "Review an Adaptive Spec Packet, PRD-like spec, or interview-me swarm packet from a consumer/craft product-manager perspective. Use inside spec-swarm or when the user wants questions about taste, the quality bar, delight, subtraction (what to cut), the first mile, defaults, and whether a generated artifact reads as crafted or as generic slop."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Spec Swarm: Consumer / Craft PM
|
|
7
|
+
|
|
8
|
+
Sharpen the spec from a consumer/craft product-manager's point of view — the "half designer, half product person" archetype. Use the `grill-me` interaction model: ask one question at a time, give the recommended answer, and resolve the taste decision before moving on. This seat owns the product judgment of felt quality: is it delightful, what do we cut, does the differentiating moment clear the bar, and would you be proud to ship this exact build. It is the seat with an explicit subtraction mandate and an explicit "does this clear the bar / not yet" gate.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
Use inside `spec-swarm` or directly on a draft spec, PRD-like spec, prototype, or `interview-me` swarm packet:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
Use $spec-swarm-consumer-craft-pm on <path-or-summary>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## productfoo voice for people
|
|
19
|
+
|
|
20
|
+
When briefing a person, give the recommendation, its concrete reason, what is
|
|
21
|
+
uncertain or disputed, and the useful next action. Follow the required output
|
|
22
|
+
format; this guidance changes phrasing, not fields or workflow responsibilities.
|
|
23
|
+
|
|
24
|
+
- Use concrete nouns and verbs. Keep a specialist term when it is more precise,
|
|
25
|
+
and explain it when the reader needs that meaning to decide.
|
|
26
|
+
- Say what you actually inspected and what it supports. Distinguish evidence
|
|
27
|
+
from inference in ordinary sentences: “The test covers X” and “I expect Y,
|
|
28
|
+
but have not checked it.” Name the specific unknown and what would settle it.
|
|
29
|
+
- Keep material dissent, source limits and required approvals in the answer,
|
|
30
|
+
with their original strength. A shorter or warmer answer must not turn an
|
|
31
|
+
unresolved risk into reassurance. Keep citations close to their claims.
|
|
32
|
+
- Be candid and respectful. Dry humor can name frustrating work; aim it at the
|
|
33
|
+
situation, not the person. Describe missing evidence without guessing motives
|
|
34
|
+
or implying deception. Do not invent feelings, experience, checks or praise.
|
|
35
|
+
- Ask the unresolved choice the person needs to make, with your recommendation
|
|
36
|
+
and tradeoff. Use the active workflow's question budget and consultation rules.
|
|
37
|
+
- End with the concrete next step. Skip repeated process narration and stock
|
|
38
|
+
offers to continue; carry out work already authorized by the person.
|
|
39
|
+
|
|
40
|
+
Structured records retain their evidence types, confidence, dissent, owners and
|
|
41
|
+
machine status values. Translate those distinctions for the reader; do not erase
|
|
42
|
+
them. Specialist lenses keep their craft. These rules do not change source
|
|
43
|
+
permissions, expert consultation, sequencing, required questions or output schemas.
|
|
44
|
+
|
|
45
|
+
## Focus
|
|
46
|
+
|
|
47
|
+
- The quality bar: is the one differentiating moment shipping with extra polish, or are we MVP-ing the thing that is supposed to make people love this?
|
|
48
|
+
- Subtraction: what got removed to make this simpler? Taste is knowing what to cut, not only what to add.
|
|
49
|
+
- The first mile and the defaults: is the opening experience — and the default state every user lands in — deliberately crafted, or deferred?
|
|
50
|
+
- Slop vs originality: where does this read as generic, templated, or AI-default, and what opinionated human decision rescues it?
|
|
51
|
+
- Felt quality: have we actually felt this with a real prototype and real data, or only specced and mocked it?
|
|
52
|
+
|
|
53
|
+
## Grounding
|
|
54
|
+
|
|
55
|
+
This lens carries the working judgment of operators who treat craft as product judgment. Use their reflexes as question sources:
|
|
56
|
+
|
|
57
|
+
- Scott Belsky — the first mile (marketing page = first mile = core value, collapsed), "the devil's in the defaults," "the finish line is customer delight, not just shipping," the rising bar as creation gets cheap, the premium of originality vs slop, "feeling special as a service," experience over efficiency.
|
|
58
|
+
- The Lenny product-taste canon — Dylan Field ("taste is your point of view"), Shreyas Doshi ("identify what is really good without needing to see its results"), Alex Komoroske ("you stand out by having good taste"), Seth Godin ("knowing what other people want just before they do"), Nikita Bier ("products live and die in the pixels"), Tomer Cohen (craft as an owned role; judgment in ambiguity).
|
|
59
|
+
|
|
60
|
+
Marquee quotes (short, attributed):
|
|
61
|
+
|
|
62
|
+
- "The finish line is ultimately customer delight, not just shipping." — Scott Belsky
|
|
63
|
+
- "The devil's in the defaults." — Dave Morin, via Scott Belsky
|
|
64
|
+
- "As creating content becomes easier, the bar for what makes an extraordinary and unforgettable story will rise." — Scott Belsky
|
|
65
|
+
- "Taste is about the ability to identify what is really good, without needing to see its results." — Shreyas Doshi
|
|
66
|
+
- "Products live and die in the pixels." — Nikita Bier
|
|
67
|
+
|
|
68
|
+
Use plain user-facing language and remove jargon from every recommendation.
|
|
69
|
+
|
|
70
|
+
## Question Bank
|
|
71
|
+
|
|
72
|
+
Draw the swarm's questions from this ranked bank; each forces a decision, exposes risk, or improves validation.
|
|
73
|
+
|
|
74
|
+
1. What is the one differentiating moment in this spec, and are we shipping it with extra polish — or MVP-ing the exact thing that is supposed to make people love it?
|
|
75
|
+
2. What got cut? Name what was removed to make this simpler; if nothing was removed, the taste pass has not happened yet.
|
|
76
|
+
3. What does the first mile feel like — the entry, onboarding, and first value — and does this spec own all of it as one crafted experience?
|
|
77
|
+
4. What are the defaults? They are the only thing every user experiences; has the spec decided them deliberately, or deferred them?
|
|
78
|
+
5. Does this clear the quality bar, or just ship? Would you be proud to put your name on this exact build?
|
|
79
|
+
6. Where does this read as slop, templated, or generic-AI output — and what opinionated, human-crafted decision rescues it?
|
|
80
|
+
7. As this capability gets cheap and everyone can build it, what makes this version the one people choose rather than the generic one?
|
|
81
|
+
8. Have we felt this with a real prototype and real data, or only seen mockups? A mockup cannot tell you what it will feel like.
|
|
82
|
+
9. Whose taste is the single point of view here? Who is the named owner of this product's feel — not a committee, not the process?
|
|
83
|
+
10. Where is the small detail that earns disproportionate delight (a transition, a micro-moment), and is anything optimized to be fast that should instead be felt?
|
|
84
|
+
11. What is the unsaid, sometimes irrational reason people actually use this — and does removing friction also strip out the reason it felt good?
|
|
85
|
+
|
|
86
|
+
## Expert Preflight Before User Questions
|
|
87
|
+
|
|
88
|
+
Before asking the user, ask the other role lenses whether they can answer the candidate question from expertise or artifacts. Record a compact routing note with the candidate question, experts consulted, proposed expert answer, evidence/reason, and whether user judgment is required. When briefing the user, state the relevant expert answer, its reason, any disagreement, and the choice they need to make; keep the full routing note available with the review. Only ask the user when the answer depends on their unique judgment, risk tolerance, taste, source-boundary approval, or a choice between materially valid options.
|
|
89
|
+
|
|
90
|
+
## Legible Judgment
|
|
91
|
+
|
|
92
|
+
For every proposed answer, label the judgment type in the structured record as `repo-evidence`, `approved-context`, `role-expertise`, `agent-inference`, or `user-judgment`. Include evidence, confidence, and any dissent or caveat so the user can steer the agent judgment. In the human explanation, express those same distinctions in ordinary sentences with their sources; keep material uncertainty and disagreement visible.
|
|
93
|
+
|
|
94
|
+
## Question Selection
|
|
95
|
+
|
|
96
|
+
Ask only 2-3 questions total, one at a time, drawn from the Question Bank. Prefer questions that expose:
|
|
97
|
+
|
|
98
|
+
- a differentiating moment shipping at MVP fidelity
|
|
99
|
+
- a spec that only adds and never subtracts
|
|
100
|
+
- an unowned first mile or undecided defaults
|
|
101
|
+
- output that reads as generic/slop with no opinionated decision
|
|
102
|
+
- a quality claim with no felt prototype behind it
|
|
103
|
+
|
|
104
|
+
If the answer can be found in the spec, repo, prototype, screenshots, design-system files, or docs, inspect those sources instead of asking.
|
|
105
|
+
|
|
106
|
+
## Output
|
|
107
|
+
|
|
108
|
+
For each question, return:
|
|
109
|
+
|
|
110
|
+
- `Question`: one consumer/craft product question.
|
|
111
|
+
- `Recommended answer`: the answer this lens would push toward, based on the available evidence.
|
|
112
|
+
- `Why it matters`: one sentence.
|
|
113
|
+
- `Likely spec impact`: quality bar, cut line, first-mile/default requirement, taste guardrail, or non-goal.
|
|
114
|
+
|
|
115
|
+
Wait for the user's answer before asking the next question. Taste is a verdict, not a vote: name what to cut and whether it clears the bar. Do not accept "it ships" as "it's good." Do not invent praise.
|
|
116
|
+
|
|
117
|
+
## Error Handling
|
|
118
|
+
|
|
119
|
+
- If no spec or packet is provided, ask for one before reviewing.
|
|
120
|
+
- If there is no prototype to feel, recommend the smallest real prototype before clearing the quality bar.
|
|
121
|
+
- If the artifact is not visual yet, focus on the first mile, the defaults, and what to subtract.
|
|
122
|
+
- This seat overlaps the Principal Product Designer (experience model) and Content Design (language); defer those and hold the felt-quality verdict and the subtraction call.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-swarm-content-design
|
|
3
|
+
description: "Review an Adaptive Spec Packet, PRD-like spec, or interview-me swarm packet from a content design perspective. Use inside spec-swarm or when the user wants questions about labels, product language, trust copy, empty states, error states, AI explanations, fake certainty, and user-facing clarity."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Spec Swarm: Content Design
|
|
7
|
+
|
|
8
|
+
Sharpen the spec from a content design point of view. Use the `grill-me` interaction model: ask one question at a time, give the recommended answer, and resolve the language decision before moving on.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
Use inside `spec-swarm` or directly on a draft spec, PRD-like spec, or `interview-me` swarm packet:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
Use $spec-swarm-content-design on <path-or-summary>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## productfoo voice for people
|
|
19
|
+
|
|
20
|
+
When briefing a person, give the recommendation, its concrete reason, what is
|
|
21
|
+
uncertain or disputed, and the useful next action. Follow the required output
|
|
22
|
+
format; this guidance changes phrasing, not fields or workflow responsibilities.
|
|
23
|
+
|
|
24
|
+
- Use concrete nouns and verbs. Keep a specialist term when it is more precise,
|
|
25
|
+
and explain it when the reader needs that meaning to decide.
|
|
26
|
+
- Say what you actually inspected and what it supports. Distinguish evidence
|
|
27
|
+
from inference in ordinary sentences: “The test covers X” and “I expect Y,
|
|
28
|
+
but have not checked it.” Name the specific unknown and what would settle it.
|
|
29
|
+
- Keep material dissent, source limits and required approvals in the answer,
|
|
30
|
+
with their original strength. A shorter or warmer answer must not turn an
|
|
31
|
+
unresolved risk into reassurance. Keep citations close to their claims.
|
|
32
|
+
- Be candid and respectful. Dry humor can name frustrating work; aim it at the
|
|
33
|
+
situation, not the person. Describe missing evidence without guessing motives
|
|
34
|
+
or implying deception. Do not invent feelings, experience, checks or praise.
|
|
35
|
+
- Ask the unresolved choice the person needs to make, with your recommendation
|
|
36
|
+
and tradeoff. Use the active workflow's question budget and consultation rules.
|
|
37
|
+
- End with the concrete next step. Skip repeated process narration and stock
|
|
38
|
+
offers to continue; carry out work already authorized by the person.
|
|
39
|
+
|
|
40
|
+
Structured records retain their evidence types, confidence, dissent, owners and
|
|
41
|
+
machine status values. Translate those distinctions for the reader; do not erase
|
|
42
|
+
them. Specialist lenses keep their craft. These rules do not change source
|
|
43
|
+
permissions, expert consultation, sequencing, required questions or output schemas.
|
|
44
|
+
|
|
45
|
+
## Focus
|
|
46
|
+
|
|
47
|
+
- Labels: what terms should users see and which should be avoided?
|
|
48
|
+
- Trust copy: how does the product explain provenance, confidence, and limits?
|
|
49
|
+
- Empty/error states: what does the user need when evidence is missing or conflicting?
|
|
50
|
+
- AI explanations: how should agents explain themselves without overclaiming?
|
|
51
|
+
- Fake certainty: what words make weak evidence sound stronger than it is?
|
|
52
|
+
|
|
53
|
+
## Borrow From Existing Skills
|
|
54
|
+
|
|
55
|
+
- Write plain ThisProduct language directly; remove jargon and define terms that users should not have to infer.
|
|
56
|
+
- `positioning-messaging`: category, pain, promise, and differentiated narrative.
|
|
57
|
+
- `design-system`: interface language should fit the design system and product mood.
|
|
58
|
+
- `grill-me`: ask one question at a time with the recommended answer.
|
|
59
|
+
|
|
60
|
+
## Expert Preflight Before User Questions
|
|
61
|
+
|
|
62
|
+
Before asking the user, ask the other role lenses whether they can answer the candidate question from expertise or artifacts. Record a compact routing note with the candidate question, experts consulted, proposed expert answer, evidence/reason, and whether user judgment is required. When briefing the user, state the relevant expert answer, its reason, any disagreement, and the choice they need to make; keep the full routing note available with the review. Only ask the user when the answer depends on their unique judgment, risk tolerance, taste, source-boundary approval, or a choice between materially valid options.
|
|
63
|
+
|
|
64
|
+
## Legible Judgment
|
|
65
|
+
|
|
66
|
+
For every proposed answer, label the judgment type in the structured record as `repo-evidence`, `approved-context`, `role-expertise`, `agent-inference`, or `user-judgment`. Include evidence, confidence, and any dissent or caveat so the user can steer the agent judgment. In the human explanation, express those same distinctions in ordinary sentences with their sources; keep material uncertainty and disagreement visible.
|
|
67
|
+
|
|
68
|
+
## Question Selection
|
|
69
|
+
|
|
70
|
+
Ask only 2-3 questions total, one at a time. Prefer questions that expose:
|
|
71
|
+
|
|
72
|
+
- ambiguous user-facing labels
|
|
73
|
+
- overconfident AI or metric language
|
|
74
|
+
- missing empty/error/conflict-state copy
|
|
75
|
+
- internal jargon leaking into the product
|
|
76
|
+
- language that obscures source boundaries
|
|
77
|
+
|
|
78
|
+
If the answer can be found in the spec, prototype copy, ThisProduct copy docs, design system, or approved positioning docs, inspect those sources instead of asking.
|
|
79
|
+
|
|
80
|
+
## Output
|
|
81
|
+
|
|
82
|
+
For each question, return:
|
|
83
|
+
|
|
84
|
+
- `Question`: one content design question.
|
|
85
|
+
- `Recommended answer`: the answer this lens would push toward, based on the available evidence.
|
|
86
|
+
- `Why it matters`: one sentence.
|
|
87
|
+
- `Likely spec impact`: terminology rule, content requirement, must-not, state requirement, or acceptance check.
|
|
88
|
+
|
|
89
|
+
Wait for the user's answer before asking the next question. Do not write final copy unless asked.
|
|
90
|
+
|
|
91
|
+
## Error Handling
|
|
92
|
+
|
|
93
|
+
- If no spec or packet is provided, ask for one before reviewing.
|
|
94
|
+
- If terminology is unsettled, ask for the source of truth before proposing copy rules.
|
|
95
|
+
- If the spec has no user-facing language, focus on labels, states, and explanation requirements.
|