chore: stryker applies and verifies all mutants — config, report-only CI, docs - #103
Conversation
🤖 CodeAnt AI — Review Status
|
Thanks for using CodeAnt! 🎉We're free for open-source projects. if you're enjoying it, help us grow by sharing. Share on X · |
✅ Deploy Preview for moderaty ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Sequence DiagramThis PR makes Stryker the required path for applying and verifying mutants, while adding a report-only mutation check for every pull request. Survivors are reviewed from the generated report and verified as killed through a scoped Stryker rerun. sequenceDiagram
participant Developer
participant GitHub Actions
participant Stryker
participant Test Suite
participant Artifact
Developer->>GitHub Actions: Open or update pull request
GitHub Actions->>Stryker: Run mutations since main
Stryker->>Test Suite: Verify each generated mutant
Test Suite-->>Stryker: Mutation results
Stryker-->>GitHub Actions: HTML and JSON reports
GitHub Actions->>Artifact: Upload mutation reports
Developer->>Stryker: Rerun scoped survivors after adding tests
Stryker->>Test Suite: Confirm survivors become killed
Generated by CodeAnt AI |
Up to standards ✅🟢 Issues
|
There was a problem hiding this comment.
Review Complete
This PR successfully productionizes Stryker as the authoritative mutation testing workflow. The changes are well-structured and documented:
Configuration & Tooling:
stryker.config.jsonproperly configured with performance optimizations (coverageAnalysis: perTest,incremental: true) and machine-readable output (jsonreporter)- CI workflow correctly implements report-only mode with proper caching strategy and artifact uploads
.gitignoreappropriately excludes generated reports
Documentation:
- AGENTS.md, SKILL.md, and agent-mutation-loop.md consistently establish that Stryker applies and verifies ALL mutants
- Clear workflow guidance eliminates manual mutation application as a standard practice
- Exception handling for rare cases where Stryker's operators are insufficient is properly documented
The PR description verification claims are substantiated by the code changes. No blocking defects identified.
You can now have the agent implement changes and create commits directly on your pull request's source branch. Simply comment with /q followed by your request in natural language to ask the agent to make changes.
🏁 CodeAnt Quality Gate ResultsCommit: ✅ Overall Status: PASSEDQuality Gate Details
|
|
Warning Review limit reached
Next review available in: 43 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
📝 WalkthroughSummary by CodeRabbit
WalkthroughThe PR adds repository-specific Stryker configuration, a Git-diff scope utility, pull-request mutation CI, report handling, tests, and updated mutation-testing guidance. ChangesMutation testing workflow
Estimated code review effort: 3 (Moderate) | ~25 minutes Sequence Diagram(s)sequenceDiagram
participant PullRequest
participant GitHubActions
participant ScopeScript
participant Stryker
participant Reports
PullRequest->>GitHubActions: Trigger mutation workflow
GitHubActions->>ScopeScript: Compute changed mutable TypeScript files
ScopeScript-->>GitHubActions: Return mutation scope
GitHubActions->>Stryker: Run scoped report-only mutation test
Stryker->>Reports: Generate mutation reports
GitHubActions->>Reports: Upload reports
Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 2📝 Generate docstrings 💡
🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
PR Summary by QodoProductionize Stryker mutation workflow (config + report-only CI + docs)
AI Description
Diagram
High-Level Assessment
Files changed (6)
|
Code Review by Qodo
1.
|
…diff mutate scope (qodo)
Thanks for using CodeAnt! 🎉We're free for open-source projects. if you're enjoying it, help us grow by sharing. Share on X · |
Review triage — all bot comments addressed@qodo-code-review
@sonarqubecloud — Quality Gate failed: C Security Rating on New Code. Declined. The hotspots are the @codacy-production — up to standards, 0 issues. Nothing to fix. Gates on |
|
Question: "ignorestatic": true
@sonarqubecloud — quality gate failed: c security rating on new code. declined. the hotspots are the @codacy-production — up to standards, 0 issues. nothing to fix. gates on Answer: One remaining inconsistency should be fixed before merging:
The workflow correctly filters those files, but the documented local/CI examples do not, despite the docs claiming they use the same scope as the config. The examples should use the same exclusion expression as the workflow, or preferably call a shared script so the scope cannot drift. They should also handle an empty result explicitly; otherwise a docs-only invocation may execute The report-only behavior, global |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '--- changed files near cbf7fe7 ---'
git show --name-status --format='%H%n%s' cbf7fe7 -- 2>/dev/null || true
printf '%s\n' '--- candidate files ---'
fd -a -t f '^(stryker\.config\.json|mutation\.yml|AGENTS\.md|SKILL\.md|tools-by-language\.md)$' . 2>/dev/null || true
printf '%s\n' '--- configuration and workflow excerpts ---'
for f in stryker.config.json .github/workflows/mutation.yml AGENTS.md; do
if [ -f "$f" ]; then
echo "### $f"
rg -n -C 3 '"ignoreStatic"|coverageAnalysis|incremental|reporters|--mutate|git diff|--since|git fetch|mutation/' "$f" || true
fi
done
printf '%s\n' '--- SKILL.md and tools reference excerpts ---'
while IFS= read -r f; do
echo "### $f"
rg -n -C 3 -- '--since|--mutate|git diff|Stryker|ignoreStatic' "$f" || true
done < <(fd -a -t f '^(SKILL\.md|tools-by-language\.md)$' . 2>/dev/null)
printf '%s\n' '--- remaining StrykerJS --since references in tracked text ---'
rg -n -i -C 2 'stryker.{0,120}--since|--since.{0,120}stryker' \
-g '*.md' -g '*.yml' -g '*.yaml' -g '*.json' . || trueLength of output: 5176 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '--- stryker.config.json ---'
cat -n stryker.config.json
printf '%s\n' '--- mutation workflow ---'
cat -n .github/workflows/mutation.yml
printf '%s\n' '--- changed skill documentation: relevant excerpts ---'
for f in \
.agents/skills-src/mutation-testing/SKILL.md \
.agents/skills-src/mutation-testing/references/tools-by-language.md
do
echo "### $f"
rg -n -i -C 4 -- 'Stryker|--since|--mutate|git diff|ignoreStatic' "$f" || true
done
printf '%s\n' '--- remaining --since references in repository documentation/configuration ---'
rg -n -i -C 2 -- '--since' \
-g '*.md' -g '*.yml' -g '*.yaml' -g '*.json' . || trueLength of output: 19804
I found no blocking issue in the inspected changes. ✏️ Learnings added
You are interacting with an AI system. |
Thanks for the detailed triage. The fixes address both Qodo findings:
The documented commands, workflow behavior, and validation results are consistent with the updated implementation. No further Qodo action is needed from this review. |
…annot drift (codeant)
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | ✅ 13 (≤ 100 complexity) |
| Duplication | ✅ 0 (≤ 1 duplication) |
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
Review triage follow-up@CodeAnt-AI — your consistency catch was right on both counts, fixed in
Adopted your preferred fix: a shared script, One process note, self-inflicted and fixed: while verifying I accidentally popped a stale stash from another branch ( @coderabbitai — thanks for the independent verification run confirming the Holding for human review. |
|
Question: - the documented commands filtered only
adopted your preferred fix: a shared script, one process note, self-inflicted and fixed: while verifying i accidentally popped a stale stash from another branch ( @coderabbitai — thanks for the independent verification run confirming the holding for human review. Answer: npx stryker run --mutate "$(git diff --name-only main...HEAD | grep ...)"That command does not use
It also passes an empty string to Please update this generic reference example to call the shared scope script and guard the invocation, for example: SCOPE=$(node scripts/stryker-pr-scope.mjs) &&
if [ -n "$SCOPE" ]; then
npx stryker run --mutate "$SCOPE"
else
echo "No mutable source files changed; skipping Stryker."
fiAlternatively, keep the example as pseudocode but explicitly state that it is illustrative only and must not be used for this repository. As written, the docs still provide the exact unsafe workflow that this PR claims to eliminate. |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '--- follow-up commit summary ---'
git show --stat --oneline --decorate --no-renames 9f10007
printf '%s\n' '--- follow-up commit diff ---'
git show --format=fuller --find-renames --find-copies --no-ext-diff 9f10007 -- \
scripts/stryker-pr-scope.mjs \
scripts/stryker-pr-scope.test.mjs \
stryker.config.json \
.github/workflows/mutation.yml \
AGENTS.md \
.agents/skills-src/mutation-testing/SKILL.md \
.agents/skills-src/mutation-testing/references/tools-by-language.md
printf '%s\n' '--- source and test structure ---'
ast-grep outline scripts/stryker-pr-scope.mjs --items all 2>/dev/null || true
ast-grep outline scripts/stryker-pr-scope.test.mjs --items all 2>/dev/null || true
printf '%s\n' '--- remaining mutation scope invocations and exclusions ---'
rg -n -C 3 --glob '!*node_modules*' \
'stryker-pr-scope|--mutate|mutate["'\'']?\s*:|ignoreStatic|git diff --name-only' \
stryker.config.json .github/workflows/mutation.yml AGENTS.md .agents scripts 2>/dev/null || trueLength of output: 34022
The workflow and repository-specific PR instructions now use the shared script. The workflow skips Stryker when the computed scope is empty.
I found no blocking issue in the inspected follow-up changes. 🐇 ✏️ Learnings added
You are interacting with an AI system. |
The scope-consistency issue is fixed: the shared script correctly filters excluded files and skips empty scopes, and finding 1 is implemented. One item remains: finding 2 is still open. The workflow invokes |
PR Code Suggestions ✨Previous suggestions up to commit
|
| Category | Suggestion | Severity | Generated at (UTC) |
| Api mismatch |
Deleted or renamed source paths can be passed to Stryker as nonexistent mutation targetsThe scripts/stryker-pr-scope.mjs [59] Why it matters? 🤔
(Use Cmd/Ctrl + Click for best experience) Prompt for AI Agent 🤖This is a comment left during a code review.
**Path:** scripts/stryker-pr-scope.mjs
**Line:** 59:59
**Comment:**
*Api Mismatch: The `git diff --name-only` result includes deleted paths and the old side of renames. Those paths pass the filter and are forwarded to Stryker as mutation targets even though they no longer exist in the checkout, causing the mutation step to fail for PRs that delete or rename a mutable TypeScript file. Exclude deleted paths with an appropriate diff filter or verify that each path still exists before adding it to the scope.
Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix | Major | 2026-08-05 16:25
|
Latest suggestions up to commit 95ccd59
| Category | Suggestion | Severity | Generated at (UTC) |
| Logic error |
Local usage invokes Stryker with an empty mutation scopeThe documented command invokes Stryker whenever scope computation succeeds, scripts/stryker-pr-scope.mjs [34-35] Why it matters? 🤔
(Use Cmd/Ctrl + Click for best experience) Prompt for AI Agent 🤖This is a comment left during a code review.
**Path:** scripts/stryker-pr-scope.mjs
**Line:** 34:35
**Comment:**
*Logic Error: The documented command invokes Stryker whenever scope computation succeeds, including when the computed scope is empty. The surrounding contract explicitly requires callers to skip Stryker for an empty scope, but `--mutate ""` can result in a failed or unintended mutation invocation for docs-only or fully filtered changes. Add a non-empty guard to the example.
Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix | Major | 2026-08-05 16:37
|
| Api mismatch |
Relative script invocation prevents the CLI from computing and printing the mutation scopeThe executable check compares the absolute scripts/stryker-pr-scope.mjs [63] Why it matters? 🤔
(Use Cmd/Ctrl + Click for best experience) Prompt for AI Agent 🤖This is a comment left during a code review.
**Path:** scripts/stryker-pr-scope.mjs
**Line:** 63:63
**Comment:**
*Api Mismatch: The executable check compares the absolute `import.meta.url` with a URL built directly from the usually relative `process.argv[1]`. When invoked as documented with `node scripts/stryker-pr-scope.mjs`, the URLs do not match, so the CLI body never runs and produces no scope, causing local and workflow mutation runs to be skipped or receive an empty scope. Resolve `process.argv[1]` to an absolute file URL before comparing.
Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix | Major | 2026-08-05 16:37
|
…gnore-scripts + local bins in CI (codeant, sonarqube)
There was a problem hiding this comment.
Warning
CodeRabbit couldn't request changes on this pull request because it doesn't have sufficient GitHub permissions.
Please grant CodeRabbit Pull requests: Read and write permission and re-run the review.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.agents/skills-src/mutation-testing/references/agent-mutation-loop.md:
- Line 33: Update the validation instruction in the mutation-testing loop to
specify that Stryker’s --mutate option must target the production file
containing the target mutant, not the generated test file. Preserve the existing
scoped re-run and survived-to-killed validation requirements.
In @.agents/skills-src/mutation-testing/references/tools-by-language.md:
- Line 71: Replace both PR-mode Stryker examples with the shared scope helper
command node scripts/stryker-pr-scope.mjs, ensuring the generated mutation scope
excludes test files, testuser.ts, and excluded legal page loaders. Add a guard
so Stryker is not run when the helper returns an empty scope, avoiding an empty
--mutate value.
In @.agents/skills-src/mutation-testing/SKILL.md:
- Around line 74-76: Update the mutation-testing instruction to explicitly pass
the production file containing the suspected mutant to Stryker’s --mutate
option, rather than referring ambiguously to “that file” or the generated test
file. Preserve the existing guidance to inspect survivors and add or rerun kill
tests.
In `@AGENTS.md`:
- Around line 63-65: Update the Stryker CI description in AGENTS.md to state
that scope is computed for every pull request, while Stryker runs only when
mutable source files changed; mention that docs-only or fully filtered pull
requests receive a skip notice.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 7fdc1650-c711-43f9-9382-ea15907d62cb
📒 Files selected for processing (9)
.agents/skills-src/mutation-testing/SKILL.md.agents/skills-src/mutation-testing/references/agent-mutation-loop.md.agents/skills-src/mutation-testing/references/tools-by-language.md.github/workflows/mutation.yml.gitignoreAGENTS.mdscripts/stryker-pr-scope.mjsscripts/stryker-pr-scope.test.mjsstryker.config.json
| 4. **Classify** every survivor: genuine gap vs equivalent vs no-coverage (see surviving-mutant-triage.md). Discard equivalents before prompting — they poison the loop. | ||
| 5. **Prompt with the survivors**: for each genuine survivor, describe the mutant concretely and require a test that fails under it and passes on the original. | ||
| 6. **Validate generated tests** before adding them: syntax/compile clean, passes on the original code, and (sampled) fails under its target mutant. Discard tests that only pass in both worlds — they assert nothing about the mutation. | ||
| 6. **Validate generated tests** before adding them: syntax/compile clean, passes on the original code, and flips its target mutant survived→killed on a scoped Stryker re-run (`--mutate` the touched file; sample across rounds rather than re-running per test). Discard tests that only pass in both worlds — they assert nothing about the mutation. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Name the production mutation target explicitly.
Line 33 says to --mutate the touched file after generating a test. That wording can select the generated test file, while Stryker must mutate the production file containing the target mutant. Change the instruction to --mutate the production file containing the target mutant.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.agents/skills-src/mutation-testing/references/agent-mutation-loop.md at
line 33, Update the validation instruction in the mutation-testing loop to
specify that Stryker’s --mutate option must target the production file
containing the target mutant, not the generated test file. Preserve the existing
scoped re-run and survived-to-killed validation requirements.
| verdict. CI runs a report-only Stryker pass over the PR's changed source | ||
| files on every PR | ||
| (`.github/workflows/mutation.yml`, report uploaded as an artifact); wiring a |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Describe the empty-scope behavior accurately.
The workflow starts on every pull request, but the Stryker step runs only when steps.scope.outputs.mutate != ''. Docs-only and fully filtered pull requests receive a skip notice. Change the text to state that CI computes the scope on every pull request and runs Stryker only when mutable source files changed.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~65-~65: The official name of this software platform is spelled with a capital “H”.
Context: ... PR's changed source files on every PR (.github/workflows/mutation.yml, report uploade...
(GITHUB)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@AGENTS.md` around lines 63 - 65, Update the Stryker CI description in
AGENTS.md to state that scope is computed for every pull request, while Stryker
runs only when mutable source files changed; mention that docs-only or fully
filtered pull requests receive a skip notice.
Review triage follow-up@CodeAnt-AI — correct again: the generic reference still showed the raw @sonarqubecloud — I owe you a correction: I declined the C security rating as an unpinned-action-tags issue, but the actual findings were different and valid. Fixed in
Note for the maintainer: @qodo-code-review, @codacy-production, @netlify — nothing new from you this round; prior verdicts stand. Gates on |
|
Question: the generic reference still showed the raw @sonarqubecloud — i owe you a correction: i declined the c security rating as an unpinned-action-tags issue, but the actual findings were different and valid. fixed in
note for the maintainer: @qodo-code-review, @codacy-production, @netlify — nothing new from you this round; prior verdicts stand. gates on Answer: Blocking:
|
Thanks for the follow-up. The reported |
…yker invocation (qodo)
Review triage follow-up@qodo-code-review — understood: the invocation policy keys on the CLI invocation itself, and the config setting alone doesn't satisfy it. Fixed in the latest push: the workflow's Stryker step now passes Holding for human review. |
Thanks for using CodeAnt! 🎉We're free for open-source projects. if you're enjoying it, help us grow by sharing. Share on X · |
Thanks for the update. The reported changes address finding 2: the workflow and documented CLI invocations now pass |
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | ✅ 18 (≤ 100 complexity) |
| Duplication | ✅ 0 (≤ 1 duplication) |
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
…ileURLToPath/resolve)
Review triage follow-up@CodeAnt-AI (entry-point check finding) — valid in principle, fixed. On Node 24 Test-first per the repo rule: two subprocess regression tests in Holding for human review. |
|
Question: //${argv[1]}`) test-first per the repo rule: two subprocess regression tests in holding for human review. Answer: The The CI workflow also correctly:
One minor edge case remains: joining filenames with commas assumes changed paths cannot contain commas, since Stryker parses the |
|




