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,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-swarm-user-research
|
|
3
|
+
description: "Review an Adaptive Spec Packet, PRD-like spec, or interview-me swarm packet from a user research perspective. Use inside spec-swarm or when the user wants research questions about customer evidence, missing interviews, evidence quality, user segments, research risk, and fastest de-risking path."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Spec Swarm: User Research
|
|
7
|
+
|
|
8
|
+
Sharpen the spec from a user research point of view. Use the `grill-me` interaction model: ask one question at a time, give the recommended answer, and resolve the research 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-user-research 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
|
+
- Evidence quality: what is observed, reported, inferred, or aspirational?
|
|
48
|
+
- Segment fit: whose problem is this, and whose evidence is missing?
|
|
49
|
+
- Research risk: what assumption would most likely invalidate the spec?
|
|
50
|
+
- Fastest de-risking: what small study, interview, quote search, or usability check would help most?
|
|
51
|
+
- Verbatim signal: what user language should shape the spec or UI?
|
|
52
|
+
|
|
53
|
+
## Borrow From Existing Skills
|
|
54
|
+
|
|
55
|
+
- Triage product ideas only against approved evidence in the supplied artifact.
|
|
56
|
+
- Require attributed customer quotes; do not gather or invent them.
|
|
57
|
+
- Check for crisp study framing and interview questions without running a research workflow.
|
|
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
|
+
- weak or missing customer evidence
|
|
73
|
+
- untested segment assumptions
|
|
74
|
+
- a research gap that changes MVP scope
|
|
75
|
+
- a claim that needs verbatim support
|
|
76
|
+
- an assumption that can be de-risked quickly
|
|
77
|
+
|
|
78
|
+
If the answer can be found in the spec, approved research, repo docs, quotes, or source evidence, inspect those sources instead of asking.
|
|
79
|
+
|
|
80
|
+
## Output
|
|
81
|
+
|
|
82
|
+
For each question, return:
|
|
83
|
+
|
|
84
|
+
- `Question`: one user research question.
|
|
85
|
+
- `Recommended answer`: the answer the research lens would push toward, based on the available evidence.
|
|
86
|
+
- `Why it matters`: one sentence.
|
|
87
|
+
- `Likely spec impact`: evidence boundary, persona, acceptance check, research task, or non-goal.
|
|
88
|
+
|
|
89
|
+
Wait for the user's answer before asking the next question. Do not invent customer evidence.
|
|
90
|
+
|
|
91
|
+
## Error Handling
|
|
92
|
+
|
|
93
|
+
- If no spec or packet is provided, ask for one before reviewing.
|
|
94
|
+
- If evidence is missing, ask what evidence should be authoritative instead of inventing it.
|
|
95
|
+
- If the question requires raw private content, ask for a summary or approved evidence boundary instead.
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: strategy-check
|
|
3
|
+
description: "Use when the the user says \"check strategy alignment\", \"strategy drift\", \"coverage map\", or invokes /strategy-check."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: Strategy Check
|
|
7
|
+
|
|
8
|
+
Check whether PRDs align with the active product strategy. Surfaces misalignment, stale strategy references, and coverage gaps across strategic objectives.
|
|
9
|
+
|
|
10
|
+
Two modes:
|
|
11
|
+
- **Single PRD**: `/strategy-check <feature-slug>` — scores one PRD against the active strategy
|
|
12
|
+
- **Portfolio coverage**: `/strategy-check --coverage` — maps all PRDs against strategic objectives
|
|
13
|
+
|
|
14
|
+
This skill is **advisory only** — it surfaces signal but does not block PRD status transitions.
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
/strategy-check <feature-slug>
|
|
20
|
+
/strategy-check --coverage
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Examples
|
|
24
|
+
|
|
25
|
+
- `/strategy-check agentic-workflows` — Check alignment of the agentic workflows PRD
|
|
26
|
+
- `/strategy-check --coverage` — See which strategic objectives have strong/weak PRD coverage
|
|
27
|
+
|
|
28
|
+
## Instructions
|
|
29
|
+
|
|
30
|
+
When this skill is invoked:
|
|
31
|
+
|
|
32
|
+
### Step 1: Load the Active Strategy
|
|
33
|
+
|
|
34
|
+
1. Glob `docs/strategy/*.md`
|
|
35
|
+
2. Read the YAML frontmatter of each file. Find the file with `active: true`.
|
|
36
|
+
3. **Error handling:**
|
|
37
|
+
- If **no file** has `active: true`: report "No active strategy found — create or activate a strategy file in `docs/strategy/`" and exit.
|
|
38
|
+
- If **multiple files** have `active: true`: warn the user listing the conflicting filenames. Use the file with the most recent `date` field. Suggest the PM fix the duplicate.
|
|
39
|
+
- If the active strategy file is **missing the `objectives` field**: report "Active strategy file `{filename}` is missing the `objectives` field in frontmatter" and exit.
|
|
40
|
+
4. Extract the `objectives` array (each has `id`, `name`, `priority`) and the `deprioritized` array from frontmatter.
|
|
41
|
+
5. Read the full prose body for richer context when judging alignment.
|
|
42
|
+
6. Also read all inactive strategy files (`active: false`) to identify retired themes and objectives.
|
|
43
|
+
|
|
44
|
+
### Step 2: Route by Mode
|
|
45
|
+
|
|
46
|
+
- If a `<feature-slug>` was provided → go to **Step 3: Single PRD Alignment Check**
|
|
47
|
+
- If `--coverage` was provided → go to **Step 4: Portfolio Coverage Map**
|
|
48
|
+
|
|
49
|
+
### Step 3: Single PRD Alignment Check
|
|
50
|
+
|
|
51
|
+
1. Read `docs/prds/<feature-slug>.md`. If it doesn't exist, report "No PRD found at `docs/prds/<feature-slug>.md` — check the filename or run `ls docs/prds/`" and exit.
|
|
52
|
+
2. Parse the PRD's frontmatter and full content.
|
|
53
|
+
3. **Alignment scoring:** For each objective in the active strategy, use your judgment to assess how strongly this PRD supports it:
|
|
54
|
+
- **High** — The PRD directly advances this objective; it's a primary focus
|
|
55
|
+
- **Medium** — The PRD partially supports this objective or enables it indirectly
|
|
56
|
+
- **Low** — Tangential connection only
|
|
57
|
+
- **None** — No meaningful connection
|
|
58
|
+
4. **Stale reference detection:** Check if the PRD's content references themes, objectives, or terminology from older (inactive) strategy versions that are no longer in the active strategy. Examples: referencing "Unity" when the active strategy is "Marketing Harness", or citing objectives that have been retired.
|
|
59
|
+
5. **Consistency check:** Read the PRD's freeform strategy alignment field (the text under "How does this project fit into <your-company>'s broader strategy?"). Compare what the PM wrote against the actual active objectives. Flag if the stated alignment is inconsistent with or contradicts your assessment.
|
|
60
|
+
6. **Context note:** If the PRD was last modified before the active strategy's `date`, note this: "This PRD predates the current strategy (active since {date}). Alignment may need re-evaluation."
|
|
61
|
+
7. Output the report (see **Step 5: Output Format — Single PRD**).
|
|
62
|
+
|
|
63
|
+
### Step 4: Portfolio Coverage Map
|
|
64
|
+
|
|
65
|
+
1. Glob `docs/prds/*.md`. Exclude `_manifest.md` and `TEMPLATE.md`.
|
|
66
|
+
2. **Process PRDs one at a time** — read each PRD individually, assess alignment to each objective (high/medium/low/none), then move to the next. This avoids context window pressure.
|
|
67
|
+
- If a PRD has malformed frontmatter or cannot be read, **skip it with a warning** and continue to the next PRD. Do not abort the entire run.
|
|
68
|
+
3. For each objective, count how many PRDs score "high" or "medium" alignment.
|
|
69
|
+
4. **Coverage ratings:**
|
|
70
|
+
- **Strong**: 3+ PRDs with high/medium alignment
|
|
71
|
+
- **Good**: 2 PRDs with high/medium alignment
|
|
72
|
+
- **Light**: 1 PRD with high/medium alignment
|
|
73
|
+
- **Gap**: 0 PRDs with high/medium alignment
|
|
74
|
+
5. **Unmapped PRDs:** List any PRDs where no objective scores above "low" alignment.
|
|
75
|
+
6. **Stale references:** Flag PRDs that reference themes from inactive strategy versions.
|
|
76
|
+
7. Output the report (see **Step 6: Output Format — Coverage Map**).
|
|
77
|
+
|
|
78
|
+
### Step 5: Output Format — Single PRD
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
Strategy Alignment Check: {feature name}
|
|
82
|
+
Active Strategy: {strategy title} ({strategy date})
|
|
83
|
+
══════════════════════════════════════════════════════
|
|
84
|
+
|
|
85
|
+
┌─────────────────────────────────────────────────┐
|
|
86
|
+
│ QUICK READ │
|
|
87
|
+
├─────────────────────────────────────────────────┤
|
|
88
|
+
│ Primary alignment: {strongest objective match} │
|
|
89
|
+
│ Overall signal: {Strong / Moderate / Weak / None} │
|
|
90
|
+
│ {1-2 key observations} │
|
|
91
|
+
└─────────────────────────────────────────────────┘
|
|
92
|
+
|
|
93
|
+
Alignment by Objective:
|
|
94
|
+
─────────────────────────────────────────────────────
|
|
95
|
+
OBJ-1: {name} {High/Med/Low/None}
|
|
96
|
+
{Brief rationale}
|
|
97
|
+
|
|
98
|
+
OBJ-2: {name} {High/Med/Low/None}
|
|
99
|
+
{Brief rationale}
|
|
100
|
+
|
|
101
|
+
[... for each objective]
|
|
102
|
+
─────────────────────────────────────────────────────
|
|
103
|
+
|
|
104
|
+
Stale Strategy References:
|
|
105
|
+
{List any references to retired themes/objectives, or "None found"}
|
|
106
|
+
|
|
107
|
+
Strategy Field Consistency:
|
|
108
|
+
PM wrote: "{text from PRD strategy field}"
|
|
109
|
+
Assessment: {Consistent / Inconsistent — with explanation}
|
|
110
|
+
|
|
111
|
+
Suggestions:
|
|
112
|
+
- {Actionable suggestion, e.g., "Consider connecting this to OBJ-3 (Land new business agentically) — the migration tooling aspect is a strong fit"}
|
|
113
|
+
- {Actionable suggestion, e.g., "This references 'Unity' theme which was retired in the Apr 2026 strategy"}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Step 6: Output Format — Coverage Map
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
Strategy Coverage Map
|
|
120
|
+
Active Strategy: {strategy title} ({strategy date})
|
|
121
|
+
══════════════════════════════════════════════════════
|
|
122
|
+
|
|
123
|
+
┌─────────────────────────────────────────────────┐
|
|
124
|
+
│ QUICK READ │
|
|
125
|
+
├─────────────────────────────────────────────────┤
|
|
126
|
+
│ {X} objectives covered, {Y} gaps │
|
|
127
|
+
│ {Z} PRDs unmapped to any objective │
|
|
128
|
+
│ {Key insight about portfolio balance} │
|
|
129
|
+
└─────────────────────────────────────────────────┘
|
|
130
|
+
|
|
131
|
+
Coverage by Objective:
|
|
132
|
+
─────────────────────────────────────────────────────
|
|
133
|
+
OBJ-1 (P1): {name}
|
|
134
|
+
Coverage: {Strong/Good/Light/Gap} ({N} PRDs)
|
|
135
|
+
PRDs: {list of PRD names with alignment level}
|
|
136
|
+
|
|
137
|
+
OBJ-2 (P2): {name}
|
|
138
|
+
Coverage: {Strong/Good/Light/Gap} ({N} PRDs)
|
|
139
|
+
PRDs: {list of PRD names with alignment level}
|
|
140
|
+
|
|
141
|
+
[... for each objective]
|
|
142
|
+
─────────────────────────────────────────────────────
|
|
143
|
+
|
|
144
|
+
Unmapped PRDs (no objective above "low"):
|
|
145
|
+
- {prd-name.md} — {brief description of what it covers}
|
|
146
|
+
|
|
147
|
+
Stale Strategy References:
|
|
148
|
+
- {prd-name.md} references "{retired theme}" from {old strategy date}
|
|
149
|
+
|
|
150
|
+
Skipped PRDs:
|
|
151
|
+
- {prd-name.md} — {reason, e.g., "malformed frontmatter"}
|
|
152
|
+
|
|
153
|
+
Summary:
|
|
154
|
+
Total PRDs scanned: {N}
|
|
155
|
+
Objectives with strong coverage: {N}
|
|
156
|
+
Objectives with gaps: {N}
|
|
157
|
+
PRDs with stale strategy refs: {N}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Notes
|
|
161
|
+
|
|
162
|
+
- This skill uses LLM judgment to assess alignment — the same approach as `/cpo-lens`. It reads both the strategy frontmatter objectives and the PRD prose to reason about connections. It does not use keyword matching or embedding similarity.
|
|
163
|
+
- PRDs do **not** need to contain explicit objective IDs. The skill infers alignment from prose content. However, if a PRD's strategy field references objective IDs (e.g., "Supports OBJ-3"), the skill will use those as additional signal.
|
|
164
|
+
- When a new strategy version becomes active, existing PRDs are not retroactively flagged as "drifted." They appear as-is in the next alignment check — PRDs written for a previous strategy may appear as "unmapped" in the coverage map, which is expected and useful signal.
|
|
165
|
+
- The coverage map processes PRDs one at a time to avoid context window pressure. Expect 2-3 minutes for a full portfolio scan.
|
|
166
|
+
|
|
167
|
+
## Error Handling
|
|
168
|
+
|
|
169
|
+
- If required files, tools, connectors, credentials, or source artifacts are unavailable, state the blocker clearly and continue only with safe local evidence.
|
|
170
|
+
- If the user request requires missing product judgment or source-boundary approval, ask one focused question before proceeding.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: study-digest
|
|
3
|
+
description: "Use when approved sanitized study evidence needs a traceable synthesis, theme map, hypothesis update, or decision handoff."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Study Digest
|
|
7
|
+
|
|
8
|
+
## Usage
|
|
9
|
+
|
|
10
|
+
Synthesize a study from approved sanitized evidence. Never ingest, quote, or
|
|
11
|
+
commit raw transcripts, recordings, private messages, or participant PII.
|
|
12
|
+
|
|
13
|
+
1. Anchor the digest to the research brief's decision, questions, and hypotheses.
|
|
14
|
+
2. Accept only approved sanitized discovery evidence, validated research papers,
|
|
15
|
+
or explicitly approved packet evidence. Source access alone is not approval.
|
|
16
|
+
3. Cluster independent evidence into themes; separate observed behavior, stated
|
|
17
|
+
preference, interpretation, dissent, and unknowns.
|
|
18
|
+
4. Use a verbatim quote only when the exact approved sanitized evidence contains
|
|
19
|
+
it. Never invent or reconstruct a quote from a summary or raw-content memory.
|
|
20
|
+
5. Update each hypothesis as supported, refuted, mixed, or open. Present
|
|
21
|
+
implications and decisions for a person; do not auto-create requirements.
|
|
22
|
+
|
|
23
|
+
### Source ledger
|
|
24
|
+
|
|
25
|
+
- **Sources used** — approved evidence reference, study/session scope, and trust label.
|
|
26
|
+
- **Sources omitted** — every optional session or evidence lane not used and why.
|
|
27
|
+
- **Trust status** — approved quote, sanitized observation, validated research, or inference.
|
|
28
|
+
- **Limits** — sample coverage, dissent, and decisions not established by evidence.
|
|
29
|
+
|
|
30
|
+
Every optional omission appears in the human summary and digest artifact. Return
|
|
31
|
+
in chat by default; write only to an explicitly requested local destination.
|
|
32
|
+
|
|
33
|
+
## Error Handling
|
|
34
|
+
|
|
35
|
+
- If the study has no approved sanitized evidence, or a required approval or
|
|
36
|
+
brief is missing, return `status: blocked`, name what did not run, provide the
|
|
37
|
+
exact `next action`, and set `exit: nonzero`.
|
|
38
|
+
- If an optional source is unavailable, continue only when the remaining
|
|
39
|
+
evidence supports an honest synthesis and list the omission.
|
|
40
|
+
- If only raw material is offered, route it through the proof-gated discovery
|
|
41
|
+
flow; do not open or summarize the raw content here.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: synthetic-customer
|
|
3
|
+
description: "Use to draft a synthetic customer persona, generate testable hypotheses, or rehearse/lint an interview guide before talking to real people. Trigger on \"synthetic customer\", \"synthetic user\", \"draft a persona\", \"generate hypotheses\", \"rehearse my interview questions\", \"pressure-test this concept\", or when a discovery study needs a straw-man persona and hypothesis set to react to. This is a rehearsal and hypothesis layer, never an evidence layer: all output is agent-inference and must be validated with real customers before it informs a decision."
|
|
4
|
+
---
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
Use this skill when its frontmatter description matches the user request. Follow the workflow and constraints below.
|
|
8
|
+
|
|
9
|
+
# Synthetic Customer
|
|
10
|
+
|
|
11
|
+
Role-play a grounded customer persona to do the cheap, pre-research work: draft a persona, generate testable hypotheses, and rehearse or lint an interview guide — so the real interview is sharper. This skill produces a straw-man to react to and a hypothesis backlog to validate. It never produces findings.
|
|
12
|
+
|
|
13
|
+
The product goal is legible judgment: show what is believed, how confident, on what grounding, and what a real customer still has to confirm. A synthetic customer is `agent-inference` — useful, labeled, and never smuggled into a spec or a report as if a real person decided it.
|
|
14
|
+
|
|
15
|
+
## What this skill is for (and not for)
|
|
16
|
+
|
|
17
|
+
Legitimate jobs (all pre-research or augmentation):
|
|
18
|
+
|
|
19
|
+
- **Draft hypotheses.** From a target persona + a "what I want to prove/disprove", enumerate 3-6 candidate hypotheses, each with a belief, a starting confidence, and how a real interview would confirm or kill it.
|
|
20
|
+
- **Rehearse / lint an interview guide.** Run the guide against the persona; flag dead questions, leading questions, ambiguous items, and missing branches before real-participant time is spent.
|
|
21
|
+
- **Pressure-test a concept.** Surface likely objections, confusions, and reasons-not-to — as "what could be wrong", not "what users think".
|
|
22
|
+
- **Draft a straw-man workflow or journey.** A first pass to correct against real evidence, faster than a blank page.
|
|
23
|
+
- **Cover an edge persona for rehearsal** when the real segment is hard to recruit — to sharpen the real session, not replace it.
|
|
24
|
+
|
|
25
|
+
Never for: reporting synthetic output as user findings; feature prioritization; persona development as source of truth; predicting behavior, conversion, adoption, or willingness-to-pay; market sizing; sampling minority/niche segments as if representative; or any decision-grade number.
|
|
26
|
+
|
|
27
|
+
## Hard Rules (encode the failure modes)
|
|
28
|
+
|
|
29
|
+
The research on LLM synthetic respondents is specific about how they mislead. Encode these as behavior:
|
|
30
|
+
|
|
31
|
+
- **Label everything `agent-inference`.** Every persona, hypothesis, and drafted question carries the label. Disclose synthetic provenance on every artifact.
|
|
32
|
+
- **Never present synthetic output as evidence or a validated finding.** If a whole run is synthetic-only, say so plainly and cap confidence.
|
|
33
|
+
- **Force refusal.** When the persona would not plausibly know something, say "a real [persona] wouldn't reliably know this" instead of inventing a confident answer. Grounded, refusal-capable personas are far less misleading than fluent ones.
|
|
34
|
+
- **Counter sycophancy.** Do not reveal the "right" answer or the product's goal to the persona. Actively ask for objections and reasons-not-to. Instruct the persona to stay in character, not to please the researcher.
|
|
35
|
+
- **Preserve variance; never collapse to the mean.** Synthetic output is systematically too agreeable and too low-variance. When generating multiple personas, spread them across a calibrated distribution and report the spread and dissent, not a consensus.
|
|
36
|
+
- **Ground in real artifacts, not adjectives.** Condition the persona on whatever real material exists (interview transcripts, tickets, segment data, analytics); the more real grounding, the less it is a stereotype machine. State the grounding level honestly.
|
|
37
|
+
- **No magnitudes.** Do not emit numbers that imply measurement (WTP, % who would, conversion). Synthetic magnitudes are often wrong-signed.
|
|
38
|
+
|
|
39
|
+
## Posture — adapt to the user's interview competence
|
|
40
|
+
|
|
41
|
+
Detect or ask how grounded the user already is in customer interviews, and adjust:
|
|
42
|
+
|
|
43
|
+
- **Skilled interviewer:** run fast. A tight guide-lint and a hypothesis list; skip the coaching.
|
|
44
|
+
- **Novice or unsure:** coach. Explain each flagged leading question and each missing past-episode anchor, teach the quality bar (past behavior over speculation, one question at a time, don't lead), and show the fixed version.
|
|
45
|
+
|
|
46
|
+
## Workflow
|
|
47
|
+
|
|
48
|
+
1. **Frame.** Restate the target persona and what the user wants to prove or disprove. Note the grounding available (real artifacts vs none) and set confidence accordingly.
|
|
49
|
+
2. **Persona.** Draft a persona card grounded in the available material: role, context, goals, constraints, current tools/workarounds, and what this persona plausibly would and would not know. Label `agent-inference`.
|
|
50
|
+
3. **Hypotheses.** Produce 3-6 hypotheses, each as: `belief` (one sentence), `starting confidence` (low/medium/high, honest — synthetic-only defaults low), and `how a real interview confirms or kills it`.
|
|
51
|
+
4. **Questions.** Draft a hypothesis-testing question set that obeys the quality bar: anchor on a specific past episode ("tell me about the last time…"), behavior over opinion, open over closed, one idea per question, never leading. Map each question to the hypothesis it tests.
|
|
52
|
+
5. **Lint.** Run the leading-question / quality-bar lint over the set: flag hypotheticals ("would you…"), opinion-as-fact, double-barreled items, and any question that telegraphs the hypothesis. For a novice, explain and fix; for a skilled user, just flag.
|
|
53
|
+
6. **Handoff.** Present the persona + labeled hypotheses + question set for the user to approve or edit. Nothing here is evidence — it is input for a real interview. Route an approved completed call through `customer-discovery`; its proof-gated in-memory flow commits only sanitized evidence, never the raw transcript.
|
|
54
|
+
|
|
55
|
+
## Output
|
|
56
|
+
|
|
57
|
+
- `Persona`: card, grounding level, `agent-inference` label.
|
|
58
|
+
- `Hypotheses`: each with belief, starting confidence, and how a real interview would confirm/kill it.
|
|
59
|
+
- `Questions`: hypothesis-testing set, each mapped to a hypothesis, past-episode-anchored and non-leading.
|
|
60
|
+
- `Lint findings`: leading/hypothetical/opinion-as-fact/telegraphing flags, with fixes for a novice.
|
|
61
|
+
- `Caveat line`: the explicit reminder that all of this is synthetic and must be validated with real customers before it informs a decision.
|
|
62
|
+
|
|
63
|
+
## Error Handling
|
|
64
|
+
|
|
65
|
+
- If no target persona or research goal is provided, ask one focused question before drafting; do not invent the study.
|
|
66
|
+
- If no real grounding material is available, say so, mark the run synthetic-only, cap confidence at `low`, and recommend the fastest way to get one real interview.
|
|
67
|
+
- If asked to produce findings, metrics, prioritization, or willingness-to-pay from synthetic output, refuse and explain that synthetic customers are a rehearsal/hypothesis layer, not evidence; offer the hypothesis + guide instead.
|
|
68
|
+
- If required source artifacts are unavailable, state the blocker and continue only with safe local evidence, labeled.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: update-cli-spec
|
|
3
|
+
description: "Use after adding, removing, renaming, or changing foo CLI commands, flags, runtime skill installation behavior, packet validation behavior, or command output; use when the user says update the CLI spec, sync the CLI docs, record the CLI change in the Adaptive Spec Packet, or make CLI behavior durable in spec/task/event artifacts."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Update CLI Spec
|
|
7
|
+
|
|
8
|
+
Keep executable CLI behavior, user-facing command docs, and the Adaptive Spec Packet contract aligned in one change.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
Use this workflow whenever a CLI change affects how a user or agent should invoke `foo`, understand its output, install runtime skills, validate packets, or reconcile work.
|
|
13
|
+
|
|
14
|
+
1. Identify the behavior change.
|
|
15
|
+
- Read the changed CLI files, tests, and command output.
|
|
16
|
+
- Determine whether the change is a new command, flag, validation rule, output contract, install behavior, or error path.
|
|
17
|
+
- Do not update spec artifacts from intent alone; verify the actual behavior or add tests that define it.
|
|
18
|
+
|
|
19
|
+
2. Update executable coverage first when behavior changed.
|
|
20
|
+
- Add or update focused CLI tests for the new contract.
|
|
21
|
+
- Cover safety behavior for install, delete, overwrite, path, or runtime-environment changes.
|
|
22
|
+
- Prefer temp directories and explicit roots in tests so validation does not mutate the user's real runtime environment.
|
|
23
|
+
|
|
24
|
+
3. Update tracked command documentation.
|
|
25
|
+
- Update `README.md` for clone/setup or top-level command workflows.
|
|
26
|
+
- Update other tracked docs only when they are committed artifacts.
|
|
27
|
+
- Treat `docs/` as local scratch unless the repo has explicitly changed that rule; do not rely on ignored docs as the only durable documentation.
|
|
28
|
+
|
|
29
|
+
4. Update `specs/adaptive-spec-packet-v0/spec.md` when the CLI contract changed.
|
|
30
|
+
- Add or revise a requirement for durable behavior.
|
|
31
|
+
- Add or revise a decision when the change chooses a product or workflow direction.
|
|
32
|
+
- Add risk and validation bullets when the behavior has safety, portability, or trust implications.
|
|
33
|
+
- Add evidence links to the implementation, tests, and tracked docs.
|
|
34
|
+
|
|
35
|
+
5. Update `specs/adaptive-spec-packet-v0/tasks.yaml`.
|
|
36
|
+
- Add a new task for new accepted CLI behavior.
|
|
37
|
+
- Mark it `done` only when tests and docs are complete.
|
|
38
|
+
- Include touched files, done checks, proof paths, completion metadata, and the corresponding event ID.
|
|
39
|
+
- Use UTC timestamps in task completion metadata.
|
|
40
|
+
|
|
41
|
+
6. Append to `specs/adaptive-spec-packet-v0/events.jsonl`.
|
|
42
|
+
- Append exactly one JSON object per event; do not rewrite existing ledger lines.
|
|
43
|
+
- Use the next `evt_asp_###` ID.
|
|
44
|
+
- Include actor identity, skills or prompt modules when known, adapter/runtime when known, and a concise reason.
|
|
45
|
+
- Keep raw private notes, transcripts, prompts, and tool payloads out of the event.
|
|
46
|
+
|
|
47
|
+
7. Validate before reporting completion.
|
|
48
|
+
- Run the CLI tests that cover the changed behavior.
|
|
49
|
+
- Run `bin/foo asp validate specs/adaptive-spec-packet-v0`.
|
|
50
|
+
- Run the root README skill checks if skill files or registry entries changed.
|
|
51
|
+
- Run the root README spec placement and duplicate `Spec ID` check when spec files changed.
|
|
52
|
+
- Manually smoke-test important commands when the change concerns install paths, symlinks, destructive operations, or outside-repo invocation.
|
|
53
|
+
|
|
54
|
+
## Output
|
|
55
|
+
|
|
56
|
+
Report:
|
|
57
|
+
|
|
58
|
+
- The behavior that changed.
|
|
59
|
+
- The spec/docs/task/event artifacts updated.
|
|
60
|
+
- The exact validation commands and results.
|
|
61
|
+
- Any user-facing caveats, especially ignored docs, skipped destructive checks, or runtime roots not touched.
|
|
62
|
+
|
|
63
|
+
## Error Handling
|
|
64
|
+
|
|
65
|
+
- If behavior cannot be verified, stop and say what evidence is missing; do not update packet truth from guesses.
|
|
66
|
+
- If a command touches a user runtime, use a temp root or dry-run equivalent first. Ask for explicit approval before mutating a real runtime root when the user did not request it.
|
|
67
|
+
- If `docs/` is ignored, mirror any durable user-facing documentation in a tracked artifact such as `README.md` or the packet spec.
|
|
68
|
+
- If event IDs or task IDs conflict, inspect existing packet files and choose the next unused ID rather than editing historical IDs.
|
|
69
|
+
- If validation fails, fix the source behavior or the spec artifact and rerun validation before claiming the CLI spec is updated.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: voc-researcher
|
|
3
|
+
description: "Use when approved customer evidence needs voice-of-customer synthesis, pain analysis, workaround mapping, or evidence-backed product triage."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Voice Of Customer Researcher
|
|
7
|
+
|
|
8
|
+
## Usage
|
|
9
|
+
|
|
10
|
+
Produce a traceable VoC brief from approved evidence, not a connector inventory
|
|
11
|
+
or a model's idea of what customers probably think.
|
|
12
|
+
|
|
13
|
+
1. Confirm the product question, segment, time window, and decision the evidence
|
|
14
|
+
may inform.
|
|
15
|
+
2. Inventory source classes before reading: approved sanitized discovery
|
|
16
|
+
evidence, validated research, packet evidence, product analytics, and support
|
|
17
|
+
signals. Connector access is not source approval.
|
|
18
|
+
3. Record each class as `used`, `omitted`, `blocked`, or `not applicable`.
|
|
19
|
+
Approved derived evidence is allowed; raw transcripts, private messages, PII,
|
|
20
|
+
and unapproved connector content are not.
|
|
21
|
+
4. Synthesize pains, jobs, triggers, workarounds, frequency evidence, segment
|
|
22
|
+
differences, dissent, and gaps. Do not manufacture counts or quotes.
|
|
23
|
+
5. Recommend only when at least one approved evidence lane supports the claim and
|
|
24
|
+
the coverage limits are visible. Zero approved evidence means no recommendation.
|
|
25
|
+
|
|
26
|
+
### Source ledger
|
|
27
|
+
|
|
28
|
+
- **Sources used** — source class, scope, approval, date, and stable reference.
|
|
29
|
+
- **Sources omitted** — every optional source class not used and why.
|
|
30
|
+
- **Trust status** — approved sanitized evidence, validated research, metric, or inference.
|
|
31
|
+
- **Limits** — coverage, representativeness, missing lanes, and human judgment.
|
|
32
|
+
|
|
33
|
+
Every optional omission appears in both the human summary and the VoC artifact.
|
|
34
|
+
Write locally only when the user supplies a destination; never update a tracker
|
|
35
|
+
or send the brief.
|
|
36
|
+
|
|
37
|
+
## Error Handling
|
|
38
|
+
|
|
39
|
+
- With zero approved evidence, return `status: blocked`, `did_not_run: VoC
|
|
40
|
+
recommendation`, `missing: approved evidence`, the exact `next action`, and
|
|
41
|
+
`exit: nonzero`. Do not recommend “park” or any other product decision.
|
|
42
|
+
- If a required source approval, receipt, or access grant is missing, name it and
|
|
43
|
+
stop; never silently fall back to another lane.
|
|
44
|
+
- If only optional sources are unavailable, proceed only with adequate remaining
|
|
45
|
+
evidence and list all omissions in the summary and artifact.
|
package/skills-lock.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"skills": {
|
|
4
|
+
"design-taste-frontend": {
|
|
5
|
+
"source": "leonxlnx/taste-skill",
|
|
6
|
+
"sourceType": "github",
|
|
7
|
+
"skillPath": "skills/taste-skill/SKILL.md",
|
|
8
|
+
"computedHash": "6d838b246d0e35d0b53f4f23f98ba7a1dd561937e64f7d0c7553b0928e376c3e"
|
|
9
|
+
},
|
|
10
|
+
"find-skills": {
|
|
11
|
+
"source": "vercel-labs/skills",
|
|
12
|
+
"sourceType": "github",
|
|
13
|
+
"skillPath": "skills/find-skills/SKILL.md",
|
|
14
|
+
"computedHash": "9e1c8b3103f92fa8092568a44fe64858de7c5c9dc65ce4bea8f168080e889cfd"
|
|
15
|
+
},
|
|
16
|
+
"frontend-design": {
|
|
17
|
+
"source": "anthropics/skills",
|
|
18
|
+
"sourceType": "github",
|
|
19
|
+
"skillPath": "skills/frontend-design/SKILL.md",
|
|
20
|
+
"computedHash": "4eabc66183767153e404b39d1b839b1c37f2d82d86f0a0d7e880a579d8d62336"
|
|
21
|
+
},
|
|
22
|
+
"impeccable": {
|
|
23
|
+
"source": "pbakaus/impeccable",
|
|
24
|
+
"sourceType": "github",
|
|
25
|
+
"skillPath": ".agents/skills/impeccable/SKILL.md",
|
|
26
|
+
"computedHash": "f2a6bed082dd9bf7bf8b9244e6ac6eb80fc24ed8446425effe213655662dcab9"
|
|
27
|
+
},
|
|
28
|
+
"wireframe-spec": {
|
|
29
|
+
"source": "owl-listener/designer-skills",
|
|
30
|
+
"sourceType": "github",
|
|
31
|
+
"skillPath": "prototyping-testing/skills/wireframe-spec/SKILL.md",
|
|
32
|
+
"computedHash": "790a9e40f32453f4e2de4aac5ad8883a0aecb70b765b2201aa9370a37850bd37"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|