@alwaysmeticulous/cli 2.326.1 → 2.328.0

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 (456) hide show
  1. package/dist/__tests__/commonjs-dependencies.spec.d.ts +2 -0
  2. package/dist/__tests__/commonjs-dependencies.spec.d.ts.map +1 -0
  3. package/dist/__tests__/commonjs-dependencies.spec.js +82 -0
  4. package/dist/__tests__/commonjs-dependencies.spec.js.map +1 -0
  5. package/dist/command-utils/__tests__/parse-rewrites.spec.js +2 -2
  6. package/dist/command-utils/__tests__/parse-rewrites.spec.js.map +1 -1
  7. package/dist/command-utils/__tests__/warn-regex-rewrites.spec.js +2 -2
  8. package/dist/command-utils/__tests__/warn-regex-rewrites.spec.js.map +1 -1
  9. package/dist/command-utils/common-options.js +2 -2
  10. package/dist/command-utils/common-options.js.map +1 -1
  11. package/dist/command-utils/detect-upload-mode.js +2 -2
  12. package/dist/command-utils/detect-upload-mode.js.map +1 -1
  13. package/dist/command-utils/detect-upload-mode.spec.js +2 -2
  14. package/dist/command-utils/detect-upload-mode.spec.js.map +1 -1
  15. package/dist/command-utils/download-session.utils.js +2 -2
  16. package/dist/command-utils/download-session.utils.js.map +1 -1
  17. package/dist/command-utils/json-args.js +2 -2
  18. package/dist/command-utils/json-args.js.map +1 -1
  19. package/dist/command-utils/json-args.spec.js +2 -2
  20. package/dist/command-utils/json-args.spec.js.map +1 -1
  21. package/dist/command-utils/parse-container-env.js +2 -2
  22. package/dist/command-utils/parse-container-env.js.map +1 -1
  23. package/dist/command-utils/parse-rewrites.js +2 -2
  24. package/dist/command-utils/parse-rewrites.js.map +1 -1
  25. package/dist/command-utils/print-json.js +2 -2
  26. package/dist/command-utils/print-json.js.map +1 -1
  27. package/dist/command-utils/sentry.utils.js +2 -2
  28. package/dist/command-utils/sentry.utils.js.map +1 -1
  29. package/dist/command-utils/warn-regex-rewrites.js +2 -2
  30. package/dist/command-utils/warn-regex-rewrites.js.map +1 -1
  31. package/dist/commands/agent/agent-review-writes.command.spec.js +2 -2
  32. package/dist/commands/agent/agent-review-writes.command.spec.js.map +1 -1
  33. package/dist/commands/agent/build-git-options.js +2 -2
  34. package/dist/commands/agent/build-git-options.js.map +1 -1
  35. package/dist/commands/agent/build-git-options.spec.js +2 -2
  36. package/dist/commands/agent/build-git-options.spec.js.map +1 -1
  37. package/dist/commands/agent/coverage-columns.util.js +2 -2
  38. package/dist/commands/agent/coverage-columns.util.js.map +1 -1
  39. package/dist/commands/agent/create-diff-comment.command.js +2 -2
  40. package/dist/commands/agent/create-diff-comment.command.js.map +1 -1
  41. package/dist/commands/agent/diff-comment-write.utils.js +2 -2
  42. package/dist/commands/agent/diff-comment-write.utils.js.map +1 -1
  43. package/dist/commands/agent/diff-comments.command.js +2 -2
  44. package/dist/commands/agent/diff-comments.command.js.map +1 -1
  45. package/dist/commands/agent/diff-comments.command.spec.js +2 -2
  46. package/dist/commands/agent/diff-comments.command.spec.js.map +1 -1
  47. package/dist/commands/agent/ignore-diff.command.js +2 -2
  48. package/dist/commands/agent/ignore-diff.command.js.map +1 -1
  49. package/dist/commands/agent/index.js +2 -2
  50. package/dist/commands/agent/index.js.map +1 -1
  51. package/dist/commands/agent/js-coverage-diff.command.js +2 -2
  52. package/dist/commands/agent/js-coverage-diff.command.js.map +1 -1
  53. package/dist/commands/agent/js-coverage.command.handler.spec.js +2 -2
  54. package/dist/commands/agent/js-coverage.command.handler.spec.js.map +1 -1
  55. package/dist/commands/agent/js-coverage.command.js +2 -2
  56. package/dist/commands/agent/js-coverage.command.js.map +1 -1
  57. package/dist/commands/agent/js-coverage.command.spec.js +2 -2
  58. package/dist/commands/agent/js-coverage.command.spec.js.map +1 -1
  59. package/dist/commands/agent/reject-diff.command.js +2 -2
  60. package/dist/commands/agent/reject-diff.command.js.map +1 -1
  61. package/dist/commands/agent/reject-diff.command.spec.js +2 -2
  62. package/dist/commands/agent/reject-diff.command.spec.js.map +1 -1
  63. package/dist/commands/agent/reply-to-diff-comment.command.js +2 -2
  64. package/dist/commands/agent/reply-to-diff-comment.command.js.map +1 -1
  65. package/dist/commands/agent/screenshot-dom-diff.command.js +2 -2
  66. package/dist/commands/agent/screenshot-dom-diff.command.js.map +1 -1
  67. package/dist/commands/agent/screenshot-image-files.command.js +2 -2
  68. package/dist/commands/agent/screenshot-image-files.command.js.map +1 -1
  69. package/dist/commands/agent/screenshot-image.command.js +2 -2
  70. package/dist/commands/agent/screenshot-image.command.js.map +1 -1
  71. package/dist/commands/agent/sessions.command.js +2 -2
  72. package/dist/commands/agent/sessions.command.js.map +1 -1
  73. package/dist/commands/agent/sessions.command.spec.js +2 -2
  74. package/dist/commands/agent/sessions.command.spec.js.map +1 -1
  75. package/dist/commands/agent/submit-feedback.command.js +2 -2
  76. package/dist/commands/agent/submit-feedback.command.js.map +1 -1
  77. package/dist/commands/agent/test-run-check.command.js +2 -2
  78. package/dist/commands/agent/test-run-check.command.js.map +1 -1
  79. package/dist/commands/agent/test-run-check.command.spec.js +2 -2
  80. package/dist/commands/agent/test-run-check.command.spec.js.map +1 -1
  81. package/dist/commands/agent/test-run-diffs.command.js +2 -2
  82. package/dist/commands/agent/test-run-diffs.command.js.map +1 -1
  83. package/dist/commands/agent/test-run-diffs.command.spec.js +2 -2
  84. package/dist/commands/agent/test-run-diffs.command.spec.js.map +1 -1
  85. package/dist/commands/agent/test-run-diffs.utils.js +2 -2
  86. package/dist/commands/agent/test-run-diffs.utils.js.map +1 -1
  87. package/dist/commands/agent/test-run-diffs.utils.spec.js +2 -2
  88. package/dist/commands/agent/test-run-diffs.utils.spec.js.map +1 -1
  89. package/dist/commands/agent/test-run-for-commit.command.js +2 -2
  90. package/dist/commands/agent/test-run-for-commit.command.js.map +1 -1
  91. package/dist/commands/agent/timeline.command.js +2 -2
  92. package/dist/commands/agent/timeline.command.js.map +1 -1
  93. package/dist/commands/agent/timeline.command.spec.js +2 -2
  94. package/dist/commands/agent/timeline.command.spec.js.map +1 -1
  95. package/dist/commands/agent/trigger-test-run.command.js +2 -2
  96. package/dist/commands/agent/trigger-test-run.command.js.map +1 -1
  97. package/dist/commands/agent/trigger-test-run.command.spec.js +2 -2
  98. package/dist/commands/agent/trigger-test-run.command.spec.js.map +1 -1
  99. package/dist/commands/agent/upload-build.command.js +2 -2
  100. package/dist/commands/agent/upload-build.command.js.map +1 -1
  101. package/dist/commands/all-commands.d.ts.map +1 -1
  102. package/dist/commands/all-commands.js +8 -6
  103. package/dist/commands/all-commands.js.map +1 -1
  104. package/dist/commands/auth/__tests__/get-project.command.spec.js +2 -2
  105. package/dist/commands/auth/__tests__/get-project.command.spec.js.map +1 -1
  106. package/dist/commands/auth/__tests__/list-projects.command.spec.js +2 -2
  107. package/dist/commands/auth/__tests__/list-projects.command.spec.js.map +1 -1
  108. package/dist/commands/auth/__tests__/login.command.spec.js +2 -2
  109. package/dist/commands/auth/__tests__/login.command.spec.js.map +1 -1
  110. package/dist/commands/auth/__tests__/logout.command.spec.js +2 -2
  111. package/dist/commands/auth/__tests__/logout.command.spec.js.map +1 -1
  112. package/dist/commands/auth/__tests__/set-project.command.spec.js +2 -2
  113. package/dist/commands/auth/__tests__/set-project.command.spec.js.map +1 -1
  114. package/dist/commands/auth/__tests__/whoami.command.spec.js +2 -2
  115. package/dist/commands/auth/__tests__/whoami.command.spec.js.map +1 -1
  116. package/dist/commands/auth/get-project.command.js +2 -2
  117. package/dist/commands/auth/get-project.command.js.map +1 -1
  118. package/dist/commands/auth/index.js +2 -2
  119. package/dist/commands/auth/index.js.map +1 -1
  120. package/dist/commands/auth/list-projects.command.js +2 -2
  121. package/dist/commands/auth/list-projects.command.js.map +1 -1
  122. package/dist/commands/auth/login.command.js +2 -2
  123. package/dist/commands/auth/login.command.js.map +1 -1
  124. package/dist/commands/auth/logout.command.js +2 -2
  125. package/dist/commands/auth/logout.command.js.map +1 -1
  126. package/dist/commands/auth/set-project.command.js +2 -2
  127. package/dist/commands/auth/set-project.command.js.map +1 -1
  128. package/dist/commands/auth/whoami.command.js +2 -2
  129. package/dist/commands/auth/whoami.command.js.map +1 -1
  130. package/dist/commands/ci/__tests__/label-commit.utils.spec.js +2 -2
  131. package/dist/commands/ci/__tests__/label-commit.utils.spec.js.map +1 -1
  132. package/dist/commands/ci/__tests__/session-filter.utils.spec.js +2 -2
  133. package/dist/commands/ci/__tests__/session-filter.utils.spec.js.map +1 -1
  134. package/dist/commands/ci/agent-test.command.d.ts +2 -0
  135. package/dist/commands/ci/agent-test.command.d.ts.map +1 -1
  136. package/dist/commands/ci/agent-test.command.js +28 -3
  137. package/dist/commands/ci/agent-test.command.js.map +1 -1
  138. package/dist/commands/ci/agent-test.command.spec.d.ts +2 -0
  139. package/dist/commands/ci/agent-test.command.spec.d.ts.map +1 -0
  140. package/dist/commands/ci/agent-test.command.spec.js +133 -0
  141. package/dist/commands/ci/agent-test.command.spec.js.map +1 -0
  142. package/dist/commands/ci/deprecated-trigger-options.js +2 -2
  143. package/dist/commands/ci/deprecated-trigger-options.js.map +1 -1
  144. package/dist/commands/ci/index.js +2 -2
  145. package/dist/commands/ci/index.js.map +1 -1
  146. package/dist/commands/ci/label-commit.command.js +2 -2
  147. package/dist/commands/ci/label-commit.command.js.map +1 -1
  148. package/dist/commands/ci/label-commit.core.js +2 -2
  149. package/dist/commands/ci/label-commit.core.js.map +1 -1
  150. package/dist/commands/ci/label-commit.types.js +2 -2
  151. package/dist/commands/ci/label-commit.types.js.map +1 -1
  152. package/dist/commands/ci/label-commit.utils.js +2 -2
  153. package/dist/commands/ci/label-commit.utils.js.map +1 -1
  154. package/dist/commands/ci/prepare.command.js +2 -2
  155. package/dist/commands/ci/prepare.command.js.map +1 -1
  156. package/dist/commands/ci/resolve-git-options.js +2 -2
  157. package/dist/commands/ci/resolve-git-options.js.map +1 -1
  158. package/dist/commands/ci/run-local.command.js +2 -2
  159. package/dist/commands/ci/run-local.command.js.map +1 -1
  160. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js +2 -2
  161. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js.map +1 -1
  162. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.js +2 -2
  163. package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.js.map +1 -1
  164. package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.js +2 -2
  165. package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.js.map +1 -1
  166. package/dist/commands/ci/run.command.js +2 -2
  167. package/dist/commands/ci/run.command.js.map +1 -1
  168. package/dist/commands/ci/session-filter.utils.js +2 -2
  169. package/dist/commands/ci/session-filter.utils.js.map +1 -1
  170. package/dist/commands/ci/start-tunnel.command.js +2 -2
  171. package/dist/commands/ci/start-tunnel.command.js.map +1 -1
  172. package/dist/commands/ci/trigger-test-run.core.js +2 -2
  173. package/dist/commands/ci/trigger-test-run.core.js.map +1 -1
  174. package/dist/commands/ci/trigger-test-run.types.js +2 -2
  175. package/dist/commands/ci/trigger-test-run.types.js.map +1 -1
  176. package/dist/commands/ci/upload-asset-chunk.command.js +2 -2
  177. package/dist/commands/ci/upload-asset-chunk.command.js.map +1 -1
  178. package/dist/commands/ci/upload-assets.command.js +2 -2
  179. package/dist/commands/ci/upload-assets.command.js.map +1 -1
  180. package/dist/commands/ci/upload-container.command.js +2 -2
  181. package/dist/commands/ci/upload-container.command.js.map +1 -1
  182. package/dist/commands/crawl.command.js +2 -2
  183. package/dist/commands/crawl.command.js.map +1 -1
  184. package/dist/commands/debug/clean-workspaces.js +2 -2
  185. package/dist/commands/debug/clean-workspaces.js.map +1 -1
  186. package/dist/commands/debug/index.js +2 -2
  187. package/dist/commands/debug/index.js.map +1 -1
  188. package/dist/commands/debug/present-workspace.js +2 -2
  189. package/dist/commands/debug/present-workspace.js.map +1 -1
  190. package/dist/commands/debug/project-worktree.js +2 -2
  191. package/dist/commands/debug/project-worktree.js.map +1 -1
  192. package/dist/commands/deprecated-aliases.js +2 -2
  193. package/dist/commands/deprecated-aliases.js.map +1 -1
  194. package/dist/commands/download/index.js +2 -2
  195. package/dist/commands/download/index.js.map +1 -1
  196. package/dist/commands/download/replay.command.js +2 -2
  197. package/dist/commands/download/replay.command.js.map +1 -1
  198. package/dist/commands/download/session.command.js +2 -2
  199. package/dist/commands/download/session.command.js.map +1 -1
  200. package/dist/commands/download/test-run.command.js +2 -2
  201. package/dist/commands/download/test-run.command.js.map +1 -1
  202. package/dist/commands/local/get-edited-files.utils.js +2 -2
  203. package/dist/commands/local/get-edited-files.utils.js.map +1 -1
  204. package/dist/commands/local/get-edited-files.utils.spec.js +2 -2
  205. package/dist/commands/local/get-edited-files.utils.spec.js.map +1 -1
  206. package/dist/commands/local/index.js +2 -2
  207. package/dist/commands/local/index.js.map +1 -1
  208. package/dist/commands/local/relevant-sessions.command.js +2 -2
  209. package/dist/commands/local/relevant-sessions.command.js.map +1 -1
  210. package/dist/commands/onboard/__tests__/build-context.spec.d.ts +2 -0
  211. package/dist/commands/onboard/__tests__/build-context.spec.d.ts.map +1 -0
  212. package/dist/commands/onboard/__tests__/build-context.spec.js +179 -0
  213. package/dist/commands/onboard/__tests__/build-context.spec.js.map +1 -0
  214. package/dist/commands/onboard/__tests__/check-vcs-link.spec.d.ts +2 -0
  215. package/dist/commands/onboard/__tests__/check-vcs-link.spec.d.ts.map +1 -0
  216. package/dist/commands/onboard/__tests__/check-vcs-link.spec.js +164 -0
  217. package/dist/commands/onboard/__tests__/check-vcs-link.spec.js.map +1 -0
  218. package/dist/commands/onboard/__tests__/codex-mcp.spec.d.ts +2 -0
  219. package/dist/commands/onboard/__tests__/codex-mcp.spec.d.ts.map +1 -0
  220. package/dist/commands/onboard/__tests__/codex-mcp.spec.js +73 -0
  221. package/dist/commands/onboard/__tests__/codex-mcp.spec.js.map +1 -0
  222. package/dist/commands/onboard/__tests__/detect-framework.spec.d.ts +2 -0
  223. package/dist/commands/onboard/__tests__/detect-framework.spec.d.ts.map +1 -0
  224. package/dist/commands/onboard/__tests__/detect-framework.spec.js +277 -0
  225. package/dist/commands/onboard/__tests__/detect-framework.spec.js.map +1 -0
  226. package/dist/commands/onboard/__tests__/git-repo-info.spec.d.ts +2 -0
  227. package/dist/commands/onboard/__tests__/git-repo-info.spec.d.ts.map +1 -0
  228. package/dist/commands/onboard/__tests__/git-repo-info.spec.js +109 -0
  229. package/dist/commands/onboard/__tests__/git-repo-info.spec.js.map +1 -0
  230. package/dist/commands/onboard/__tests__/inline-doc-constants.spec.d.ts +2 -0
  231. package/dist/commands/onboard/__tests__/inline-doc-constants.spec.d.ts.map +1 -0
  232. package/dist/commands/onboard/__tests__/inline-doc-constants.spec.js +157 -0
  233. package/dist/commands/onboard/__tests__/inline-doc-constants.spec.js.map +1 -0
  234. package/dist/commands/onboard/__tests__/install-skills.spec.d.ts +2 -0
  235. package/dist/commands/onboard/__tests__/install-skills.spec.d.ts.map +1 -0
  236. package/dist/commands/onboard/__tests__/install-skills.spec.js +158 -0
  237. package/dist/commands/onboard/__tests__/install-skills.spec.js.map +1 -0
  238. package/dist/commands/onboard/__tests__/materialize-workspace.spec.d.ts +2 -0
  239. package/dist/commands/onboard/__tests__/materialize-workspace.spec.d.ts.map +1 -0
  240. package/dist/commands/onboard/__tests__/materialize-workspace.spec.js +116 -0
  241. package/dist/commands/onboard/__tests__/materialize-workspace.spec.js.map +1 -0
  242. package/dist/commands/onboard/__tests__/resolve-app.spec.d.ts +2 -0
  243. package/dist/commands/onboard/__tests__/resolve-app.spec.d.ts.map +1 -0
  244. package/dist/commands/onboard/__tests__/resolve-app.spec.js +166 -0
  245. package/dist/commands/onboard/__tests__/resolve-app.spec.js.map +1 -0
  246. package/dist/commands/onboard/__tests__/safe-repo-fs.spec.d.ts +2 -0
  247. package/dist/commands/onboard/__tests__/safe-repo-fs.spec.d.ts.map +1 -0
  248. package/dist/commands/onboard/__tests__/safe-repo-fs.spec.js +137 -0
  249. package/dist/commands/onboard/__tests__/safe-repo-fs.spec.js.map +1 -0
  250. package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.d.ts +2 -0
  251. package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.d.ts.map +1 -0
  252. package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.js +286 -0
  253. package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.js.map +1 -0
  254. package/dist/commands/onboard/build-context.d.ts +16 -0
  255. package/dist/commands/onboard/build-context.d.ts.map +1 -0
  256. package/dist/commands/onboard/build-context.js +104 -0
  257. package/dist/commands/onboard/build-context.js.map +1 -0
  258. package/dist/commands/onboard/check-vcs-link.d.ts +14 -0
  259. package/dist/commands/onboard/check-vcs-link.d.ts.map +1 -0
  260. package/dist/commands/onboard/check-vcs-link.js +111 -0
  261. package/dist/commands/onboard/check-vcs-link.js.map +1 -0
  262. package/dist/commands/onboard/codex-mcp.d.ts +24 -0
  263. package/dist/commands/onboard/codex-mcp.d.ts.map +1 -0
  264. package/dist/commands/onboard/codex-mcp.js +302 -0
  265. package/dist/commands/onboard/codex-mcp.js.map +1 -0
  266. package/dist/commands/onboard/customer-agents.d.ts +9 -0
  267. package/dist/commands/onboard/customer-agents.d.ts.map +1 -0
  268. package/dist/commands/onboard/customer-agents.js +19 -0
  269. package/dist/commands/onboard/customer-agents.js.map +1 -0
  270. package/dist/commands/onboard/customer-agents.json +17 -0
  271. package/dist/commands/onboard/customer-docs.d.ts +21 -0
  272. package/dist/commands/onboard/customer-docs.d.ts.map +1 -0
  273. package/dist/commands/onboard/customer-docs.js +31 -0
  274. package/dist/commands/onboard/customer-docs.js.map +1 -0
  275. package/dist/commands/onboard/customer-docs.json +35 -0
  276. package/dist/commands/onboard/detect-framework.d.ts +26 -0
  277. package/dist/commands/onboard/detect-framework.d.ts.map +1 -0
  278. package/dist/commands/onboard/detect-framework.js +305 -0
  279. package/dist/commands/onboard/detect-framework.js.map +1 -0
  280. package/dist/commands/onboard/discover-apps.d.ts +21 -0
  281. package/dist/commands/onboard/discover-apps.d.ts.map +1 -0
  282. package/dist/commands/onboard/discover-apps.js +318 -0
  283. package/dist/commands/onboard/discover-apps.js.map +1 -0
  284. package/dist/commands/onboard/docs-urls.d.ts +11 -0
  285. package/dist/commands/onboard/docs-urls.d.ts.map +1 -0
  286. package/dist/commands/onboard/docs-urls.js +17 -0
  287. package/dist/commands/onboard/docs-urls.js.map +1 -0
  288. package/dist/commands/onboard/git-repo-info.d.ts +15 -0
  289. package/dist/commands/onboard/git-repo-info.d.ts.map +1 -0
  290. package/dist/commands/onboard/git-repo-info.js +84 -0
  291. package/dist/commands/onboard/git-repo-info.js.map +1 -0
  292. package/dist/commands/onboard/index.d.ts +18 -0
  293. package/dist/commands/onboard/index.d.ts.map +1 -0
  294. package/dist/commands/onboard/index.js +164 -0
  295. package/dist/commands/onboard/index.js.map +1 -0
  296. package/dist/commands/onboard/inline-doc-constants.d.ts +21 -0
  297. package/dist/commands/onboard/inline-doc-constants.d.ts.map +1 -0
  298. package/dist/commands/onboard/inline-doc-constants.js +238 -0
  299. package/dist/commands/onboard/inline-doc-constants.js.map +1 -0
  300. package/dist/commands/onboard/launch-agent.d.ts +65 -0
  301. package/dist/commands/onboard/launch-agent.d.ts.map +1 -0
  302. package/dist/commands/onboard/launch-agent.js +311 -0
  303. package/dist/commands/onboard/launch-agent.js.map +1 -0
  304. package/dist/commands/onboard/materialize-workspace.d.ts +68 -0
  305. package/dist/commands/onboard/materialize-workspace.d.ts.map +1 -0
  306. package/dist/commands/onboard/materialize-workspace.js +177 -0
  307. package/dist/commands/onboard/materialize-workspace.js.map +1 -0
  308. package/dist/commands/onboard/print-summary.d.ts +10 -0
  309. package/dist/commands/onboard/print-summary.d.ts.map +1 -0
  310. package/dist/commands/onboard/print-summary.js +49 -0
  311. package/dist/commands/onboard/print-summary.js.map +1 -0
  312. package/dist/commands/onboard/resolve-app.d.ts +21 -0
  313. package/dist/commands/onboard/resolve-app.d.ts.map +1 -0
  314. package/dist/commands/onboard/resolve-app.js +78 -0
  315. package/dist/commands/onboard/resolve-app.js.map +1 -0
  316. package/dist/commands/onboard/resolve-project.d.ts +14 -0
  317. package/dist/commands/onboard/resolve-project.d.ts.map +1 -0
  318. package/dist/commands/onboard/resolve-project.js +92 -0
  319. package/dist/commands/onboard/resolve-project.js.map +1 -0
  320. package/dist/commands/onboard/safe-repo-fs.d.ts +59 -0
  321. package/dist/commands/onboard/safe-repo-fs.d.ts.map +1 -0
  322. package/dist/commands/onboard/safe-repo-fs.js +266 -0
  323. package/dist/commands/onboard/safe-repo-fs.js.map +1 -0
  324. package/dist/commands/onboard/setup-agent-integrations.d.ts +43 -0
  325. package/dist/commands/onboard/setup-agent-integrations.d.ts.map +1 -0
  326. package/dist/commands/onboard/setup-agent-integrations.js +324 -0
  327. package/dist/commands/onboard/setup-agent-integrations.js.map +1 -0
  328. package/dist/commands/onboard/templates/CLAUDE.md +213 -0
  329. package/dist/commands/onboard/templates/agents/auth-setup.md +117 -0
  330. package/dist/commands/onboard/templates/agents/ci-setup.md +742 -0
  331. package/dist/commands/onboard/templates/agents/csp-setup.md +78 -0
  332. package/dist/commands/onboard/templates/agents/false-positive-prevention.md +268 -0
  333. package/dist/commands/onboard/templates/agents/feature-flag-setup.md +133 -0
  334. package/dist/commands/onboard/templates/agents/local-simulation-verification.md +96 -0
  335. package/dist/commands/onboard/templates/agents/persisted-graphql-queries.md +150 -0
  336. package/dist/commands/onboard/templates/agents/recorder-installation.md +194 -0
  337. package/dist/commands/onboard/templates/agents/replay-fetch-retry-compatibility.md +252 -0
  338. package/dist/commands/onboard/templates/agents/reviewer.md +788 -0
  339. package/dist/commands/onboard/templates/agents/service-worker-compatibility.md +254 -0
  340. package/dist/commands/onboard/templates/agents/session-context.md +133 -0
  341. package/dist/commands/onboard/templates/agents/shared-worker-compatibility.md +187 -0
  342. package/dist/commands/onboard/templates/docs/additional-guides/backend-recorder.ts +340 -0
  343. package/dist/commands/onboard/templates/docs/ci/not-yet-run-checks.ts +58 -0
  344. package/dist/commands/onboard/templates/docs/ci.ts +19 -0
  345. package/dist/commands/onboard/templates/docs/cloud-replay.ts +145 -0
  346. package/dist/commands/onboard/templates/docs/constants.ts +37 -0
  347. package/dist/commands/onboard/templates/docs/github-actions-v2.ts +859 -0
  348. package/dist/commands/onboard/templates/docs/how-to/auth/bypassing-auth.ts +27 -0
  349. package/dist/commands/onboard/templates/docs/how-to/auth/enabling-full-auth.ts +91 -0
  350. package/dist/commands/onboard/templates/docs/how-to/configure-ignore-patterns.ts +77 -0
  351. package/dist/commands/onboard/templates/docs/how-to/enable-source-coverage.ts +84 -0
  352. package/dist/commands/onboard/templates/docs/how-to/fix-false-positive-diffs.ts +156 -0
  353. package/dist/commands/onboard/templates/docs/how-to/link-bitbucket.ts +15 -0
  354. package/dist/commands/onboard/templates/docs/how-to/link-gitlab.ts +22 -0
  355. package/dist/commands/onboard/templates/docs/how-to/record-session-context.ts +129 -0
  356. package/dist/commands/onboard/templates/docs/how-to/recorder-script.ts +139 -0
  357. package/dist/commands/onboard/templates/docs/how-to/testing-feature-flags.ts +97 -0
  358. package/dist/commands/onboard/templates/docs/how-to/testing-multiple-apps-or-app-variants.ts +40 -0
  359. package/dist/commands/onboard/templates/docs/how-to/troubleshoot-auth.ts +58 -0
  360. package/dist/commands/onboard/templates/docs/how-to/troubleshoot-failed-simulations.ts +97 -0
  361. package/dist/commands/onboard/templates/docs/how-to/typescript-types.ts +51 -0
  362. package/dist/commands/onboard/templates/docs/how-to/window-meticulous-object.ts +685 -0
  363. package/dist/commands/onboard/templates/docs/onboarding-guide.ts +415 -0
  364. package/dist/commands/onboard/templates/docs/recorder-getting-started.ts +24 -0
  365. package/dist/commands/onboard/templates/docs/recorder-snippets/constants.ts +1 -0
  366. package/dist/commands/onboard/templates/docs/recorder-snippets/explanation-of-methods-to-add-recorder.ts +21 -0
  367. package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/angular-instructions.ts +34 -0
  368. package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/any-other-framework-instructions.ts +118 -0
  369. package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/vue-instructions.ts +39 -0
  370. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/next-js-instructions.ts +49 -0
  371. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/nuxtjs-instructions.ts +68 -0
  372. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/rsbuild-instructions.ts +66 -0
  373. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/storybook-instructions.ts +59 -0
  374. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/sveltekit-instructions.ts +113 -0
  375. package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/vite-instructions.ts +58 -0
  376. package/dist/commands/onboard/templates/docs/recorder-snippets/script-requirements.ts +51 -0
  377. package/dist/commands/onboard/templates/docs/recorder-snippets/steps-after-installing-recorder.ts +25 -0
  378. package/dist/commands/onboard/templates/docs/reference/cli-commands.ts +1324 -0
  379. package/dist/commands/onboard/templates/docs/session-recording/csp-exceptions.ts +17 -0
  380. package/dist/commands/onboard/templates/docs/session-recording/recorder-npm-dependency.ts +62 -0
  381. package/dist/commands/onboard/templates/docs-imports/src/lib/next/next.constants.ts +46 -0
  382. package/dist/commands/onboard/templates/docs-imports/src/lib/utils/internal-urls/docs-urls.utils.ts +254 -0
  383. package/dist/commands/onboard/templates/settings.json +14 -0
  384. package/dist/commands/project/index.js +2 -2
  385. package/dist/commands/project/index.js.map +1 -1
  386. package/dist/commands/project/show.command.js +2 -2
  387. package/dist/commands/project/show.command.js.map +1 -1
  388. package/dist/commands/project/upload-source.command.js +2 -2
  389. package/dist/commands/project/upload-source.command.js.map +1 -1
  390. package/dist/commands/record/__tests__/backend-dev-command.utils.spec.js +2 -2
  391. package/dist/commands/record/__tests__/backend-dev-command.utils.spec.js.map +1 -1
  392. package/dist/commands/record/__tests__/backend-sidecar.utils.spec.js +2 -2
  393. package/dist/commands/record/__tests__/backend-sidecar.utils.spec.js.map +1 -1
  394. package/dist/commands/record/__tests__/backend.command.spec.js +2 -2
  395. package/dist/commands/record/__tests__/backend.command.spec.js.map +1 -1
  396. package/dist/commands/record/__tests__/login.command.spec.js +2 -2
  397. package/dist/commands/record/__tests__/login.command.spec.js.map +1 -1
  398. package/dist/commands/record/__tests__/session.command.spec.js +2 -2
  399. package/dist/commands/record/__tests__/session.command.spec.js.map +1 -1
  400. package/dist/commands/record/backend-dev-command.utils.js +2 -2
  401. package/dist/commands/record/backend-dev-command.utils.js.map +1 -1
  402. package/dist/commands/record/backend-sidecar.utils.js +2 -2
  403. package/dist/commands/record/backend-sidecar.utils.js.map +1 -1
  404. package/dist/commands/record/backend.command.js +2 -2
  405. package/dist/commands/record/backend.command.js.map +1 -1
  406. package/dist/commands/record/index.js +2 -2
  407. package/dist/commands/record/index.js.map +1 -1
  408. package/dist/commands/record/login.command.js +2 -2
  409. package/dist/commands/record/login.command.js.map +1 -1
  410. package/dist/commands/record/session.command.js +2 -2
  411. package/dist/commands/record/session.command.js.map +1 -1
  412. package/dist/commands/replay-debugger.ui.js +2 -2
  413. package/dist/commands/replay-debugger.ui.js.map +1 -1
  414. package/dist/commands/replay.command.js +2 -2
  415. package/dist/commands/replay.command.js.map +1 -1
  416. package/dist/commands/schema.command.js +2 -2
  417. package/dist/commands/schema.command.js.map +1 -1
  418. package/dist/commands/schema.command.spec.js +2 -2
  419. package/dist/commands/schema.command.spec.js.map +1 -1
  420. package/dist/index.js +2 -2
  421. package/dist/index.js.map +1 -1
  422. package/dist/main.js +2 -2
  423. package/dist/main.js.map +1 -1
  424. package/dist/utils/__tests__/handle-auth-failure.spec.js +2 -2
  425. package/dist/utils/__tests__/handle-auth-failure.spec.js.map +1 -1
  426. package/dist/utils/__tests__/project-selection-hint.spec.js +2 -2
  427. package/dist/utils/__tests__/project-selection-hint.spec.js.map +1 -1
  428. package/dist/utils/__tests__/resolve-project-identifier.spec.js +2 -2
  429. package/dist/utils/__tests__/resolve-project-identifier.spec.js.map +1 -1
  430. package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js +2 -2
  431. package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js.map +1 -1
  432. package/dist/utils/__tests__/select-project.spec.js +5 -4
  433. package/dist/utils/__tests__/select-project.spec.js.map +1 -1
  434. package/dist/utils/cli-user-error.js +2 -2
  435. package/dist/utils/cli-user-error.js.map +1 -1
  436. package/dist/utils/constants.js +2 -2
  437. package/dist/utils/constants.js.map +1 -1
  438. package/dist/utils/environment.utils.js +2 -2
  439. package/dist/utils/environment.utils.js.map +1 -1
  440. package/dist/utils/format-coverage-ranges.js +2 -2
  441. package/dist/utils/format-coverage-ranges.js.map +1 -1
  442. package/dist/utils/handle-auth-failure.js +2 -2
  443. package/dist/utils/handle-auth-failure.js.map +1 -1
  444. package/dist/utils/out-of-date-client-error.js +2 -2
  445. package/dist/utils/out-of-date-client-error.js.map +1 -1
  446. package/dist/utils/project-selection-hint.js +2 -2
  447. package/dist/utils/project-selection-hint.js.map +1 -1
  448. package/dist/utils/resolve-project-identifier.js +2 -2
  449. package/dist/utils/resolve-project-identifier.js.map +1 -1
  450. package/dist/utils/resolve-test-run-from-commit.js +2 -2
  451. package/dist/utils/resolve-test-run-from-commit.js.map +1 -1
  452. package/dist/utils/select-project.d.ts +9 -0
  453. package/dist/utils/select-project.d.ts.map +1 -1
  454. package/dist/utils/select-project.js +58 -15
  455. package/dist/utils/select-project.js.map +1 -1
  456. package/package.json +14 -12
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: csp-setup
3
+ description: Produces Content Security Policy exception instructions for the onboarding plan. Use when the reviewer detects CSP configuration in the customer's codebase.
4
+ tools: Read, Grep, Glob, Write
5
+ model: sonnet
6
+ ---
7
+
8
+ You are a Content Security Policy specialist for the Meticulous automated UI testing platform.
9
+
10
+ Your job is to scan the customer's codebase, read the reference docs, and produce a
11
+ self-contained "Add CSP Exceptions" section. Write the section to the output file path
12
+ provided in the prompt.
13
+
14
+ The reviewer's structured summary will be provided in the prompt that launches you.
15
+
16
+ ## Reference Docs
17
+
18
+ Read the Meticulous doc source file in `.claude/docs/`:
19
+
20
+ - `.claude/docs/session-recording/csp-exceptions.ts` -- lists the required CSP exceptions
21
+
22
+ Read this file to get the exact list of directive/value pairs that must be added. Do not
23
+ hardcode the list -- always read it from the doc in case it has been updated.
24
+
25
+ ## Background
26
+
27
+ If a customer has a strict Content Security Policy, the Meticulous recorder script will
28
+ be blocked from loading. This is a hard blocker -- no sessions will be recorded, and the
29
+ failure is completely silent (no error in the Meticulous dashboard, just zero sessions).
30
+
31
+ ## What to Investigate
32
+
33
+ 1. Read the reviewer's summary for CSP detection results.
34
+ 2. If CSP was detected, find the exact configuration:
35
+ - Search for `Content-Security-Policy` in meta tags, middleware, config files
36
+ - Check `next.config.js` / `next.config.ts` for `headers()` with CSP
37
+ - Check `vercel.json` for CSP headers
38
+ - Check `netlify.toml` or `_headers` for CSP
39
+ - Check for `helmet` middleware configuration in server code
40
+ 3. Read the existing CSP directives to understand what's already allowed.
41
+ 4. Determine the minimal additions needed based on the required exceptions from the docs.
42
+
43
+ ## What to Produce
44
+
45
+ Write your markdown section to the output file path provided in the prompt.
46
+
47
+ If CSP is detected, the file should contain:
48
+
49
+ ```
50
+ ## Step <N>: Add Content Security Policy Exceptions
51
+
52
+ <Brief explanation of what was detected>
53
+
54
+ ### Changes
55
+
56
+ <Unified diff showing the CSP additions>
57
+
58
+ ### Required CSP Additions
59
+
60
+ <Table of directive/value pairs from the docs>
61
+ ```
62
+
63
+ If CSP is NOT detected, write a brief note:
64
+
65
+ ```
66
+ ## Content Security Policy
67
+
68
+ No Content Security Policy was detected in your codebase. No changes are needed.
69
+ If you add a CSP in the future, you will need to add exceptions for the Meticulous
70
+ recorder -- see the Meticulous docs for details.
71
+ ```
72
+
73
+ Guidelines:
74
+
75
+ - Show the exact file and a unified diff with the CSP additions.
76
+ - If the recorder is gated to non-production environments, note that the CSP exceptions
77
+ can be similarly gated.
78
+ - Preserve the existing CSP directives -- only add the new domains, don't replace anything.
@@ -0,0 +1,268 @@
1
+ ---
2
+ name: false-positive-prevention
3
+ description: Detects non-determinism sources and produces false positive prevention instructions for the onboarding plan. Use after the reviewer has produced a codebase summary.
4
+ tools: Read, Grep, Glob, Write
5
+ model: sonnet
6
+ ---
7
+
8
+ You are a false-positive prevention specialist for the Meticulous automated UI testing platform.
9
+
10
+ Your job is to scan the customer's codebase for sources of non-determinism that cause
11
+ false positive diffs, and produce a self-contained "Prevent False Positive Diffs" section.
12
+ Write the section to the output file path provided in the prompt.
13
+
14
+ The reviewer's structured summary will be provided in the prompt that launches you.
15
+
16
+ ## Reference Docs
17
+
18
+ Read the Meticulous doc source files in `.claude/docs/`:
19
+
20
+ - `.claude/docs/how-to/fix-false-positive-diffs.ts` -- fixing false positive diffs
21
+ - `.claude/docs/how-to/window-meticulous-object.ts` -- window.Meticulous API reference
22
+
23
+ ## Background
24
+
25
+ False positives are the number 1 cause of churn after Meticulous setup. A "false positive"
26
+ is a visual diff that is not caused by the customer's code change but by non-determinism
27
+ in the rendering.
28
+
29
+ **What Meticulous handles automatically (no action needed):**
30
+
31
+ - **Dates and times** (client-side): Meticulous stubs `Date`, `Date.now()`, and timers.
32
+ - **Random values**: Meticulous's deterministic browser makes `Math.random()`,
33
+ `crypto.randomUUID()`, etc. produce the same values on every replay.
34
+ - **CSS/JS animations**: framer-motion, react-spring, GSAP, CSS keyframes, Tailwind
35
+ transitions — Meticulous controls timing to capture deterministic frames.
36
+ - **Loading spinners and skeletons**: Meticulous's timing control handles these.
37
+ - **Mapbox GL root**: Replays apply a built-in redaction for `div.mapboxgl-map` (see
38
+ `packages/replay-runner/src/user-interactions/utils/redact-ignored-elements.ts`). That
39
+ covers the default Mapbox map element only.
40
+
41
+ **What DOES need manual mitigation:** add the built-in **`meticulous-ignore`** class to the
42
+ smallest element that fully contains the flaky content. Meticulous auto-ignores any element
43
+ carrying `meticulous-ignore` during screenshot diffing — **no custom class and no
44
+ project-settings change is required.** The only exception is content injected by a
45
+ third-party script with **no element you control** (item 2), which instead needs a CSS
46
+ selector added to project settings.
47
+
48
+ 1. **Canvas / WebGL / Lottie animations**: Decorative animations rendered via `<canvas>`,
49
+ WebGL, or complex SVG that the deterministic browser cannot control frame-by-frame —
50
+ Lottie players, confetti / celebration effects, particle backgrounds, etc. Add
51
+ `meticulous-ignore` to the animation container.
52
+ 2. **Third-party widgets**: Chat widgets, analytics overlays, cookie banners. If the app
53
+ renders a container element you control, add `meticulous-ignore` to it. If the widget is
54
+ injected by an external script with no element you can edit, add its CSS selector to
55
+ **Elements to ignore** in project settings instead.
56
+ 3. **External / CDN images**: User avatars, profile photos, or other images whose content
57
+ may change between runs. Add `meticulous-ignore` to the image element (or its wrapper).
58
+ 4. **Server-side dates** (Next.js server components only): Server-rendered dates are not
59
+ stubbed because they run outside the browser.
60
+ 5. **Mapbox GL maps (`mapbox-gl`, `react-map-gl`)**: WebGL tiles and controls flake. Meticulous
61
+ applies a built-in redaction for the default `div.mapboxgl-map` root; when flaky pixels
62
+ extend beyond it (extra chrome, custom wrappers, multiple maps), add `meticulous-ignore` to
63
+ the map container (or a wrapper that covers the extra chrome).
64
+
65
+ ## What to Investigate
66
+
67
+ Scan the codebase for these patterns:
68
+
69
+ ### Dates and Times (Server-Side Only)
70
+
71
+ - Check if the app uses **Next.js Server Components**, **getServerSideProps**, or any
72
+ server-side rendering that bakes dates into HTML.
73
+ - Client-side date rendering does NOT need mitigation — Meticulous stubs `Date` and
74
+ `Date.now()` automatically.
75
+
76
+ ### Canvas / WebGL / Lottie Animations
77
+
78
+ Lottie players, confetti / celebration effects, particle backgrounds, and similar decorative
79
+ animations render via `<canvas>`, WebGL, or complex SVG that the deterministic browser cannot
80
+ control frame-by-frame. These are the animations that need a manual mitigation.
81
+
82
+ - Grep for `lottie-react`, `@lottiefiles`, `lottie-web`, `react-lottie` in package.json
83
+ - Grep for confetti / celebration libraries: `canvas-confetti`, `react-confetti`,
84
+ `react-canvas-confetti`, `tsparticles`, `react-rewards`
85
+ - Grep for `<Lottie`, `useLottie`, `<Player`, `confetti(`, `<Confetti` in component files
86
+ - List every such animation usage with its file path
87
+
88
+ **Note**: framer-motion, react-spring, GSAP, CSS keyframes, Tailwind transitions, loading
89
+ spinners, and skeleton screens are all handled by Meticulous's deterministic browser — do
90
+ NOT add the `meticulous-ignore` class to these.
91
+
92
+ ### External / CDN Images
93
+
94
+ - Grep for `<img` tags with `src` pointing to external domains (e.g., `https://`, `//`)
95
+ - Grep for Next.js `<Image` components with external `src` props
96
+ - Look for user avatar components loading from Gravatar, Cloudinary, imgix, or similar services
97
+ - Check for `next.config` `images.remotePatterns` or `images.domains` to find configured CDN hosts
98
+ - Look for product images, thumbnails, or profile pictures loaded from APIs or CDNs
99
+ - Check for Open Graph or social preview images fetched from external URLs
100
+
101
+ Focus on images whose content may change between test runs — user-generated content
102
+ (avatars, profile photos), dynamically served images, and images that depend on external
103
+ state. Static marketing assets on a CDN (logos, icons) are unlikely to change and can be skipped.
104
+
105
+ ### Third-Party Widgets
106
+
107
+ - Grep for chat widget scripts: `intercom`, `drift`, `crisp`, `hubspot`, `zendesk`
108
+ - Grep for analytics overlays that render visible UI
109
+ - Look for cookie consent banners: `cookiebot`, `onetrust`, `cookie-consent`
110
+
111
+ ### Mapbox GL / react-map-gl
112
+
113
+ - Grep `package.json` for `mapbox-gl`, `mapbox-gl-js`, `react-map-gl`, `@vis.gl/react-map-gl`
114
+ - Grep source for `mapboxgl`, `new mapboxgl.Map`, `Map` from `react-map-gl`, `react-map-gl`
115
+ - List each map instance with file path (every map container gets the `meticulous-ignore` class)
116
+
117
+ ## Mitigation Strategies
118
+
119
+ For each finding, recommend the appropriate mitigation:
120
+
121
+ ### For Dates/Times (Server Components Only)
122
+
123
+ Read the server-side rendering section of `fix-false-positive-diffs.ts` for the exact
124
+ solution. In brief: the customer should configure a custom header in their Meticulous
125
+ project settings using the **Simulated Date** template (Settings > Custom Request Headers),
126
+ then create a utility that reads this header when running as a Meticulous test. The doc
127
+ contains a ready-to-use `getCurrentDate()` code example.
128
+
129
+ Client-side date rendering does NOT need mitigation — Meticulous stubs `Date` and
130
+ `Date.now()` automatically.
131
+
132
+ ### For Canvas / WebGL / Lottie Animations
133
+
134
+ Add the built-in **`meticulous-ignore`** class to the container of each such animation
135
+ (Lottie player, confetti / celebration effect, particle background, etc.). Meticulous
136
+ ignores any element carrying `meticulous-ignore` during screenshot diffing automatically —
137
+ **no custom class and no project-settings change are required.** This is the simplest
138
+ mitigation for animations that should always be ignored.
139
+
140
+ Notes:
141
+
142
+ - Add `meticulous-ignore` to the smallest wrapper that fully contains the animation, so you
143
+ don't accidentally ignore surrounding UI you still want diffed.
144
+ - Do **not** invent a custom class for these animations — `meticulous-ignore` is the built-in
145
+ class and needs no follow-up dashboard configuration.
146
+ - Do **not** add any ignore class to framer-motion, react-spring, GSAP, CSS keyframes,
147
+ Tailwind transitions, loading spinners, or skeleton screens — Meticulous handles all of
148
+ these deterministically.
149
+
150
+ Show a unified diff for each animation element that needs the class added.
151
+
152
+ ### For External / CDN Images
153
+
154
+ Add the built-in **`meticulous-ignore`** class to each element displaying an external image
155
+ whose content may vary between runs (user avatars, profile photos, user-generated uploads,
156
+ favicons/icons fetched from a CDN or API, dynamically served images). Meticulous ignores any
157
+ element carrying `meticulous-ignore` automatically — **no custom class and no project-settings
158
+ change is required.**
159
+
160
+ Notes:
161
+
162
+ - Add the class to the image element itself (or the smallest wrapper that contains it), so you
163
+ don't accidentally ignore surrounding UI you still want diffed.
164
+ - If the same avatar/image component is reused in many places, adding `meticulous-ignore` once
165
+ at the shared component level covers every usage.
166
+ - Skip static assets that don't change between runs (logos, icons, marketing images served
167
+ from the app's own bundle).
168
+
169
+ Show a unified diff for each element that needs the class added.
170
+
171
+ ### For Third-Party Widgets
172
+
173
+ If the app renders a container element you control for the widget, add the built-in
174
+ **`meticulous-ignore`** class to it (no project-settings change needed). If the widget is
175
+ injected by a third-party script and there is **no element you control**, note the widget's
176
+ CSS selector so it can be added to the **Elements to ignore** list in Meticulous project
177
+ settings instead (see section E).
178
+
179
+ ### For Mapbox GL maps
180
+
181
+ Add the built-in **`meticulous-ignore`** class to the Mapbox map container (Meticulous also
182
+ applies a built-in redaction for the default `div.mapboxgl-map` root; the explicit class
183
+ covers extra chrome or wrappers that sit outside that root):
184
+
185
+ - **Vanilla `mapbox-gl`:** after `new mapboxgl.Map(...)`, call
186
+ `map.getContainer().classList.add('meticulous-ignore')` in a `load` handler, or add the
187
+ class to the element you pass as `container`.
188
+ - **`react-map-gl` / `@vis.gl/react-map-gl`:** add `className="meticulous-ignore"` on the map
189
+ component if it forwards the class to the map root, or wrap the map in a parent carrying
190
+ `meticulous-ignore` if flaky UI sits outside the Mapbox root.
191
+
192
+ No project-settings change is required — the `meticulous-ignore` class auto-ignores the element.
193
+
194
+ ## What to Produce
195
+
196
+ Write **one** file: the customer-facing section, to the output file path provided in the prompt.
197
+
198
+ ```
199
+ ## Step <N>: Prevent False Positive Diffs
200
+
201
+ <Brief explanation of what false positives are and why this matters>
202
+
203
+ ### A. Canvas / WebGL / Lottie Animations
204
+
205
+ **Searches performed:**
206
+ - [ ] Checked package.json for `lottie-react`, `@lottiefiles`, `lottie-web`, `react-lottie`
207
+ - [ ] Checked package.json for confetti / particle libs (`canvas-confetti`, `react-confetti`, `tsparticles`, `react-rewards`)
208
+ - [ ] Grepped for `<Lottie`, `useLottie`, `<Player`, `confetti(`, `<Confetti` in component files
209
+
210
+ **Findings:**
211
+ <List each animation (Lottie, confetti / celebration effect, particle background, etc.) with
212
+ its file path. For each, show a unified diff adding the built-in `meticulous-ignore` class to
213
+ the animation container — no custom class and no project-settings change is needed.
214
+ If none found, write "No canvas/WebGL/Lottie animations detected.">
215
+
216
+ **Note:** framer-motion, react-spring, GSAP, CSS keyframes, loading spinners, and skeleton
217
+ screens are all handled deterministically by Meticulous — no ignore class needed.
218
+
219
+ ### B. External / CDN Images
220
+
221
+ **Searches performed:**
222
+ - [ ] Grepped for `<img` and `<Image` with external `src` (https://, //)
223
+ - [ ] Checked next.config for `images.remotePatterns` or `images.domains`
224
+ - [ ] Looked for avatar, profile photo, or user-generated image components
225
+ - [ ] Checked for product thumbnails or dynamically served images from APIs/CDNs
226
+
227
+ **Findings:**
228
+ <List each external image element with file path and source domain. For each, show a unified
229
+ diff adding the built-in `meticulous-ignore` class to the image element (or its wrapper).
230
+ Skip static assets that don't change between runs (logos, icons, marketing images).
231
+ If no dynamic external images found, write "No external image false positive risks detected.">
232
+
233
+ ### C. Dates and Times (Server-Side Only)
234
+
235
+ <List any server-rendered dates/times with file paths. Show mitigation diffs if needed.
236
+ Client-side dates are auto-stubbed by Meticulous — only flag server-side rendering.
237
+ If none found, write "No server-side date rendering detected.">
238
+
239
+ ### D. Third-Party Widgets
240
+
241
+ <List any chat widgets, analytics overlays, or cookie banners. Add the `meticulous-ignore`
242
+ class to the widget container where the app renders one; for widgets injected by third-party
243
+ scripts with no element you control, note the CSS selector for section E instead.
244
+ If none found, write "No third-party widgets detected.">
245
+
246
+ ### E. Project Settings Recommendations
247
+
248
+ <Consolidated list of any CSS selectors that need to be added to "Elements to Ignore" in
249
+ project settings — only for third-party / script-injected elements where there is **no DOM
250
+ element you control** to add a `meticulous-ignore` class to (e.g. an analytics or
251
+ error-reporting overlay injected at runtime). Elements you can edit should use the
252
+ `meticulous-ignore` class instead and do not belong here. If there are none, write
253
+ "No project-settings ignore selectors needed — all mitigations use the meticulous-ignore class.">
254
+
255
+ ### F. Interactive maps (Mapbox GL)
256
+
257
+ **Searches performed:**
258
+ - [ ] Checked package.json for `mapbox-gl`, `react-map-gl`, `@vis.gl/react-map-gl`
259
+ - [ ] Grepped for `mapboxgl`, `new mapboxgl.Map`, `react-map-gl` imports
260
+
261
+ **Findings:**
262
+ <List each Mapbox map with file path. Show a unified diff adding the `meticulous-ignore` class
263
+ to the map container (see "For Mapbox GL maps" mitigation above). If no Mapbox usage found,
264
+ write "No Mapbox GL maps detected.">
265
+ ```
266
+
267
+ **You MUST include all subsections A through F.** For each subsection, either list findings
268
+ with diffs or explicitly state that nothing was found. Do not skip any subsection.
@@ -0,0 +1,133 @@
1
+ ---
2
+ name: feature-flag-setup
3
+ description: Produces feature flag integration instructions for the onboarding plan. Always dispatched — detects both third-party SDK and database/API-backed flags.
4
+ tools: Read, Grep, Glob, Write
5
+ model: sonnet
6
+ ---
7
+
8
+ You are a feature flag integration specialist for the Meticulous automated UI testing platform.
9
+
10
+ Your job is to scan the customer's codebase, read the reference docs, and produce a
11
+ self-contained "Configure Feature Flags" section. Write the section to the output file path
12
+ provided in the prompt.
13
+
14
+ The reviewer's structured summary will be provided in the prompt that launches you.
15
+
16
+ ## Reference Docs
17
+
18
+ Read the Meticulous doc source files in `.claude/docs/`:
19
+
20
+ - `.claude/docs/how-to/record-session-context.ts` -- **primary reference**. The "Recording
21
+ feature flags" section is the source of truth for the customer-facing rationale: the
22
+ recommended `recordFeatureFlag(name, value)` API, the recommendation to **loop over the
23
+ app's existing flag collection** (SDK snapshot, API response, or shared flag map) instead
24
+ of hardcoding a list, the recommendation to cover **both client-side and
25
+ server-evaluated** flags, and any guidance on when to re-record after login or a flag
26
+ refresh. Adapt every customer-facing claim from this doc rather than restating it.
27
+ - `.claude/docs/how-to/testing-feature-flags.ts` -- how Meticulous tests recorded flags
28
+ (network stubbing, the optional default-on-when-replaying-old-sessions trick).
29
+ - `.claude/docs/how-to/window-meticulous-object.ts` -- `window.Meticulous` API reference.
30
+
31
+ `recordFeatureFlag` is the dedicated API for this — never use `recordCustomValues` or
32
+ `recordCustomContext` for flag values.
33
+
34
+ TypeScript types for `window.Meticulous` are owned by the **recorder install** step, which
35
+ walks the customer through installing `@alwaysmeticulous/sdk-bundles-api` and augmenting
36
+ `Window` once for the whole project. Don't restate that setup in this step; the augmentation
37
+ already covers `recordFeatureFlag`. The customer-facing
38
+ [Recording the context of a user session](`record-session-context.ts`) doc also points at
39
+ the TypeScript Types page if the customer needs a refresher.
40
+
41
+ ## What to Investigate
42
+
43
+ 1. Read the reviewer's summary for the detected feature flag provider and its **source**
44
+ (third-party SDK vs database/API-backed — these have different recording shapes).
45
+ 2. Search the codebase for how flags are evaluated, so you can pick the right place to add
46
+ the recording loop:
47
+ - **Statsig**: grep for `checkGate`, `getExperiment`, `useGate`, `useExperiment`. Look
48
+ for an `allEvaluations()` / snapshot helper to iterate.
49
+ - **LaunchDarkly**: grep for `variation`, `useFlags`, `useLDClient`. `useFlags()` already
50
+ returns the full flag map.
51
+ - **Unleash**: grep for `isEnabled`, `useFlag`. `getAllToggles()` enumerates flags.
52
+ - **PostHog**: grep for `isFeatureEnabled`, `useFeatureFlagEnabled`. `posthog.getAllFlags()`
53
+ returns the map.
54
+ - **GrowthBook**: grep for `useFeature`, `isOn`. The client exposes a features map.
55
+ - **Database/API-backed**: look for API calls that fetch flag configs (`/api/flags`,
56
+ `/me`, `/bootstrap`, …), React context providers that distribute flag values, or
57
+ custom hooks/utilities that read a shared flag map.
58
+ - **Custom**: look for wrapper functions around flag checks.
59
+ 3. Identify the place where flags are **first available** — SDK init resolves, the flags
60
+ API response arrives, the React provider's value populates. That's where the recording
61
+ loop goes. The public doc explains when an additional call site is worthwhile (login
62
+ callback, post-`identify` hook, flag-refresh effect); only add a second diff when the
63
+ codebase has a clearly separate refresh path.
64
+ 4. If the customer has both client-side SDK flags **and** server-evaluated flags returned
65
+ from the backend (e.g. a `features` field on `/me`), produce a recording loop for each
66
+ source rather than picking one — the docs explain the rationale; both kinds affect the
67
+ UI and need to be recorded.
68
+
69
+ ### No SDK wrapping or flag defaulting in the integration step
70
+
71
+ Meticulous captures and stubs network responses during replay, so feature flags are
72
+ automatically replayed with their original values. Don't add code that defaults
73
+ unknown/missing flags to `true` during replay in this step — that would enable features
74
+ that weren't active when the session was recorded and cause false diffs. The
75
+ `testing-feature-flags.ts` doc covers the (optional) default-on-when-old-session pattern as
76
+ a separate later improvement, not part of the initial setup.
77
+
78
+ ## What to Produce
79
+
80
+ Write your markdown section to the output file path provided in the prompt. It should contain:
81
+
82
+ ```
83
+ ## Step <N>: Configure Feature Flags
84
+
85
+ <One-paragraph framing — which provider was detected (SDK, API-backed, or both) and which
86
+ files this step touches. Link to the **Recording feature flags** section of
87
+ `record-session-context.ts` so the customer has the reference.>
88
+
89
+ ### Files to modify
90
+
91
+ - <list of files>
92
+
93
+ ### Record feature flags
94
+
95
+ <Unified diff adding a `for (const [name, value] of Object.entries(...))` loop calling
96
+ `window.Meticulous?.context.recordFeatureFlag(name, value)` at the point where flags first
97
+ become available. Iterate the **same data the app already uses** (SDK snapshot helper, API
98
+ response body, shared provider value) — never paste a hardcoded list of flag names into
99
+ the diff. If the app has both client-side SDK flags and server-evaluated flags, include a
100
+ loop for each source. Add a second diff only when the codebase has a clearly separate
101
+ flag-refresh path (login callback, post-`identify` hook, etc.).>
102
+
103
+ ### How It Works
104
+
105
+ <One short paragraph: Meticulous captures network responses during recording and stubs
106
+ them during replay, so flags replay with their original values. The recordFeatureFlag
107
+ calls let Meticulous track which flags were active so it can optimise session selection
108
+ across flag combinations.>
109
+
110
+ ### Verification
111
+
112
+ <How to verify flags work correctly during replay — e.g. replay a session that exercises a
113
+ flagged UI path and confirm it renders as it did when recorded.>
114
+ ```
115
+
116
+ > Don't add a "TypeScript types" subsection here. The recorder install step is the single
117
+ > place in the plan that introduces `@alwaysmeticulous/sdk-bundles-api` + `Window`
118
+ > augmentation for the whole project — `recordFeatureFlag` is already covered by it.
119
+
120
+ Guidelines:
121
+
122
+ - **Iterate, don't hardcode.** Drive every diff off the runtime structure the app already
123
+ uses. If the codebase only has flag _check_ sites (`checkGate('foo')`) with no snapshot
124
+ helper used anywhere, prefer adding a small adapter that calls the SDK's snapshot method
125
+ (e.g. `client.allEvaluations()` for Statsig) over listing flag names.
126
+ - **Cover all flag sources.** If the reviewer's summary lists both an SDK and a backend
127
+ flag map, produce loops for both — recording the same flag twice is a no-op when the
128
+ value matches.
129
+ - **This agent owns all feature flag concerns.** The separate `session-context` agent
130
+ skips feature flags.
131
+ - **No feature flags detected** → write a short paragraph saying no feature flag
132
+ configuration is needed today and that this step can be added later if flags are
133
+ introduced.
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: local-simulation-verification
3
+ description: Produces local simulation testing instructions for the onboarding plan. Use after the reviewer has produced a codebase summary.
4
+ tools: Read, Grep, Glob, Write
5
+ model: sonnet
6
+ ---
7
+
8
+ You are a local simulation verification specialist for the Meticulous automated UI testing platform.
9
+
10
+ Your job is to produce a self-contained "Verify Local Simulation" section that guides the
11
+ customer through running their first local replay. Write the section to the output file path
12
+ provided in the prompt.
13
+
14
+ The reviewer's structured summary will be provided in the prompt that launches you.
15
+
16
+ ## Reference Docs
17
+
18
+ Read the Meticulous doc source file in `.claude/docs/`:
19
+
20
+ - `.claude/docs/how-to/troubleshoot-failed-simulations.ts` -- troubleshooting failed simulations
21
+
22
+ ## Background
23
+
24
+ Local simulation is a critical verification step between installing the recorder and setting
25
+ up CI. It confirms that:
26
+
27
+ 1. The recorder is installed correctly and sessions are being recorded.
28
+ 2. Sessions can be replayed against the customer's local dev/preview environment.
29
+ 3. Screenshots are captured correctly.
30
+
31
+ The customer should not proceed to CI setup until local simulation works.
32
+
33
+ ## What to Investigate
34
+
35
+ 1. Read the reviewer's summary for the framework, package manager, and dev/start command.
36
+ 2. Check `package.json` scripts for:
37
+ - `dev` or `start` commands (for the dev server)
38
+ - `build` + `start` commands (for the production server)
39
+ - The port the app runs on (look for `PORT`, `-p`, `--port` in scripts)
40
+ 3. Check if the app requires environment variables to start (`.env.local`, `.env.example`).
41
+
42
+ ## What to Produce
43
+
44
+ Write your markdown section to the output file path provided in the prompt. It should contain:
45
+
46
+ ````
47
+ ## Step <N>: Verify Local Simulation
48
+
49
+ Local simulation replays a recorded session against your local development server. This
50
+ verifies that the recorder is working and that sessions can be replayed successfully.
51
+
52
+ ### Prerequisites
53
+
54
+ 1. Start your development server:
55
+ ```bash
56
+ <dev command, e.g. npm run dev>
57
+ ```
58
+
59
+ Your app should be running at `http://localhost:<port>`.
60
+
61
+ 2. Record a session: Open your app in the browser, navigate through a few pages, and
62
+ interact with key features. After 30 seconds or so, check the [Meticulous dashboard
63
+ Sessions tab]({meticulousSessionsUrl}) to confirm the session was recorded. (Read the
64
+ `meticulousSessionsUrl` value from `.claude/onboard-context.json` and substitute it in.)
65
+
66
+ 3. Copy the session ID from the dashboard.
67
+
68
+ ### Run the Simulation
69
+
70
+ ```bash
71
+ npx @alwaysmeticulous/cli simulate \
72
+ --sessionId "<SESSION_ID>" \
73
+ --appUrl "http://localhost:<port>"
74
+ ```
75
+
76
+ ### Success Criteria
77
+
78
+ - The command completes without errors.
79
+ - The simulation appears in the Meticulous dashboard.
80
+ - Screenshots look correct (match what you see in the browser).
81
+
82
+ ### Troubleshooting
83
+
84
+ <Common failure modes and how to fix them>
85
+ ````
86
+
87
+ Guidelines:
88
+
89
+ - Use the actual dev command and port from the customer's `package.json`.
90
+ - If the app requires environment variables, note that they should be set before running.
91
+ - Include common failure modes:
92
+ - **Auth redirects**: If the replay shows a login page, see the auth configuration step.
93
+ - **Blank page**: Use `--devTools` flag to open browser dev tools for debugging.
94
+ - **Network errors**: Check the Timeline tab in the Meticulous dashboard for failed requests.
95
+ - **Port conflicts**: Make sure the dev server is running and accessible.
96
+ - Mention the `--devTools` and `--headful` flags for debugging.