code-ai-installer 4.0.0 → 4.0.1-a

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 (471) hide show
  1. package/README.md +83 -67
  2. package/dist/index.js +2 -0
  3. package/dist/mcp/audit_ledger.d.ts +12 -0
  4. package/dist/mcp/audit_ledger.js +82 -0
  5. package/dist/mcp/cli.js +7 -1
  6. package/dist/mcp/config.d.ts +23 -0
  7. package/dist/mcp/config.js +36 -0
  8. package/dist/mcp/index.d.ts +1 -2
  9. package/dist/mcp/index.js +1 -2
  10. package/dist/mcp/paths.d.ts +20 -2
  11. package/dist/mcp/paths.js +29 -5
  12. package/dist/mcp/proposal_dedup.d.ts +32 -0
  13. package/dist/mcp/proposal_dedup.js +102 -0
  14. package/dist/mcp/proposal_store.d.ts +18 -0
  15. package/dist/mcp/proposal_store.js +74 -0
  16. package/dist/mcp/scorecard.d.ts +140 -0
  17. package/dist/mcp/scorecard.js +103 -0
  18. package/dist/mcp/skill_invocations.d.ts +15 -0
  19. package/dist/mcp/skill_invocations.js +28 -0
  20. package/dist/mcp/task_state.d.ts +77 -2
  21. package/dist/mcp/tools/_subprocess.d.ts +16 -0
  22. package/dist/mcp/tools/_subprocess.js +56 -0
  23. package/dist/mcp/tools/advance_gate.js +2 -2
  24. package/dist/mcp/tools/aggregate_run_metrics.d.ts +19 -0
  25. package/dist/mcp/tools/aggregate_run_metrics.js +139 -0
  26. package/dist/mcp/tools/apply_diff.d.ts +2 -0
  27. package/dist/mcp/tools/apply_diff.js +29 -0
  28. package/dist/mcp/tools/audit_bilocale_parity.d.ts +2 -0
  29. package/dist/mcp/tools/audit_bilocale_parity.js +146 -0
  30. package/dist/mcp/tools/audit_budget_compliance.d.ts +35 -0
  31. package/dist/mcp/tools/audit_budget_compliance.js +172 -0
  32. package/dist/mcp/tools/build.d.ts +2 -0
  33. package/dist/mcp/tools/build.js +47 -0
  34. package/dist/mcp/tools/check_lint.d.ts +2 -0
  35. package/dist/mcp/tools/check_lint.js +23 -0
  36. package/dist/mcp/tools/classify_gate.js +2 -2
  37. package/dist/mcp/tools/current_gate.js +2 -2
  38. package/dist/mcp/tools/dependency_supply_chain.d.ts +2 -0
  39. package/dist/mcp/tools/dependency_supply_chain.js +59 -0
  40. package/dist/mcp/tools/docker_compose.d.ts +2 -0
  41. package/dist/mcp/tools/docker_compose.js +24 -0
  42. package/dist/mcp/tools/e2e_playwright.d.ts +2 -0
  43. package/dist/mcp/tools/e2e_playwright.js +88 -0
  44. package/dist/mcp/tools/get_skill.js +17 -0
  45. package/dist/mcp/tools/git_commit.d.ts +2 -0
  46. package/dist/mcp/tools/git_commit.js +30 -0
  47. package/dist/mcp/tools/list_proposals.d.ts +6 -0
  48. package/dist/mcp/tools/list_proposals.js +16 -0
  49. package/dist/mcp/tools/list_skills.js +9 -1
  50. package/dist/mcp/tools/load_role.d.ts +3 -4
  51. package/dist/mcp/tools/load_role.js +11 -13
  52. package/dist/mcp/tools/propose_change.d.ts +8 -0
  53. package/dist/mcp/tools/propose_change.js +36 -0
  54. package/dist/mcp/tools/record_decision.js +25 -25
  55. package/dist/mcp/tools/review_proposal.d.ts +17 -0
  56. package/dist/mcp/tools/review_proposal.js +99 -0
  57. package/dist/mcp/tools/run_drift_audit.d.ts +11 -0
  58. package/dist/mcp/tools/run_drift_audit.js +79 -0
  59. package/dist/mcp/tools/run_tests.d.ts +2 -0
  60. package/dist/mcp/tools/run_tests.js +92 -0
  61. package/dist/mcp/tools/sign_off.js +14 -2
  62. package/dist/mcp/tools/stubs.js +30 -9
  63. package/dist/mcp/tools/verify_claim.js +33 -6
  64. package/dist/mcp_setup.d.ts +8 -0
  65. package/dist/mcp_setup.js +4 -1
  66. package/dist/shared/frontmatter.d.ts +44 -2
  67. package/dist/shared/frontmatter.js +54 -6
  68. package/dist/shared/index.d.ts +0 -5
  69. package/dist/shared/index.js +0 -5
  70. package/dist/shared/persona.d.ts +2 -2
  71. package/dist/shared/persona.js +1 -1
  72. package/dist/shared/pipeline.d.ts +46 -1
  73. package/dist/shared/tools.d.ts +1382 -16
  74. package/dist/shared/tools.js +229 -0
  75. package/dist/shared/vocabulary.d.ts +99 -4
  76. package/dist/shared/vocabulary.js +94 -5
  77. package/domains/analytics/.agents/skills/ansoff-matrix/SKILL.md +316 -300
  78. package/domains/analytics/.agents/skills/bcg-matrix/SKILL.md +345 -329
  79. package/domains/analytics/.agents/skills/blue-ocean-strategy/SKILL.md +432 -416
  80. package/domains/analytics/.agents/skills/board/SKILL.md +22 -0
  81. package/domains/analytics/.agents/skills/cohort-analysis/SKILL.md +338 -322
  82. package/domains/analytics/.agents/skills/competitive-analysis/SKILL.md +413 -395
  83. package/domains/analytics/.agents/skills/customer-journey-mapping/SKILL.md +347 -331
  84. package/domains/analytics/.agents/skills/gates/SKILL.md +388 -366
  85. package/domains/analytics/.agents/skills/handoff/SKILL.md +402 -380
  86. package/domains/analytics/.agents/skills/html-pdf-report/SKILL.md +21 -289
  87. package/domains/analytics/.agents/skills/html-pdf-report-reference/SKILL.md +325 -0
  88. package/domains/analytics/.agents/skills/html-pdf-report-reference/agents/claude.json +17 -0
  89. package/domains/analytics/.agents/skills/html-pdf-report-reference/agents/copilot.json +17 -0
  90. package/domains/analytics/.agents/skills/html-pdf-report-reference/agents/gemini.json +17 -0
  91. package/domains/analytics/.agents/skills/html-pdf-report-reference/agents/kimi.yaml +15 -0
  92. package/domains/analytics/.agents/skills/html-pdf-report-reference/agents/openai.yaml +10 -0
  93. package/domains/analytics/.agents/skills/html-pdf-report-reference/agents/qwen.json +17 -0
  94. package/domains/analytics/.agents/skills/html-pdf-report-reference/agents/skill.yaml +23 -0
  95. package/domains/analytics/.agents/skills/icp-buyer-persona/SKILL.md +407 -390
  96. package/domains/analytics/.agents/skills/jtbd-analysis/SKILL.md +357 -341
  97. package/domains/analytics/.agents/skills/karpathy-guidelines/SKILL.md +32 -0
  98. package/domains/analytics/.agents/skills/pest-analysis/SKILL.md +324 -305
  99. package/domains/analytics/.agents/skills/porters-five-forces/SKILL.md +377 -361
  100. package/domains/analytics/.agents/skills/report-design/SKILL.md +416 -398
  101. package/domains/analytics/.agents/skills/rfm-analysis/SKILL.md +330 -314
  102. package/domains/analytics/.agents/skills/session-prompt-generator/SKILL.md +400 -378
  103. package/domains/analytics/.agents/skills/swot-analysis/SKILL.md +340 -324
  104. package/domains/analytics/.agents/skills/tam-sam-som/SKILL.md +329 -312
  105. package/domains/analytics/.agents/skills/trend-analysis/SKILL.md +347 -331
  106. package/domains/analytics/.agents/skills/unit-economics/SKILL.md +430 -413
  107. package/domains/analytics/.agents/skills/value-chain-analysis/SKILL.md +346 -330
  108. package/domains/analytics/.agents/skills/web-research/SKILL.md +323 -308
  109. package/domains/analytics/AGENTS.md +1 -0
  110. package/domains/analytics/agents/auditor.md +76 -0
  111. package/domains/analytics/agents/conductor.md +11 -0
  112. package/domains/analytics/agents/data_analyst.md +11 -0
  113. package/domains/analytics/agents/designer.md +11 -0
  114. package/domains/analytics/agents/interviewer.md +11 -0
  115. package/domains/analytics/agents/layouter.md +11 -0
  116. package/domains/analytics/agents/mediator.md +11 -0
  117. package/domains/analytics/agents/researcher.md +11 -0
  118. package/domains/analytics/agents/strategist.md +11 -0
  119. package/domains/analytics/locales/en/.agents/skills/ansoff-matrix/SKILL.md +316 -300
  120. package/domains/analytics/locales/en/.agents/skills/bcg-matrix/SKILL.md +345 -329
  121. package/domains/analytics/locales/en/.agents/skills/blue-ocean-strategy/SKILL.md +432 -416
  122. package/domains/analytics/locales/en/.agents/skills/board/SKILL.md +22 -0
  123. package/domains/analytics/locales/en/.agents/skills/cohort-analysis/SKILL.md +338 -322
  124. package/domains/analytics/locales/en/.agents/skills/competitive-analysis/SKILL.md +413 -395
  125. package/domains/analytics/locales/en/.agents/skills/customer-journey-mapping/SKILL.md +347 -331
  126. package/domains/analytics/locales/en/.agents/skills/gates/SKILL.md +388 -366
  127. package/domains/analytics/locales/en/.agents/skills/handoff/SKILL.md +402 -380
  128. package/domains/analytics/locales/en/.agents/skills/html-pdf-report/SKILL.md +21 -289
  129. package/domains/analytics/locales/en/.agents/skills/html-pdf-report-reference/SKILL.md +325 -0
  130. package/domains/analytics/locales/en/.agents/skills/html-pdf-report-reference/agents/claude.json +17 -0
  131. package/domains/analytics/locales/en/.agents/skills/html-pdf-report-reference/agents/copilot.json +17 -0
  132. package/domains/analytics/locales/en/.agents/skills/html-pdf-report-reference/agents/gemini.json +17 -0
  133. package/domains/analytics/locales/en/.agents/skills/html-pdf-report-reference/agents/kimi.yaml +15 -0
  134. package/domains/analytics/locales/en/.agents/skills/html-pdf-report-reference/agents/openai.yaml +10 -0
  135. package/domains/analytics/locales/en/.agents/skills/html-pdf-report-reference/agents/qwen.json +17 -0
  136. package/domains/analytics/locales/en/.agents/skills/html-pdf-report-reference/agents/skill.yaml +29 -0
  137. package/domains/analytics/locales/en/.agents/skills/icp-buyer-persona/SKILL.md +407 -390
  138. package/domains/analytics/locales/en/.agents/skills/jtbd-analysis/SKILL.md +357 -341
  139. package/domains/analytics/locales/en/.agents/skills/karpathy-guidelines/SKILL.md +32 -0
  140. package/domains/analytics/locales/en/.agents/skills/pest-analysis/SKILL.md +324 -305
  141. package/domains/analytics/locales/en/.agents/skills/porters-five-forces/SKILL.md +377 -361
  142. package/domains/analytics/locales/en/.agents/skills/report-design/SKILL.md +416 -398
  143. package/domains/analytics/locales/en/.agents/skills/rfm-analysis/SKILL.md +330 -314
  144. package/domains/analytics/locales/en/.agents/skills/session-prompt-generator/SKILL.md +400 -378
  145. package/domains/analytics/locales/en/.agents/skills/swot-analysis/SKILL.md +340 -324
  146. package/domains/analytics/locales/en/.agents/skills/tam-sam-som/SKILL.md +329 -312
  147. package/domains/analytics/locales/en/.agents/skills/trend-analysis/SKILL.md +347 -331
  148. package/domains/analytics/locales/en/.agents/skills/unit-economics/SKILL.md +430 -413
  149. package/domains/analytics/locales/en/.agents/skills/value-chain-analysis/SKILL.md +366 -350
  150. package/domains/analytics/locales/en/.agents/skills/web-research/SKILL.md +324 -309
  151. package/domains/analytics/locales/en/AGENTS.md +1 -0
  152. package/domains/analytics/locales/en/agents/auditor.md +76 -0
  153. package/domains/analytics/locales/en/agents/conductor.md +27 -0
  154. package/domains/analytics/locales/en/agents/data_analyst.md +29 -0
  155. package/domains/analytics/locales/en/agents/designer.md +27 -0
  156. package/domains/analytics/locales/en/agents/interviewer.md +11 -0
  157. package/domains/analytics/locales/en/agents/layouter.md +11 -0
  158. package/domains/analytics/locales/en/agents/mediator.md +11 -0
  159. package/domains/analytics/locales/en/agents/researcher.md +11 -0
  160. package/domains/analytics/locales/en/agents/strategist.md +11 -0
  161. package/domains/analytics/persona/persona-base.md +94 -0
  162. package/domains/analytics/pipeline.yaml +102 -0
  163. package/domains/content/.agents/skills/audience-analysis/SKILL.md +15 -0
  164. package/domains/content/.agents/skills/board/SKILL.md +20 -0
  165. package/domains/content/.agents/skills/brand-compliance/SKILL.md +15 -0
  166. package/domains/content/.agents/skills/brand-guidelines/SKILL.md +17 -0
  167. package/domains/content/.agents/skills/competitor-content-analysis/SKILL.md +15 -0
  168. package/domains/content/.agents/skills/content-brief/SKILL.md +15 -0
  169. package/domains/content/.agents/skills/content-calendar/SKILL.md +15 -0
  170. package/domains/content/.agents/skills/content-release-gate/SKILL.md +15 -0
  171. package/domains/content/.agents/skills/content-review-checklist/SKILL.md +15 -0
  172. package/domains/content/.agents/skills/cta-optimization/SKILL.md +15 -0
  173. package/domains/content/.agents/skills/data-storytelling/SKILL.md +15 -0
  174. package/domains/content/.agents/skills/email-copywriting/SKILL.md +15 -0
  175. package/domains/content/.agents/skills/email-engagement-tiers/SKILL.md +15 -0
  176. package/domains/content/.agents/skills/fact-checking/SKILL.md +15 -0
  177. package/domains/content/.agents/skills/gates/SKILL.md +20 -0
  178. package/domains/content/.agents/skills/google-stitch-content/SKILL.md +15 -0
  179. package/domains/content/.agents/skills/handoff/SKILL.md +24 -0
  180. package/domains/content/.agents/skills/headline-formulas/SKILL.md +15 -0
  181. package/domains/content/.agents/skills/image-prompt-engineering/SKILL.md +15 -0
  182. package/domains/content/.agents/skills/karpathy-guidelines/SKILL.md +28 -0
  183. package/domains/content/.agents/skills/mailerlite-email-ops/SKILL.md +15 -0
  184. package/domains/content/.agents/skills/marketing-psychology/SKILL.md +15 -0
  185. package/domains/content/.agents/skills/moodboard/SKILL.md +15 -0
  186. package/domains/content/.agents/skills/platform-compliance/SKILL.md +15 -0
  187. package/domains/content/.agents/skills/platform-strategy/SKILL.md +15 -0
  188. package/domains/content/.agents/skills/platform-visual-specs/SKILL.md +15 -0
  189. package/domains/content/.agents/skills/readability-scoring/SKILL.md +15 -0
  190. package/domains/content/.agents/skills/seo-copywriting/SKILL.md +15 -0
  191. package/domains/content/.agents/skills/social-media-formats/SKILL.md +15 -0
  192. package/domains/content/.agents/skills/source-verification/SKILL.md +15 -0
  193. package/domains/content/.agents/skills/storytelling-framework/SKILL.md +15 -0
  194. package/domains/content/.agents/skills/tone-of-voice/SKILL.md +15 -0
  195. package/domains/content/.agents/skills/topic-research/SKILL.md +15 -0
  196. package/domains/content/.agents/skills/trend-research/SKILL.md +15 -0
  197. package/domains/content/.agents/skills/visual-brief/SKILL.md +15 -0
  198. package/domains/content/AGENTS.md +4 -0
  199. package/domains/content/agents/auditor.md +76 -0
  200. package/domains/content/agents/conductor.md +11 -0
  201. package/domains/content/agents/copywriter.md +11 -0
  202. package/domains/content/agents/researcher.md +11 -0
  203. package/domains/content/agents/reviewer.md +11 -0
  204. package/domains/content/agents/strategist.md +11 -0
  205. package/domains/content/agents/visual_concept.md +11 -0
  206. package/domains/content/locales/en/.agents/skills/audience-analysis/SKILL.md +15 -0
  207. package/domains/content/locales/en/.agents/skills/board/SKILL.md +20 -0
  208. package/domains/content/locales/en/.agents/skills/brand-compliance/SKILL.md +15 -0
  209. package/domains/content/locales/en/.agents/skills/brand-guidelines/SKILL.md +17 -0
  210. package/domains/content/locales/en/.agents/skills/competitor-content-analysis/SKILL.md +15 -0
  211. package/domains/content/locales/en/.agents/skills/content-brief/SKILL.md +15 -0
  212. package/domains/content/locales/en/.agents/skills/content-calendar/SKILL.md +15 -0
  213. package/domains/content/locales/en/.agents/skills/content-release-gate/SKILL.md +15 -0
  214. package/domains/content/locales/en/.agents/skills/content-review-checklist/SKILL.md +15 -0
  215. package/domains/content/locales/en/.agents/skills/cta-optimization/SKILL.md +15 -0
  216. package/domains/content/locales/en/.agents/skills/data-storytelling/SKILL.md +15 -0
  217. package/domains/content/locales/en/.agents/skills/email-copywriting/SKILL.md +15 -0
  218. package/domains/content/locales/en/.agents/skills/email-engagement-tiers/SKILL.md +15 -0
  219. package/domains/content/locales/en/.agents/skills/fact-checking/SKILL.md +15 -0
  220. package/domains/content/locales/en/.agents/skills/gates/SKILL.md +20 -0
  221. package/domains/content/locales/en/.agents/skills/google-stitch-content/SKILL.md +15 -0
  222. package/domains/content/locales/en/.agents/skills/handoff/SKILL.md +24 -0
  223. package/domains/content/locales/en/.agents/skills/headline-formulas/SKILL.md +15 -0
  224. package/domains/content/locales/en/.agents/skills/image-prompt-engineering/SKILL.md +15 -0
  225. package/domains/content/locales/en/.agents/skills/karpathy-guidelines/SKILL.md +30 -1
  226. package/domains/content/locales/en/.agents/skills/mailerlite-email-ops/SKILL.md +15 -0
  227. package/domains/content/locales/en/.agents/skills/marketing-psychology/SKILL.md +15 -0
  228. package/domains/content/locales/en/.agents/skills/moodboard/SKILL.md +15 -0
  229. package/domains/content/locales/en/.agents/skills/platform-compliance/SKILL.md +15 -0
  230. package/domains/content/locales/en/.agents/skills/platform-strategy/SKILL.md +15 -0
  231. package/domains/content/locales/en/.agents/skills/platform-visual-specs/SKILL.md +15 -0
  232. package/domains/content/locales/en/.agents/skills/readability-scoring/SKILL.md +15 -0
  233. package/domains/content/locales/en/.agents/skills/seo-copywriting/SKILL.md +15 -0
  234. package/domains/content/locales/en/.agents/skills/social-media-formats/SKILL.md +15 -0
  235. package/domains/content/locales/en/.agents/skills/source-verification/SKILL.md +15 -0
  236. package/domains/content/locales/en/.agents/skills/storytelling-framework/SKILL.md +15 -0
  237. package/domains/content/locales/en/.agents/skills/tone-of-voice/SKILL.md +15 -0
  238. package/domains/content/locales/en/.agents/skills/topic-research/SKILL.md +15 -0
  239. package/domains/content/locales/en/.agents/skills/trend-research/SKILL.md +15 -0
  240. package/domains/content/locales/en/.agents/skills/visual-brief/SKILL.md +15 -0
  241. package/domains/content/locales/en/AGENTS.md +4 -0
  242. package/domains/content/locales/en/agents/auditor.md +76 -0
  243. package/domains/content/locales/en/agents/conductor.md +12 -0
  244. package/domains/content/locales/en/agents/copywriter.md +12 -0
  245. package/domains/content/locales/en/agents/researcher.md +12 -0
  246. package/domains/content/locales/en/agents/reviewer.md +12 -0
  247. package/domains/content/locales/en/agents/strategist.md +12 -0
  248. package/domains/content/locales/en/agents/visual_concept.md +12 -0
  249. package/domains/content/persona/persona-base.md +94 -0
  250. package/domains/content/pipeline.yaml +96 -0
  251. package/domains/development/.agents/skills/adr-log/SKILL.md +1 -0
  252. package/domains/development/.agents/skills/design-intake/SKILL.md +0 -4
  253. package/domains/development/.agents/skills/karpathy-guidelines/SKILL.md +2 -1
  254. package/domains/development/.agents/skills/lava-flow-legacy-detection/SKILL.md +15 -1
  255. package/domains/development/.agents/skills/mcp-integration/SKILL.md +211 -0
  256. package/domains/development/.agents/skills/mcp-integration/agents/claude.json +22 -0
  257. package/domains/development/.agents/skills/mcp-integration/agents/copilot.json +22 -0
  258. package/domains/development/.agents/skills/mcp-integration/agents/gemini.json +22 -0
  259. package/domains/development/.agents/skills/mcp-integration/agents/kimi.yaml +18 -0
  260. package/domains/development/.agents/skills/mcp-integration/agents/openai.yaml +8 -0
  261. package/domains/development/.agents/skills/mcp-integration/agents/qwen.json +22 -0
  262. package/domains/development/.agents/skills/mcp-integration/agents/skill.yaml +26 -0
  263. package/domains/development/.agents/skills/qa-ui-a11y-smoke/SKILL.md +1 -1
  264. package/domains/development/.agents/skills/ui-a11y-smoke-review/SKILL.md +1 -1
  265. package/domains/development/AGENTS.md +1 -0
  266. package/domains/development/AGENTS.yaml +1 -0
  267. package/domains/development/agents/architect.md +13 -1
  268. package/domains/development/agents/auditor.md +74 -0
  269. package/domains/development/agents/conductor.md +14 -3
  270. package/domains/development/agents/devops.md +8 -9
  271. package/domains/development/agents/reviewer.md +12 -0
  272. package/domains/development/agents/senior_full_stack.md +12 -0
  273. package/domains/development/agents/tester.md +10 -16
  274. package/domains/development/locales/en/.agents/skills/adr-log/SKILL.md +1 -0
  275. package/domains/development/locales/en/.agents/skills/current-state-analysis/SKILL.md +256 -172
  276. package/domains/development/locales/en/.agents/skills/karpathy-guidelines/SKILL.md +2 -1
  277. package/domains/development/locales/en/.agents/skills/lava-flow-legacy-detection/SKILL.md +15 -1
  278. package/domains/development/locales/en/.agents/skills/mcp-integration/SKILL.md +211 -0
  279. package/domains/development/locales/en/.agents/skills/mcp-integration/agents/claude.json +22 -0
  280. package/domains/development/locales/en/.agents/skills/mcp-integration/agents/copilot.json +22 -0
  281. package/domains/development/locales/en/.agents/skills/mcp-integration/agents/gemini.json +22 -0
  282. package/domains/development/locales/en/.agents/skills/mcp-integration/agents/kimi.yaml +18 -0
  283. package/domains/development/locales/en/.agents/skills/mcp-integration/agents/openai.yaml +8 -0
  284. package/domains/development/locales/en/.agents/skills/mcp-integration/agents/qwen.json +22 -0
  285. package/domains/development/locales/en/.agents/skills/mcp-integration/agents/skill.yaml +26 -0
  286. package/domains/development/locales/en/.agents/skills/qa-ui-a11y-smoke/SKILL.md +1 -1
  287. package/domains/development/locales/en/.agents/skills/ui-a11y-smoke-review/SKILL.md +1 -1
  288. package/domains/development/locales/en/AGENTS.md +5 -0
  289. package/domains/development/locales/en/AGENTS.yaml +1 -0
  290. package/domains/development/locales/en/agents/architect.md +13 -1
  291. package/domains/development/locales/en/agents/auditor.md +74 -0
  292. package/domains/development/locales/en/agents/conductor.md +14 -3
  293. package/domains/development/locales/en/agents/devops.md +8 -9
  294. package/domains/development/locales/en/agents/reviewer.md +12 -0
  295. package/domains/development/locales/en/agents/senior_full_stack.md +12 -0
  296. package/domains/development/locales/en/agents/tester.md +10 -16
  297. package/domains/development/persona/persona-base.md +94 -0
  298. package/domains/product/.agents/skills/aarrr-metrics/SKILL.md +451 -433
  299. package/domains/product/.agents/skills/ab-test-design/SKILL.md +428 -412
  300. package/domains/product/.agents/skills/acceptance-criteria/SKILL.md +422 -406
  301. package/domains/product/.agents/skills/assumption-mapping/SKILL.md +323 -307
  302. package/domains/product/.agents/skills/board/SKILL.md +24 -0
  303. package/domains/product/.agents/skills/design-brief/SKILL.md +433 -418
  304. package/domains/product/.agents/skills/epic-breakdown/SKILL.md +435 -420
  305. package/domains/product/.agents/skills/gates/SKILL.md +470 -446
  306. package/domains/product/.agents/skills/gtm-brief/SKILL.md +18 -321
  307. package/domains/product/.agents/skills/gtm-brief-reference/SKILL.md +348 -0
  308. package/domains/product/.agents/skills/gtm-brief-reference/agents/claude.json +17 -0
  309. package/domains/product/.agents/skills/gtm-brief-reference/agents/copilot.json +17 -0
  310. package/domains/product/.agents/skills/gtm-brief-reference/agents/gemini.json +17 -0
  311. package/domains/product/.agents/skills/gtm-brief-reference/agents/kimi.yaml +15 -0
  312. package/domains/product/.agents/skills/gtm-brief-reference/agents/openai.yaml +10 -0
  313. package/domains/product/.agents/skills/gtm-brief-reference/agents/qwen.json +17 -0
  314. package/domains/product/.agents/skills/gtm-brief-reference/agents/skill.yaml +22 -0
  315. package/domains/product/.agents/skills/handoff/SKILL.md +463 -439
  316. package/domains/product/.agents/skills/html-pdf-report/SKILL.md +21 -663
  317. package/domains/product/.agents/skills/html-pdf-report-reference/SKILL.md +699 -0
  318. package/domains/product/.agents/skills/html-pdf-report-reference/agents/claude.json +17 -0
  319. package/domains/product/.agents/skills/html-pdf-report-reference/agents/copilot.json +17 -0
  320. package/domains/product/.agents/skills/html-pdf-report-reference/agents/gemini.json +17 -0
  321. package/domains/product/.agents/skills/html-pdf-report-reference/agents/kimi.yaml +15 -0
  322. package/domains/product/.agents/skills/html-pdf-report-reference/agents/openai.yaml +10 -0
  323. package/domains/product/.agents/skills/html-pdf-report-reference/agents/qwen.json +17 -0
  324. package/domains/product/.agents/skills/html-pdf-report-reference/agents/skill.yaml +22 -0
  325. package/domains/product/.agents/skills/hypothesis-template/SKILL.md +484 -469
  326. package/domains/product/.agents/skills/jtbd-canvas/SKILL.md +274 -258
  327. package/domains/product/.agents/skills/kano-model/SKILL.md +370 -355
  328. package/domains/product/.agents/skills/karpathy-guidelines/SKILL.md +36 -0
  329. package/domains/product/.agents/skills/launch-checklist/SKILL.md +434 -419
  330. package/domains/product/.agents/skills/moscow-prioritization/SKILL.md +407 -392
  331. package/domains/product/.agents/skills/north-star-metric/SKILL.md +317 -301
  332. package/domains/product/.agents/skills/okr-framework/SKILL.md +299 -284
  333. package/domains/product/.agents/skills/opportunity-solution-tree/SKILL.md +472 -456
  334. package/domains/product/.agents/skills/prd-template/SKILL.md +18 -258
  335. package/domains/product/.agents/skills/prd-template-reference/SKILL.md +285 -0
  336. package/domains/product/.agents/skills/prd-template-reference/agents/claude.json +17 -0
  337. package/domains/product/.agents/skills/prd-template-reference/agents/copilot.json +17 -0
  338. package/domains/product/.agents/skills/prd-template-reference/agents/gemini.json +17 -0
  339. package/domains/product/.agents/skills/prd-template-reference/agents/kimi.yaml +16 -0
  340. package/domains/product/.agents/skills/prd-template-reference/agents/openai.yaml +10 -0
  341. package/domains/product/.agents/skills/prd-template-reference/agents/qwen.json +17 -0
  342. package/domains/product/.agents/skills/prd-template-reference/agents/skill.yaml +23 -0
  343. package/domains/product/.agents/skills/problem-statement/SKILL.md +327 -312
  344. package/domains/product/.agents/skills/product-roadmap/SKILL.md +320 -304
  345. package/domains/product/.agents/skills/product-vision/SKILL.md +409 -394
  346. package/domains/product/.agents/skills/release-notes/SKILL.md +18 -258
  347. package/domains/product/.agents/skills/release-notes-reference/SKILL.md +285 -0
  348. package/domains/product/.agents/skills/release-notes-reference/agents/claude.json +17 -0
  349. package/domains/product/.agents/skills/release-notes-reference/agents/copilot.json +17 -0
  350. package/domains/product/.agents/skills/release-notes-reference/agents/gemini.json +17 -0
  351. package/domains/product/.agents/skills/release-notes-reference/agents/kimi.yaml +15 -0
  352. package/domains/product/.agents/skills/release-notes-reference/agents/openai.yaml +10 -0
  353. package/domains/product/.agents/skills/release-notes-reference/agents/qwen.json +17 -0
  354. package/domains/product/.agents/skills/release-notes-reference/agents/skill.yaml +22 -0
  355. package/domains/product/.agents/skills/report-design/SKILL.md +17 -307
  356. package/domains/product/.agents/skills/report-design-reference/SKILL.md +331 -0
  357. package/domains/product/.agents/skills/report-design-reference/agents/claude.json +17 -0
  358. package/domains/product/.agents/skills/report-design-reference/agents/copilot.json +17 -0
  359. package/domains/product/.agents/skills/report-design-reference/agents/gemini.json +17 -0
  360. package/domains/product/.agents/skills/report-design-reference/agents/kimi.yaml +15 -0
  361. package/domains/product/.agents/skills/report-design-reference/agents/openai.yaml +10 -0
  362. package/domains/product/.agents/skills/report-design-reference/agents/qwen.json +17 -0
  363. package/domains/product/.agents/skills/report-design-reference/agents/skill.yaml +22 -0
  364. package/domains/product/.agents/skills/rice-scoring/SKILL.md +266 -251
  365. package/domains/product/.agents/skills/saas-metrics/SKILL.md +422 -404
  366. package/domains/product/.agents/skills/session-prompt-generator/SKILL.md +474 -450
  367. package/domains/product/.agents/skills/user-flow/SKILL.md +491 -476
  368. package/domains/product/.agents/skills/user-interview-script/SKILL.md +315 -298
  369. package/domains/product/.agents/skills/user-story/SKILL.md +401 -385
  370. package/domains/product/.agents/skills/wsjf-scoring/SKILL.md +333 -315
  371. package/domains/product/AGENTS.md +5 -0
  372. package/domains/product/AGENTS.yaml +1 -0
  373. package/domains/product/agents/auditor.md +76 -0
  374. package/domains/product/agents/conductor.md +11 -0
  375. package/domains/product/agents/data_analyst.md +11 -0
  376. package/domains/product/agents/designer.md +11 -0
  377. package/domains/product/agents/discovery.md +11 -0
  378. package/domains/product/agents/layouter.md +11 -0
  379. package/domains/product/agents/mediator.md +11 -0
  380. package/domains/product/agents/pm.md +11 -0
  381. package/domains/product/agents/product_strategist.md +11 -0
  382. package/domains/product/agents/tech_lead.md +11 -0
  383. package/domains/product/agents/ux_designer.md +11 -0
  384. package/domains/product/locales/en/.agents/skills/aarrr-metrics/SKILL.md +451 -433
  385. package/domains/product/locales/en/.agents/skills/ab-test-design/SKILL.md +428 -412
  386. package/domains/product/locales/en/.agents/skills/acceptance-criteria/SKILL.md +422 -406
  387. package/domains/product/locales/en/.agents/skills/assumption-mapping/SKILL.md +323 -307
  388. package/domains/product/locales/en/.agents/skills/board/SKILL.md +24 -0
  389. package/domains/product/locales/en/.agents/skills/design-brief/SKILL.md +433 -418
  390. package/domains/product/locales/en/.agents/skills/epic-breakdown/SKILL.md +435 -420
  391. package/domains/product/locales/en/.agents/skills/gates/SKILL.md +470 -446
  392. package/domains/product/locales/en/.agents/skills/gtm-brief/SKILL.md +18 -321
  393. package/domains/product/locales/en/.agents/skills/gtm-brief-reference/SKILL.md +348 -0
  394. package/domains/product/locales/en/.agents/skills/gtm-brief-reference/agents/claude.json +17 -0
  395. package/domains/product/locales/en/.agents/skills/gtm-brief-reference/agents/copilot.json +17 -0
  396. package/domains/product/locales/en/.agents/skills/gtm-brief-reference/agents/gemini.json +17 -0
  397. package/domains/product/locales/en/.agents/skills/gtm-brief-reference/agents/kimi.yaml +15 -0
  398. package/domains/product/locales/en/.agents/skills/gtm-brief-reference/agents/openai.yaml +10 -0
  399. package/domains/product/locales/en/.agents/skills/gtm-brief-reference/agents/qwen.json +17 -0
  400. package/domains/product/locales/en/.agents/skills/gtm-brief-reference/agents/skill.yaml +22 -0
  401. package/domains/product/locales/en/.agents/skills/handoff/SKILL.md +463 -439
  402. package/domains/product/locales/en/.agents/skills/html-pdf-report/SKILL.md +21 -663
  403. package/domains/product/locales/en/.agents/skills/html-pdf-report-reference/SKILL.md +699 -0
  404. package/domains/product/locales/en/.agents/skills/html-pdf-report-reference/agents/claude.json +17 -0
  405. package/domains/product/locales/en/.agents/skills/html-pdf-report-reference/agents/copilot.json +17 -0
  406. package/domains/product/locales/en/.agents/skills/html-pdf-report-reference/agents/gemini.json +17 -0
  407. package/domains/product/locales/en/.agents/skills/html-pdf-report-reference/agents/kimi.yaml +15 -0
  408. package/domains/product/locales/en/.agents/skills/html-pdf-report-reference/agents/openai.yaml +10 -0
  409. package/domains/product/locales/en/.agents/skills/html-pdf-report-reference/agents/qwen.json +17 -0
  410. package/domains/product/locales/en/.agents/skills/html-pdf-report-reference/agents/skill.yaml +22 -0
  411. package/domains/product/locales/en/.agents/skills/hypothesis-template/SKILL.md +484 -469
  412. package/domains/product/locales/en/.agents/skills/jtbd-canvas/SKILL.md +273 -257
  413. package/domains/product/locales/en/.agents/skills/kano-model/SKILL.md +370 -355
  414. package/domains/product/locales/en/.agents/skills/karpathy-guidelines/SKILL.md +36 -0
  415. package/domains/product/locales/en/.agents/skills/launch-checklist/SKILL.md +434 -419
  416. package/domains/product/locales/en/.agents/skills/moscow-prioritization/SKILL.md +407 -392
  417. package/domains/product/locales/en/.agents/skills/north-star-metric/SKILL.md +317 -301
  418. package/domains/product/locales/en/.agents/skills/okr-framework/SKILL.md +299 -284
  419. package/domains/product/locales/en/.agents/skills/opportunity-solution-tree/SKILL.md +472 -456
  420. package/domains/product/locales/en/.agents/skills/prd-template/SKILL.md +18 -258
  421. package/domains/product/locales/en/.agents/skills/prd-template-reference/SKILL.md +285 -0
  422. package/domains/product/locales/en/.agents/skills/prd-template-reference/agents/claude.json +16 -0
  423. package/domains/product/locales/en/.agents/skills/prd-template-reference/agents/copilot.json +16 -0
  424. package/domains/product/locales/en/.agents/skills/prd-template-reference/agents/gemini.json +16 -0
  425. package/domains/product/locales/en/.agents/skills/prd-template-reference/agents/kimi.yaml +15 -0
  426. package/domains/product/locales/en/.agents/skills/prd-template-reference/agents/openai.yaml +10 -0
  427. package/domains/product/locales/en/.agents/skills/prd-template-reference/agents/qwen.json +16 -0
  428. package/domains/product/locales/en/.agents/skills/prd-template-reference/agents/skill.yaml +22 -0
  429. package/domains/product/locales/en/.agents/skills/problem-statement/SKILL.md +327 -312
  430. package/domains/product/locales/en/.agents/skills/product-roadmap/SKILL.md +321 -305
  431. package/domains/product/locales/en/.agents/skills/product-vision/SKILL.md +410 -395
  432. package/domains/product/locales/en/.agents/skills/release-notes/SKILL.md +18 -258
  433. package/domains/product/locales/en/.agents/skills/release-notes-reference/SKILL.md +285 -0
  434. package/domains/product/locales/en/.agents/skills/release-notes-reference/agents/claude.json +16 -0
  435. package/domains/product/locales/en/.agents/skills/release-notes-reference/agents/copilot.json +16 -0
  436. package/domains/product/locales/en/.agents/skills/release-notes-reference/agents/gemini.json +16 -0
  437. package/domains/product/locales/en/.agents/skills/release-notes-reference/agents/kimi.yaml +14 -0
  438. package/domains/product/locales/en/.agents/skills/release-notes-reference/agents/openai.yaml +10 -0
  439. package/domains/product/locales/en/.agents/skills/release-notes-reference/agents/qwen.json +16 -0
  440. package/domains/product/locales/en/.agents/skills/release-notes-reference/agents/skill.yaml +21 -0
  441. package/domains/product/locales/en/.agents/skills/report-design/SKILL.md +17 -307
  442. package/domains/product/locales/en/.agents/skills/report-design-reference/SKILL.md +331 -0
  443. package/domains/product/locales/en/.agents/skills/report-design-reference/agents/claude.json +17 -0
  444. package/domains/product/locales/en/.agents/skills/report-design-reference/agents/copilot.json +17 -0
  445. package/domains/product/locales/en/.agents/skills/report-design-reference/agents/gemini.json +17 -0
  446. package/domains/product/locales/en/.agents/skills/report-design-reference/agents/kimi.yaml +15 -0
  447. package/domains/product/locales/en/.agents/skills/report-design-reference/agents/openai.yaml +10 -0
  448. package/domains/product/locales/en/.agents/skills/report-design-reference/agents/qwen.json +17 -0
  449. package/domains/product/locales/en/.agents/skills/report-design-reference/agents/skill.yaml +22 -0
  450. package/domains/product/locales/en/.agents/skills/rice-scoring/SKILL.md +266 -251
  451. package/domains/product/locales/en/.agents/skills/saas-metrics/SKILL.md +422 -404
  452. package/domains/product/locales/en/.agents/skills/session-prompt-generator/SKILL.md +474 -450
  453. package/domains/product/locales/en/.agents/skills/user-flow/SKILL.md +491 -476
  454. package/domains/product/locales/en/.agents/skills/user-interview-script/SKILL.md +314 -297
  455. package/domains/product/locales/en/.agents/skills/user-story/SKILL.md +401 -385
  456. package/domains/product/locales/en/.agents/skills/wsjf-scoring/SKILL.md +333 -315
  457. package/domains/product/locales/en/AGENTS.md +5 -0
  458. package/domains/product/locales/en/agents/auditor.md +76 -0
  459. package/domains/product/locales/en/agents/conductor.md +11 -0
  460. package/domains/product/locales/en/agents/data_analyst.md +11 -0
  461. package/domains/product/locales/en/agents/designer.md +11 -0
  462. package/domains/product/locales/en/agents/discovery.md +11 -0
  463. package/domains/product/locales/en/agents/layouter.md +11 -0
  464. package/domains/product/locales/en/agents/mediator.md +11 -0
  465. package/domains/product/locales/en/agents/pm.md +11 -0
  466. package/domains/product/locales/en/agents/product_strategist.md +11 -0
  467. package/domains/product/locales/en/agents/tech_lead.md +11 -0
  468. package/domains/product/locales/en/agents/ux_designer.md +11 -0
  469. package/domains/product/persona/persona-base.md +94 -0
  470. package/domains/product/pipeline.yaml +115 -0
  471. package/package.json +72 -70
