@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.
- package/dist/__tests__/commonjs-dependencies.spec.d.ts +2 -0
- package/dist/__tests__/commonjs-dependencies.spec.d.ts.map +1 -0
- package/dist/__tests__/commonjs-dependencies.spec.js +82 -0
- package/dist/__tests__/commonjs-dependencies.spec.js.map +1 -0
- package/dist/command-utils/__tests__/parse-rewrites.spec.js +2 -2
- package/dist/command-utils/__tests__/parse-rewrites.spec.js.map +1 -1
- package/dist/command-utils/__tests__/warn-regex-rewrites.spec.js +2 -2
- package/dist/command-utils/__tests__/warn-regex-rewrites.spec.js.map +1 -1
- package/dist/command-utils/common-options.js +2 -2
- package/dist/command-utils/common-options.js.map +1 -1
- package/dist/command-utils/detect-upload-mode.js +2 -2
- package/dist/command-utils/detect-upload-mode.js.map +1 -1
- package/dist/command-utils/detect-upload-mode.spec.js +2 -2
- package/dist/command-utils/detect-upload-mode.spec.js.map +1 -1
- package/dist/command-utils/download-session.utils.js +2 -2
- package/dist/command-utils/download-session.utils.js.map +1 -1
- package/dist/command-utils/json-args.js +2 -2
- package/dist/command-utils/json-args.js.map +1 -1
- package/dist/command-utils/json-args.spec.js +2 -2
- package/dist/command-utils/json-args.spec.js.map +1 -1
- package/dist/command-utils/parse-container-env.js +2 -2
- package/dist/command-utils/parse-container-env.js.map +1 -1
- package/dist/command-utils/parse-rewrites.js +2 -2
- package/dist/command-utils/parse-rewrites.js.map +1 -1
- package/dist/command-utils/print-json.js +2 -2
- package/dist/command-utils/print-json.js.map +1 -1
- package/dist/command-utils/sentry.utils.js +2 -2
- package/dist/command-utils/sentry.utils.js.map +1 -1
- package/dist/command-utils/warn-regex-rewrites.js +2 -2
- package/dist/command-utils/warn-regex-rewrites.js.map +1 -1
- package/dist/commands/agent/agent-review-writes.command.spec.js +2 -2
- package/dist/commands/agent/agent-review-writes.command.spec.js.map +1 -1
- package/dist/commands/agent/build-git-options.js +2 -2
- package/dist/commands/agent/build-git-options.js.map +1 -1
- package/dist/commands/agent/build-git-options.spec.js +2 -2
- package/dist/commands/agent/build-git-options.spec.js.map +1 -1
- package/dist/commands/agent/coverage-columns.util.js +2 -2
- package/dist/commands/agent/coverage-columns.util.js.map +1 -1
- package/dist/commands/agent/create-diff-comment.command.js +2 -2
- package/dist/commands/agent/create-diff-comment.command.js.map +1 -1
- package/dist/commands/agent/diff-comment-write.utils.js +2 -2
- package/dist/commands/agent/diff-comment-write.utils.js.map +1 -1
- package/dist/commands/agent/diff-comments.command.js +2 -2
- package/dist/commands/agent/diff-comments.command.js.map +1 -1
- package/dist/commands/agent/diff-comments.command.spec.js +2 -2
- package/dist/commands/agent/diff-comments.command.spec.js.map +1 -1
- package/dist/commands/agent/ignore-diff.command.js +2 -2
- package/dist/commands/agent/ignore-diff.command.js.map +1 -1
- package/dist/commands/agent/index.js +2 -2
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent/js-coverage-diff.command.js +2 -2
- package/dist/commands/agent/js-coverage-diff.command.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.handler.spec.js +2 -2
- package/dist/commands/agent/js-coverage.command.handler.spec.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.js +2 -2
- package/dist/commands/agent/js-coverage.command.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.spec.js +2 -2
- package/dist/commands/agent/js-coverage.command.spec.js.map +1 -1
- package/dist/commands/agent/reject-diff.command.js +2 -2
- package/dist/commands/agent/reject-diff.command.js.map +1 -1
- package/dist/commands/agent/reject-diff.command.spec.js +2 -2
- package/dist/commands/agent/reject-diff.command.spec.js.map +1 -1
- package/dist/commands/agent/reply-to-diff-comment.command.js +2 -2
- package/dist/commands/agent/reply-to-diff-comment.command.js.map +1 -1
- package/dist/commands/agent/screenshot-dom-diff.command.js +2 -2
- package/dist/commands/agent/screenshot-dom-diff.command.js.map +1 -1
- package/dist/commands/agent/screenshot-image-files.command.js +2 -2
- package/dist/commands/agent/screenshot-image-files.command.js.map +1 -1
- package/dist/commands/agent/screenshot-image.command.js +2 -2
- package/dist/commands/agent/screenshot-image.command.js.map +1 -1
- package/dist/commands/agent/sessions.command.js +2 -2
- package/dist/commands/agent/sessions.command.js.map +1 -1
- package/dist/commands/agent/sessions.command.spec.js +2 -2
- package/dist/commands/agent/sessions.command.spec.js.map +1 -1
- package/dist/commands/agent/submit-feedback.command.js +2 -2
- package/dist/commands/agent/submit-feedback.command.js.map +1 -1
- package/dist/commands/agent/test-run-check.command.js +2 -2
- package/dist/commands/agent/test-run-check.command.js.map +1 -1
- package/dist/commands/agent/test-run-check.command.spec.js +2 -2
- package/dist/commands/agent/test-run-check.command.spec.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.js +2 -2
- package/dist/commands/agent/test-run-diffs.command.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.spec.js +2 -2
- package/dist/commands/agent/test-run-diffs.command.spec.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.js +2 -2
- package/dist/commands/agent/test-run-diffs.utils.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.spec.js +2 -2
- package/dist/commands/agent/test-run-diffs.utils.spec.js.map +1 -1
- package/dist/commands/agent/test-run-for-commit.command.js +2 -2
- package/dist/commands/agent/test-run-for-commit.command.js.map +1 -1
- package/dist/commands/agent/timeline.command.js +2 -2
- package/dist/commands/agent/timeline.command.js.map +1 -1
- package/dist/commands/agent/timeline.command.spec.js +2 -2
- package/dist/commands/agent/timeline.command.spec.js.map +1 -1
- package/dist/commands/agent/trigger-test-run.command.js +2 -2
- package/dist/commands/agent/trigger-test-run.command.js.map +1 -1
- package/dist/commands/agent/trigger-test-run.command.spec.js +2 -2
- package/dist/commands/agent/trigger-test-run.command.spec.js.map +1 -1
- package/dist/commands/agent/upload-build.command.js +2 -2
- package/dist/commands/agent/upload-build.command.js.map +1 -1
- package/dist/commands/all-commands.d.ts.map +1 -1
- package/dist/commands/all-commands.js +8 -6
- package/dist/commands/all-commands.js.map +1 -1
- package/dist/commands/auth/__tests__/get-project.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/get-project.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/list-projects.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/list-projects.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/login.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/login.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/logout.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/logout.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/set-project.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/set-project.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/whoami.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/whoami.command.spec.js.map +1 -1
- package/dist/commands/auth/get-project.command.js +2 -2
- package/dist/commands/auth/get-project.command.js.map +1 -1
- package/dist/commands/auth/index.js +2 -2
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/auth/list-projects.command.js +2 -2
- package/dist/commands/auth/list-projects.command.js.map +1 -1
- package/dist/commands/auth/login.command.js +2 -2
- package/dist/commands/auth/login.command.js.map +1 -1
- package/dist/commands/auth/logout.command.js +2 -2
- package/dist/commands/auth/logout.command.js.map +1 -1
- package/dist/commands/auth/set-project.command.js +2 -2
- package/dist/commands/auth/set-project.command.js.map +1 -1
- package/dist/commands/auth/whoami.command.js +2 -2
- package/dist/commands/auth/whoami.command.js.map +1 -1
- package/dist/commands/ci/__tests__/label-commit.utils.spec.js +2 -2
- package/dist/commands/ci/__tests__/label-commit.utils.spec.js.map +1 -1
- package/dist/commands/ci/__tests__/session-filter.utils.spec.js +2 -2
- package/dist/commands/ci/__tests__/session-filter.utils.spec.js.map +1 -1
- package/dist/commands/ci/agent-test.command.d.ts +2 -0
- package/dist/commands/ci/agent-test.command.d.ts.map +1 -1
- package/dist/commands/ci/agent-test.command.js +28 -3
- package/dist/commands/ci/agent-test.command.js.map +1 -1
- package/dist/commands/ci/agent-test.command.spec.d.ts +2 -0
- package/dist/commands/ci/agent-test.command.spec.d.ts.map +1 -0
- package/dist/commands/ci/agent-test.command.spec.js +133 -0
- package/dist/commands/ci/agent-test.command.spec.js.map +1 -0
- package/dist/commands/ci/deprecated-trigger-options.js +2 -2
- package/dist/commands/ci/deprecated-trigger-options.js.map +1 -1
- package/dist/commands/ci/index.js +2 -2
- package/dist/commands/ci/index.js.map +1 -1
- package/dist/commands/ci/label-commit.command.js +2 -2
- package/dist/commands/ci/label-commit.command.js.map +1 -1
- package/dist/commands/ci/label-commit.core.js +2 -2
- package/dist/commands/ci/label-commit.core.js.map +1 -1
- package/dist/commands/ci/label-commit.types.js +2 -2
- package/dist/commands/ci/label-commit.types.js.map +1 -1
- package/dist/commands/ci/label-commit.utils.js +2 -2
- package/dist/commands/ci/label-commit.utils.js.map +1 -1
- package/dist/commands/ci/prepare.command.js +2 -2
- package/dist/commands/ci/prepare.command.js.map +1 -1
- package/dist/commands/ci/resolve-git-options.js +2 -2
- package/dist/commands/ci/resolve-git-options.js.map +1 -1
- package/dist/commands/ci/run-local.command.js +2 -2
- package/dist/commands/ci/run-local.command.js.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js +2 -2
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.js +2 -2
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.js.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.js +2 -2
- package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.js.map +1 -1
- package/dist/commands/ci/run.command.js +2 -2
- package/dist/commands/ci/run.command.js.map +1 -1
- package/dist/commands/ci/session-filter.utils.js +2 -2
- package/dist/commands/ci/session-filter.utils.js.map +1 -1
- package/dist/commands/ci/start-tunnel.command.js +2 -2
- package/dist/commands/ci/start-tunnel.command.js.map +1 -1
- package/dist/commands/ci/trigger-test-run.core.js +2 -2
- package/dist/commands/ci/trigger-test-run.core.js.map +1 -1
- package/dist/commands/ci/trigger-test-run.types.js +2 -2
- package/dist/commands/ci/trigger-test-run.types.js.map +1 -1
- package/dist/commands/ci/upload-asset-chunk.command.js +2 -2
- package/dist/commands/ci/upload-asset-chunk.command.js.map +1 -1
- package/dist/commands/ci/upload-assets.command.js +2 -2
- package/dist/commands/ci/upload-assets.command.js.map +1 -1
- package/dist/commands/ci/upload-container.command.js +2 -2
- package/dist/commands/ci/upload-container.command.js.map +1 -1
- package/dist/commands/crawl.command.js +2 -2
- package/dist/commands/crawl.command.js.map +1 -1
- package/dist/commands/debug/clean-workspaces.js +2 -2
- package/dist/commands/debug/clean-workspaces.js.map +1 -1
- package/dist/commands/debug/index.js +2 -2
- package/dist/commands/debug/index.js.map +1 -1
- package/dist/commands/debug/present-workspace.js +2 -2
- package/dist/commands/debug/present-workspace.js.map +1 -1
- package/dist/commands/debug/project-worktree.js +2 -2
- package/dist/commands/debug/project-worktree.js.map +1 -1
- package/dist/commands/deprecated-aliases.js +2 -2
- package/dist/commands/deprecated-aliases.js.map +1 -1
- package/dist/commands/download/index.js +2 -2
- package/dist/commands/download/index.js.map +1 -1
- package/dist/commands/download/replay.command.js +2 -2
- package/dist/commands/download/replay.command.js.map +1 -1
- package/dist/commands/download/session.command.js +2 -2
- package/dist/commands/download/session.command.js.map +1 -1
- package/dist/commands/download/test-run.command.js +2 -2
- package/dist/commands/download/test-run.command.js.map +1 -1
- package/dist/commands/local/get-edited-files.utils.js +2 -2
- package/dist/commands/local/get-edited-files.utils.js.map +1 -1
- package/dist/commands/local/get-edited-files.utils.spec.js +2 -2
- package/dist/commands/local/get-edited-files.utils.spec.js.map +1 -1
- package/dist/commands/local/index.js +2 -2
- package/dist/commands/local/index.js.map +1 -1
- package/dist/commands/local/relevant-sessions.command.js +2 -2
- package/dist/commands/local/relevant-sessions.command.js.map +1 -1
- package/dist/commands/onboard/__tests__/build-context.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/build-context.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/build-context.spec.js +179 -0
- package/dist/commands/onboard/__tests__/build-context.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/check-vcs-link.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/check-vcs-link.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/check-vcs-link.spec.js +164 -0
- package/dist/commands/onboard/__tests__/check-vcs-link.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/codex-mcp.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/codex-mcp.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/codex-mcp.spec.js +73 -0
- package/dist/commands/onboard/__tests__/codex-mcp.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/detect-framework.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/detect-framework.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/detect-framework.spec.js +277 -0
- package/dist/commands/onboard/__tests__/detect-framework.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/git-repo-info.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/git-repo-info.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/git-repo-info.spec.js +109 -0
- package/dist/commands/onboard/__tests__/git-repo-info.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/inline-doc-constants.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/inline-doc-constants.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/inline-doc-constants.spec.js +157 -0
- package/dist/commands/onboard/__tests__/inline-doc-constants.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/install-skills.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/install-skills.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/install-skills.spec.js +158 -0
- package/dist/commands/onboard/__tests__/install-skills.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/materialize-workspace.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/materialize-workspace.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/materialize-workspace.spec.js +116 -0
- package/dist/commands/onboard/__tests__/materialize-workspace.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/resolve-app.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/resolve-app.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/resolve-app.spec.js +166 -0
- package/dist/commands/onboard/__tests__/resolve-app.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/safe-repo-fs.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/safe-repo-fs.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/safe-repo-fs.spec.js +137 -0
- package/dist/commands/onboard/__tests__/safe-repo-fs.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.js +286 -0
- package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.js.map +1 -0
- package/dist/commands/onboard/build-context.d.ts +16 -0
- package/dist/commands/onboard/build-context.d.ts.map +1 -0
- package/dist/commands/onboard/build-context.js +104 -0
- package/dist/commands/onboard/build-context.js.map +1 -0
- package/dist/commands/onboard/check-vcs-link.d.ts +14 -0
- package/dist/commands/onboard/check-vcs-link.d.ts.map +1 -0
- package/dist/commands/onboard/check-vcs-link.js +111 -0
- package/dist/commands/onboard/check-vcs-link.js.map +1 -0
- package/dist/commands/onboard/codex-mcp.d.ts +24 -0
- package/dist/commands/onboard/codex-mcp.d.ts.map +1 -0
- package/dist/commands/onboard/codex-mcp.js +302 -0
- package/dist/commands/onboard/codex-mcp.js.map +1 -0
- package/dist/commands/onboard/customer-agents.d.ts +9 -0
- package/dist/commands/onboard/customer-agents.d.ts.map +1 -0
- package/dist/commands/onboard/customer-agents.js +19 -0
- package/dist/commands/onboard/customer-agents.js.map +1 -0
- package/dist/commands/onboard/customer-agents.json +17 -0
- package/dist/commands/onboard/customer-docs.d.ts +21 -0
- package/dist/commands/onboard/customer-docs.d.ts.map +1 -0
- package/dist/commands/onboard/customer-docs.js +31 -0
- package/dist/commands/onboard/customer-docs.js.map +1 -0
- package/dist/commands/onboard/customer-docs.json +35 -0
- package/dist/commands/onboard/detect-framework.d.ts +26 -0
- package/dist/commands/onboard/detect-framework.d.ts.map +1 -0
- package/dist/commands/onboard/detect-framework.js +305 -0
- package/dist/commands/onboard/detect-framework.js.map +1 -0
- package/dist/commands/onboard/discover-apps.d.ts +21 -0
- package/dist/commands/onboard/discover-apps.d.ts.map +1 -0
- package/dist/commands/onboard/discover-apps.js +318 -0
- package/dist/commands/onboard/discover-apps.js.map +1 -0
- package/dist/commands/onboard/docs-urls.d.ts +11 -0
- package/dist/commands/onboard/docs-urls.d.ts.map +1 -0
- package/dist/commands/onboard/docs-urls.js +17 -0
- package/dist/commands/onboard/docs-urls.js.map +1 -0
- package/dist/commands/onboard/git-repo-info.d.ts +15 -0
- package/dist/commands/onboard/git-repo-info.d.ts.map +1 -0
- package/dist/commands/onboard/git-repo-info.js +84 -0
- package/dist/commands/onboard/git-repo-info.js.map +1 -0
- package/dist/commands/onboard/index.d.ts +18 -0
- package/dist/commands/onboard/index.d.ts.map +1 -0
- package/dist/commands/onboard/index.js +164 -0
- package/dist/commands/onboard/index.js.map +1 -0
- package/dist/commands/onboard/inline-doc-constants.d.ts +21 -0
- package/dist/commands/onboard/inline-doc-constants.d.ts.map +1 -0
- package/dist/commands/onboard/inline-doc-constants.js +238 -0
- package/dist/commands/onboard/inline-doc-constants.js.map +1 -0
- package/dist/commands/onboard/launch-agent.d.ts +65 -0
- package/dist/commands/onboard/launch-agent.d.ts.map +1 -0
- package/dist/commands/onboard/launch-agent.js +311 -0
- package/dist/commands/onboard/launch-agent.js.map +1 -0
- package/dist/commands/onboard/materialize-workspace.d.ts +68 -0
- package/dist/commands/onboard/materialize-workspace.d.ts.map +1 -0
- package/dist/commands/onboard/materialize-workspace.js +177 -0
- package/dist/commands/onboard/materialize-workspace.js.map +1 -0
- package/dist/commands/onboard/print-summary.d.ts +10 -0
- package/dist/commands/onboard/print-summary.d.ts.map +1 -0
- package/dist/commands/onboard/print-summary.js +49 -0
- package/dist/commands/onboard/print-summary.js.map +1 -0
- package/dist/commands/onboard/resolve-app.d.ts +21 -0
- package/dist/commands/onboard/resolve-app.d.ts.map +1 -0
- package/dist/commands/onboard/resolve-app.js +78 -0
- package/dist/commands/onboard/resolve-app.js.map +1 -0
- package/dist/commands/onboard/resolve-project.d.ts +14 -0
- package/dist/commands/onboard/resolve-project.d.ts.map +1 -0
- package/dist/commands/onboard/resolve-project.js +92 -0
- package/dist/commands/onboard/resolve-project.js.map +1 -0
- package/dist/commands/onboard/safe-repo-fs.d.ts +59 -0
- package/dist/commands/onboard/safe-repo-fs.d.ts.map +1 -0
- package/dist/commands/onboard/safe-repo-fs.js +266 -0
- package/dist/commands/onboard/safe-repo-fs.js.map +1 -0
- package/dist/commands/onboard/setup-agent-integrations.d.ts +43 -0
- package/dist/commands/onboard/setup-agent-integrations.d.ts.map +1 -0
- package/dist/commands/onboard/setup-agent-integrations.js +324 -0
- package/dist/commands/onboard/setup-agent-integrations.js.map +1 -0
- package/dist/commands/onboard/templates/CLAUDE.md +213 -0
- package/dist/commands/onboard/templates/agents/auth-setup.md +117 -0
- package/dist/commands/onboard/templates/agents/ci-setup.md +742 -0
- package/dist/commands/onboard/templates/agents/csp-setup.md +78 -0
- package/dist/commands/onboard/templates/agents/false-positive-prevention.md +268 -0
- package/dist/commands/onboard/templates/agents/feature-flag-setup.md +133 -0
- package/dist/commands/onboard/templates/agents/local-simulation-verification.md +96 -0
- package/dist/commands/onboard/templates/agents/persisted-graphql-queries.md +150 -0
- package/dist/commands/onboard/templates/agents/recorder-installation.md +194 -0
- package/dist/commands/onboard/templates/agents/replay-fetch-retry-compatibility.md +252 -0
- package/dist/commands/onboard/templates/agents/reviewer.md +788 -0
- package/dist/commands/onboard/templates/agents/service-worker-compatibility.md +254 -0
- package/dist/commands/onboard/templates/agents/session-context.md +133 -0
- package/dist/commands/onboard/templates/agents/shared-worker-compatibility.md +187 -0
- package/dist/commands/onboard/templates/docs/additional-guides/backend-recorder.ts +340 -0
- package/dist/commands/onboard/templates/docs/ci/not-yet-run-checks.ts +58 -0
- package/dist/commands/onboard/templates/docs/ci.ts +19 -0
- package/dist/commands/onboard/templates/docs/cloud-replay.ts +145 -0
- package/dist/commands/onboard/templates/docs/constants.ts +37 -0
- package/dist/commands/onboard/templates/docs/github-actions-v2.ts +859 -0
- package/dist/commands/onboard/templates/docs/how-to/auth/bypassing-auth.ts +27 -0
- package/dist/commands/onboard/templates/docs/how-to/auth/enabling-full-auth.ts +91 -0
- package/dist/commands/onboard/templates/docs/how-to/configure-ignore-patterns.ts +77 -0
- package/dist/commands/onboard/templates/docs/how-to/enable-source-coverage.ts +84 -0
- package/dist/commands/onboard/templates/docs/how-to/fix-false-positive-diffs.ts +156 -0
- package/dist/commands/onboard/templates/docs/how-to/link-bitbucket.ts +15 -0
- package/dist/commands/onboard/templates/docs/how-to/link-gitlab.ts +22 -0
- package/dist/commands/onboard/templates/docs/how-to/record-session-context.ts +129 -0
- package/dist/commands/onboard/templates/docs/how-to/recorder-script.ts +139 -0
- package/dist/commands/onboard/templates/docs/how-to/testing-feature-flags.ts +97 -0
- package/dist/commands/onboard/templates/docs/how-to/testing-multiple-apps-or-app-variants.ts +40 -0
- package/dist/commands/onboard/templates/docs/how-to/troubleshoot-auth.ts +58 -0
- package/dist/commands/onboard/templates/docs/how-to/troubleshoot-failed-simulations.ts +97 -0
- package/dist/commands/onboard/templates/docs/how-to/typescript-types.ts +51 -0
- package/dist/commands/onboard/templates/docs/how-to/window-meticulous-object.ts +685 -0
- package/dist/commands/onboard/templates/docs/onboarding-guide.ts +415 -0
- package/dist/commands/onboard/templates/docs/recorder-getting-started.ts +24 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/constants.ts +1 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/explanation-of-methods-to-add-recorder.ts +21 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/angular-instructions.ts +34 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/any-other-framework-instructions.ts +118 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/vue-instructions.ts +39 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/next-js-instructions.ts +49 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/nuxtjs-instructions.ts +68 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/rsbuild-instructions.ts +66 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/storybook-instructions.ts +59 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/sveltekit-instructions.ts +113 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/vite-instructions.ts +58 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-requirements.ts +51 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/steps-after-installing-recorder.ts +25 -0
- package/dist/commands/onboard/templates/docs/reference/cli-commands.ts +1324 -0
- package/dist/commands/onboard/templates/docs/session-recording/csp-exceptions.ts +17 -0
- package/dist/commands/onboard/templates/docs/session-recording/recorder-npm-dependency.ts +62 -0
- package/dist/commands/onboard/templates/docs-imports/src/lib/next/next.constants.ts +46 -0
- package/dist/commands/onboard/templates/docs-imports/src/lib/utils/internal-urls/docs-urls.utils.ts +254 -0
- package/dist/commands/onboard/templates/settings.json +14 -0
- package/dist/commands/project/index.js +2 -2
- package/dist/commands/project/index.js.map +1 -1
- package/dist/commands/project/show.command.js +2 -2
- package/dist/commands/project/show.command.js.map +1 -1
- package/dist/commands/project/upload-source.command.js +2 -2
- package/dist/commands/project/upload-source.command.js.map +1 -1
- package/dist/commands/record/__tests__/backend-dev-command.utils.spec.js +2 -2
- package/dist/commands/record/__tests__/backend-dev-command.utils.spec.js.map +1 -1
- package/dist/commands/record/__tests__/backend-sidecar.utils.spec.js +2 -2
- package/dist/commands/record/__tests__/backend-sidecar.utils.spec.js.map +1 -1
- package/dist/commands/record/__tests__/backend.command.spec.js +2 -2
- package/dist/commands/record/__tests__/backend.command.spec.js.map +1 -1
- package/dist/commands/record/__tests__/login.command.spec.js +2 -2
- package/dist/commands/record/__tests__/login.command.spec.js.map +1 -1
- package/dist/commands/record/__tests__/session.command.spec.js +2 -2
- package/dist/commands/record/__tests__/session.command.spec.js.map +1 -1
- package/dist/commands/record/backend-dev-command.utils.js +2 -2
- package/dist/commands/record/backend-dev-command.utils.js.map +1 -1
- package/dist/commands/record/backend-sidecar.utils.js +2 -2
- package/dist/commands/record/backend-sidecar.utils.js.map +1 -1
- package/dist/commands/record/backend.command.js +2 -2
- package/dist/commands/record/backend.command.js.map +1 -1
- package/dist/commands/record/index.js +2 -2
- package/dist/commands/record/index.js.map +1 -1
- package/dist/commands/record/login.command.js +2 -2
- package/dist/commands/record/login.command.js.map +1 -1
- package/dist/commands/record/session.command.js +2 -2
- package/dist/commands/record/session.command.js.map +1 -1
- package/dist/commands/replay-debugger.ui.js +2 -2
- package/dist/commands/replay-debugger.ui.js.map +1 -1
- package/dist/commands/replay.command.js +2 -2
- package/dist/commands/replay.command.js.map +1 -1
- package/dist/commands/schema.command.js +2 -2
- package/dist/commands/schema.command.js.map +1 -1
- package/dist/commands/schema.command.spec.js +2 -2
- package/dist/commands/schema.command.spec.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/main.js +2 -2
- package/dist/main.js.map +1 -1
- package/dist/utils/__tests__/handle-auth-failure.spec.js +2 -2
- package/dist/utils/__tests__/handle-auth-failure.spec.js.map +1 -1
- package/dist/utils/__tests__/project-selection-hint.spec.js +2 -2
- package/dist/utils/__tests__/project-selection-hint.spec.js.map +1 -1
- package/dist/utils/__tests__/resolve-project-identifier.spec.js +2 -2
- package/dist/utils/__tests__/resolve-project-identifier.spec.js.map +1 -1
- package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js +2 -2
- package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js.map +1 -1
- package/dist/utils/__tests__/select-project.spec.js +5 -4
- package/dist/utils/__tests__/select-project.spec.js.map +1 -1
- package/dist/utils/cli-user-error.js +2 -2
- package/dist/utils/cli-user-error.js.map +1 -1
- package/dist/utils/constants.js +2 -2
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/environment.utils.js +2 -2
- package/dist/utils/environment.utils.js.map +1 -1
- package/dist/utils/format-coverage-ranges.js +2 -2
- package/dist/utils/format-coverage-ranges.js.map +1 -1
- package/dist/utils/handle-auth-failure.js +2 -2
- package/dist/utils/handle-auth-failure.js.map +1 -1
- package/dist/utils/out-of-date-client-error.js +2 -2
- package/dist/utils/out-of-date-client-error.js.map +1 -1
- package/dist/utils/project-selection-hint.js +2 -2
- package/dist/utils/project-selection-hint.js.map +1 -1
- package/dist/utils/resolve-project-identifier.js +2 -2
- package/dist/utils/resolve-project-identifier.js.map +1 -1
- package/dist/utils/resolve-test-run-from-commit.js +2 -2
- package/dist/utils/resolve-test-run-from-commit.js.map +1 -1
- package/dist/utils/select-project.d.ts +9 -0
- package/dist/utils/select-project.d.ts.map +1 -1
- package/dist/utils/select-project.js +58 -15
- package/dist/utils/select-project.js.map +1 -1
- 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.
|