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.
Files changed (498) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +338 -2
  3. package/bin/foo +3 -0
  4. package/bin/foo.mjs +42 -0
  5. package/commands/bug.md +31 -0
  6. package/commands/discovery.md +28 -0
  7. package/commands/ideate.md +27 -0
  8. package/commands/init.md +28 -0
  9. package/commands/pitch.md +27 -0
  10. package/commands/preview.md +25 -0
  11. package/commands/research.md +31 -0
  12. package/commands/roast.md +27 -0
  13. package/commands/spec.md +30 -0
  14. package/config/pricing.yaml +198 -0
  15. package/config/routing-policy.yaml +171 -0
  16. package/dist-public/src/activeModel.d.ts +83 -0
  17. package/dist-public/src/activeModel.js +331 -0
  18. package/dist-public/src/agentAdapters.d.ts +122 -0
  19. package/dist-public/src/agentAdapters.js +178 -0
  20. package/dist-public/src/agentState.d.ts +43 -0
  21. package/dist-public/src/agentState.js +177 -0
  22. package/dist-public/src/bugCapsule.d.ts +94 -0
  23. package/dist-public/src/bugCapsule.js +227 -0
  24. package/dist-public/src/bugCapture.d.ts +26 -0
  25. package/dist-public/src/bugCapture.js +251 -0
  26. package/dist-public/src/bugOwnerLog.d.ts +93 -0
  27. package/dist-public/src/bugOwnerLog.js +304 -0
  28. package/dist-public/src/bugReportStore.d.ts +48 -0
  29. package/dist-public/src/bugReportStore.js +860 -0
  30. package/dist-public/src/bugSpecContext.d.ts +7 -0
  31. package/dist-public/src/bugSpecContext.js +129 -0
  32. package/dist-public/src/channelFreshness.d.ts +25 -0
  33. package/dist-public/src/channelFreshness.js +194 -0
  34. package/dist-public/src/cli.d.ts +30 -0
  35. package/dist-public/src/cli.js +1667 -0
  36. package/dist-public/src/cliArgs.d.ts +7 -0
  37. package/dist-public/src/cliArgs.js +44 -0
  38. package/dist-public/src/codeCatalog.d.ts +41 -0
  39. package/dist-public/src/codeCatalog.js +197 -0
  40. package/dist-public/src/commandContract.d.ts +84 -0
  41. package/dist-public/src/commandContract.js +390 -0
  42. package/dist-public/src/commandUsage.d.ts +3 -0
  43. package/dist-public/src/commandUsage.js +30 -0
  44. package/dist-public/src/commands/agent.d.ts +60 -0
  45. package/dist-public/src/commands/agent.js +1353 -0
  46. package/dist-public/src/commands/asp.d.ts +8 -0
  47. package/dist-public/src/commands/asp.js +669 -0
  48. package/dist-public/src/commands/evalCmd.d.ts +4 -0
  49. package/dist-public/src/commands/evalCmd.js +405 -0
  50. package/dist-public/src/commands/login.d.ts +25 -0
  51. package/dist-public/src/commands/login.js +94 -0
  52. package/dist-public/src/commands/loop.d.ts +16 -0
  53. package/dist-public/src/commands/loop.js +619 -0
  54. package/dist-public/src/commands/reconcile.d.ts +41 -0
  55. package/dist-public/src/commands/reconcile.js +292 -0
  56. package/dist-public/src/commands/runtime.d.ts +1 -0
  57. package/dist-public/src/commands/runtime.js +36 -0
  58. package/dist-public/src/commands/scanRedact.d.ts +8 -0
  59. package/dist-public/src/commands/scanRedact.js +266 -0
  60. package/dist-public/src/commands/setup.d.ts +28 -0
  61. package/dist-public/src/commands/setup.js +398 -0
  62. package/dist-public/src/commands/shared.d.ts +17 -0
  63. package/dist-public/src/commands/shared.js +147 -0
  64. package/dist-public/src/commands/source.d.ts +1 -0
  65. package/dist-public/src/commands/source.js +134 -0
  66. package/dist-public/src/commands/specCmd.d.ts +24 -0
  67. package/dist-public/src/commands/specCmd.js +794 -0
  68. package/dist-public/src/commands/update.d.ts +61 -0
  69. package/dist-public/src/commands/update.js +244 -0
  70. package/dist-public/src/comprehensionSignal.d.ts +20 -0
  71. package/dist-public/src/comprehensionSignal.js +166 -0
  72. package/dist-public/src/conductor/diversity.d.ts +48 -0
  73. package/dist-public/src/conductor/diversity.js +423 -0
  74. package/dist-public/src/conductor/engine.d.ts +7 -0
  75. package/dist-public/src/conductor/engine.js +295 -0
  76. package/dist-public/src/conductor/families/ideate.d.ts +2 -0
  77. package/dist-public/src/conductor/families/ideate.js +255 -0
  78. package/dist-public/src/conductor/families/interview.d.ts +2 -0
  79. package/dist-public/src/conductor/families/interview.js +39 -0
  80. package/dist-public/src/conductor/families/specSwarm.d.ts +2 -0
  81. package/dist-public/src/conductor/families/specSwarm.js +146 -0
  82. package/dist-public/src/conductor/familyDelivery.d.ts +6 -0
  83. package/dist-public/src/conductor/familyDelivery.js +37 -0
  84. package/dist-public/src/conductor/familyPackArtifact.d.ts +4 -0
  85. package/dist-public/src/conductor/familyPackArtifact.js +260 -0
  86. package/dist-public/src/conductor/ideateDecision.d.ts +6 -0
  87. package/dist-public/src/conductor/ideateDecision.js +237 -0
  88. package/dist-public/src/conductor/pack.d.ts +26 -0
  89. package/dist-public/src/conductor/pack.js +75 -0
  90. package/dist-public/src/conductor/types.d.ts +111 -0
  91. package/dist-public/src/conductor/types.js +7 -0
  92. package/dist-public/src/configPath.d.ts +2 -0
  93. package/dist-public/src/configPath.js +7 -0
  94. package/dist-public/src/discoveryArtifacts.d.ts +54 -0
  95. package/dist-public/src/discoveryArtifacts.js +467 -0
  96. package/dist-public/src/discoveryCommand.d.ts +127 -0
  97. package/dist-public/src/discoveryCommand.js +2148 -0
  98. package/dist-public/src/discoveryConnections.d.ts +339 -0
  99. package/dist-public/src/discoveryConnections.js +613 -0
  100. package/dist-public/src/discoveryDocs.d.ts +129 -0
  101. package/dist-public/src/discoveryDocs.js +577 -0
  102. package/dist-public/src/discoveryEvidence.d.ts +59 -0
  103. package/dist-public/src/discoveryEvidence.js +198 -0
  104. package/dist-public/src/discoveryFireflies.d.ts +25 -0
  105. package/dist-public/src/discoveryFireflies.js +551 -0
  106. package/dist-public/src/discoveryGmail.d.ts +12 -0
  107. package/dist-public/src/discoveryGmail.js +466 -0
  108. package/dist-public/src/discoveryGong.d.ts +12 -0
  109. package/dist-public/src/discoveryGong.js +491 -0
  110. package/dist-public/src/discoveryLearningRouting.d.ts +90 -0
  111. package/dist-public/src/discoveryLearningRouting.js +405 -0
  112. package/dist-public/src/discoveryMatching.d.ts +26 -0
  113. package/dist-public/src/discoveryMatching.js +73 -0
  114. package/dist-public/src/discoveryOutlook.d.ts +12 -0
  115. package/dist-public/src/discoveryOutlook.js +492 -0
  116. package/dist-public/src/discoveryProcess.d.ts +221 -0
  117. package/dist-public/src/discoveryProcess.js +703 -0
  118. package/dist-public/src/discoveryProof.d.ts +143 -0
  119. package/dist-public/src/discoveryProof.js +529 -0
  120. package/dist-public/src/discoveryProviders.d.ts +152 -0
  121. package/dist-public/src/discoveryProviders.js +756 -0
  122. package/dist-public/src/discoveryReadiness.d.ts +219 -0
  123. package/dist-public/src/discoveryReadiness.js +672 -0
  124. package/dist-public/src/discoveryReconcile.d.ts +57 -0
  125. package/dist-public/src/discoveryReconcile.js +424 -0
  126. package/dist-public/src/discoverySlack.d.ts +12 -0
  127. package/dist-public/src/discoverySlack.js +452 -0
  128. package/dist-public/src/discoverySources.d.ts +56 -0
  129. package/dist-public/src/discoverySources.js +322 -0
  130. package/dist-public/src/discoverySync.d.ts +52 -0
  131. package/dist-public/src/discoverySync.js +151 -0
  132. package/dist-public/src/discoverySynthesis.d.ts +57 -0
  133. package/dist-public/src/discoverySynthesis.js +215 -0
  134. package/dist-public/src/discoveryTeams.d.ts +12 -0
  135. package/dist-public/src/discoveryTeams.js +516 -0
  136. package/dist-public/src/discoveryZoom.d.ts +12 -0
  137. package/dist-public/src/discoveryZoom.js +523 -0
  138. package/dist-public/src/elicitationSurface.d.ts +13 -0
  139. package/dist-public/src/elicitationSurface.js +77 -0
  140. package/dist-public/src/errorReport.d.ts +99 -0
  141. package/dist-public/src/errorReport.js +443 -0
  142. package/dist-public/src/errorTaxonomy.d.ts +84 -0
  143. package/dist-public/src/errorTaxonomy.js +189 -0
  144. package/dist-public/src/evalCalibration.d.ts +82 -0
  145. package/dist-public/src/evalCalibration.js +169 -0
  146. package/dist-public/src/evalChecks.d.ts +21 -0
  147. package/dist-public/src/evalChecks.js +295 -0
  148. package/dist-public/src/evalCompile.d.ts +56 -0
  149. package/dist-public/src/evalCompile.js +58 -0
  150. package/dist-public/src/evalImprove.d.ts +60 -0
  151. package/dist-public/src/evalImprove.js +175 -0
  152. package/dist-public/src/evalJudge.d.ts +47 -0
  153. package/dist-public/src/evalJudge.js +143 -0
  154. package/dist-public/src/evalLabels.d.ts +100 -0
  155. package/dist-public/src/evalLabels.js +287 -0
  156. package/dist-public/src/evalRecord.d.ts +68 -0
  157. package/dist-public/src/evalRecord.js +165 -0
  158. package/dist-public/src/evalRoast.d.ts +88 -0
  159. package/dist-public/src/evalRoast.js +249 -0
  160. package/dist-public/src/evidenceIntake.d.ts +66 -0
  161. package/dist-public/src/evidenceIntake.js +356 -0
  162. package/dist-public/src/feedback.d.ts +78 -0
  163. package/dist-public/src/feedback.js +294 -0
  164. package/dist-public/src/firefliesClient.d.ts +106 -0
  165. package/dist-public/src/firefliesClient.js +258 -0
  166. package/dist-public/src/firstMoveTensions.d.ts +10 -0
  167. package/dist-public/src/firstMoveTensions.js +93 -0
  168. package/dist-public/src/gitRun.d.ts +21 -0
  169. package/dist-public/src/gitRun.js +50 -0
  170. package/dist-public/src/githubReconcile.d.ts +94 -0
  171. package/dist-public/src/githubReconcile.js +205 -0
  172. package/dist-public/src/gmailNango.d.ts +131 -0
  173. package/dist-public/src/gmailNango.js +329 -0
  174. package/dist-public/src/gongNango.d.ts +118 -0
  175. package/dist-public/src/gongNango.js +308 -0
  176. package/dist-public/src/grammarGate.d.ts +13 -0
  177. package/dist-public/src/grammarGate.js +72 -0
  178. package/dist-public/src/harnessGates.d.ts +65 -0
  179. package/dist-public/src/harnessGates.js +168 -0
  180. package/dist-public/src/humanSurfaceEval.d.ts +19 -0
  181. package/dist-public/src/humanSurfaceEval.js +156 -0
  182. package/dist-public/src/ideate.d.ts +43 -0
  183. package/dist-public/src/ideate.js +255 -0
  184. package/dist-public/src/ideateContext.d.ts +11 -0
  185. package/dist-public/src/ideateContext.js +83 -0
  186. package/dist-public/src/index.d.ts +2 -0
  187. package/dist-public/src/index.js +4 -0
  188. package/dist-public/src/initCommand.d.ts +25 -0
  189. package/dist-public/src/initCommand.js +558 -0
  190. package/dist-public/src/interviewGate.d.ts +25 -0
  191. package/dist-public/src/interviewGate.js +126 -0
  192. package/dist-public/src/jsonFile.d.ts +2 -0
  193. package/dist-public/src/jsonFile.js +22 -0
  194. package/dist-public/src/loopBudget.d.ts +182 -0
  195. package/dist-public/src/loopBudget.js +494 -0
  196. package/dist-public/src/loopContracts.d.ts +35 -0
  197. package/dist-public/src/loopContracts.js +364 -0
  198. package/dist-public/src/machineState.d.ts +1 -0
  199. package/dist-public/src/machineState.js +9 -0
  200. package/dist-public/src/notionNango.d.ts +93 -0
  201. package/dist-public/src/notionNango.js +279 -0
  202. package/dist-public/src/orchestrationResult.d.ts +11 -0
  203. package/dist-public/src/orchestrationResult.js +73 -0
  204. package/dist-public/src/outlookNango.d.ts +124 -0
  205. package/dist-public/src/outlookNango.js +327 -0
  206. package/dist-public/src/packetCorrections.d.ts +40 -0
  207. package/dist-public/src/packetCorrections.js +172 -0
  208. package/dist-public/src/packetGlossary.d.ts +6 -0
  209. package/dist-public/src/packetGlossary.js +42 -0
  210. package/dist-public/src/packetIndex.d.ts +54 -0
  211. package/dist-public/src/packetIndex.js +744 -0
  212. package/dist-public/src/packetIndexEntry.d.ts +3 -0
  213. package/dist-public/src/packetIndexEntry.js +128 -0
  214. package/dist-public/src/packetIndexServe.d.ts +13 -0
  215. package/dist-public/src/packetIndexServe.js +113 -0
  216. package/dist-public/src/packetIndexWorker.d.ts +7 -0
  217. package/dist-public/src/packetIndexWorker.js +45 -0
  218. package/dist-public/src/packetLifecycle.d.ts +30 -0
  219. package/dist-public/src/packetLifecycle.js +127 -0
  220. package/dist-public/src/packetReconcile.d.ts +73 -0
  221. package/dist-public/src/packetReconcile.js +386 -0
  222. package/dist-public/src/packetStatus.d.ts +125 -0
  223. package/dist-public/src/packetStatus.js +770 -0
  224. package/dist-public/src/packetValidation.d.ts +17 -0
  225. package/dist-public/src/packetValidation.js +333 -0
  226. package/dist-public/src/packetVerify.d.ts +73 -0
  227. package/dist-public/src/packetVerify.js +303 -0
  228. package/dist-public/src/packetWrite.d.ts +52 -0
  229. package/dist-public/src/packetWrite.js +448 -0
  230. package/dist-public/src/pitch.d.ts +38 -0
  231. package/dist-public/src/pitch.js +154 -0
  232. package/dist-public/src/processMemo.d.ts +8 -0
  233. package/dist-public/src/processMemo.js +23 -0
  234. package/dist-public/src/productDetect.d.ts +30 -0
  235. package/dist-public/src/productDetect.js +376 -0
  236. package/dist-public/src/profile.d.ts +62 -0
  237. package/dist-public/src/profile.js +334 -0
  238. package/dist-public/src/questionModel.d.ts +46 -0
  239. package/dist-public/src/questionModel.js +74 -0
  240. package/dist-public/src/questionText.d.ts +7 -0
  241. package/dist-public/src/questionText.js +38 -0
  242. package/dist-public/src/redactConfig.d.ts +2 -0
  243. package/dist-public/src/redactConfig.js +11 -0
  244. package/dist-public/src/redactEngine.d.ts +59 -0
  245. package/dist-public/src/redactEngine.js +509 -0
  246. package/dist-public/src/redactGate.d.ts +63 -0
  247. package/dist-public/src/redactGate.js +209 -0
  248. package/dist-public/src/repoRead.d.ts +29 -0
  249. package/dist-public/src/repoRead.js +160 -0
  250. package/dist-public/src/research.d.ts +242 -0
  251. package/dist-public/src/research.js +1314 -0
  252. package/dist-public/src/researchCompletion.d.ts +34 -0
  253. package/dist-public/src/researchCompletion.js +123 -0
  254. package/dist-public/src/researchExecution.d.ts +47 -0
  255. package/dist-public/src/researchExecution.js +309 -0
  256. package/dist-public/src/researchFormat.d.ts +21 -0
  257. package/dist-public/src/researchFormat.js +77 -0
  258. package/dist-public/src/researchGate.d.ts +86 -0
  259. package/dist-public/src/researchGate.js +1036 -0
  260. package/dist-public/src/researchReceipt.d.ts +76 -0
  261. package/dist-public/src/researchReceipt.js +148 -0
  262. package/dist-public/src/researchRender.d.ts +2 -0
  263. package/dist-public/src/researchRender.js +267 -0
  264. package/dist-public/src/researchSigningKey.d.ts +19 -0
  265. package/dist-public/src/researchSigningKey.js +95 -0
  266. package/dist-public/src/riskClassify.d.ts +42 -0
  267. package/dist-public/src/riskClassify.js +149 -0
  268. package/dist-public/src/routines.d.ts +42 -0
  269. package/dist-public/src/routines.js +269 -0
  270. package/dist-public/src/routingPolicy.d.ts +172 -0
  271. package/dist-public/src/routingPolicy.js +646 -0
  272. package/dist-public/src/secretInput.d.ts +8 -0
  273. package/dist-public/src/secretInput.js +89 -0
  274. package/dist-public/src/selfCheck.d.ts +7 -0
  275. package/dist-public/src/selfCheck.js +473 -0
  276. package/dist-public/src/selfCheckCache.d.ts +29 -0
  277. package/dist-public/src/selfCheckCache.js +147 -0
  278. package/dist-public/src/severityClass.d.ts +15 -0
  279. package/dist-public/src/severityClass.js +22 -0
  280. package/dist-public/src/skillClientPolicy.d.ts +8 -0
  281. package/dist-public/src/skillClientPolicy.js +16 -0
  282. package/dist-public/src/skillLocal.d.ts +98 -0
  283. package/dist-public/src/skillLocal.js +463 -0
  284. package/dist-public/src/skillTreeDigest.d.ts +9 -0
  285. package/dist-public/src/skillTreeDigest.js +64 -0
  286. package/dist-public/src/slackNango.d.ts +62 -0
  287. package/dist-public/src/slackNango.js +208 -0
  288. package/dist-public/src/social/arxiv.d.ts +19 -0
  289. package/dist-public/src/social/arxiv.js +96 -0
  290. package/dist-public/src/social/github.d.ts +2 -0
  291. package/dist-public/src/social/github.js +78 -0
  292. package/dist-public/src/social/hackernews.d.ts +2 -0
  293. package/dist-public/src/social/hackernews.js +67 -0
  294. package/dist-public/src/social/index.d.ts +10 -0
  295. package/dist-public/src/social/index.js +79 -0
  296. package/dist-public/src/social/reddit.d.ts +2 -0
  297. package/dist-public/src/social/reddit.js +125 -0
  298. package/dist-public/src/social/types.d.ts +73 -0
  299. package/dist-public/src/social/types.js +61 -0
  300. package/dist-public/src/social/xml.d.ts +10 -0
  301. package/dist-public/src/social/xml.js +49 -0
  302. package/dist-public/src/social/youtube.d.ts +7 -0
  303. package/dist-public/src/social/youtube.js +217 -0
  304. package/dist-public/src/sourceIngress.d.ts +488 -0
  305. package/dist-public/src/sourceIngress.js +1651 -0
  306. package/dist-public/src/specAfter.d.ts +187 -0
  307. package/dist-public/src/specAfter.js +814 -0
  308. package/dist-public/src/specBudget.d.ts +124 -0
  309. package/dist-public/src/specBudget.js +424 -0
  310. package/dist-public/src/specDecisionSignals.d.ts +38 -0
  311. package/dist-public/src/specDecisionSignals.js +121 -0
  312. package/dist-public/src/specLinkedCommits.d.ts +7 -0
  313. package/dist-public/src/specLinkedCommits.js +107 -0
  314. package/dist-public/src/specSections.d.ts +105 -0
  315. package/dist-public/src/specSections.js +718 -0
  316. package/dist-public/src/statusGlyphs.d.ts +18 -0
  317. package/dist-public/src/statusGlyphs.js +75 -0
  318. package/dist-public/src/swarmCommand.d.ts +10 -0
  319. package/dist-public/src/swarmCommand.js +96 -0
  320. package/dist-public/src/teamsNango.d.ts +114 -0
  321. package/dist-public/src/teamsNango.js +301 -0
  322. package/dist-public/src/tokenStore.d.ts +10 -0
  323. package/dist-public/src/tokenStore.js +77 -0
  324. package/dist-public/src/trustEnvelope.d.ts +78 -0
  325. package/dist-public/src/trustEnvelope.js +392 -0
  326. package/dist-public/src/untrustedText.d.ts +6 -0
  327. package/dist-public/src/untrustedText.js +20 -0
  328. package/dist-public/src/updateNotice.d.ts +41 -0
  329. package/dist-public/src/updateNotice.js +290 -0
  330. package/dist-public/src/vendorYaml.d.ts +1 -0
  331. package/dist-public/src/vendorYaml.js +7374 -0
  332. package/dist-public/src/workflowRunActuals.d.ts +67 -0
  333. package/dist-public/src/workflowRunActuals.js +184 -0
  334. package/dist-public/src/zendeskDiscovery.d.ts +12 -0
  335. package/dist-public/src/zendeskDiscovery.js +513 -0
  336. package/dist-public/src/zendeskNango.d.ts +131 -0
  337. package/dist-public/src/zendeskNango.js +344 -0
  338. package/dist-public/src/zoomNango.d.ts +106 -0
  339. package/dist-public/src/zoomNango.js +351 -0
  340. package/docs/CHANGELOG.md +32 -0
  341. package/docs/THIRD_PARTY_NOTICES.md +36 -0
  342. package/package.json +71 -4
  343. package/schemas/bug-capsule-receipt.schema.json +54 -0
  344. package/schemas/bug-capsule.schema.json +189 -0
  345. package/schemas/discovery-evidence-envelope.schema.json +79 -0
  346. package/schemas/discovery-processing-receipt.schema.json +71 -0
  347. package/schemas/discovery-service-contract.schema.json +189 -0
  348. package/skills/AGENTS.md +32 -0
  349. package/skills/README.md +287 -0
  350. package/skills/bug/SKILL.md +49 -0
  351. package/skills/build-preview-spec/SKILL.md +103 -0
  352. package/skills/capture-external-artifact/SKILL.md +23 -0
  353. package/skills/capture-external-artifact/agents/openai.yaml +4 -0
  354. package/skills/capture-external-artifact/references/extractor-libraries.md +27 -0
  355. package/skills/check-spec-health/SKILL.md +45 -0
  356. package/skills/check-spec-health/agents/openai.yaml +4 -0
  357. package/skills/competitive-positioning/SKILL.md +86 -0
  358. package/skills/competitive-positioning/agents/openai.yaml +4 -0
  359. package/skills/cpo-lens/SKILL.md +398 -0
  360. package/skills/cpo-lens/agents/openai.yaml +4 -0
  361. package/skills/create-prd/SKILL.md +26 -0
  362. package/skills/create-prd/agents/openai.yaml +4 -0
  363. package/skills/customer-discovery/SKILL.md +192 -0
  364. package/skills/design-system/SKILL.md +49 -0
  365. package/skills/design-system/agents/openai.yaml +4 -0
  366. package/skills/discussion-guide/SKILL.md +75 -0
  367. package/skills/discussion-guide/agents/openai.yaml +4 -0
  368. package/skills/firecrawl-research-papers/SKILL.md +96 -0
  369. package/skills/firecrawl-research-papers/agents/openai.yaml +4 -0
  370. package/skills/foo-roast/SKILL.md +325 -0
  371. package/skills/generate-gtm-brief/SKILL.md +41 -0
  372. package/skills/generate-gtm-brief/agents/openai.yaml +4 -0
  373. package/skills/generate-gtm-brief/references/gtm-brief-template.md +56 -0
  374. package/skills/gong-quotes/SKILL.md +43 -0
  375. package/skills/gong-quotes/agents/openai.yaml +4 -0
  376. package/skills/grill-me/SKILL.md +27 -0
  377. package/skills/grill-me/agents/openai.yaml +4 -0
  378. package/skills/ideate/SKILL.md +180 -0
  379. package/skills/ideate/references/family-packs.md +5 -0
  380. package/skills/initiative-tracker/SKILL.md +23 -0
  381. package/skills/initiative-tracker/agents/openai.yaml +4 -0
  382. package/skills/interop-review/SKILL.md +25 -0
  383. package/skills/interop-review/agents/openai.yaml +4 -0
  384. package/skills/interview-me/SKILL.md +404 -0
  385. package/skills/interview-me/agents/openai.yaml +4 -0
  386. package/skills/loop-library-audit/SKILL.md +123 -0
  387. package/skills/pitch/SKILL.md +110 -0
  388. package/skills/pitch/references/opportunity-assessment.md +136 -0
  389. package/skills/pitch/references/prfaq-template.md +54 -0
  390. package/skills/pmm-release-briefing/SKILL.md +27 -0
  391. package/skills/pmm-release-briefing/agents/openai.yaml +4 -0
  392. package/skills/pmm-release-briefing/references/variant-generalized.md +16 -0
  393. package/skills/positioning-messaging/SKILL.md +70 -0
  394. package/skills/positioning-messaging/agents/openai.yaml +4 -0
  395. package/skills/positioning-messaging/references/guest-insights.md +1400 -0
  396. package/skills/preview-swarm/SKILL.md +418 -0
  397. package/skills/preview-swarm/agents/openai.yaml +4 -0
  398. package/skills/preview-swarm/references/html-effectiveness-build-previews.md +168 -0
  399. package/skills/product-copywriting/SKILL.md +127 -0
  400. package/skills/product-copywriting/agents/openai.yaml +4 -0
  401. package/skills/product-copywriting/references/foo-voice.md +26 -0
  402. package/skills/product-shape-interview/SKILL.md +219 -0
  403. package/skills/product-shape-interview/agents/openai.yaml +4 -0
  404. package/skills/ready-for-release/SKILL.md +39 -0
  405. package/skills/ready-for-release/agents/openai.yaml +4 -0
  406. package/skills/redact-transcripts/SKILL.md +23 -0
  407. package/skills/redact-transcripts/agents/openai.yaml +4 -0
  408. package/skills/research-brief/SKILL.md +48 -0
  409. package/skills/research-brief/agents/openai.yaml +4 -0
  410. package/skills/research-refresh/SKILL.md +63 -0
  411. package/skills/research-refresh/references/worked-cases.md +44 -0
  412. package/skills/review-loop/SKILL.md +200 -0
  413. package/skills/review-spec/SKILL.md +32 -0
  414. package/skills/review-spec/agents/openai.yaml +4 -0
  415. package/skills/rfc-from-research/SKILL.md +42 -0
  416. package/skills/rfc-from-research/agents/openai.yaml +4 -0
  417. package/skills/rfc-from-research/references/rfc-pattern.md +69 -0
  418. package/skills/skill-registry.yaml +810 -0
  419. package/skills/spec-cleanup/SKILL.md +103 -0
  420. package/skills/spec-cleanup/agents/openai.yaml +4 -0
  421. package/skills/spec-swarm/SKILL.md +87 -0
  422. package/skills/spec-swarm/agents/openai.yaml +4 -0
  423. package/skills/spec-swarm/template/SKILL.template.md +94 -0
  424. package/skills/spec-swarm/template/personas/accessibility-inclusion.md +40 -0
  425. package/skills/spec-swarm/template/personas/ai-technical-pm.md +69 -0
  426. package/skills/spec-swarm/template/personas/analytics-engineering.md +39 -0
  427. package/skills/spec-swarm/template/personas/applied-ai-eval.md +64 -0
  428. package/skills/spec-swarm/template/personas/business-gm-pm.md +67 -0
  429. package/skills/spec-swarm/template/personas/consumer-craft-pm.md +68 -0
  430. package/skills/spec-swarm/template/personas/content-design.md +40 -0
  431. package/skills/spec-swarm/template/personas/cpo.md +42 -0
  432. package/skills/spec-swarm/template/personas/data-science.md +42 -0
  433. package/skills/spec-swarm/template/personas/developer-experience.md +65 -0
  434. package/skills/spec-swarm/template/personas/dx-product.md +70 -0
  435. package/skills/spec-swarm/template/personas/field.md +43 -0
  436. package/skills/spec-swarm/template/personas/finance-cfo.md +40 -0
  437. package/skills/spec-swarm/template/personas/growth-pm.md +67 -0
  438. package/skills/spec-swarm/template/personas/platform-pm.md +67 -0
  439. package/skills/spec-swarm/template/personas/pmm.md +43 -0
  440. package/skills/spec-swarm/template/personas/principal-product-designer.md +42 -0
  441. package/skills/spec-swarm/template/personas/product-ops-program.md +41 -0
  442. package/skills/spec-swarm/template/personas/qa-release.md +41 -0
  443. package/skills/spec-swarm/template/personas/responsible-ai-safety.md +64 -0
  444. package/skills/spec-swarm/template/personas/security-privacy-legal.md +40 -0
  445. package/skills/spec-swarm/template/personas/strategy-competitive.md +41 -0
  446. package/skills/spec-swarm/template/personas/technical-architect.md +42 -0
  447. package/skills/spec-swarm/template/personas/technical-lead.md +43 -0
  448. package/skills/spec-swarm/template/personas/user-research.md +41 -0
  449. package/skills/spec-swarm-accessibility-inclusion/SKILL.md +95 -0
  450. package/skills/spec-swarm-accessibility-inclusion/agents/openai.yaml +4 -0
  451. package/skills/spec-swarm-ai-technical-pm/SKILL.md +124 -0
  452. package/skills/spec-swarm-analytics-engineering/SKILL.md +94 -0
  453. package/skills/spec-swarm-analytics-engineering/agents/openai.yaml +4 -0
  454. package/skills/spec-swarm-applied-ai-eval/SKILL.md +120 -0
  455. package/skills/spec-swarm-business-gm-pm/SKILL.md +122 -0
  456. package/skills/spec-swarm-consumer-craft-pm/SKILL.md +122 -0
  457. package/skills/spec-swarm-content-design/SKILL.md +95 -0
  458. package/skills/spec-swarm-content-design/agents/openai.yaml +4 -0
  459. package/skills/spec-swarm-cpo/SKILL.md +94 -0
  460. package/skills/spec-swarm-cpo/agents/openai.yaml +4 -0
  461. package/skills/spec-swarm-data-science/SKILL.md +95 -0
  462. package/skills/spec-swarm-data-science/agents/openai.yaml +4 -0
  463. package/skills/spec-swarm-developer-experience/SKILL.md +121 -0
  464. package/skills/spec-swarm-dx-product/SKILL.md +126 -0
  465. package/skills/spec-swarm-field/SKILL.md +96 -0
  466. package/skills/spec-swarm-field/agents/openai.yaml +4 -0
  467. package/skills/spec-swarm-finance-cfo/SKILL.md +95 -0
  468. package/skills/spec-swarm-finance-cfo/agents/openai.yaml +4 -0
  469. package/skills/spec-swarm-growth-pm/SKILL.md +122 -0
  470. package/skills/spec-swarm-platform-pm/SKILL.md +122 -0
  471. package/skills/spec-swarm-pmm/SKILL.md +96 -0
  472. package/skills/spec-swarm-pmm/agents/openai.yaml +4 -0
  473. package/skills/spec-swarm-principal-product-designer/SKILL.md +95 -0
  474. package/skills/spec-swarm-principal-product-designer/agents/openai.yaml +4 -0
  475. package/skills/spec-swarm-product-ops-program/SKILL.md +96 -0
  476. package/skills/spec-swarm-product-ops-program/agents/openai.yaml +4 -0
  477. package/skills/spec-swarm-qa-release/SKILL.md +96 -0
  478. package/skills/spec-swarm-qa-release/agents/openai.yaml +4 -0
  479. package/skills/spec-swarm-responsible-ai-safety/SKILL.md +120 -0
  480. package/skills/spec-swarm-security-privacy-legal/SKILL.md +95 -0
  481. package/skills/spec-swarm-security-privacy-legal/agents/openai.yaml +4 -0
  482. package/skills/spec-swarm-strategy-competitive/SKILL.md +96 -0
  483. package/skills/spec-swarm-strategy-competitive/agents/openai.yaml +4 -0
  484. package/skills/spec-swarm-technical-architect/SKILL.md +95 -0
  485. package/skills/spec-swarm-technical-architect/agents/openai.yaml +4 -0
  486. package/skills/spec-swarm-technical-lead/SKILL.md +96 -0
  487. package/skills/spec-swarm-technical-lead/agents/openai.yaml +4 -0
  488. package/skills/spec-swarm-user-research/SKILL.md +95 -0
  489. package/skills/spec-swarm-user-research/agents/openai.yaml +4 -0
  490. package/skills/strategy-check/SKILL.md +170 -0
  491. package/skills/strategy-check/agents/openai.yaml +4 -0
  492. package/skills/study-digest/SKILL.md +41 -0
  493. package/skills/synthetic-customer/SKILL.md +68 -0
  494. package/skills/update-cli-spec/SKILL.md +69 -0
  495. package/skills/update-cli-spec/agents/openai.yaml +4 -0
  496. package/skills/voc-researcher/SKILL.md +45 -0
  497. package/skills/voc-researcher/agents/openai.yaml +4 -0
  498. package/skills-lock.json +35 -0
