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,476 +1,491 @@
1
- ---
2
- name: user-flow
3
- description: Документация пользовательских флоу — шаги, decision points, happy path + error states
4
- ---
5
- # User Flow
6
-
7
- > **Категория:** UX · **Slug:** `user-flow`
8
-
9
- ## Когда использовать
10
-
11
- - Для каждого non-trivial multi-step flow в PRD.
12
- - Перед дизайном — flows align команду на happy path + edges.
13
- - В specification — flows маппятся на user stories.
14
- - Для onboarding / activation анализа — identify drop-off points.
15
-
16
- ## Вход
17
-
18
- | Поле | Обязательно | Описание |
19
- |------|:-----------:|----------|
20
- | User story / PRD | ✅ | Что flow должен реализовать |
21
- | User persona | ✅ | Для кого |
22
- | Entry points | ✅ | Откуда пользователь попадает в flow |
23
- | Exit points | ✅ | Успех vs отказ vs ошибки |
24
- | Существующий flow (при изменении) | ⬚ | Ссылка на текущее состояние |
25
-
26
- ## Источники данных
27
-
28
- 1. User interviewsкак делают сейчас.
29
- 2. Product analyticsданные drop-off для существующих flows.
30
- 3. Support tickets — точки боли.
31
- 4. Flows конкурентов — базовые ожидания.
32
-
33
- ### Связь с другими скилами
34
-
35
- | Скил | Что берём | Когда вызывать |
36
- |------|-----------|----------------|
37
- | `user-story` | Stories flow segments | Parent concept |
38
- | `acceptance-criteria` | AC edge / error cases in flow | После flow |
39
- | `design-brief` | Flow input для design | Перед brief |
40
- | `jtbd-canvas` | Job context для flow trigger | Для understanding entry |
41
-
42
- ## Типы Flows
43
-
44
- 1. **Task flow**линейный путь (создание аккаунта, отправка формы)
45
- 2. **Decision flow**разветвлённый (онбординг в зависимости от роли)
46
- 3. **Error flow**что происходит при ошибках
47
- 4. **Recovery flow** — как пользователь возвращается на путь
48
-
49
- ## Структура User Flow Doc
50
-
51
- 1. **Название и назначение flow**
52
- 2. **Actors** кто использует этот flow
53
- 3. **Preconditions**состояние, необходимое для входа
54
- 4. **Entry points** откуда прибывает пользователь
55
- 5. **Happy path** шаг за шагом
56
- 6. **Decision points** — ветвление
57
- 7. **Error states** — каждый режим отказа
58
- 8. **Exit points** — успех, отказ, ошибка
59
- 9. **Metrics** — что будем измерять
60
-
61
- ## Протокол
62
-
63
- ### Шаг 0 — Определение границ
64
-
65
- - Вход: откуда user flow начинается (signup CTA, клик по навигации, ссылка из email)
66
- - Выход: где заканчивается (состояние успеха, ошибка, abandonment)
67
- - Preconditions: состояние авторизации, разрешения, состояние данных
68
-
69
- ### Шаг 1Happy Path (последовательные шаги)
70
-
71
- Линейная последовательность от входа до успешного выхода. Шаги видимые пользователю действия + ответы системы.
72
-
73
- Нотация:
74
- - **→** последовательный шаг
75
- - **[Действие]** действие пользователя
76
- - **(Система)** ответ системы
77
- - **{Данные}** изменение состояния
78
-
79
- Пример:
80
- ```
81
- [Клик «Пригласить участника»]
82
- (Открывается модальное окно с полем email)
83
- [Ввести email + назначить роль] →
84
- [Клик «Отправить приглашение»]
85
- {Запись приглашения создана} →
86
- (Email отправлен получателю)
87
- (Success toast: «Invite sent») →
88
- Выход: приглашение ожидает ответа
89
- ```
90
-
91
- ### Шаг 2 — Decision Points
92
-
93
- Где flow ветвится в зависимости от:
94
- - Ввода пользователя (выбор роли, выбор плана)
95
- - Состояния системы (доступность фичи, квота)
96
- - Данных (существующий пользователь vs новый, разрешения)
97
-
98
- Диаграмма: использовать операторы if/else или case:
99
-
100
- ```
101
- После [Ввод email]:
102
- IF email существующий пользователь:
103
- Шаг: флоу существующего пользователя (добавить в команду)
104
- ELIF домен email заблокирован политикой:
105
- → Ошибка: «Domain not allowed by your org»
106
- ELSE:
107
- → Продолжить: флоу приглашения нового пользователя
108
- ```
109
-
110
- ### Шаг 3 Error States
111
-
112
- Для каждого системного режима отказа:
113
- - **Триггер** что вызывает
114
- - **Сообщение, видимое пользователю** — точный текст
115
- - **Действие по восстановлению** — что пользователь может сделать
116
- - **Состояние системы** — залогировано? повторяется?
117
-
118
- Частые ошибки:
119
- - Сбой сети
120
- - Ошибка валидации
121
- - Доступ запрещён
122
- - Квота исчерпана
123
- - Сторонняя интеграция недоступна
124
- - Устаревшие данные / одновременное изменение
125
-
126
- ### Шаг 4 — Empty / Loading States
127
-
128
- - **Empty state:** пользователь впервые, данных ещё нет. Что они видят?
129
- - **Loading state:** что во время сетевых вызовов?
130
- - **Partial state:** часть данных загружена, часть загружается?
131
-
132
- ### Шаг 5 — Exit Points
133
-
134
- Категоризировать все выходы:
135
- - **Успех:** задача выполнена
136
- - **Намеренный отказ:** пользователь отменил
137
- - **Неявный отказ:** пользователь ушёл без действия (таймаут сессии, закрыл вкладку)
138
- - **Сбой:** жёсткая ошибка, невосстановимая
139
-
140
- Для каждого выхода:
141
- - Что происходит в системе
142
- - Что чувствует пользователь
143
- - Может ли он снова войти в flow?
144
-
145
- ### Шаг 6 Metrics Instrumentation
146
-
147
- На каждый шаг flow:
148
- - **Название события** (например, `invite_modal_opened`, `invite_sent_success`)
149
- - **Свойства** (роль, источник и т.д.)
150
- - **Воронка конверсии** — коэффициент от начала до успеха
151
- - **Drop-off на каждом шаге**
152
-
153
- Это подаётся в AARRR + success metrics.
154
-
155
- ### Шаг 7 — Визуализация
156
-
157
- Варианты:
158
- - **ASCII-диаграмма** (для текстовых документов)
159
- - **Mermaid** (GitHub рендерит inline)
160
- - **Figma / Whimsical / Miro** (для презентаций)
161
-
162
- Пример Mermaid:
163
- ```mermaid
164
- flowchart TD
165
- A[Клик Пригласить] --> B{Пользователь в системе?}
166
- B -->|Да| C[Добавить в команду]
167
- B -->|Нет| D[Отправить приглашение]
168
- D --> E[Success toast]
169
- D --> F[Ошибка: email недействителен]
170
- F --> D
171
- ```
172
-
173
- ## Валидация (Quality Gate)
174
-
175
- - [ ] Entry + exit points явны
176
- - [ ] Preconditions перечислены
177
- - [ ] Happy path шаг за шагом
178
- - [ ] ≥ 2 decision points (кроме тривиально линейных)
179
- - [ ] ≥ 3 error states с recovery
180
- - [ ] Empty / loading states покрыты
181
- - [ ] Все выходы категоризированы (success / abandon / fail)
182
- - [ ] Metric events определены на каждый шаг
183
- - [ ] Визуализировано (диаграмма)
184
-
185
- ## Handoff
186
-
187
- Результат является входом для:
188
- - **`design-brief`** flow → необходимые экраны
189
- - **UX Designer** → вайрфреймы на каждый шаг
190
- - **Engineering** дизайн API для каждого действия
191
- - **Data Analyst** план инструментирования
192
- - **QA** тест-сценарии для каждого flow
193
-
194
- Формат: user flow doc (markdown + Mermaid/diagram). Через `$handoff`.
195
-
196
- ## Anti-patterns
197
-
198
- | Ошибка | Почему плохо | Как правильно |
199
- |--------|-------------|---------------|
200
- | Только happy path | Production — это граничные случаи | ≥ 3 error states |
201
- | Нет decision points | Линейное ≠ реальность | Явное ветвление |
202
- | Нет empty state | Новые пользователи в замешательстве | Всегда покрывать empty |
203
- | Нет метрик | Воронку не измерить | События на каждый шаг |
204
- | Текстовые стены без диаграммы | Трудно следить | Визуализировать |
205
- | Нет путей восстановления | Пользователи застревают | Каждая ошибка имеет recovery |
206
-
207
- ## Шаблон
208
-
209
- ```markdown
210
- # User Flow: [Название]
211
-
212
- ## Назначение
213
- [Что пользователь достигает]
214
-
215
- ## Actors
216
- [Основной пользователь + любые вторичные]
217
-
218
- ## Preconditions
219
- - Auth: [авторизован как X]
220
- - Состояние: [необходимое состояние данных]
221
-
222
- ## Entry Points
223
- 1. [Источник A]
224
- 2. [Источник B]
225
-
226
- ## Happy Path
227
- 1. [Действие] → (Ответ системы)
228
- 2. ...
229
-
230
- ## Decision Points
231
- - После шага X:
232
- - IF [условие] → [ветвь A]
233
- - ELSE → [ветвь B]
234
-
235
- ## Error States
236
- | # | Триггер | Сообщение | Восстановление |
237
- | 1 | Неверный email | «Email format invalid» | Повторный ввод |
238
-
239
- ## Empty / Loading States
240
- - Empty: [состояние]
241
- - Loading: [состояние]
242
-
243
- ## Exit Points
244
- - Успех: [конечное состояние]
245
- - Отказ: [что происходит]
246
- - Сбой: [что происходит]
247
-
248
- ## Metrics
249
- - Событие: `flow_started` — при входе
250
- - Событие: `flow_step_X_completed` — на каждый шаг
251
- - Событие: `flow_succeeded` выход при успехе
252
- - Событие: `flow_abandoned` выход при отказе
253
- - Воронка: коэффициент конверсии от начала до успеха
254
-
255
- ## Diagram
256
- [Mermaid или ссылка на Figma]
257
- ```
258
-
259
- ## Worked Example — TeamFlow AI-Enabled 1:1 Full Flow
260
-
261
- ```markdown
262
- # User Flow: AI-Enabled 1:1 (сквозной)
263
-
264
- ## Назначение
265
- Менеджер проводит 1:1 с поддержкой AI от планирования до просмотра AI-сводки + action items.
266
- Охватывает Stories S1, S2, S3, S4, S5 сквозным образом.
267
-
268
- ## Actors
269
- - **Основной:** People Manager (end-user, 5-15 прямых подчинённых)
270
- - **Вторичный:** Прямой подчинённый (видит запрос согласия AI, может просматривать shared summary)
271
- - **Третичный:** Admin (устанавливает общеорганизационную политику, влияет на настройки по умолчанию)
272
-
273
- ## Preconditions
274
- - **Auth:** Менеджер авторизован в TeamFlow, на аккаунте Team Tier
275
- - **Состояние:** У менеджера запланирован предстоящий 1:1, функция AI включена на уровне организации
276
- - **Данные:** Подчинённый имеет аккаунт TeamFlow + дал согласие на AI-запись (разовое на уровне организации или на каждую встречу)
277
- - **Браузер:** Chrome/Edge/Safari/Firefox с поддержкой MediaRecorder API
278
-
279
- ## Entry Points
280
- 1. Клик на 1:1 в представлении календаря TeamFlow страница деталей встречи
281
- 2. Email-напоминание «Ваша встреча 1:1 с Sarah начинается через 10 мин» → клик по ссылке
282
- 3. Уведомление Slack-интеграции (если включено пользователем)
283
-
284
- ## Happy Path
285
-
286
- ### До встречи (подготовка)
287
- ```
288
- 1. [Менеджер просматривает страницу 1:1 встречи]
289
- (Страница показывает информацию о встрече + участников + предыдущую сводку)
290
-
291
- 2. [Менеджер включает "Использовать AI на этой встрече"]
292
- {State: ai_enabled = true, сохранено в запись встречи}
293
- → (Confirmation toast: "AI создаст сводку после окончания встречи")
294
-
295
- 3. [Менеджер нажимает "Начать встречу"]
296
- (Система запрашивает разрешение на микрофон, если не предоставлено)
297
- (После предоставления: запись начинается + AI-транскрипция начинается)
298
- → {Event: meeting_started с ai_enabled=true}
299
- ```
300
-
301
- ### Во время встречи
302
- ```
303
- 4. [Менеджер + подчинённый общаются в обычном режиме]
304
- → (UI показывает: индикатор записи, таймер длительности, деликатный баннер «AI слушает»)
305
- → (Транскрипция накапливается в памяти, не видна пользователю)
306
- (Подчинённый видит те же индикаторы через свою сессию TeamFlow)
307
-
308
- 5. Необязательно: [Менеджер нажимает "приостановить AI" для чувствительной темы]
309
- → {Транскрипция приостановлена}
310
- (UI показывает: «AI приостановлен — возобновите, когда будете готовы»)
311
- После 30 секунд или нажатия "возобновить" транскрипция возобновляется
312
-
313
- 6. [Менеджер добавляет ручные заметки (необязательно) в параллельную текстовую область]
314
- → {Ручные заметки сохранены отдельно от AI-транскрипта}
315
- ```
316
-
317
- ### Завершение встречи
318
- ```
319
- 7. [Менеджер нажимает "Завершить встречу"]
320
- {Event: meeting_ended с duration, manual_notes_length}
321
- → (Модальное окно: "AI генерирует сводку можете закрыть или остаться и проверить")
322
-
323
- 8. [Система генерирует сводку через LLM API]
324
- → {Целевая задержка: <60s p95}
325
- → (Streaming UI: разделы заполняются по мере генерации)
326
- {Event: ai_summary_generated, ai_provider, latency, confidence_avg}
327
-
328
- 9. [Менеджер видит интерфейс проверки сводки]
329
- (Видимые разделы: Обсуждённые темы, Решения, Action items с индикаторами достоверности)
330
- → (Автосохранение черновика)
331
- ```
332
-
333
- ### Фаза проверки
334
- ```
335
- 10. [Менеджер просматривает содержимое сводки]
336
- → (Может читать, прокручивать, решить редактировать или подтвердить)
337
-
338
- 11A. [Менеджер доволен нажимает "Подтвердить"]
339
- (Модальное подтверждение: "Подтвердить сводку? Action items будут отслеживаться.")
340
- [Менеджер подтверждает]
341
- → {Event: ai_summary_approved, time_to_approve}
342
- → (Сводка переходит в «Approved», action items поступают в очередь отслеживания)
343
- (Перенаправление на просмотр истории 1:1)
344
-
345
- 11B. [Менеджер хочет правки входит в режим редактирования]
346
- → (Inline-редактор включён для каждого раздела)
347
- → {State: editing_mode = true}
348
- ...продолжить по сценарию редактирования
349
- ```
350
-
351
- ## Decision Points
352
-
353
- ```
354
- После Шага 2 (AI toggle):
355
- IF политика орг «AI disabled» toggle недоступен, подсказка «Contact admin»
356
- ELIF подчинённый не давал согласия показать запрос согласия перед тем, как менеджер может включить
357
- ELIF первый раз показать быструю подсказку онбординга
358
-
359
- После Шага 3 (начало встречи):
360
- IF разрешение на микрофон отклонено переключиться в режим только ручных заметок, AI отключён для встречи
361
- ELIF аудиопоток прерывается в середине встречи повтор, если второй сбой → предупредить менеджера, продолжить без AI
362
-
363
- После Шага 8 (генерация сводки):
364
- IF основной LLM-провайдер недоступен → failover на вторичный (Anthropic) — прозрачно
365
- ELIF оба провайдера недоступны → показать заглушку «AI-сводка недоступна — пришлём email, когда будет готово»
366
- ELIF длительность встречи <5 мин → пропустить генерацию сводки, показать сообщение «Встреча слишком короткая»
367
-
368
- После Шага 10 (проверка):
369
- IF менеджер бездействует >7 дней без действия → email-напоминание «Не забудьте проверить»
370
- IF менеджер никогда не просматриваетавто-отметить черновик как "непросмотренный" через 30 дней (не авто-подтверждение)
371
- ```
372
-
373
- ## Error States
374
-
375
- | # | Триггер | Сообщение, видимое пользователю | Действие по восстановлению | Состояние системы |
376
- |---|---------|----------------------|-----------------|--------------|
377
- | 1 | Разрешение на микрофон отклонено | «AI требует доступ к микрофону — нажмите здесь чтобы разрешить, или продолжите без AI» | Повторный запрос разрешения ИЛИ переключение на ручные заметки | Событие `permission_denied` залогировано |
378
- | 2 | Аудиопоток прерван >30s | Баннер: «Соединение с аудио потеряно. Переподключение…» | Авто-повтор 3× с интервалом 30s; при продолжении сбоев — завершить AI-запись корректно | Событие `audio_stream_lost` |
379
- | 3 | LLM-провайдер недоступен | «Сводка занимает больше обычного — мы пришлём email, когда будет готово (в течение 24ч)» | Фоновая задача повторяет; email-уведомление при успехе | Событие `ai_summary_timeout_fallback` |
380
- | 4 | Оба LLM-провайдера недоступны | «AI-сводка временно недоступна. Ваши ручные заметки сохранены.» | Email в течение 24ч после восстановления: «Хотите повторить попытку?» | Событие `ai_summary_unavailable` |
381
- | 5 | Подчинённый отозвал согласие в середине встречи | «Sarah отключила AI-запись. Переключаемся на ручные заметки.» | AI останавливается; режим ручных заметок продолжается | Событие `ai_declined_by_participant` |
382
- | 6 | Низкая достоверность сводки | Баннер предупреждения: «У этой сводки низкая достоверность — внимательно проверьте перед подтверждением» | Пользователь внимательно проверяет или запрашивает перегенерацию (один раз) | Событие `ai_summary_low_confidence` |
383
-
384
- ## Empty States
385
-
386
- - **Первый раз, нет предыдущих 1:1:** Показать тур онбординга (3 подсказки: что делает AI, как включить, как проверять)
387
- - **Нет извлечённых action items:** «Action items не обнаружены» с поясняющей подсказкой «Можно добавить вручную»
388
- - **Разделы сводки не заполнены:** «Встреча была очень короткой — ручные заметки сохранены, AI-сводка недоступна» (пропускается если <5 мин)
389
-
390
- ## Loading States
391
-
392
- - **Шаг 3 (начало записи):** Состояние кнопки: «Запуск…» disabled «Запись» (красный индикатор точки)
393
- - **Шаг 8 (генерация сводки):**
394
- - 0-5s: Без индикатора (ощущается мгновенным)
395
- - 5-30s: Появляется progress bar («Генерация сводки…»)
396
- - 30-60s: Потоковая загрузка раздел за разделом (темы первыми, action items последними как правило)
397
- - 60s+: Переход в async-режим («Занимает больше обычногопришлём email»)
398
- - **Шаг 10 (загрузка редактора):** Skeleton screen с заполнителями текста за ~300ms
399
-
400
- ## Exit Points
401
-
402
- ### Успешные выходы
403
- - **Подтверждённая сводка** (Шаг 11A): перенаправление на просмотр истории 1:1 с зелёным toast
404
- - **Сохранён черновик и покинул** (прерывание шага 11B): состояние сохранено, возобновление через уведомление
405
-
406
- ### Выходы-отказы
407
- - **Закрыл модальное окно встречи до готовности сводки** (Шаги 7-8): сводка генерируется в фоне, пользователь получает уведомление
408
- - **Покинул проверку без подтверждения**: черновик сохранён; email-напоминание через 3 дня
409
-
410
- ### Выходы при сбое
411
- - **AI недоступен, переключение на ручной режим** (ошибка 4): пользователь продолжает с флоу ручных заметок; встреча всё равно считается
412
- - **Переключение при отклонении разрешения микрофона** (ошибка 1): только ручные заметки; AI-артефакты не создаются
413
-
414
- ## Metrics Instrumentation
415
-
416
- ### События на каждый шаг
417
- - `ai_toggle_enabled` — Шаг 2: свойства `{meeting_id, user_id, org_policy}`
418
- - `meeting_started` Шаг 3: `{ai_enabled, mic_permission_status}`
419
- - `meeting_ended` Шаг 7: `{duration, manual_notes_chars, participants_count}`
420
- - `ai_summary_generated` — Шаг 8: `{latency, provider, confidence_avg, summary_length}`
421
- - `summary_review_opened` — Шаг 9: `{time_from_meeting_end}`
422
- - `summary_edited` Шаг 11B: `{sections_edited, char_delta, time_in_edit}`
423
- - `summary_approved` Шаг 11A: `{time_to_approve, edit_count}`
424
-
425
- ### Метрики воронки
426
- ```
427
- Начата AI-встреча (Шаг 3) 100%
428
-
429
-
430
- Сводка сгенерирована (Шаг 8) 92% (8% потеряно: микрофон отклонён, слишком коротко, сбой потока)
431
-
432
-
433
- Сводка просмотрена (Шаг 10, открыто) 87% (5% непросмотрено через 7 дней)
434
-
435
-
436
- Сводка подтверждена (Шаг 11A) 78% (9% осталось в черновике, 82% просмотренных = подтверждено)
437
- ```
438
-
439
- ### Метрики качества
440
- - **Edit rate** = сводки отредактированные / просмотренные (цель: 30-50%)
441
- - **Time-to-approve** = медианное время от генерации до подтверждения (цель: ≤2 мин)
442
- - **Error rate** = неудачные сводки / всего попыток (цель: <2%)
443
- - **P95 latency** = задержка генерации сводки (цель: ≤60s)
444
-
445
- ## Diagram (Mermaid)
446
-
447
- ```mermaid
448
- flowchart TD
449
- A[Менеджер просматривает страницу 1:1] --> B{AI toggle включён?}
450
- B -->|Нет| Z1[Флоу ручных заметок]
451
- B -->|Да, включён| C{Подчинённый дал согласие?}
452
- C -->|Нет| D[Показать запрос согласия]
453
- D --> E{Подчинённый принимает?}
454
- E -->|Да| F
455
- E -->|Нет| Z1
456
- C -->|Да| F{Разрешение на микрофон?}
457
- F -->|Отклонено| G[Fallback: только ручные заметки]
458
- F -->|Предоставлено| H[Начать запись]
459
- H --> I[Встреча в процессе]
460
- I --> J{Завершить встречу}
461
- J --> K[Генерировать сводку]
462
- K --> L{Провайдер доступен?}
463
- L -->|Нет, оба недоступны| M[Fallback: email позже]
464
- L -->|Да| N{Встреча >=5 мин?}
465
- N -->|Нет| O[Пропустить сводку]
466
- N -->|Да| P[Показать UI проверки]
467
- P --> Q{Действие менеджера}
468
- Q -->|Редактировать + Подтвердить| R[Action items отслеживаются]
469
- Q -->|Подтвердить сразу| R
470
- Q -->|Оставить черновик| S[Напоминание через 3д]
471
- Q -->|Отказаться| T[Истекает через 30д]
472
- R --> U[Напоминание о следующем 1:1]
473
- ```
474
-
475
- > **Урок user-flow:** Полный документ flow объясняет, почему в AC для Story S2 существует **11 сценариев** — каждый decision point или error state — это сценарий. Сначала flow, затем AC — нельзя писать AC без понимания flow. **6 error states + 3 empty states + 3 loading states** для одного flow — это норма для production B2B — пользователи сталкиваются с граничными случаями в реальных условиях чаще, чем ожидается.
476
- ```
1
+ ---
2
+ name: user-flow
3
+ description: Документация пользовательских флоу — шаги, decision points, happy path + error states
4
+ type: triggered
5
+ domain: product
6
+ owners:
7
+ - ux_designer
8
+ gates:
9
+ - UX_DESIGNER
10
+ tech: []
11
+ topic: []
12
+ triggers:
13
+ - "user-flow"
14
+ - "user flow"
15
+ - "пользовательский сценарий"
16
+ related: []
17
+ budget_lines: 491
18
+ schema_version: 1
19
+ ---
20
+ # User Flow
21
+
22
+ > **Категория:** UX · **Slug:** `user-flow`
23
+
24
+ ## Когда использовать
25
+
26
+ - Для каждого non-trivial multi-step flow в PRD.
27
+ - Перед дизайном — flows align команду на happy path + edges.
28
+ - В specificationflows маппятся на user stories.
29
+ - Для onboarding / activation анализа identify drop-off points.
30
+
31
+ ## Вход
32
+
33
+ | Поле | Обязательно | Описание |
34
+ |------|:-----------:|----------|
35
+ | User story / PRD | ✅ | Что flow должен реализовать |
36
+ | User persona | ✅ | Для кого |
37
+ | Entry points | | Откуда пользователь попадает в flow |
38
+ | Exit points | | Успех vs отказ vs ошибки |
39
+ | Существующий flow (при изменении) | | Ссылка на текущее состояние |
40
+
41
+ ## Источники данных
42
+
43
+ 1. User interviews — как делают сейчас.
44
+ 2. Product analyticsданные drop-off для существующих flows.
45
+ 3. Support ticketsточки боли.
46
+ 4. Flows конкурентовбазовые ожидания.
47
+
48
+ ### Связь с другими скилами
49
+
50
+ | Скил | Что берём | Когда вызывать |
51
+ |------|-----------|----------------|
52
+ | `user-story` | Stories flow segments | Parent concept |
53
+ | `acceptance-criteria` | AC edge / error cases in flow | После flow |
54
+ | `design-brief` | Flow input для design | Перед brief |
55
+ | `jtbd-canvas` | Job context для flow trigger | Для understanding entry |
56
+
57
+ ## Типы Flows
58
+
59
+ 1. **Task flow** — линейный путь (создание аккаунта, отправка формы)
60
+ 2. **Decision flow** — разветвлённый (онбординг в зависимости от роли)
61
+ 3. **Error flow** — что происходит при ошибках
62
+ 4. **Recovery flow** — как пользователь возвращается на путь
63
+
64
+ ## Структура User Flow Doc
65
+
66
+ 1. **Название и назначение flow**
67
+ 2. **Actors** кто использует этот flow
68
+ 3. **Preconditions** — состояние, необходимое для входа
69
+ 4. **Entry points**откуда прибывает пользователь
70
+ 5. **Happy path** — шаг за шагом
71
+ 6. **Decision points**ветвление
72
+ 7. **Error states** — каждый режим отказа
73
+ 8. **Exit points** — успех, отказ, ошибка
74
+ 9. **Metrics** что будем измерять
75
+
76
+ ## Протокол
77
+
78
+ ### Шаг 0 — Определение границ
79
+
80
+ - Вход: откуда user flow начинается (signup CTA, клик по навигации, ссылка из email)
81
+ - Выход: где заканчивается (состояние успеха, ошибка, abandonment)
82
+ - Preconditions: состояние авторизации, разрешения, состояние данных
83
+
84
+ ### Шаг 1 — Happy Path (последовательные шаги)
85
+
86
+ Линейная последовательность от входа до успешного выхода. Шаги — видимые пользователю действия + ответы системы.
87
+
88
+ Нотация:
89
+ - **→** последовательный шаг
90
+ - **[Действие]** действие пользователя
91
+ - **(Система)** ответ системы
92
+ - **{Данные}** изменение состояния
93
+
94
+ Пример:
95
+ ```
96
+ [Клик «Пригласить участника»]
97
+ (Открывается модальное окно с полем email) →
98
+ [Ввести email + назначить роль]
99
+ [Клик «Отправить приглашение»] →
100
+ {Запись приглашения создана} →
101
+ (Email отправлен получателю) →
102
+ (Success toast: «Invite sent»)
103
+ Выход: приглашение ожидает ответа
104
+ ```
105
+
106
+ ### Шаг 2 — Decision Points
107
+
108
+ Где flow ветвится в зависимости от:
109
+ - Ввода пользователя (выбор роли, выбор плана)
110
+ - Состояния системы (доступность фичи, квота)
111
+ - Данных (существующий пользователь vs новый, разрешения)
112
+
113
+ Диаграмма: использовать операторы if/else или case:
114
+
115
+ ```
116
+ После [Ввод email]:
117
+ IF email — существующий пользователь:
118
+ Шаг: флоу существующего пользователя (добавить в команду)
119
+ ELIF домен email заблокирован политикой:
120
+ Ошибка: «Domain not allowed by your org»
121
+ ELSE:
122
+ Продолжить: флоу приглашения нового пользователя
123
+ ```
124
+
125
+ ### Шаг 3 — Error States
126
+
127
+ Для каждого системного режима отказа:
128
+ - **Триггер** что вызывает
129
+ - **Сообщение, видимое пользователю** точный текст
130
+ - **Действие по восстановлению** что пользователь может сделать
131
+ - **Состояние системы** — залогировано? повторяется?
132
+
133
+ Частые ошибки:
134
+ - Сбой сети
135
+ - Ошибка валидации
136
+ - Доступ запрещён
137
+ - Квота исчерпана
138
+ - Сторонняя интеграция недоступна
139
+ - Устаревшие данные / одновременное изменение
140
+
141
+ ### Шаг 4 Empty / Loading States
142
+
143
+ - **Empty state:** пользователь впервые, данных ещё нет. Что они видят?
144
+ - **Loading state:** что во время сетевых вызовов?
145
+ - **Partial state:** часть данных загружена, часть загружается?
146
+
147
+ ### Шаг 5 — Exit Points
148
+
149
+ Категоризировать все выходы:
150
+ - **Успех:** задача выполнена
151
+ - **Намеренный отказ:** пользователь отменил
152
+ - **Неявный отказ:** пользователь ушёл без действия (таймаут сессии, закрыл вкладку)
153
+ - **Сбой:** жёсткая ошибка, невосстановимая
154
+
155
+ Для каждого выхода:
156
+ - Что происходит в системе
157
+ - Что чувствует пользователь
158
+ - Может ли он снова войти в flow?
159
+
160
+ ### Шаг 6 Metrics Instrumentation
161
+
162
+ На каждый шаг flow:
163
+ - **Название события** (например, `invite_modal_opened`, `invite_sent_success`)
164
+ - **Свойства** (роль, источник и т.д.)
165
+ - **Воронка конверсии** коэффициент от начала до успеха
166
+ - **Drop-off на каждом шаге**
167
+
168
+ Это подаётся в AARRR + success metrics.
169
+
170
+ ### Шаг 7 — Визуализация
171
+
172
+ Варианты:
173
+ - **ASCII-диаграмма** (для текстовых документов)
174
+ - **Mermaid** (GitHub рендерит inline)
175
+ - **Figma / Whimsical / Miro** (для презентаций)
176
+
177
+ Пример Mermaid:
178
+ ```mermaid
179
+ flowchart TD
180
+ A[Клик Пригласить] --> B{Пользователь в системе?}
181
+ B -->|Да| C[Добавить в команду]
182
+ B -->|Нет| D[Отправить приглашение]
183
+ D --> E[Success toast]
184
+ D --> F[Ошибка: email недействителен]
185
+ F --> D
186
+ ```
187
+
188
+ ## Валидация (Quality Gate)
189
+
190
+ - [ ] Entry + exit points явны
191
+ - [ ] Preconditions перечислены
192
+ - [ ] Happy path шаг за шагом
193
+ - [ ] ≥ 2 decision points (кроме тривиально линейных)
194
+ - [ ] 3 error states с recovery
195
+ - [ ] Empty / loading states покрыты
196
+ - [ ] Все выходы категоризированы (success / abandon / fail)
197
+ - [ ] Metric events определены на каждый шаг
198
+ - [ ] Визуализировано (диаграмма)
199
+
200
+ ## Handoff
201
+
202
+ Результат является входом для:
203
+ - **`design-brief`** flow необходимые экраны
204
+ - **UX Designer** вайрфреймы на каждый шаг
205
+ - **Engineering** дизайн API для каждого действия
206
+ - **Data Analyst** → план инструментирования
207
+ - **QA** → тест-сценарии для каждого flow
208
+
209
+ Формат: user flow doc (markdown + Mermaid/diagram). Через `$handoff`.
210
+
211
+ ## Anti-patterns
212
+
213
+ | Ошибка | Почему плохо | Как правильно |
214
+ |--------|-------------|---------------|
215
+ | Только happy path | Production — это граничные случаи | ≥ 3 error states |
216
+ | Нет decision points | Линейное ≠ реальность | Явное ветвление |
217
+ | Нет empty state | Новые пользователи в замешательстве | Всегда покрывать empty |
218
+ | Нет метрик | Воронку не измерить | События на каждый шаг |
219
+ | Текстовые стены без диаграммы | Трудно следить | Визуализировать |
220
+ | Нет путей восстановления | Пользователи застревают | Каждая ошибка имеет recovery |
221
+
222
+ ## Шаблон
223
+
224
+ ```markdown
225
+ # User Flow: [Название]
226
+
227
+ ## Назначение
228
+ [Что пользователь достигает]
229
+
230
+ ## Actors
231
+ [Основной пользователь + любые вторичные]
232
+
233
+ ## Preconditions
234
+ - Auth: [авторизован как X]
235
+ - Состояние: [необходимое состояние данных]
236
+
237
+ ## Entry Points
238
+ 1. [Источник A]
239
+ 2. [Источник B]
240
+
241
+ ## Happy Path
242
+ 1. [Действие] → (Ответ системы)
243
+ 2. ...
244
+
245
+ ## Decision Points
246
+ - После шага X:
247
+ - IF [условие] → [ветвь A]
248
+ - ELSE → [ветвь B]
249
+
250
+ ## Error States
251
+ | # | Триггер | Сообщение | Восстановление |
252
+ | 1 | Неверный email | «Email format invalid» | Повторный ввод |
253
+
254
+ ## Empty / Loading States
255
+ - Empty: [состояние]
256
+ - Loading: [состояние]
257
+
258
+ ## Exit Points
259
+ - Успех: [конечное состояние]
260
+ - Отказ: [что происходит]
261
+ - Сбой: [что происходит]
262
+
263
+ ## Metrics
264
+ - Событие: `flow_started` — при входе
265
+ - Событие: `flow_step_X_completed`на каждый шаг
266
+ - Событие: `flow_succeeded` выход при успехе
267
+ - Событие: `flow_abandoned` — выход при отказе
268
+ - Воронка: коэффициент конверсии от начала до успеха
269
+
270
+ ## Diagram
271
+ [Mermaid или ссылка на Figma]
272
+ ```
273
+
274
+ ## Worked Example TeamFlow AI-Enabled 1:1 Full Flow
275
+
276
+ ```markdown
277
+ # User Flow: AI-Enabled 1:1 (сквозной)
278
+
279
+ ## Назначение
280
+ Менеджер проводит 1:1 с поддержкой AI от планирования до просмотра AI-сводки + action items.
281
+ Охватывает Stories S1, S2, S3, S4, S5 сквозным образом.
282
+
283
+ ## Actors
284
+ - **Основной:** People Manager (end-user, 5-15 прямых подчинённых)
285
+ - **Вторичный:** Прямой подчинённый (видит запрос согласия AI, может просматривать shared summary)
286
+ - **Третичный:** Admin (устанавливает общеорганизационную политику, влияет на настройки по умолчанию)
287
+
288
+ ## Preconditions
289
+ - **Auth:** Менеджер авторизован в TeamFlow, на аккаунте Team Tier
290
+ - **Состояние:** У менеджера запланирован предстоящий 1:1, функция AI включена на уровне организации
291
+ - **Данные:** Подчинённый имеет аккаунт TeamFlow + дал согласие на AI-запись (разовое на уровне организации или на каждую встречу)
292
+ - **Браузер:** Chrome/Edge/Safari/Firefox с поддержкой MediaRecorder API
293
+
294
+ ## Entry Points
295
+ 1. Клик на 1:1 в представлении календаря TeamFlow → страница деталей встречи
296
+ 2. Email-напоминание «Ваша встреча 1:1 с Sarah начинается через 10 мин» → клик по ссылке
297
+ 3. Уведомление Slack-интеграции (если включено пользователем)
298
+
299
+ ## Happy Path
300
+
301
+ ### До встречи (подготовка)
302
+ ```
303
+ 1. [Менеджер просматривает страницу 1:1 встречи]
304
+ → (Страница показывает информацию о встрече + участников + предыдущую сводку)
305
+
306
+ 2. [Менеджер включает "Использовать AI на этой встрече"]
307
+ → {State: ai_enabled = true, сохранено в запись встречи}
308
+ (Confirmation toast: "AI создаст сводку после окончания встречи")
309
+
310
+ 3. [Менеджер нажимает "Начать встречу"]
311
+ (Система запрашивает разрешение на микрофон, если не предоставлено)
312
+ → (После предоставления: запись начинается + AI-транскрипция начинается)
313
+ {Event: meeting_started с ai_enabled=true}
314
+ ```
315
+
316
+ ### Во время встречи
317
+ ```
318
+ 4. [Менеджер + подчинённый общаются в обычном режиме]
319
+ (UI показывает: индикатор записи, таймер длительности, деликатный баннер «AI слушает»)
320
+ (Транскрипция накапливается в памяти, не видна пользователю)
321
+ → (Подчинённый видит те же индикаторы через свою сессию TeamFlow)
322
+
323
+ 5. Необязательно: [Менеджер нажимает "приостановить AI" для чувствительной темы]
324
+ → {Транскрипция приостановлена}
325
+ → (UI показывает: «AI приостановлен возобновите, когда будете готовы»)
326
+ После 30 секунд или нажатия "возобновить" → транскрипция возобновляется
327
+
328
+ 6. [Менеджер добавляет ручные заметки (необязательно) в параллельную текстовую область]
329
+ {Ручные заметки сохранены отдельно от AI-транскрипта}
330
+ ```
331
+
332
+ ### Завершение встречи
333
+ ```
334
+ 7. [Менеджер нажимает "Завершить встречу"]
335
+ {Event: meeting_ended с duration, manual_notes_length}
336
+ → (Модальное окно: "AI генерирует сводку — можете закрыть или остаться и проверить")
337
+
338
+ 8. [Система генерирует сводку через LLM API]
339
+ {Целевая задержка: <60s p95}
340
+ (Streaming UI: разделы заполняются по мере генерации)
341
+ → {Event: ai_summary_generated, ai_provider, latency, confidence_avg}
342
+
343
+ 9. [Менеджер видит интерфейс проверки сводки]
344
+ → (Видимые разделы: Обсуждённые темы, Решения, Action items с индикаторами достоверности)
345
+ (Автосохранение черновика)
346
+ ```
347
+
348
+ ### Фаза проверки
349
+ ```
350
+ 10. [Менеджер просматривает содержимое сводки]
351
+ (Может читать, прокручивать, решить редактировать или подтвердить)
352
+
353
+ 11A. [Менеджер доволен → нажимает "Подтвердить"]
354
+ (Модальное подтверждение: "Подтвердить сводку? Action items будут отслеживаться.")
355
+ [Менеджер подтверждает]
356
+ {Event: ai_summary_approved, time_to_approve}
357
+ (Сводка переходит в «Approved», action items поступают в очередь отслеживания)
358
+ → (Перенаправление на просмотр истории 1:1)
359
+
360
+ 11B. [Менеджер хочет правкивходит в режим редактирования]
361
+ (Inline-редактор включён для каждого раздела)
362
+ → {State: editing_mode = true}
363
+ ...продолжить по сценарию редактирования
364
+ ```
365
+
366
+ ## Decision Points
367
+
368
+ ```
369
+ После Шага 2 (AI toggle):
370
+ IF политика орг «AI disabled»toggle недоступен, подсказка «Contact admin»
371
+ ELIF подчинённый не давал согласия → показать запрос согласия перед тем, как менеджер может включить
372
+ ELIF первый раз → показать быструю подсказку онбординга
373
+
374
+ После Шага 3 (начало встречи):
375
+ IF разрешение на микрофон отклонено переключиться в режим только ручных заметок, AI отключён для встречи
376
+ ELIF аудиопоток прерывается в середине встречи → повтор, если второй сбой → предупредить менеджера, продолжить без AI
377
+
378
+ После Шага 8 (генерация сводки):
379
+ IF основной LLM-провайдер недоступен failover на вторичный (Anthropic) прозрачно
380
+ ELIF оба провайдера недоступны показать заглушку «AI-сводка недоступна пришлём email, когда будет готово»
381
+ ELIF длительность встречи <5 мин пропустить генерацию сводки, показать сообщение «Встреча слишком короткая»
382
+
383
+ После Шага 10 (проверка):
384
+ IF менеджер бездействует >7 дней без действия → email-напоминание «Не забудьте проверить»
385
+ IF менеджер никогда не просматривает → авто-отметить черновик как "непросмотренный" через 30 дней (не авто-подтверждение)
386
+ ```
387
+
388
+ ## Error States
389
+
390
+ | # | Триггер | Сообщение, видимое пользователю | Действие по восстановлению | Состояние системы |
391
+ |---|---------|----------------------|-----------------|--------------|
392
+ | 1 | Разрешение на микрофон отклонено | «AI требует доступ к микрофону нажмите здесь чтобы разрешить, или продолжите без AI» | Повторный запрос разрешения ИЛИ переключение на ручные заметки | Событие `permission_denied` залогировано |
393
+ | 2 | Аудиопоток прерван >30s | Баннер: «Соединение с аудио потеряно. Переподключение…» | Авто-повтор 3× с интервалом 30s; при продолжении сбоев — завершить AI-запись корректно | Событие `audio_stream_lost` |
394
+ | 3 | LLM-провайдер недоступен | «Сводка занимает больше обычного — мы пришлём email, когда будет готово (в течение 24ч)» | Фоновая задача повторяет; email-уведомление при успехе | Событие `ai_summary_timeout_fallback` |
395
+ | 4 | Оба LLM-провайдера недоступны | «AI-сводка временно недоступна. Ваши ручные заметки сохранены.» | Email в течение 24ч после восстановления: «Хотите повторить попытку?» | Событие `ai_summary_unavailable` |
396
+ | 5 | Подчинённый отозвал согласие в середине встречи | «Sarah отключила AI-запись. Переключаемся на ручные заметки.» | AI останавливается; режим ручных заметок продолжается | Событие `ai_declined_by_participant` |
397
+ | 6 | Низкая достоверность сводки | Баннер предупреждения: «У этой сводки низкая достоверность внимательно проверьте перед подтверждением» | Пользователь внимательно проверяет или запрашивает перегенерацию (один раз) | Событие `ai_summary_low_confidence` |
398
+
399
+ ## Empty States
400
+
401
+ - **Первый раз, нет предыдущих 1:1:** Показать тур онбординга (3 подсказки: что делает AI, как включить, как проверять)
402
+ - **Нет извлечённых action items:** «Action items не обнаружены» с поясняющей подсказкой «Можно добавить вручную»
403
+ - **Разделы сводки не заполнены:** «Встреча была очень короткой ручные заметки сохранены, AI-сводка недоступна» (пропускается если <5 мин)
404
+
405
+ ## Loading States
406
+
407
+ - **Шаг 3 (начало записи):** Состояние кнопки: «Запуск…» disabled «Запись» (красный индикатор точки)
408
+ - **Шаг 8 (генерация сводки):**
409
+ - 0-5s: Без индикатора (ощущается мгновенным)
410
+ - 5-30s: Появляется progress bar («Генерация сводки…»)
411
+ - 30-60s: Потоковая загрузка раздел за разделом (темы первыми, action items последними как правило)
412
+ - 60s+: Переход в async-режим («Занимает больше обычного пришлём email»)
413
+ - **Шаг 10 (загрузка редактора):** Skeleton screen с заполнителями текста за ~300ms
414
+
415
+ ## Exit Points
416
+
417
+ ### Успешные выходы
418
+ - **Подтверждённая сводка** (Шаг 11A): перенаправление на просмотр истории 1:1 с зелёным toast
419
+ - **Сохранён черновик и покинул** (прерывание шага 11B): состояние сохранено, возобновление через уведомление
420
+
421
+ ### Выходы-отказы
422
+ - **Закрыл модальное окно встречи до готовности сводки** (Шаги 7-8): сводка генерируется в фоне, пользователь получает уведомление
423
+ - **Покинул проверку без подтверждения**: черновик сохранён; email-напоминание через 3 дня
424
+
425
+ ### Выходы при сбое
426
+ - **AI недоступен, переключение на ручной режим** (ошибка 4): пользователь продолжает с флоу ручных заметок; встреча всё равно считается
427
+ - **Переключение при отклонении разрешения микрофона** (ошибка 1): только ручные заметки; AI-артефакты не создаются
428
+
429
+ ## Metrics Instrumentation
430
+
431
+ ### События на каждый шаг
432
+ - `ai_toggle_enabled` — Шаг 2: свойства `{meeting_id, user_id, org_policy}`
433
+ - `meeting_started` Шаг 3: `{ai_enabled, mic_permission_status}`
434
+ - `meeting_ended` — Шаг 7: `{duration, manual_notes_chars, participants_count}`
435
+ - `ai_summary_generated` — Шаг 8: `{latency, provider, confidence_avg, summary_length}`
436
+ - `summary_review_opened` Шаг 9: `{time_from_meeting_end}`
437
+ - `summary_edited` — Шаг 11B: `{sections_edited, char_delta, time_in_edit}`
438
+ - `summary_approved` — Шаг 11A: `{time_to_approve, edit_count}`
439
+
440
+ ### Метрики воронки
441
+ ```
442
+ Начата AI-встреча (Шаг 3) 100%
443
+
444
+
445
+ Сводка сгенерирована (Шаг 8) 92% (8% потеряно: микрофон отклонён, слишком коротко, сбой потока)
446
+
447
+
448
+ Сводка просмотрена (Шаг 10, открыто) 87% (5% непросмотрено через 7 дней)
449
+
450
+
451
+ Сводка подтверждена (Шаг 11A) 78% (9% осталось в черновике, 82% просмотренных = подтверждено)
452
+ ```
453
+
454
+ ### Метрики качества
455
+ - **Edit rate** = сводки отредактированные / просмотренные (цель: 30-50%)
456
+ - **Time-to-approve** = медианное время от генерации до подтверждения (цель: ≤2 мин)
457
+ - **Error rate** = неудачные сводки / всего попыток (цель: <2%)
458
+ - **P95 latency** = задержка генерации сводки (цель: ≤60s)
459
+
460
+ ## Diagram (Mermaid)
461
+
462
+ ```mermaid
463
+ flowchart TD
464
+ A[Менеджер просматривает страницу 1:1] --> B{AI toggle включён?}
465
+ B -->|Нет| Z1[Флоу ручных заметок]
466
+ B -->|Да, включён| C{Подчинённый дал согласие?}
467
+ C -->|Нет| D[Показать запрос согласия]
468
+ D --> E{Подчинённый принимает?}
469
+ E -->|Да| F
470
+ E -->|Нет| Z1
471
+ C -->|Да| F{Разрешение на микрофон?}
472
+ F -->|Отклонено| G[Fallback: только ручные заметки]
473
+ F -->|Предоставлено| H[Начать запись]
474
+ H --> I[Встреча в процессе]
475
+ I --> J{Завершить встречу}
476
+ J --> K[Генерировать сводку]
477
+ K --> L{Провайдер доступен?}
478
+ L -->|Нет, оба недоступны| M[Fallback: email позже]
479
+ L -->|Да| N{Встреча >=5 мин?}
480
+ N -->|Нет| O[Пропустить сводку]
481
+ N -->|Да| P[Показать UI проверки]
482
+ P --> Q{Действие менеджера}
483
+ Q -->|Редактировать + Подтвердить| R[Action items отслеживаются]
484
+ Q -->|Подтвердить сразу| R
485
+ Q -->|Оставить черновик| S[Напоминание через 3д]
486
+ Q -->|Отказаться| T[Истекает через 30д]
487
+ R --> U[Напоминание о следующем 1:1]
488
+ ```
489
+
490
+ > **Урок user-flow:** Полный документ flow объясняет, почему в AC для Story S2 существует **11 сценариев** — каждый decision point или error state — это сценарий. Сначала flow, затем AC — нельзя писать AC без понимания flow. **6 error states + 3 empty states + 3 loading states** для одного flow — это норма для production B2B — пользователи сталкиваются с граничными случаями в реальных условиях чаще, чем ожидается.
491
+ ```