User description
What
Makes Stryker the only way mutants are applied and verified in this repo, per the approved plan. Hand-editing source to simulate a mutation stops being a workflow and becomes a documented, PR-justified exception.
1.
stryker.config.jsonproductionized (plusreports/added to.gitignore— it was unignored while holding the baseline report and the incremental cache):coverageAnalysis: "perTest"— biggest speedup; only tests covering each mutant run.incremental: true— cache atreports/stryker-incremental.json.jsonreporter added —reports/mutation/mutation.jsonis the machine-readable survivor list for the agent loop.timeoutMS 10000,timeoutFactor 1.5,concurrency 4. Nothresholds(ratchet stays a maintainer-approved step).Verified: scoped run on
src/lib/relative-time.tsclean (51/53 killed, 96.23%), incremental rerun reuses the cache (4s → 2s),reports/mutation/mutation.html+mutation.jsonland where the CI artifact upload expects them.2. Report-only CI —
.github/workflows/mutation.yml: on every PR tomain, Stryker runs--since main --incremental(full-history checkout,svelte-kit syncfirst, incremental cache viaactions/cache) and uploadsreports/mutation/as an artifact. It never fails on survivors — there is nothresholds.break; the check only goes red if Stryker itself errors. Note: the workflow's first real run happens on this very PR.3. Docs eliminate the manual path:
AGENTS.mdrole section: Stryker applies and verifies ALL mutants; a kill is proven by survived→killed on a scoped re-run (that re-run IS the both-directions confirmation); the CI report run is documented.SKILL.md("In the Moderaty repo" section rewritten, also fixing the now-stale "bare config, no mutate globs" description): never hand-edit source to simulate a mutation; mental review escalates to a scopednpx stryker run --mutate, not a physical mutation.references/agent-mutation-loop.md: "Manual adversarial mode" → "Hand-applied mutants: exception only" (commit first, confirm red, revert immediately, justify in the PR); loop step 6 names the Stryker re-run as the validation mechanism.Installed skill re-synced to
~/.agents/skills/mutation-testing(diff-verified).Verification
npm run test— 519 passed (58 files);npm run check— 0/0.codacy-analysis analyzeon all changed files — 0 issues.Out of scope (per plan)
thresholds.breakgating, killing the baseline's survivors, scheduled full sweeps.CodeAnt-AI Description
Standardize mutation testing for pull requests with scoped, report-only checks
What Changed
Impact
✅ Scoped mutation feedback on pull requests✅ Faster repeat mutation runs✅ Consistent local and CI mutation results💡 Usage Guide
Checking Your Pull Request
Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.
Talking to CodeAnt AI
Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:
This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.
Example
Preserve Org Learnings with CodeAnt
You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:
This helps CodeAnt AI learn and adapt to your team's coding style and standards.
Example
Retrigger review
Ask CodeAnt AI to review the PR again, by typing:
Check Your Repository Health
To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.