@@ -1,406 +1,422 @@
1
- ---
2
- name: acceptance-criteria
3
- description: Критерии приёмки — Gherkin (Given / When / Then) или scenario-based
4
- ---
5
- # Acceptance Criteria
6
-
7
- > **Категория:** Specification · **Slug:** `acceptance-criteria`
8
-
9
- ## Когда использовать
10
-
11
- - Для каждой user story в PRD.
12
- - Как контракт между PM и Engineering.
13
- - Для QA test cases (AC → тест-сценарии).
14
- - При спорах о «готова ли story?» — AC = оракул.
15
-
16
- ## Вход
17
-
18
- | Поле | Обязательно | Описание |
19
- |------|:-----------:|----------|
20
- | User story | ✅ | Через `$user-story` |
21
- | UX flow / wireframe | ⬚ | Если поток сложный |
22
- | Edge cases | ⬚ | Ошибочные состояния, лимиты |
23
- | Data constraints | ⬚ | Правила валидации |
24
-
25
- ## Источники данных
26
-
27
- 1. User story как отправная точка.
28
- 2. UX wireframes визуальные подсказки для сценариев.
29
- 3. NFR-требования для нефункциональных AC.
30
- 4. Интервью с клиентамиграничные случаи пользователей.
31
-
32
- ### Связь с другими скилами
33
-
34
- | Скил | Что берём | Когда вызывать |
35
- |------|-----------|----------------|
36
- | `user-story` | Story → AC сценарии | Родительский скил |
37
- | `user-flow` | Шаги потока сценарии | Для сложных потоков |
38
- | `prd-template` | Где в PRD | Встроен в stories |
39
- | `hypothesis-template` | Тестируемое поведение | Для экспериментальных stories |
40
-
41
- ## Два формата
42
-
43
- ### A. Gherkin (Given / When / Then)
44
-
45
- ```gherkin
46
- Scenario: [Короткое описательное название]
47
- Given [начальный контекст / предусловие]
48
- When [действие / событие]
49
- Then [ожидаемый результат]
50
- And [дополнительный результат]
51
- ```
52
-
53
- Плюсы: структурированный, совместим с инструментами тестирования (Cucumber), BDD-стиль.
54
- Минусы: многословный, негибкий для сложных данных.
55
-
56
- ### B. Scenario-based чеклист
57
-
58
- ```
59
- ## Scenario: [Название]
60
- - Precondition: [состояние]
61
- - Action: [пользователь делает X]
62
- - Expected: [результат]
63
- - Error case: [что происходит, когда X не удаётся]
64
- ```
65
-
66
- Плюсы: гибкий, читаемый для нетехнических стейкхолдеров.
67
- Минусы: менее строгий, не автоматизируется напрямую.
68
-
69
- **Выбор:** Gherkin для сложного поведения (особенно API / backend), scenario для UI-heavy stories.
70
-
71
- ## Протокол
72
-
73
- ### Шаг 1 — Сначала Happy Path
74
-
75
- Набросать сценарий happy path. Это основной поток, который проходят 80% пользователей.
76
-
77
- ```gherkin
78
- Scenario: Admin creates a new team role
79
- Given an admin is on the Teams settings page
80
- When they click "New role template"
81
- And fill in name "Senior Engineer" and select 12 permissions
82
- And click "Save"
83
- Then the role is saved
84
- And appears в roles list
85
- And is selectable при adding new team members
86
- ```
87
-
88
- ### Шаг 2 — Предусловия
89
-
90
- Каждый сценарий — что должно быть истиной до начала. Избегать неявных допущений.
91
-
92
- Предусловия для фиксации:
93
- - Состояние аутентификации пользователя (авторизован, роль, разрешения)
94
- - Состояние данных (существующие сущности, счётчики)
95
- - Флаги функций
96
- - Время / дата (для чувствительных ко времени функций)
97
-
98
- ### Шаг 3 — Граничные случаи
99
-
100
- Для каждой story подумать о:
101
- - **Пустое состояние:** нет данных, первый запуск пользователя
102
- - **Граничные значения:** 0, 1, максимум, максимум+1
103
- - **Параллелизм:** два пользователя действуют одновременно
104
- - **Разрешения:** пользователь без разрешения пытается выполнить действие
105
- - **Сеть:** офлайн, медленная сеть, таймаут
106
- - **Валидация:** некорректный ввод, XSS, инъекция
107
- - **Идемпотентность:** одно и то же действие дважды
108
-
109
- B2B-специфичные граничные случаи:
110
- - Граничные случаи SSO (пользователь деактивирован в IdP)
111
- - Администратор без разрешения пытается выполнить ограниченное действие
112
- - Сбои интеграций (сторонний сервис недоступен)
113
- - Ограничения скорости / квоты
114
-
115
- ### Шаг 4 — Сценарии ошибок
116
-
117
- Для каждого видимого пользователю режима сбоя:
118
- - Что его вызывает
119
- - Что видит пользователь (сообщение об ошибке, действие восстановления)
120
- - Состояние системы после (залогировано? повторяемо?)
121
-
122
- ```gherkin
123
- Scenario: Save fails due to name conflict
124
- Given a role named "Senior Engineer" exists
125
- When admin tries to create role with same name
126
- Then display error "Role name already exists"
127
- And do not save
128
- And focus name field for correction
129
- ```
130
-
131
- ### Шаг 5Нефункциональные сценарии
132
-
133
- Отдельные AC для NFR, если применимо:
134
-
135
- ```gherkin
136
- Scenario: Role creation performance
137
- Given a team with 500 existing roles
138
- When admin adds a new role
139
- Then response returns < 500ms p95
140
- ```
141
-
142
- ```gherkin
143
- Scenario: Role creation — audit
144
- When any role is created, updated, or deleted
145
- Then an audit log entry is written с user id, timestamp, before/after diff
146
- ```
147
-
148
- ### Шаг 6 — Вариации данных
149
-
150
- Для AC, управляемых данными, использовать таблицы:
151
-
152
- ```gherkin
153
- Scenario Outline: Role validation rejects invalid names
154
- Given admin is creating a role
155
- When they enter name "<name>"
156
- Then they see error "<error>"
157
-
158
- Examples:
159
- | name | error |
160
- | "" | Название обязательно |
161
- | [255 char string] | Название должно быть < 255 символов |
162
- | "admin" | Название конфликтует с системной ролью |
163
- | "<script>alert(1)</script>" | Название содержит недопустимые символы |
164
- ```
165
-
166
- ### Шаг 7 Чеклист «Готово»
167
-
168
- - [ ] Сценарий happy path
169
- - [ ] Граничные случаи покрыты (пустой / граничные значения / параллелизм / разрешения)
170
- - [ ] Сценарии ошибок с сообщениями
171
- - [ ] Предусловия явны
172
- - [ ] Вариации данных для правил валидации
173
- - [ ] NFR (если применимо) отдельно
174
- - [ ] Нет неоднозначных формулировок («быстро», «удобно»)
175
-
176
- ## Валидация (Quality Gate)
177
-
178
- - [ ] Каждая story имеет ≥ 1 AC
179
- - [ ] Happy path покрыт
180
- - [ ] ≥ 2 граничных случая (кроме тривиальных stories)
181
- - [ ] ≥ 1 сценарий ошибки
182
- - [ ] Предусловия явны
183
- - [ ] Нет неоднозначных глаголов («должно работать правильно»)
184
- - [ ] NFR AC для performance/security/compliance-критичных stories
185
- - [ ] Формат (Gherkin или scenario) единообразен на весь PRD
186
-
187
- ## Handoff
188
-
189
- Результат является входом для:
190
- - **Engineering** реализация + написание тестов
191
- - **QA** → автоматизированные тест-кейсы
192
- - **Designer** мокапы ошибочных состояний
193
-
194
- Формат: AC встроены в карточку user story. Через `$handoff`.
195
-
196
- ## Anti-patterns
197
-
198
- | Ошибка | Почему плохо | Как правильно |
199
- |--------|-------------|---------------|
200
- | Неоднозначно («быстро», «легко») | Не тестируемо | Конкретные пороги |
201
- | Только happy path | Баги в граничных случаях | ≥ 2 граничных случая |
202
- | Специфично для реализации | «Нажать синюю кнопку» | «Когда пользователь сохраняет» (UI-независимо) |
203
- | Смешивать AC с заметками реализации | Путает контракт | Заметки отдельно |
204
- | Слишком много сценариев (20+) | Бремя обслуживания | Разбить story |
205
- | Нет NFR AC | Критические баги уходят в прод | NFR явно |
206
- | Нет определённых сообщений об ошибках | Непоследовательный UX | Конкретный текст для каждой ошибки |
207
-
208
- ## Шаблон
209
-
210
- ```markdown
211
- ## Story: [Название]
212
-
213
- ### Acceptance Criteria
214
-
215
- **Happy path:**
216
- ```gherkin
217
- Scenario: [название]
218
- Given [предусловие]
219
- When [действие]
220
- Then [результат]
221
- And [результат]
222
- ```
223
-
224
- **Граничные случаи:**
225
- ```gherkin
226
- Scenario: [название граничного случая]
227
- Given [предусловие]
228
- When [действие]
229
- Then [результат]
230
- ```
231
-
232
- **Сценарии ошибок:**
233
- ```gherkin
234
- Scenario: [название ошибки]
235
- Given [предусловие]
236
- When [неуспешное действие]
237
- Then [сообщение об ошибке]
238
- And [восстановление]
239
- ```
240
-
241
- **NFR (если применимо):**
242
- ```gherkin
243
- Scenario: Performance
244
- When [действие]
245
- Then response < 200ms p95
246
- ```
247
- ```
248
-
249
- ## Worked Example — TeamFlow AC: Story S2 "Receive AI Summary Within 60 Seconds"
250
-
251
- **Контекст:** Полный Gherkin AC для флагманской story (S2 из скила user-story). Демонстрирует happy path + граничные случаи + ошибки + NFR + вариации данных.
252
-
253
- ```gherkin
254
- # Acceptance Criteria: S2 Receive AI Summary Within 60 Seconds
255
-
256
- # ============ HAPPY PATH ============
257
-
258
- Scenario: Manager ends 1:1, AI generates summary within 60 seconds
259
- Given Maria is on Team Tier account (AI Summarization enabled)
260
- And Maria has AI-enabled 1:1 meeting «Sarah weekly sync» starting 10:00 AM
261
- And meeting includes 23 minutes of recorded audio
262
- When Maria clicks «End meeting» at 10:23 AM
263
- Then within 60 seconds summary appears in meeting notes view
264
- And summary includes sections: «Topics discussed», «Decisions», «Action items»
265
- And action items list contains 1 extracted item (if discussion mentioned commitments)
266
- And summary status is «Draft (AI)» (not «Approved»)
267
- And event «ai_summary_generated» logged с meeting_id, duration, summary_id
268
-
269
-
270
- # ============ STREAMING / LOADING ============
271
-
272
- Scenario: Summary streams progressively if generation exceeds 10 seconds
273
- Given Maria ended meeting successfully
274
- When summary generation takes 35 seconds
275
- Then loading indicator shows by 5th second
276
- And first «Topics discussed» section appears as soon as generated (streaming)
277
- And remaining sections populate progressively
278
- And manager can read early sections without waiting for complete summary
279
-
280
-
281
- # ============ BOUNDARY: MEETING DURATION ============
282
-
283
- Scenario Outline: Summary behavior по meeting duration
284
- Given Maria ended 1:1 meeting of <duration> minutes
285
- When summary generation completes
286
- Then summary section behavior is <behavior>
287
-
288
- Examples:
289
- | duration | behavior |
290
- | 0-4 | Резюме не создаётся — отображается сообщение «Встреча слишком короткая» |
291
- | 5-14 | Краткое резюме (2-3 темы, пункты действий если явные) |
292
- | 15-45 | Полное стандартное резюме (все секции заполнены) |
293
- | 46-120 | Расширенное резюме с добавленной секцией «Ключевые темы» |
294
- | 121+ | Резюме создаётся с пометкой «Очень длинная встреча просмотрите внимательно» |
295
-
296
-
297
- # ============ ERROR SCENARIOS ============
298
-
299
- Scenario: LLM API timeout user sees fallback
300
- Given Maria ended AI-enabled meeting
301
- When LLM API не returns summary within 120 seconds (hard timeout)
302
- Then manager sees message «Summary taking longer than expected — we'll email you when ready»
303
- And event «ai_summary_timeout_fallback» logged
304
- And background job continues attempting generation
305
- And on success, manager получает in-product notification + email с summary
306
-
307
- Scenario: LLM API hard error graceful degradation
308
- Given Maria ended AI-enabled meeting
309
- When primary LLM provider returns 500 error after 3 retries
310
- Then system automatically switches to secondary provider (Anthropic)
311
- And event «ai_provider_failover» logged для ops review
312
- And summary generates using secondary с quality parity
313
-
314
- Scenario: Complete LLM failure (both providers) — manual fallback
315
- Given Maria ended AI-enabled meeting
316
- When both LLM providers unavailable для > 2 minutes
317
- Then manager sees «AI summary unavailable this meeting manual notes preserved»
318
- And existing meeting notes (if any) не affected
319
- And event «ai_summary_unavailable» logged
320
- And within 24 hours manager получает email: «AI recovered — want to retry?»
321
-
322
-
323
- # ============ PRIVACY & PERMISSION ============
324
-
325
- Scenario: AI disabled org-wide AI summary not generated
326
- Given Maria's account admin set «AI org policy: disabled»
327
- When Maria tries to enable AI for meeting
328
- Then toggle is greyed out с tooltip «AI disabled by admin — contact admin»
329
- And no AI summary generated after meeting end
330
-
331
- Scenario: Meeting participant declined recording consent
332
- Given Maria starts AI-enabled meeting с Sarah
333
- When Sarah clicks «Decline AI recording» consent prompt
334
- Then AI disables for this meeting
335
- And Maria sees «Sarah declined AI — switching to manual notes»
336
- And event «ai_declined_by_participant» logged
337
- And Maria can take manual notes normally
338
-
339
-
340
- # ============ NON-FUNCTIONAL REQUIREMENTS ============
341
-
342
- Scenario: Summary generation p95 latency under 60 seconds
343
- Given 100 completed AI-enabled meetings in past 7 days
344
- When latency measured от «End meeting» event to «summary available» event
345
- Then p95 latency 60 seconds
346
- And p99 latency ≤ 90 seconds
347
- And p50 latency 30 seconds
348
-
349
- Scenario: Summary data encryption at rest
350
- Given AI summary generated and stored
351
- When database queried directly (не via API)
352
- Then summary content encrypted с customer-specific key (AES-256)
353
- And cannot be decrypted без customer-managed key (BYOK для Enterprise)
354
-
355
- Scenario: Audit log completeness
356
- Given any AI summary operation occurs (generate / edit / approve / delete)
357
- When audit log queried для that meeting_id
358
- Then every operation logged с timestamp, actor_id, action_type, meeting_id, summary_id
359
- And log retention 365 days
360
- And log entries immutable (tamper-evident)
361
-
362
-
363
- # ============ DATA VARIATION: Action Items Extraction ============
364
-
365
- Scenario Outline: Action items extraction confidence handling
366
- Given 1:1 transcript contains statement: «<statement>»
367
- When AI extracts action items
368
- Then extraction should be <extraction>
369
- And confidence should be <confidence>
370
-
371
- Examples:
372
- | statement | extraction | confidence |
373
- | «Sarah, please review PR by Friday» | «Sarah: review PR, due Friday» | Высокая (>90%) |
374
- | «Let's figure out the deployment plan» | Не извлечено (нет владельца/чёткого действия) | Низкая (<50%) |
375
- | «I'll send you docs soon» | «Maria: send docs, due TBD» | Средняя (70-90%)|
376
- | «We should probably talk to Dave about it» | Не извлечено (предположительно) | Низкая (<50%) |
377
- ```
378
-
379
- ### Анализ плотности AC
380
-
381
- - **12 сценариев итого** для одной story S2
382
- - **Разбивка:**
383
- - Happy path: 1
384
- - Streaming / загрузка: 1
385
- - Граничные случаи (продолжительность): 1 (с 5 вариантами)
386
- - Сценарии ошибок: 3
387
- - Конфиденциальность / разрешения: 2
388
- - NFR: 3 (задержка, шифрование, аудит)
389
- - Вариации данных: 1 4 вариантами)
390
-
391
- **Плотность соответствует L-sized (8 очков) story с критичными для безопасности + NFR-насыщенными требованиями.** Сравнительно с S1 (переключатель), у которой 4 более простых сценария.
392
-
393
- ### Распространённые ошибки AC, которых мы избежали
394
-
395
- 1. **Расплывчатые пороги:** Не «быстро» — «60s p95, 90s p99»
396
- 2. **Единственный happy path:** 11 нехappy-path сценариев, потому что продакшн — это граничные случаи
397
- 3. **Пропущена конфиденциальность:** 2 явных сценария конфиденциальности (отключение администратором, согласие участника) — блокеры для B2B
398
- 4. **Пропущены NFR:** Задержка + шифрование + аудит — всё является требованиями, но легко пропустить
399
- 5. **Специфика реализации:** «Пользователь нажимает синюю кнопку» — избегали — «Пользователь завершает встречу» (UI-независимо)
400
-
401
- > **Урок AC:** L-story с AI + конфиденциальностью + NFR требует 10+ сценариев. Без комплексных AC:
402
- > 1. Eng выкатывает happy path, сталкивается с граничными случаями в проде
403
- > 2. QA не знает что тестировать → баги в граничных случаях
404
- > 3. Требования конфиденциальности (отключение администратором, согласие участника) теряются
405
- >
406
- > Таблицы данных (Scenario Outline) сжимают вариации данных — 4 примера в 1 сценарии vs 4 сценария × дублированный скаффолд. Держать AC поддерживаемыми.
1
+ ---
2
+ name: acceptance-criteria
3
+ description: Критерии приёмки — Gherkin (Given / When / Then) или scenario-based
4
+ type: triggered
5
+ domain: product
6
+ owners:
7
+ - pm
8
+ gates:
9
+ - PM
10
+ tech: []
11
+ topic: []
12
+ triggers:
13
+ - "acceptance-criteria"
14
+ - "acceptance criteria"
15
+ - "критерии приёмки"
16
+ - "Gherkin"
17
+ related: []
18
+ budget_lines: 422
19
+ schema_version: 1
20
+ ---
21
+ # Acceptance Criteria
22
+
23
+ > **Категория:** Specification · **Slug:** `acceptance-criteria`
24
+
25
+ ## Когда использовать
26
+
27
+ - Для каждой user story в PRD.
28
+ - Как контракт между PM и Engineering.
29
+ - Для QA test cases (AC → тест-сценарии).
30
+ - При спорах о «готова ли story?» AC = оракул.
31
+
32
+ ## Вход
33
+
34
+ | Поле | Обязательно | Описание |
35
+ |------|:-----------:|----------|
36
+ | User story | | Через `$user-story` |
37
+ | UX flow / wireframe | | Если поток сложный |
38
+ | Edge cases | | Ошибочные состояния, лимиты |
39
+ | Data constraints | | Правила валидации |
40
+
41
+ ## Источники данных
42
+
43
+ 1. User story как отправная точка.
44
+ 2. UX wireframes — визуальные подсказки для сценариев.
45
+ 3. NFR-требования — для нефункциональных AC.
46
+ 4. Интервью с клиентами — граничные случаи пользователей.
47
+
48
+ ### Связь с другими скилами
49
+
50
+ | Скил | Что берём | Когда вызывать |
51
+ |------|-----------|----------------|
52
+ | `user-story` | Story → AC сценарии | Родительский скил |
53
+ | `user-flow` | Шаги потока сценарии | Для сложных потоков |
54
+ | `prd-template` | Где в PRD | Встроен в stories |
55
+ | `hypothesis-template` | Тестируемое поведение | Для экспериментальных stories |
56
+
57
+ ## Два формата
58
+
59
+ ### A. Gherkin (Given / When / Then)
60
+
61
+ ```gherkin
62
+ Scenario: [Короткое описательное название]
63
+ Given [начальный контекст / предусловие]
64
+ When [действие / событие]
65
+ Then [ожидаемый результат]
66
+ And [дополнительный результат]
67
+ ```
68
+
69
+ Плюсы: структурированный, совместим с инструментами тестирования (Cucumber), BDD-стиль.
70
+ Минусы: многословный, негибкий для сложных данных.
71
+
72
+ ### B. Scenario-based чеклист
73
+
74
+ ```
75
+ ## Scenario: [Название]
76
+ - Precondition: [состояние]
77
+ - Action: [пользователь делает X]
78
+ - Expected: [результат]
79
+ - Error case: [что происходит, когда X не удаётся]
80
+ ```
81
+
82
+ Плюсы: гибкий, читаемый для нетехнических стейкхолдеров.
83
+ Минусы: менее строгий, не автоматизируется напрямую.
84
+
85
+ **Выбор:** Gherkin для сложного поведения (особенно API / backend), scenario для UI-heavy stories.
86
+
87
+ ## Протокол
88
+
89
+ ### Шаг 1 — Сначала Happy Path
90
+
91
+ Набросать сценарий happy path. Это основной поток, который проходят 80% пользователей.
92
+
93
+ ```gherkin
94
+ Scenario: Admin creates a new team role
95
+ Given an admin is on the Teams settings page
96
+ When they click "New role template"
97
+ And fill in name "Senior Engineer" and select 12 permissions
98
+ And click "Save"
99
+ Then the role is saved
100
+ And appears в roles list
101
+ And is selectable при adding new team members
102
+ ```
103
+
104
+ ### Шаг 2 Предусловия
105
+
106
+ Каждый сценарий что должно быть истиной до начала. Избегать неявных допущений.
107
+
108
+ Предусловия для фиксации:
109
+ - Состояние аутентификации пользователя (авторизован, роль, разрешения)
110
+ - Состояние данных (существующие сущности, счётчики)
111
+ - Флаги функций
112
+ - Время / дата (для чувствительных ко времени функций)
113
+
114
+ ### Шаг 3 — Граничные случаи
115
+
116
+ Для каждой story — подумать о:
117
+ - **Пустое состояние:** нет данных, первый запуск пользователя
118
+ - **Граничные значения:** 0, 1, максимум, максимум+1
119
+ - **Параллелизм:** два пользователя действуют одновременно
120
+ - **Разрешения:** пользователь без разрешения пытается выполнить действие
121
+ - **Сеть:** офлайн, медленная сеть, таймаут
122
+ - **Валидация:** некорректный ввод, XSS, инъекция
123
+ - **Идемпотентность:** одно и то же действие дважды
124
+
125
+ B2B-специфичные граничные случаи:
126
+ - Граничные случаи SSO (пользователь деактивирован в IdP)
127
+ - Администратор без разрешения пытается выполнить ограниченное действие
128
+ - Сбои интеграций (сторонний сервис недоступен)
129
+ - Ограничения скорости / квоты
130
+
131
+ ### Шаг 4Сценарии ошибок
132
+
133
+ Для каждого видимого пользователю режима сбоя:
134
+ - Что его вызывает
135
+ - Что видит пользователь (сообщение об ошибке, действие восстановления)
136
+ - Состояние системы после (залогировано? повторяемо?)
137
+
138
+ ```gherkin
139
+ Scenario: Save fails due to name conflict
140
+ Given a role named "Senior Engineer" exists
141
+ When admin tries to create role with same name
142
+ Then display error "Role name already exists"
143
+ And do not save
144
+ And focus name field for correction
145
+ ```
146
+
147
+ ### Шаг 5 — Нефункциональные сценарии
148
+
149
+ Отдельные AC для NFR, если применимо:
150
+
151
+ ```gherkin
152
+ Scenario: Role creation — performance
153
+ Given a team with 500 existing roles
154
+ When admin adds a new role
155
+ Then response returns < 500ms p95
156
+ ```
157
+
158
+ ```gherkin
159
+ Scenario: Role creation — audit
160
+ When any role is created, updated, or deleted
161
+ Then an audit log entry is written с user id, timestamp, before/after diff
162
+ ```
163
+
164
+ ### Шаг 6 — Вариации данных
165
+
166
+ Для AC, управляемых данными, использовать таблицы:
167
+
168
+ ```gherkin
169
+ Scenario Outline: Role validation rejects invalid names
170
+ Given admin is creating a role
171
+ When they enter name "<name>"
172
+ Then they see error "<error>"
173
+
174
+ Examples:
175
+ | name | error |
176
+ | "" | Название обязательно |
177
+ | [255 char string] | Название должно быть < 255 символов |
178
+ | "admin" | Название конфликтует с системной ролью |
179
+ | "<script>alert(1)</script>" | Название содержит недопустимые символы |
180
+ ```
181
+
182
+ ### Шаг 7 Чеклист «Готово»
183
+
184
+ - [ ] Сценарий happy path
185
+ - [ ] Граничные случаи покрыты (пустой / граничные значения / параллелизм / разрешения)
186
+ - [ ] Сценарии ошибок с сообщениями
187
+ - [ ] Предусловия явны
188
+ - [ ] Вариации данных для правил валидации
189
+ - [ ] NFR (если применимо) отдельно
190
+ - [ ] Нет неоднозначных формулировок («быстро», «удобно»)
191
+
192
+ ## Валидация (Quality Gate)
193
+
194
+ - [ ] Каждая story имеет 1 AC
195
+ - [ ] Happy path покрыт
196
+ - [ ] ≥ 2 граничных случая (кроме тривиальных stories)
197
+ - [ ] ≥ 1 сценарий ошибки
198
+ - [ ] Предусловия явны
199
+ - [ ] Нет неоднозначных глаголов («должно работать правильно»)
200
+ - [ ] NFR AC для performance/security/compliance-критичных stories
201
+ - [ ] Формат (Gherkin или scenario) единообразен на весь PRD
202
+
203
+ ## Handoff
204
+
205
+ Результат является входом для:
206
+ - **Engineering** реализация + написание тестов
207
+ - **QA** → автоматизированные тест-кейсы
208
+ - **Designer** → мокапы ошибочных состояний
209
+
210
+ Формат: AC встроены в карточку user story. Через `$handoff`.
211
+
212
+ ## Anti-patterns
213
+
214
+ | Ошибка | Почему плохо | Как правильно |
215
+ |--------|-------------|---------------|
216
+ | Неоднозначно («быстро», «легко») | Не тестируемо | Конкретные пороги |
217
+ | Только happy path | Баги в граничных случаях | ≥ 2 граничных случая |
218
+ | Специфично для реализации | «Нажать синюю кнопку» | «Когда пользователь сохраняет» (UI-независимо) |
219
+ | Смешивать AC с заметками реализации | Путает контракт | Заметки отдельно |
220
+ | Слишком много сценариев (20+) | Бремя обслуживания | Разбить story |
221
+ | Нет NFR AC | Критические баги уходят в прод | NFR явно |
222
+ | Нет определённых сообщений об ошибках | Непоследовательный UX | Конкретный текст для каждой ошибки |
223
+
224
+ ## Шаблон
225
+
226
+ ```markdown
227
+ ## Story: [Название]
228
+
229
+ ### Acceptance Criteria
230
+
231
+ **Happy path:**
232
+ ```gherkin
233
+ Scenario: [название]
234
+ Given [предусловие]
235
+ When [действие]
236
+ Then [результат]
237
+ And [результат]
238
+ ```
239
+
240
+ **Граничные случаи:**
241
+ ```gherkin
242
+ Scenario: [название граничного случая]
243
+ Given [предусловие]
244
+ When [действие]
245
+ Then [результат]
246
+ ```
247
+
248
+ **Сценарии ошибок:**
249
+ ```gherkin
250
+ Scenario: [название ошибки]
251
+ Given [предусловие]
252
+ When [неуспешное действие]
253
+ Then [сообщение об ошибке]
254
+ And [восстановление]
255
+ ```
256
+
257
+ **NFR (если применимо):**
258
+ ```gherkin
259
+ Scenario: Performance
260
+ When [действие]
261
+ Then response < 200ms p95
262
+ ```
263
+ ```
264
+
265
+ ## Worked Example TeamFlow AC: Story S2 "Receive AI Summary Within 60 Seconds"
266
+
267
+ **Контекст:** Полный Gherkin AC для флагманской story (S2 из скила user-story). Демонстрирует happy path + граничные случаи + ошибки + NFR + вариации данных.
268
+
269
+ ```gherkin
270
+ # Acceptance Criteria: S2 Receive AI Summary Within 60 Seconds
271
+
272
+ # ============ HAPPY PATH ============
273
+
274
+ Scenario: Manager ends 1:1, AI generates summary within 60 seconds
275
+ Given Maria is on Team Tier account (AI Summarization enabled)
276
+ And Maria has AI-enabled 1:1 meeting «Sarah weekly sync» starting 10:00 AM
277
+ And meeting includes 23 minutes of recorded audio
278
+ When Maria clicks «End meeting» at 10:23 AM
279
+ Then within 60 seconds summary appears in meeting notes view
280
+ And summary includes sections: «Topics discussed», «Decisions», «Action items»
281
+ And action items list contains ≥ 1 extracted item (if discussion mentioned commitments)
282
+ And summary status is «Draft (AI)» (not «Approved»)
283
+ And event «ai_summary_generated» logged с meeting_id, duration, summary_id
284
+
285
+
286
+ # ============ STREAMING / LOADING ============
287
+
288
+ Scenario: Summary streams progressively if generation exceeds 10 seconds
289
+ Given Maria ended meeting successfully
290
+ When summary generation takes 35 seconds
291
+ Then loading indicator shows by 5th second
292
+ And first «Topics discussed» section appears as soon as generated (streaming)
293
+ And remaining sections populate progressively
294
+ And manager can read early sections without waiting for complete summary
295
+
296
+
297
+ # ============ BOUNDARY: MEETING DURATION ============
298
+
299
+ Scenario Outline: Summary behavior по meeting duration
300
+ Given Maria ended 1:1 meeting of <duration> minutes
301
+ When summary generation completes
302
+ Then summary section behavior is <behavior>
303
+
304
+ Examples:
305
+ | duration | behavior |
306
+ | 0-4 | Резюме не создаётся — отображается сообщение «Встреча слишком короткая» |
307
+ | 5-14 | Краткое резюме (2-3 темы, пункты действий если явные) |
308
+ | 15-45 | Полное стандартное резюме (все секции заполнены) |
309
+ | 46-120 | Расширенное резюме с добавленной секцией «Ключевые темы» |
310
+ | 121+ | Резюме создаётся с пометкой «Очень длинная встреча — просмотрите внимательно» |
311
+
312
+
313
+ # ============ ERROR SCENARIOS ============
314
+
315
+ Scenario: LLM API timeout — user sees fallback
316
+ Given Maria ended AI-enabled meeting
317
+ When LLM API не returns summary within 120 seconds (hard timeout)
318
+ Then manager sees message «Summary taking longer than expected — we'll email you when ready»
319
+ And event «ai_summary_timeout_fallback» logged
320
+ And background job continues attempting generation
321
+ And on success, manager получает in-product notification + email с summary
322
+
323
+ Scenario: LLM API hard error — graceful degradation
324
+ Given Maria ended AI-enabled meeting
325
+ When primary LLM provider returns 500 error after 3 retries
326
+ Then system automatically switches to secondary provider (Anthropic)
327
+ And event «ai_provider_failover» logged для ops review
328
+ And summary generates using secondary с quality parity
329
+
330
+ Scenario: Complete LLM failure (both providers) — manual fallback
331
+ Given Maria ended AI-enabled meeting
332
+ When both LLM providers unavailable для > 2 minutes
333
+ Then manager sees «AI summary unavailable this meeting — manual notes preserved»
334
+ And existing meeting notes (if any) не affected
335
+ And event «ai_summary_unavailable» logged
336
+ And within 24 hours manager получает email: «AI recovered — want to retry?»
337
+
338
+
339
+ # ============ PRIVACY & PERMISSION ============
340
+
341
+ Scenario: AI disabled org-wide — AI summary not generated
342
+ Given Maria's account admin set «AI org policy: disabled»
343
+ When Maria tries to enable AI for meeting
344
+ Then toggle is greyed out с tooltip «AI disabled by admin contact admin»
345
+ And no AI summary generated after meeting end
346
+
347
+ Scenario: Meeting participant declined recording consent
348
+ Given Maria starts AI-enabled meeting с Sarah
349
+ When Sarah clicks «Decline AI recording» consent prompt
350
+ Then AI disables for this meeting
351
+ And Maria sees «Sarah declined AI — switching to manual notes»
352
+ And event «ai_declined_by_participant» logged
353
+ And Maria can take manual notes normally
354
+
355
+
356
+ # ============ NON-FUNCTIONAL REQUIREMENTS ============
357
+
358
+ Scenario: Summary generation p95 latency under 60 seconds
359
+ Given 100 completed AI-enabled meetings in past 7 days
360
+ When latency measured от «End meeting» event to «summary available» event
361
+ Then p95 latency ≤ 60 seconds
362
+ And p99 latency ≤ 90 seconds
363
+ And p50 latency 30 seconds
364
+
365
+ Scenario: Summary data encryption at rest
366
+ Given AI summary generated and stored
367
+ When database queried directly (не via API)
368
+ Then summary content encrypted с customer-specific key (AES-256)
369
+ And cannot be decrypted без customer-managed key (BYOK для Enterprise)
370
+
371
+ Scenario: Audit log completeness
372
+ Given any AI summary operation occurs (generate / edit / approve / delete)
373
+ When audit log queried для that meeting_id
374
+ Then every operation logged с timestamp, actor_id, action_type, meeting_id, summary_id
375
+ And log retention 365 days
376
+ And log entries immutable (tamper-evident)
377
+
378
+
379
+ # ============ DATA VARIATION: Action Items Extraction ============
380
+
381
+ Scenario Outline: Action items extraction confidence handling
382
+ Given 1:1 transcript contains statement: «<statement>»
383
+ When AI extracts action items
384
+ Then extraction should be <extraction>
385
+ And confidence should be <confidence>
386
+
387
+ Examples:
388
+ | statement | extraction | confidence |
389
+ | «Sarah, please review PR by Friday» | «Sarah: review PR, due Friday» | Высокая (>90%) |
390
+ | «Let's figure out the deployment plan» | Не извлечено (нет владельца/чёткого действия) | Низкая (<50%) |
391
+ | «I'll send you docs soon» | «Maria: send docs, due TBD» | Средняя (70-90%)|
392
+ | «We should probably talk to Dave about it» | Не извлечено (предположительно) | Низкая (<50%) |
393
+ ```
394
+
395
+ ### Анализ плотности AC
396
+
397
+ - **12 сценариев итого** для одной story S2
398
+ - **Разбивка:**
399
+ - Happy path: 1
400
+ - Streaming / загрузка: 1
401
+ - Граничные случаи (продолжительность): 1 5 вариантами)
402
+ - Сценарии ошибок: 3
403
+ - Конфиденциальность / разрешения: 2
404
+ - NFR: 3 (задержка, шифрование, аудит)
405
+ - Вариации данных: 1 (с 4 вариантами)
406
+
407
+ **Плотность соответствует L-sized (8 очков) story с критичными для безопасности + NFR-насыщенными требованиями.** Сравнительно с S1 (переключатель), у которой 4 более простых сценария.
408
+
409
+ ### Распространённые ошибки AC, которых мы избежали
410
+
411
+ 1. **Расплывчатые пороги:** Не «быстро» — «60s p95, 90s p99»
412
+ 2. **Единственный happy path:** 11 нехappy-path сценариев, потому что продакшн — это граничные случаи
413
+ 3. **Пропущена конфиденциальность:** 2 явных сценария конфиденциальности (отключение администратором, согласие участника) — блокеры для B2B
414
+ 4. **Пропущены NFR:** Задержка + шифрование + аудит — всё является требованиями, но легко пропустить
415
+ 5. **Специфика реализации:** «Пользователь нажимает синюю кнопку» — избегали — «Пользователь завершает встречу» (UI-независимо)
416
+
417
+ > **Урок AC:** L-story с AI + конфиденциальностью + NFR требует 10+ сценариев. Без комплексных AC:
418
+ > 1. Eng выкатывает happy path, сталкивается с граничными случаями в проде
419
+ > 2. QA не знает что тестировать → баги в граничных случаях
420
+ > 3. Требования конфиденциальности (отключение администратором, согласие участника) теряются
421
+ >
422
+ > Таблицы данных (Scenario Outline) сжимают вариации данных — 4 примера в 1 сценарии vs 4 сценария × дублированный скаффолд. Держать AC поддерживаемыми.