package/LICENSE ADDED
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright 2026 Rachel Wolan
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
package/README.md CHANGED
@@ -1,3 +1,339 @@
1
- # Temporary Holding Version
1
+ # productfoo: FSD for your coding agent
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ productfoo is an agentic product management harness you don’t have to micromanage. productfoo shapes the plan, checks the work, and brings you the decisions that matter. productfoo systematizes the art and science of product management.
4
+
5
+ Coding agents can move quickly. Keeping them pointed at the right problem takes work: explaining the goal, challenging assumptions, reviewing the result, and picking up the thread in the next session.
6
+
7
+ productfoo gives that work a repeatable process. You agree on the destination, scope, and checks. Your coding agent builds against that agreement. Decisions, tasks, and evidence stay in your repository, where you and the next agent can inspect them.
8
+
9
+ You talk to your coding agent the way you already do. The agent runs productfoo.
10
+
11
+ <!--
12
+ Link convention: productfoo's README is rendered on GitHub, on npmjs.com, and in an
13
+ unpacked tarball. npm does not reliably rewrite relative links, so every
14
+ cross-file link in tarball-shipped files (README.md, docs/CHANGELOG.md,
15
+ docs/THIRD_PARTY_NOTICES.md) is an absolute GitHub URL; other docs/ files (GitHub-only)
16
+ use relative links. The diagrams are plain text so they render the same on
17
+ GitHub, on npm, and in a terminal.
18
+ -->
19
+
20
+ ## How it works
21
+
22
+ Everything flows toward one artifact, the productfoo Spec. The coding agent builds
23
+ against it, and reconciliation compares the result back to it. People make the
24
+ calls shown in brackets.
25
+
26
+ ```text
27
+ SIGNAL EXPLORE SHAPE
28
+ ┌───────────────────────┐ ┌──────────────────────────┐ ┌─────────────────────────┐
29
+ │ Customer calls │─▶│ foo discovery │─▶│ foo spec │
30
+ │ approved sources only │ │ evidence, no transcripts │ │ asks only the questions │
31
+ └───────────────────────┘ └──────────────────────────┘ │ that matter │
32
+ ┌───────────────────────┐ ┌──────────────────────────┐ │ │
33
+ │ Public research │─▶│ foo research │─▶│ foo roast │
34
+ │ labeled untrusted │ │ sealed, cited paper │ │ cuts weak scope │
35
+ └───────────────────────┘ └──────────────────────────┘ │ │
36
+ ┌───────────────────────┐ ┌──────────────────────────┐ │ foo preview │
37
+ │ An idea or request │─▶│ foo ideate · pitch │─▶│ see it before build │
38
+ │ rough is fine │ │ shortlist · GO / NO-GO │ │ │
39
+ └───────────────────────┘ └──────────────────────────┘ │ [ you agree it ] │
40
+ └────────────┬────────────┘
41
+ ┌───────────────────────────────────────────────────────────────┘
42
+ ▼
43
+ THE CONTRACT BUILD AND PROVE
44
+ ┌─────────────────────────────┐ ┌──────────────────────────┐
45
+ │ productfoo Spec │ tasks + checks │ Coding agent builds │
46
+ │ specs/<packet>/ │ ─────────────▶ │ own branch + worktree │
47
+ │ Intent │ └─────────────┬────────────┘
48
+ │ Decisions + open questions │ ▼
49
+ │ Agreed, suggested, and │ ┌──────────────────────────┐
50
+ │ discovered work │ drift │ foo reconcile │
51
+ │ Tasks + acceptance checks │ ◀───────────── │ diff vs. agreed spec │
52
+ │ Proof + event history │ └─────────────┬────────────┘
53
+ └─────────────────────────────┘ ▼ proven
54
+ ┌──────────────────────────┐
55
+ │ Pull request → ship │
56
+ │ [ you approve ] │
57
+ └──────────────────────────┘
58
+ ```
59
+
60
+ Signal moves left to right into the productfoo Spec. The coding agent builds from that
61
+ spec, and `foo asp reconcile` compares the implementation evidence with it. The
62
+ diagrams use “foo reconcile” as shorthand for this step. Drift goes back to the spec
63
+ for a decision. Work backed by proof goes to a person for approval.
64
+
65
+ ## Get started
66
+
67
+ For the CLI, you need Node.js 18 or newer, npm, Git, and a configured coding agent. See [runtime support](https://github.com/rwo572/productfoo/blob/main/docs/runtime-support.md) for tested versions.
68
+
69
+ ### 1. Install productfoo
70
+
71
+ ```bash
72
+ npm install -g productfoo
73
+ cd /path/to/your/project
74
+ foo doctor
75
+ ```
76
+
77
+ This installs the release tagged `latest` on npm. The package is `productfoo`. Terminal commands start with `foo`; agent commands use your runtime’s native syntax, such as `/foo:spec` in Claude Code. Local workflows need no productfoo account or hosted service.
78
+
79
+ ### 2. Set up your coding agent
80
+
81
+ <details>
82
+ <summary><strong>Claude Code, Cursor, Grok Bot, or OpenCode</strong></summary>
83
+
84
+ Preview the project setup, review the proposed files, then apply it:
85
+
86
+ ```bash
87
+ foo agent setup --agent all --scope project --dry-run
88
+ foo agent setup --agent all --scope project --yes
89
+ ```
90
+
91
+ To target one agent, replace `all` with `codex` (Codex), `claude-code` (Claude Code), `cursor` (Cursor), `grok` (Grok Bot), or `opencode` (OpenCode). For Codex, use `--scope global` as shown below.
92
+
93
+ [Add productfoo to Grok Bot](https://x.ai/bot/6BQEkzxJ3C_UZHibSbM-G).
94
+
95
+ </details>
96
+
97
+ <details>
98
+ <summary><strong>Codex</strong></summary>
99
+
100
+ Preview and install the personal plugin:
101
+
102
+ ```bash
103
+ foo agent setup --agent codex --scope global --dry-run
104
+ foo agent setup --agent codex --scope global --yes
105
+ ```
106
+
107
+ Start a new Codex task so it loads the commands.
108
+
109
+ </details>
110
+
111
+ See [agent setup](https://github.com/rwo572/productfoo/blob/main/docs/agent-adapters.md) for runtime-specific details.
112
+
113
+ ### 3. Give your agent a destination
114
+
115
+ Ask your favorite coding agent to use productfoo to shape the work. In Claude Code:
116
+
117
+ > /foo:spec Customers keep re-creating the same filters. Let's productize this.
118
+
119
+ If you don’t know where to start, run `foo init`. It reads the project and suggests a low-stakes first move.
120
+
121
+ ## Why productfoo exists
122
+
123
+ ### The agent built the feature, but missed the point
124
+
125
+ “Add saved filters” leaves a lot unsaid. Are filters personal or shared? Who can change them? What happens when the underlying data changes?
126
+
127
+ `foo spec` helps resolve the questions that change the work. It records the problem, scope, decisions, and acceptance checks before the agent builds. The agent should inspect the project first and ask you only what the available evidence cannot answer.
128
+
129
+ For deeper work, `spec-swarm` brings in relevant product, design, engineering, and other expert perspectives. `spec-cleanup` makes the resulting plan specific enough to implement.
130
+
131
+ **Start with:** `foo spec "your feature"`
132
+
133
+ ### The agent ran with the first idea
134
+
135
+ A detailed implementation can still solve the wrong problem. Before committing to a direction, you may need customer evidence, public research, or a better alternative.
136
+
137
+ `foo discovery` turns approved customer calls into evidence you can review. `foo research` helps gather and document public research. `foo ideate` explores alternatives, and `foo pitch` builds the case for pursuing an opportunity, postponing it, or walking away.
138
+
139
+ **Start with:** `foo ideate "the problem you want to solve"`
140
+
141
+ ### You only discover the wrong product after it is built
142
+
143
+ It is easier to react to a concrete workflow than to imagine one from a spec.
144
+
145
+ `foo preview` turns a spec into a reviewable artifact before implementation. `foo roast` challenges weak assumptions, unnecessary scope, and likely drift. Feedback becomes a proposed change to the agreement for you to accept.
146
+
147
+ **Start with:** `foo preview specs/my-feature`
148
+
149
+ ### Every session needs the same explanation
150
+
151
+ A conversation can hold a lot of context. The next agent may not have it.
152
+
153
+ A productfoo Spec keeps the agreement in plain files:
154
+
155
+ | File | What it keeps |
156
+ |---|---|
157
+ | `spec.md` | Intent, requirements, decisions, and open questions |
158
+ | `tasks.yaml` | Work, acceptance checks, and task status |
159
+ | `events.jsonl` | The record of what happened |
160
+
161
+ The record distinguishes work you agreed to, ideas waiting for your decision, and necessary work discovered during implementation. Another agent can read it and continue from the recorded state.
162
+
163
+ **Read:** [The productfoo Spec](https://github.com/rwo572/productfoo/blob/main/docs/foo-spec.md)
164
+
165
+ ### “Done” does not tell you what was verified
166
+
167
+ Passing tests is useful evidence. You also need to know whether the result matches the work you agreed to do.
168
+
169
+ `foo asp reconcile` compares implementation evidence with the spec and surfaces differences. A task marked complete without evidence stays **done, proof pending**. The checks, gaps, and decisions remain available for review.
170
+
171
+ For autonomous work, `review-loop` evaluates whether the proposed process has a checkable goal, useful feedback, a stopping condition, and a handoff backed by evidence. Loop validation checks the declared contract and budget.
172
+
173
+ **Start with:** `foo asp reconcile specs/my-feature --git-diff`
174
+
175
+ ## What this adds to a bare coding agent
176
+
177
+ A capable coding agent can do this when prompted carefully. productfoo makes the discipline reusable, explicit, and inspectable so you don’t have to supply it every time.
178
+
179
+ | | Bare coding agent | With productfoo |
180
+ |---|---|---|
181
+ | Starting point | Your prompt and repository context | An agreement on the problem, scope, and success criteria |
182
+ | Product judgment | Depends on what you ask it to consider | Repeatable research, critique, and expert-review workflows |
183
+ | Scope changes | Assumptions can accumulate as work proceeds | Changes are recorded and surfaced for decisions |
184
+ | Completion | A summary of implementation and test results | Evidence compared with the agreed spec, including gaps |
185
+ | Handoff | Context may need to be explained again | The agreement and progress live in repository files |
186
+
187
+ For a typo or a small, well-defined fix, keep the process small. The structure matters most when work is ambiguous, spans sessions, or gives an agent meaningful autonomy.
188
+
189
+ ## Workflow reference
190
+
191
+ These are terminal commands. You can also describe the work to your coding agent and ask it to use productfoo.
192
+
193
+ ```text
194
+ BEFORE A SPEC EXISTS
195
+
196
+ Unfamiliar territory foo research
197
+ PMs · designers · FDEs ──▶ cited, untrusted findings ──┐
198
+ │
199
+ Customer calls and feedback foo discovery │
200
+ FDEs · PMs · CS ──▶ themes you review ──┤
201
+ │
202
+ A raw idea, many directions foo ideate │
203
+ founders · PMs ──▶ stress-tested shortlist ──┤
204
+ │
205
+ Should we build this at all? foo pitch │
206
+ founders · product leads ──▶ GO / NOT-NOW / NO-GO ──┤
207
+ │
208
+ A clear feature request foo spec │
209
+ engineers · everyone ══▶ ~30 seconds to shape ══╡
210
+ ▼
211
+ ┌───────────────────────────┐
212
+ │ productfoo Spec │
213
+ │ intent, decisions, │
214
+ │ tasks, proof │
215
+ │ [ you agree it ] │
216
+ └─────────────┬─────────────┘
217
+ ONCE A SPEC EXISTS │
218
+ │
219
+ Is the scope tight? foo roast │
220
+ senior engineers ◀── cuts + candidate checks ◀─┤
221
+ │
222
+ Will it look right? foo preview │
223
+ designers · PMs ◀── a reviewable artifact ◀─┤
224
+ │
225
+ Did we ship what we agreed? foo reconcile │
226
+ AI Ops · engineers ◀── drift or proof ◀─┘
227
+
228
+ Not sure which row you are in? foo init reads the project and suggests a first move.
229
+ ```
230
+
231
+ | When you want to… | Use |
232
+ |---|---|
233
+ | Find a useful starting point | `foo init` |
234
+ | Research an unfamiliar area | `foo research` |
235
+ | Turn approved customer calls into evidence | `foo discovery` |
236
+ | Explore and compare ideas | `foo ideate` |
237
+ | Decide whether an opportunity is worth pursuing | `foo pitch` |
238
+ | Agree on what to build | `foo spec` |
239
+ | Challenge any spec or prototype | `foo roast` |
240
+ | Preview the proposed product | `foo preview` |
241
+ | Compare the implementation with an existing spec | `foo asp reconcile specs/my-feature --git-diff` |
242
+
243
+ Run `foo help` for the main workflows or `foo help --all` for the complete command surface.
244
+
245
+ ### Skills worth knowing
246
+
247
+ The agent uses these skills within the workflows. Read them, or ask your agent to use one for a specific task.
248
+
249
+ - **[interview-me](https://github.com/rwo572/productfoo/blob/main/skills/interview-me/SKILL.md)**: Resolve the consequential questions before writing a spec.
250
+ - **[spec-swarm](https://github.com/rwo572/productfoo/blob/main/skills/spec-swarm/SKILL.md)**: Challenge a plan through relevant expert perspectives.
251
+ - **[spec-cleanup](https://github.com/rwo572/productfoo/blob/main/skills/spec-cleanup/SKILL.md)**: Make requirements, tasks, and checks ready for implementation.
252
+ - **[foo-roast](https://github.com/rwo572/productfoo/blob/main/skills/foo-roast/SKILL.md)**: Find weak assumptions, cut unnecessary scope, and suggest useful checks.
253
+ - **[preview-swarm](https://github.com/rwo572/productfoo/blob/main/skills/preview-swarm/SKILL.md)**: Build an artifact you can inspect before committing to implementation.
254
+ - **[review-loop](https://github.com/rwo572/productfoo/blob/main/skills/review-loop/SKILL.md)**: Evaluate whether autonomous work can converge and finish with evidence.
255
+
256
+ Browse the [skill registry](https://github.com/rwo572/productfoo/blob/main/skills/skill-registry.yaml) for the full inventory and each skill’s active or draft status.
257
+
258
+ ## Go deeper
259
+
260
+ - [Getting started](https://github.com/rwo572/productfoo/blob/main/docs/getting-started.md): your first complete workflow.
261
+ - [Firecrawl research](https://github.com/rwo572/productfoo/blob/main/docs/firecrawl.md): connect your own plugin or API key for public-web research. Firecrawl is optional and requires separate setup.
262
+ - [Worked examples](https://github.com/rwo572/productfoo/blob/main/examples/): inspect sample specs and their acceptance checks.
263
+ - [CLI reference](https://github.com/rwo572/productfoo/blob/main/docs/cli-reference.md): commands, flags, and output contracts.
264
+ - [Development setup](https://github.com/rwo572/productfoo/blob/main/.github/CONTRIBUTING.md#development-setup): build and test productfoo from source.
265
+ - [Documentation index](https://github.com/rwo572/productfoo/blob/main/docs/README.md): the complete documentation.
266
+
267
+ ## Project status and responsible use
268
+
269
+ productfoo is a personal open-source project, shared for people who find it useful.
270
+ It is under active experimentation; maintenance, compatibility, support, and
271
+ security fixes are best effort, with no guaranteed response or release schedule.
272
+
273
+ Its checks help you review agent work. They are not a sandbox and cannot guarantee
274
+ correct output, prevent every unintended action, detect every secret, or ensure an
275
+ agent follows instructions. Start in a disposable repository with synthetic data
276
+ and limited permissions. Review generated changes and commands before accepting
277
+ them, and keep backups of work you care about.
278
+
279
+ The CLI's local workflows do not require a productfoo account or hosted service.
280
+ Your coding agent, model provider, and connected tools may still send data outside
281
+ your machine and incur charges under their own permissions and settings. Review
282
+ those settings before providing private information or enabling external actions.
283
+
284
+ This is a personal project, unaffiliated with and not endorsed by any current or
285
+ former employer. It is provided under the warranty and liability terms in the
286
+ [Apache License 2.0](https://github.com/rwo572/productfoo/blob/main/LICENSE).
287
+
288
+ ## Contributions and support
289
+
290
+ Contributions are welcome. Please open an issue before starting substantial work
291
+ so we can agree on direction. Keep pull requests focused and include relevant
292
+ tests or verification.
293
+
294
+ Rachel Wolan ([@rwo572](https://github.com/rwo572)) maintains productfoo, reviews
295
+ contributions, and makes the final decision on scope and merging. Contribute
296
+ through a fork and pull request; repository write access and merging remain with
297
+ the maintainer. Submitting a contribution does not guarantee acceptance.
298
+
299
+ Maintenance and support are best effort, with no guaranteed response or roadmap.
300
+
301
+ - [Maintenance and contribution policy](https://github.com/rwo572/productfoo/blob/main/.github/CONTRIBUTING.md) —
302
+ review process and development setup.
303
+ - [Code of Conduct](https://github.com/rwo572/productfoo/blob/main/.github/CODE_OF_CONDUCT.md).
304
+ - [Security policy](https://github.com/rwo572/productfoo/blob/main/.github/SECURITY.md) —
305
+ report vulnerabilities privately; do not open a public issue.
306
+ - [Changelog](https://github.com/rwo572/productfoo/blob/main/docs/CHANGELOG.md).
307
+ - [Third-party notices](https://github.com/rwo572/productfoo/blob/main/docs/THIRD_PARTY_NOTICES.md).
308
+
309
+ ## Acknowledgments & inspiration
310
+
311
+ productfoo draws on the work of people making product judgment and agent
312
+ workflows more useful. Thank you to:
313
+
314
+ - **[Matt Pocock](https://github.com/mattpocock/skills)** for `grill-me` and its
315
+ approach to pressure-testing plans: ask focused questions, work through the
316
+ decisions, and inspect the code before asking the human. His skills README
317
+ also inspired this README’s setup-first, problem-led organization.
318
+ - **[Paul Bakaus and Impeccable](https://github.com/pbakaus/impeccable)** for
319
+ design critique, accessibility review, and visual craft in agent workflows.
320
+ - **[Lenny Rachitsky and Lenny’s Podcast guests](https://www.lennysnewsletter.com/)**
321
+ for the product judgment, growth, strategy, taste, and AI-product thinking
322
+ referenced throughout the expert lenses. Individual frameworks and ideas
323
+ remain attributed to their original speakers in the relevant skills.
324
+ - **[Thariq Shihipar](https://thariqs.github.io/html-effectiveness/)** for
325
+ “The unreasonable effectiveness of HTML” and its examples of interactive,
326
+ reviewable agent output, which informed the build-preview patterns.
327
+ - **[Anthropic’s frontend-design skill](https://github.com/anthropics/skills/tree/main/skills/frontend-design)**
328
+ for guidance on distinctive, intentional frontend design with coding agents.
329
+ - **[Matt Van Horn’s last30days](https://github.com/mvanhorn/last30days-skill)**
330
+ for inspiration around researching recent conversations and synthesizing
331
+ grounded findings.
332
+
333
+ These acknowledgments describe influences and companion tools. Runtime
334
+ third-party dependencies are documented in
335
+ [Third-party notices](https://github.com/rwo572/productfoo/blob/main/docs/THIRD_PARTY_NOTICES.md).
336
+
337
+ ## License
338
+
339
+ productfoo is released under the [Apache License 2.0](https://github.com/rwo572/productfoo/blob/main/LICENSE).
package/bin/foo ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Source-checkout convenience entrypoint; the npm executable uses foo.mjs.
3
+ import "./foo.mjs";
package/bin/foo.mjs ADDED
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env node
2
+ import { existsSync } from "node:fs";
3
+ import path from "node:path";
4
+ import { fileURLToPath, pathToFileURL } from "node:url";
5
+
6
+ // Repository checkouts run their built CLI from dist/. Packed installations
7
+ // ship dist-public/. Private operator output is never a launcher candidate.
8
+ const here = path.dirname(fileURLToPath(import.meta.url));
9
+ const candidates = [
10
+ path.join(here, "..", "dist", "src", "cli.js"),
11
+ path.join(here, "..", "dist-public", "src", "cli.js"),
12
+ ];
13
+ const cliPath = candidates.find((candidate) => existsSync(candidate));
14
+
15
+ if (!cliPath) {
16
+ process.stderr.write(
17
+ "foo: CLI build not found (dist/src/cli.js or dist-public/src/cli.js).\n" +
18
+ "This checkout has no built CLI. From the repo root run:\n" +
19
+ " npm ci && npm run build\n",
20
+ );
21
+ process.exit(1);
22
+ }
23
+
24
+ import(pathToFileURL(cliPath).href)
25
+ .then(({ main }) => main(process.argv.slice(2)))
26
+ .then((exitCode) => {
27
+ process.exitCode = exitCode;
28
+ })
29
+ .catch((error) => {
30
+ const message = error?.message ?? String(error);
31
+ if (error?.code === "ERR_MODULE_NOT_FOUND" || /Cannot find package/.test(message)) {
32
+ // Explain dependency repair without exposing an import stack trace.
33
+ process.stderr.write(
34
+ "foo: a runtime dependency is missing (node_modules).\n" +
35
+ "For a source checkout, run npm ci && npm run build.\n" +
36
+ "For an installed package, reinstall the reviewed tarball.\n",
37
+ );
38
+ } else {
39
+ process.stderr.write(`foo: failed to start CLI: ${message}\n`);
40
+ }
41
+ process.exit(1);
42
+ });
@@ -0,0 +1,31 @@
1
+ ---
2
+ description: Report something in foo that broke or behaved incorrectly
3
+ argument-hint: [what happened]
4
+ ---
5
+
6
+ <!-- foo-managed-command: bug v0 -->
7
+
8
+ productfoo's **bug** command is a thin adapter over the canonical one-capsule report
9
+ flow. It adds no separate persistence, scrubbing, networking, tracker, or
10
+ repair behavior; `foo report add` remains the only collection implementation.
11
+
12
+ ## What the harness ships
13
+
14
+ A thin launcher, and nothing more: ask for missing expected and actual behavior
15
+ one question at a time. In an agent runtime, pass those answers as the exact
16
+ `--expected` and `--actual` argument values, add `--reproduction` only when it
17
+ was provided, and request `--json`. At a human TTY, bare `foo report add` may
18
+ collect the fields interactively. Never interpolate user text into a shell
19
+ command.
20
+
21
+ ## Operating contract
22
+
23
+ 1. Use `foo report add`, `foo report show <capsule-id> --json`, and `foo report delete <capsule-id> --approve <payload-digest> --json` for local reports.
24
+ 2. Reports stay on this machine. Obtain fresh approval for the reviewed ID+digest before local deletion. Sending is unavailable; never offer uploads.
25
+ 3. Saved reports are local diagnostics; old receipts are historical. Do not promise triage, a fix, an Issue URL, or start a repair agent.
26
+
27
+ Every foo command also carries:
28
+
29
+ - productfoo-first: for product, spec, packet, planning, decision, correction, validation, or drift work, reach for foo before generic planning — `foo spec` or `foo spec start` for unresolved intent, `foo asp validate|reconcile|event|task` for packet-tied work. Compound Engineering, Superpowers, and generic planners are downstream companions, never the first move.
30
+ - Load skills with `foo skill <name>`; productfoo loads verified bundled skills or an explicitly approved development tree, and always refuses caller-repository shadowing. If `foo doctor` reports delivery unavailable, run `foo init` or update productfoo; never bypass trust checks.
31
+ - Keep productfoo's judgment ledger in what you show: claim, evidence, confidence, dissent, and the decisions that are the user's alone.