diff --git a/.coderabbit.yaml b/.coderabbit.yaml new file mode 100644 index 000000000..133a329bc --- /dev/null +++ b/.coderabbit.yaml @@ -0,0 +1,127 @@ +# yaml-language-server: $schema=https://www.coderabbit.ai/integrations/schema.v2.json +# +# GENERATED by percy/browserstack-ai-harness-percy scripts/gen-coderabbit-config.mjs — +# regenerate rather than hand-edit the filePatterns list: +# node scripts/gen-coderabbit-config.mjs cli --out +# +# Points CodeRabbit at stack-domain-percy-cli, stack-domain-percy-web-sdks, stack-domain-percy-app-sdk in +# percy/browserstack-ai-harness-percy, the percy-org mirror of browserstack/browserstack-ai-harness +# (mirrored at c1778c4d29bf). CodeRabbit resolves cross-repo guideline +# references only inside the reviewed repo's own GitHub org, so it cannot read +# the harness itself. Files are read at the mirror's default branch. +# +# Everything else comes from the org config in percy/coderabbit; inheritance +# keeps it. Without `inheritance: true` this file would replace it wholesale. +# +# Budget: 50 guideline files per review. 0 already tracked here and +# auto-discovered (CLAUDE.md etc.), so 50 entries are available: +# rules 12, reviewer agents 6, domain stack 32, conventions 0 — 38 lower-priority file(s) left out. + +inheritance: true + +knowledge_base: + code_guidelines: + filePatterns: + # --- 1. Rules — domain stack, then stack-module-percy-shared + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/rules/api-design.md" + applyTo: "packages/cli-*/**,packages/*/src/**/*.js,packages/*/src/**/*.ts,packages/*/index.js,packages/*/index.d.ts" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/rules/commit-conventions.md" + applyTo: "**/*" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/rules/database-migrations.md" + applyTo: "packages/*/migrations/**,packages/*/db/**,packages/*/schema/**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/rules/frontend-components.md" + applyTo: "packages/dom/**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/rules/security.md" + applyTo: "packages/**,.percy.yml,packages/dom/**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-app-sdk/rules/api-design.md" + applyTo: "percy-appium-js/**,percy-appium-python/**,percy-appium-ruby/**,percy-appium-java/**,percy-appium-dotnet/**,percy-appium-wd/**,percy-xcui-swift/**,percy-maestro-app/**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-app-sdk/rules/commit-conventions.md" + applyTo: "percy-appium-js/**,percy-appium-python/**,percy-appium-ruby/**,percy-appium-java/**,percy-appium-dotnet/**,percy-appium-wd/**,percy-xcui-swift/**,percy-maestro-app/**,**/CHANGELOG.md,**/package.json,**/setup.py,**/version.py,**/pom.xml,**/*.gemspec,**/Package.swift,**/*.csproj" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-app-sdk/rules/frontend-components.md" + applyTo: "percy-maestro-app/percy/flows/**,percy-maestro-app/percy/scripts/**,percy-maestro-app/**/*.yaml,percy-maestro-app/**/*.yml" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-app-sdk/rules/security.md" + applyTo: "percy-appium-js/**,percy-appium-python/**,percy-appium-ruby/**,percy-appium-java/**,percy-appium-dotnet/**,percy-appium-wd/**,percy-xcui-swift/**,percy-maestro-app/**,**/.env*,**/*.gemspec,**/package.json,**/pom.xml,**/Package.swift" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-module-percy-shared/rules/change-validation-blast-radius.md" + applyTo: "**/*.conf,**/nginx*,**/*csp*,**/values.yaml,**/values.yml,**/templates/**/*.yaml,**/templates/**/*.yml,**/*.css,**/*.scss,config/routes.rb,cloudflare-worker/**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-module-percy-shared/rules/chokepoints.md" + applyTo: "app/**/*.rb,lib/**/*.rb,config/**/*.rb,db/**/*.rb" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-module-percy-shared/rules/sidekiq-cross-repo-queue-routing.md" + applyTo: "lib/percy/workloads/**/*.rb,lib/percy/hub_worker/**/*.rb,lib/percy/hub/**/*.rb,app/jobs/**/*.rb,bin/worker,config/sidekiq.yml" + # --- 2. Reviewer agents + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/agents/stack-percy-cli-code-reviewer.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/agents/stack-percy-cli-security-reviewer.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/agents/stack-percy-web-sdks-code-reviewer.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/agents/stack-percy-web-sdks-security-reviewer.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-app-sdk/agents/stack-percy-app-sdk-code-reviewer.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-app-sdk/agents/stack-percy-app-sdk-security-reviewer.md" + applyTo: "**" + # --- 3. Rest of the domain stack + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/CLAUDE.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/skills/stack:percy-cli-code-review.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/knowledge/DEPENDENCIES.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/knowledge/DEPLOYMENT.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/knowledge/ERROR-CATALOG.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/knowledge/FEATURE-FLAGS.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/knowledge/GLOSSARY.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/knowledge/learnings.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/knowledge/PACKAGE-MAP.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/knowledge/PERFORMANCE.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/knowledge/PRODUCT.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/knowledge/SETUP.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/knowledge/TESTING.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/agents/stack-percy-cli-feature-builder.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/agents/stack-percy-cli-version-bump.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/skills/stack:percy-cli-debugging.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-cli/skills/stack:percy-cli-feature-dev.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/CLAUDE.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/skills/stack:percy-web-sdks-code-review.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/knowledge/api-design.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/knowledge/commit-conventions.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/knowledge/database-migrations.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/knowledge/DEPENDENCIES.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/knowledge/DEPLOYMENT.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/knowledge/FEATURE-FLAGS.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/knowledge/flow-build-lifecycle.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/knowledge/flow-cli-sdk-handshake.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/knowledge/flow-percy-exec-lifecycle.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/knowledge/flow-shared-sdk-plumbing.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/knowledge/flow-snapshot-appium.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/knowledge/flow-snapshot-capybara.md" + applyTo: "**" + - files: "percy/browserstack-ai-harness-percy:stacks/stack-domain-percy-web-sdks/knowledge/flow-snapshot-cypress.md" + applyTo: "**"