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,200 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-loop
|
|
3
|
+
description: "Use when invoking /review-loop or when the user wants to evaluate, grade, audit, or sanity-check a single loop spec, loop contract, loops.yaml entry, routine, or a plainly-described AI loop against the 'a good loop ends with proof' bar — does it have a checkable goal, a visible check, a stop condition, and a proof-bearing handoff someone could trust on a second case."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: Review Loop
|
|
7
|
+
|
|
8
|
+
Evaluate one loop spec against the quality bar for delegated, repeated work: **a good loop ends with proof.**
|
|
9
|
+
|
|
10
|
+
A loop is a standard that runs — a goal the work must reach, a check that measures progress, revision that uses the check to choose the next move, and a stop condition that bounds the work and forces a handoff. This skill judges whether a given loop actually clears that bar, or whether it is "automation theater" that returns output while pushing the hard review back onto a human.
|
|
11
|
+
|
|
12
|
+
This is the **judgment** layer, not the schema layer. productfoo already ships a structural validator — `foo loop check <packet-dir>` enforces the `loops.yaml` contract shape and the B4 budget handshake. `review-loop` is complementary: it asks whether the *content* of the loop is strong enough to trust, not just whether the fields are present. Run the structural check first when the loop is a `loops.yaml` contract, then run this for quality.
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/review-loop <loop-source> [--fix] [--json]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
`<loop-source>` may be:
|
|
21
|
+
|
|
22
|
+
- a packet dir containing `loops.yaml` (evaluate each loop, or one via `--loop <id>`)
|
|
23
|
+
- a path to a `loops.yaml` or a single loop spec file
|
|
24
|
+
- a prose loop: a slash-command loop, a `/loop` recurring task, a scheduled routine, or a plainly-described "keep doing X until Y" instruction
|
|
25
|
+
- a pasted loop template from a public loop library or registry
|
|
26
|
+
|
|
27
|
+
Examples:
|
|
28
|
+
|
|
29
|
+
- `/review-loop specs/portable-routines-v0` — grade the loop contracts in a packet
|
|
30
|
+
- `/review-loop specs/adaptive-spec-packet-v0 --loop L-001` — grade one loop
|
|
31
|
+
- `/review-loop "keep re-running the tests and fixing failures until they pass"` — grade a prose loop
|
|
32
|
+
- `/review-loop ./my-ticket-to-pr-loop.md` — grade a library loop template
|
|
33
|
+
|
|
34
|
+
If no loop source is given, ask for the smallest thing that describes the loop: a `loops.yaml`, a file path, or a short description of the goal, the check, and when it stops. Do not invent the loop.
|
|
35
|
+
|
|
36
|
+
Do not edit the loop unless the user passes `--fix` or explicitly asks. By default this skill returns a scorecard, observable checks, and a next action.
|
|
37
|
+
|
|
38
|
+
## Core Rule
|
|
39
|
+
|
|
40
|
+
**An evaluation is not done until it produces observable checks and a trust verdict, not opinions.**
|
|
41
|
+
|
|
42
|
+
If the review cannot name what evidence the loop must return, which check must stay visible, or what would make its handoff untrustworthy, it has not finished. Every finding should convert into something a later run can be judged against — the same discipline the loop itself is supposed to have.
|
|
43
|
+
|
|
44
|
+
## What A Good Loop Has (the bar)
|
|
45
|
+
|
|
46
|
+
Map the loop onto these pieces before scoring. For a `loops.yaml` contract the field names are shown; for a prose loop, infer the same pieces from the description.
|
|
47
|
+
|
|
48
|
+
| Piece | Question it answers | `loops.yaml` field |
|
|
49
|
+
|-------|--------------------|--------------------|
|
|
50
|
+
| Goal + standard | Where must the work land? | `goal` |
|
|
51
|
+
| Check / evaluator | How is progress measured? | `verify.check`, `verify.method` |
|
|
52
|
+
| Revision rule | Does the latest result choose the next move? | `choose.criteria` (uses check output) |
|
|
53
|
+
| Stop conditions | When does it stop and hand back? | `stop.*`, `lifecycle.terminal_states` |
|
|
54
|
+
| Proof + record | What evidence rides with the handoff? | `record.artifact`, `record.required_fields` |
|
|
55
|
+
| Boundaries | What may it never do unattended? | `act.forbidden` |
|
|
56
|
+
| Escalation | When must it ask a human? | `ask_user_when` |
|
|
57
|
+
| Reusability | Could someone run it on a second case? | `refs`, `observe.sources`, `act.allowed`, `adapters.runtimes` |
|
|
58
|
+
|
|
59
|
+
## The Practical Test
|
|
60
|
+
|
|
61
|
+
Score the loop on the six questions from the standard. For each: give a verdict, cite the specific evidence in the loop (or note its absence), and — this is the point — name the failure it causes downstream when the answer is weak.
|
|
62
|
+
|
|
63
|
+
Use the foo status-glyph vocabulary for the per-axis verdict on a human terminal (always pair the glyph with its word): **✅ proven** (clear, checkable, present) · **🟡 claimed** (present but weak or unverifiable) · **🚧 blocked / missing** (absent — the loop cannot clear the bar here). Never emit glyphs in `--json`.
|
|
64
|
+
|
|
65
|
+
### 1. Can you tell what it is trying to achieve?
|
|
66
|
+
|
|
67
|
+
The goal must name a specific target *and* a standard the loop keeps applying.
|
|
68
|
+
|
|
69
|
+
- ✅ proven: "Reduce the failing test count to zero." "Produce a reviewer-ready PR." "Extract a reusable skill that works on a second case."
|
|
70
|
+
- 🟡 claimed: "Improve the code." "Make it better." "Handle the tickets." — loose goals create wandering.
|
|
71
|
+
- Downstream failure of a vague goal: the loop drifts and never converges; token spend climbs because there is no target to reach.
|
|
72
|
+
|
|
73
|
+
### 2. Is the check visible?
|
|
74
|
+
|
|
75
|
+
There must be an inspectable evaluator, and its form must fit the work.
|
|
76
|
+
|
|
77
|
+
- Code loops: tests, builds, logs, diffs, benchmarks.
|
|
78
|
+
- Research loops: source coverage, citation quality, confidence thresholds, missing-evidence notes.
|
|
79
|
+
- Writing loops: style rules, reader questions, repetition scans, weak-claim checks.
|
|
80
|
+
- Product loops: customer evidence, risk reviews, success criteria, decision quality.
|
|
81
|
+
- ✅ proven: the check is named, runnable, and someone else could apply it.
|
|
82
|
+
- 🟡 claimed: "the agent reviews the output" — a check the human still has to redo.
|
|
83
|
+
- Downstream failure of a weak check: the hardest part of the work gets pushed back to the person receiving the output.
|
|
84
|
+
|
|
85
|
+
### 3. Does the latest result decide the next attempt?
|
|
86
|
+
|
|
87
|
+
This is the property that makes it a *loop* and not a checklist or a one-pass workflow. The result of the check must change what happens next.
|
|
88
|
+
|
|
89
|
+
- ✅ proven: the revision rule reads the check output and picks the next move (e.g. `choose.criteria: highest-risk failing check`).
|
|
90
|
+
- 🚧 missing: the "loop" just repeats the same action on a schedule and never reacts to its own last result — that is a cron, not a loop.
|
|
91
|
+
- Downstream failure: repeated attempts that do not shrink the gap; motion mistaken for progress.
|
|
92
|
+
|
|
93
|
+
### 4. Can you tell when the loop should stop?
|
|
94
|
+
|
|
95
|
+
Stop conditions must be visible and must force a handoff — including the non-success exits.
|
|
96
|
+
|
|
97
|
+
- ✅ proven: distinct terminal states for success, clean no-op, blocked/approval-needed, exhausted (no progress after N passes), stagnated. productfoo's contract enumerates these in `stop.*` and `lifecycle.terminal_states`.
|
|
98
|
+
- 🟡 claimed: "stop when it's done" with no definition of done or of the give-up cases.
|
|
99
|
+
- Downstream failure of fuzzy stops: wasted attempts and climbing token spend when the gap never shrinks; no clean point to hand back.
|
|
100
|
+
|
|
101
|
+
### 5. Does the handoff include proof?
|
|
102
|
+
|
|
103
|
+
The final handoff must let a reviewer understand it in ~2 minutes. Proof can be simple: tests passed, the issue was reproduced and fixed, sources support the claim, a second case worked, the benchmark improved, screenshots show the change.
|
|
104
|
+
|
|
105
|
+
Check that the record answers the reviewer's real questions: **What changed in the latest attempt? Which source supports this claim? Did the check pass? Which risk remains? Where should I review first? How much can I trust?**
|
|
106
|
+
|
|
107
|
+
- ✅ proven: the record/artifact carries the check result and the evidence behind it (productfoo: `record.required_fields` includes `verification_result`, `observed_sources`, `action_taken`).
|
|
108
|
+
- 🟡 claimed: the loop returns an artifact but no evidence — confidence barely moves; the reviewer must reconstruct the reasoning. This is the automation-theater tell.
|
|
109
|
+
- Downstream failure: the loop shifts uncertainty to the human instead of reducing it.
|
|
110
|
+
|
|
111
|
+
### 6. Could someone else use it on a second case?
|
|
112
|
+
|
|
113
|
+
A reusable loop defines its goal, inputs, context, tools, preserved state, check, proof, stop conditions, escalation rules, boundaries, handoff, and failure modes — and ideally shows second-case evidence that the method stands on its own.
|
|
114
|
+
|
|
115
|
+
- ✅ proven: inputs and boundaries are explicit; the loop is runtime-portable (productfoo: `adapters.runtimes`) and has been shown to work on a second case.
|
|
116
|
+
- 🟡 claimed: assumptions are trapped inside one prompt or one repo; "trust from a clever name" with no template behind it.
|
|
117
|
+
- Downstream failure: the loop is dead knowledge — the result was saved but the method cannot be re-run.
|
|
118
|
+
|
|
119
|
+
## Boundary And Autonomy Check (productfoo B4)
|
|
120
|
+
|
|
121
|
+
For any loop that acts, not just observes, additionally check the approval surface — this is where productfoo's autonomy boundary meets the proof bar:
|
|
122
|
+
|
|
123
|
+
- **Boundaries present** (`act.forbidden`): the loop names what it must never do unattended — edit canonical files, import raw private sources, take irreversible/outbound/financial actions.
|
|
124
|
+
- **Escalation present** (`ask_user_when`): the loop hands back when product meaning changes, a source boundary changes, or a destructive/production/outbound action would be enabled.
|
|
125
|
+
- **Budget agreed** (B4): defer to `foo loop check` / `foo loop estimate` for the budget handshake; note if an acting loop has no agreed budget, since an unbudgeted loop is a malformed contract.
|
|
126
|
+
|
|
127
|
+
If an acting loop can reach an irreversible or outbound action with no human gate, that is a blocking finding regardless of how good its check is — surface it first.
|
|
128
|
+
|
|
129
|
+
## Turn Findings Into Evals
|
|
130
|
+
|
|
131
|
+
For each weak axis, emit at least one **observable check** the next version of the loop should be judged against — mirroring how a good loop turns repeated corrections into checks. Examples:
|
|
132
|
+
|
|
133
|
+
- Goal eval: the loop's target is stated as a measurable end state, not a direction.
|
|
134
|
+
- Check-visibility eval: the evaluator is runnable by someone other than the author and returns a pass/fail plus evidence.
|
|
135
|
+
- Reactivity eval: given a failing check, the next attempt differs from the last in a way the check output explains.
|
|
136
|
+
- Stop eval: a run that makes no progress for N passes exits via `exhausted`/`stagnated`, not indefinitely.
|
|
137
|
+
- Proof eval: the handoff answers the six reviewer questions without the reviewer opening the source.
|
|
138
|
+
- Second-case eval: the loop produces a trustworthy handoff on a second, independent input.
|
|
139
|
+
|
|
140
|
+
## Output Format
|
|
141
|
+
|
|
142
|
+
Keep it short enough to act on immediately.
|
|
143
|
+
|
|
144
|
+
```text
|
|
145
|
+
Loop: <id or one-line description>
|
|
146
|
+
What it is trying to become: <goal in one sentence, or "unclear — see axis 1">
|
|
147
|
+
|
|
148
|
+
Practical Test
|
|
149
|
+
1. Checkable goal ✅/🟡/🚧 — <evidence or gap> → <downstream failure if weak>
|
|
150
|
+
2. Visible check ✅/🟡/🚧 — ...
|
|
151
|
+
3. Latest result drives next ✅/🟡/🚧 — ...
|
|
152
|
+
4. Bounded stop ✅/🟡/🚧 — ...
|
|
153
|
+
5. Proof in handoff ✅/🟡/🚧 — ...
|
|
154
|
+
6. Second-case reuse ✅/🟡/🚧 — ...
|
|
155
|
+
|
|
156
|
+
Boundary & autonomy (acting loops): <ok / gap / BLOCKING gap>
|
|
157
|
+
|
|
158
|
+
Verdict: <Ready to delegate | Not yet — pushes review burden to the human | Blocked on a safety gap>
|
|
159
|
+
|
|
160
|
+
Weakest link: <the one axis that most limits trust>
|
|
161
|
+
|
|
162
|
+
Candidate evals (add these to the loop):
|
|
163
|
+
- ...
|
|
164
|
+
|
|
165
|
+
Recommended next step: <recommendation>
|
|
166
|
+
Then, if the user wants options:
|
|
167
|
+
1. <recommended option> (recommended)
|
|
168
|
+
2. <option>
|
|
169
|
+
3. <option>
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Lead the decision with a recommendation, then number the options so the user can answer with a single digit. Keep belief, evidence, and dissent visible — do not reduce the verdict to a bare menu.
|
|
173
|
+
|
|
174
|
+
## With `--fix`
|
|
175
|
+
|
|
176
|
+
Only when the user asks. Safe, in-place improvements to a `loops.yaml` loop:
|
|
177
|
+
|
|
178
|
+
- Tighten a vague `goal` into a checkable target + standard (propose wording; confirm before writing).
|
|
179
|
+
- Add missing `stop.*` terminal states (`exhausted`, `stagnated`, `clean_no_op`) and their conditions.
|
|
180
|
+
- Add missing `record.required_fields` so the handoff carries `verification_result` and `observed_sources`.
|
|
181
|
+
- Add `ask_user_when` escalation entries for irreversible/outbound actions.
|
|
182
|
+
|
|
183
|
+
Never widen `act.allowed` to enable a riskier action as a "fix." Never raise a budget or weaken a boundary to make a loop pass. Changing what a loop is *allowed to do* is a product decision — surface it, do not auto-apply. After any write to a packet loop, re-run `foo loop check <packet-dir>` and, for packet-tied changes, `foo asp validate <packet-dir>`.
|
|
184
|
+
|
|
185
|
+
## Integration With Other Skills And CLI
|
|
186
|
+
|
|
187
|
+
- `foo loop check <packet-dir>` — structural + budget (B4) validation. Run first for `loops.yaml` loops; `review-loop` adds the quality judgment on top.
|
|
188
|
+
- `foo loop status <packet-dir>` — renders the loop's current state, evidence, and approval boundary.
|
|
189
|
+
- `foo loop estimate <packet-dir> --agree` — the budget handshake for an acting loop.
|
|
190
|
+
- `loop-library-audit` — evaluate a whole loop library or registry; it delegates per-loop grading to this skill.
|
|
191
|
+
- `foo-roast` — when the loop is embedded in a spec/prototype that also needs product-shape cuts.
|
|
192
|
+
|
|
193
|
+
## Error Handling
|
|
194
|
+
|
|
195
|
+
- If no loop source is available, ask for the smallest description: goal, check, and stop condition — or a `loops.yaml` path. Do not fabricate the loop.
|
|
196
|
+
- If the source is a `loops.yaml` that fails `foo loop check` (schema or budget), report that structural failure first; a malformed contract cannot be meaningfully graded for quality until it parses.
|
|
197
|
+
- If the loop description is too vague to locate a check or a stop condition, say so plainly and treat those axes as 🚧 missing rather than guessing a passing grade.
|
|
198
|
+
- If the loop references private or sensitive source material, do not copy raw material into the review; evaluate only the loop's structure and boundaries.
|
|
199
|
+
- If a claim about what the loop does depends on running it, label it an assumption or inspect the referenced sources before scoring.
|
|
200
|
+
- If the user asks to change what an acting loop is permitted to do, route that decision back to the human (and to `interview-me` / `foo spec` when product meaning is at stake) rather than editing boundaries silently.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-spec
|
|
3
|
+
description: "Use when one productfoo spec packet needs a focused quality, evidence, scope, risk, or implementation-readiness review."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Review Spec
|
|
7
|
+
|
|
8
|
+
## Usage
|
|
9
|
+
|
|
10
|
+
Review one packet in depth. Use `check-spec-health` for a portfolio roll-up.
|
|
11
|
+
|
|
12
|
+
1. Read `spec.md`, `tasks.yaml`, and `events.jsonl`; preserve the append-only ledger.
|
|
13
|
+
2. Run `foo asp validate <packet-dir>` and, when implementation exists, `foo asp
|
|
14
|
+
reconcile <packet-dir> --git-diff` or the approved source equivalent.
|
|
15
|
+
3. Check intent, requirements, non-goals, decisions, risks, validation, task
|
|
16
|
+
dependency shape, proof, approval boundaries, and product/code drift.
|
|
17
|
+
4. Inspect repo facts and approved evidence before asking questions. A connector
|
|
18
|
+
being installed is not source approval; raw private context is not packet evidence.
|
|
19
|
+
5. Report findings by severity, then propose the smallest repair. Apply edits only
|
|
20
|
+
after the user approves product-meaning changes, and write packet events/tasks
|
|
21
|
+
through `foo asp event` and `foo asp task`.
|
|
22
|
+
|
|
23
|
+
The report includes **Sources used**, **Sources omitted**, **Trust status**, and
|
|
24
|
+
**Limits**, plus the decisions that remain the user's alone.
|
|
25
|
+
|
|
26
|
+
## Error Handling
|
|
27
|
+
|
|
28
|
+
- If the packet is missing or malformed, name the exact validation failure and
|
|
29
|
+
next command; do not invent missing intent.
|
|
30
|
+
- If a required source approval or proof is absent, stop the affected assessment
|
|
31
|
+
with a visible nonzero handoff. Optional omissions must be named in the report.
|
|
32
|
+
- Never hand-edit an old event row, renumber stable IDs, or auto-approve a risky boundary.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rfc-from-research
|
|
3
|
+
description: "Use when validated research should inform a strategy RFC, product RFC, opportunity memo, or sourced proposal."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# RFC From Research
|
|
7
|
+
|
|
8
|
+
## Usage
|
|
9
|
+
|
|
10
|
+
Turn validated evidence into a reviewable proposal without treating proof as an
|
|
11
|
+
automatic product decision.
|
|
12
|
+
|
|
13
|
+
1. Require at least one productfoo research paper and run `foo research validate
|
|
14
|
+
<paper.md>`. Continue only when it succeeds with exit 0. A signed receipt
|
|
15
|
+
binds the exact paper bytes; editing the paper invalidates that proof.
|
|
16
|
+
2. Read the validated paper, packet truth, and approved sanitized evidence.
|
|
17
|
+
Distinguish source claims, repo facts, hypotheses, dissent, and unknowns.
|
|
18
|
+
3. Draft: context, problem, evidence, proposal, alternatives, tradeoffs,
|
|
19
|
+
trust/privacy boundaries, rollout, validation, open decisions, and non-goals.
|
|
20
|
+
4. Map every load-bearing recommendation to evidence and preserve counterevidence.
|
|
21
|
+
5. Ask the human to approve promotion into a packet or decision. Validation and
|
|
22
|
+
sealing never automatically promote research into a requirement.
|
|
23
|
+
|
|
24
|
+
### Source ledger
|
|
25
|
+
|
|
26
|
+
- **Sources used** — paper/reference, validation result, approval, and receipt status.
|
|
27
|
+
- **Sources omitted** — every optional evidence lane not used and why.
|
|
28
|
+
- **Trust status** — validated research, approved sanitized evidence, repo fact, or hypothesis.
|
|
29
|
+
- **Limits** — unsupported recommendations and human decisions still open.
|
|
30
|
+
|
|
31
|
+
Optional omissions appear in the human summary and the RFC artifact. Write the
|
|
32
|
+
RFC only to an explicitly requested local destination.
|
|
33
|
+
|
|
34
|
+
## Error Handling
|
|
35
|
+
|
|
36
|
+
- If `foo research validate <paper.md>` fails, a required paper is missing, or
|
|
37
|
+
source approval is absent, stop with `status: blocked`, name what did not run,
|
|
38
|
+
give the exact `next action`, and set `exit: nonzero`.
|
|
39
|
+
- If an optional source is unavailable, narrow the proposal and list the
|
|
40
|
+
omission; never substitute model knowledge.
|
|
41
|
+
- If the evidence does not support a recommendation, write an open decision or
|
|
42
|
+
a no-go alternative instead of forcing an RFC conclusion.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# RFC Pattern Reference
|
|
2
|
+
|
|
3
|
+
Use this reference when the RFC needs strategic synthesis, current-system comparison, or a reusable product recommendation.
|
|
4
|
+
|
|
5
|
+
## Accepted Shape
|
|
6
|
+
|
|
7
|
+
The accepted example used this flow:
|
|
8
|
+
|
|
9
|
+
1. **Sharp title**
|
|
10
|
+
Name the product concept and strategic tension.
|
|
11
|
+
|
|
12
|
+
2. **Summary**
|
|
13
|
+
State the product opportunity in plain English. Include the "not this, this" distinction early.
|
|
14
|
+
|
|
15
|
+
3. **Research Readout**
|
|
16
|
+
Group sources by system type, not by a flat source list. Each cluster should end with a short implication for the target product.
|
|
17
|
+
|
|
18
|
+
Good clusters:
|
|
19
|
+
- Horizontal AI assistants
|
|
20
|
+
- Work-management systems
|
|
21
|
+
- Product-development systems
|
|
22
|
+
- Research or academic signal
|
|
23
|
+
- Contrarian or failure-mode signal
|
|
24
|
+
|
|
25
|
+
4. **Problem**
|
|
26
|
+
Describe the concrete local behavior users optimize today and why that can still fail globally.
|
|
27
|
+
|
|
28
|
+
5. **Proposal**
|
|
29
|
+
Give the concept a name. Define the smallest useful product unit and the repeated review question it answers.
|
|
30
|
+
|
|
31
|
+
6. **Approaches Considered**
|
|
32
|
+
Include a familiar baseline, the recommended wedge, and a higher-upside follow-on. This makes the recommendation feel chosen, not assumed.
|
|
33
|
+
|
|
34
|
+
7. **Recommended Direction**
|
|
35
|
+
Make the call directly. Avoid "it depends" unless the RFC is explicitly asking for decision criteria only.
|
|
36
|
+
|
|
37
|
+
8. **Experience**
|
|
38
|
+
Show where the concept appears in the product. Keep this as user-visible behavior, not implementation architecture.
|
|
39
|
+
|
|
40
|
+
9. **MVP Scope**
|
|
41
|
+
Collapse the idea to one real workflow, one decision, one initiative, one customer segment, or similar.
|
|
42
|
+
|
|
43
|
+
10. **Non-Goals**
|
|
44
|
+
Block adjacent-product drift.
|
|
45
|
+
|
|
46
|
+
11. **Success Criteria**
|
|
47
|
+
Combine qualitative proof with measurable proxies.
|
|
48
|
+
|
|
49
|
+
12. **Risks and Open Questions**
|
|
50
|
+
Surface false certainty, incentives, source completeness, and adoption overhead.
|
|
51
|
+
|
|
52
|
+
13. **Source Notes**
|
|
53
|
+
List every source used with a one-line relevance note.
|
|
54
|
+
|
|
55
|
+
## Moves Worth Preserving
|
|
56
|
+
|
|
57
|
+
- The research readout was useful because each section said what that category implied for the product.
|
|
58
|
+
- The proposal avoided a generic "AI prioritization" claim and instead named an ergonomic product surface.
|
|
59
|
+
- The RFC used "one real initiative and one decision" to keep the MVP credible.
|
|
60
|
+
- The risks protected against false certainty, political friction, incomplete context, metric gaming, and governance overhead.
|
|
61
|
+
- The source notes made the provenance boundary explicit without turning the RFC into an academic bibliography.
|
|
62
|
+
|
|
63
|
+
## Red Flags
|
|
64
|
+
|
|
65
|
+
- If the RFC could apply to any SaaS company, sharpen the product wedge.
|
|
66
|
+
- If the research section can be deleted without changing the proposal, rewrite the research section.
|
|
67
|
+
- If the MVP needs a full platform, shrink it to a single reviewed decision.
|
|
68
|
+
- If the recommendation is hidden in the middle, add a `Recommended Direction` section.
|
|
69
|
+
- If sources are summarized but not linked, add source notes before finishing.
|