Version/1.6.0#18
Conversation
…d improves the plan
- Strong no-body enforcement when commit_body: false (no trailers, no Co-Authored-By)
- When true: body explains what/why, ends with Co-Authored-By: {ai} via AIContext
- Default changed from false to true in template and project
Co-Authored-By: Claude via AIContext
Invites the AI to surface questions, wrong assumptions, concerns, and better alternatives before moving forward. Also updates commit body rules to focus on "why" instead of "what" — the diff already shows what changed. Co-Authored-By: Claude Opus 4.6 (1M context) via AIContext
/code-health checks (cross-file duplication, consistency, structural metrics) absorbed into deep-review as Phase 12, scoped to `all` only. Both review skills now triage findings before saving so the review file's Recommendation column is always filled. Deep-review offers scope-appropriate follow-up (fix or create issues). Also fixes: missing standards.md in /review setup, duplicate setup in deep-review-criteria, unnumbered review-criteria output, missing `all` option in scope menu. Co-Authored-By: Claude Opus 4.6 (1M context) via AIContext
Minimal, tool-agnostic skill wrapping playwright-cli — headed mode by default for security, snapshot-first workflow, optional auth state persistence. Single prompt file with awareness line in standards.md so AI proactively suggests it for web UI work. Co-Authored-By: Claude via AIContext
Five prompts duplicated "Identify the active task (per process.md rules)" — an indirect reference that was easy to skip past. Now each references identify-task.md directly, which front-loads the IDE-opened file as signal #1 (the most reliable when present). Rules removed from process.md to keep a single source of truth. Co-Authored-By: Claude via AIContext
Extracts the "add step" workflow from /do-it into a standalone skill that stops after creating the step — no implementation. Useful when planning ahead or queuing work without immediately executing it. Co-Authored-By: Claude via AIContext
Crystallizes discussion into a task file without running a full /start-feature interview. Links to existing spec if applicable, updates worklog, suggests next actions. Co-Authored-By: Claude via AIContext
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
📝 WalkthroughWalkthroughCentralizes procedural prompts under Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant CLI as "bin/aicontext.js"
participant Scripts as ".aicontext/scripts/pr-reviews.js"
participant GH as "GitHub (gh API)"
participant Agent as "reviewer/subagents"
User->>CLI: invoke gh-review-check / gh-review-fix-loop
CLI->>Scripts: run pr-reviews.js (with config / skipPaths)
Scripts->>GH: query unresolved review threads (gh api)
GH-->>Scripts: return review threads
Scripts->>Agent: send threads for triage (fix/resolve/skip)
Agent-->>Scripts: provide actions/replies
Scripts->>GH: post replies / resolve threads as instructed
Scripts-->>CLI: write report to .aicontext/data/github-pr-reviews/
CLI-->>User: return report filename / summary
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Poem
✨ Finishing Touches🧪 Generate unit tests (beta)
|
There was a problem hiding this comment.
Actionable comments posted: 19
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.codex/skills/check-task/SKILL.md (1)
1-4:⚠️ Potential issue | 🟡 MinorMissing
disable-model-invocation: truein frontmatter.All
.claude/skills/*/SKILL.mdfiles and.codex/skills/aic-help/SKILL.mdincludedisable-model-invocation: trueto ensure the skill directly reads the prompt file without invoking the model first. This Codex skill should follow the same pattern for consistency.🔧 Proposed fix to add the flag
--- name: check-task description: Use when the user wants a task file analyzed before implementation so ambiguities, conflicts, and risky assumptions can be surfaced early. +disable-model-invocation: true ---🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.codex/skills/check-task/SKILL.md around lines 1 - 4, The SKILL.md frontmatter is missing the disable-model-invocation: true flag; update the YAML frontmatter at the top of the file (around the existing name/description keys) to include disable-model-invocation: true so the skill reads the prompt file directly before any model invocation.
🧹 Nitpick comments (10)
.gitignore (1)
31-33: Consider preserving the brief directory scaffold in VCS.Ignoring
.aicontext/data/brief/entirely can make fresh clones miss expected folder structure unless setup always recreates it. Consider keeping a.gitkeepexception for stability.Suggested `.gitignore` tweak
# Brief files (temporary, agent-to-agent knowledge transfer) .aicontext/data/brief/ +!.aicontext/data/brief/.gitkeep🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.gitignore around lines 31 - 33, The .gitignore entry ignores the entire .aicontext/data/brief/ directory which can cause new clones to miss the expected scaffold; update .gitignore to allow preserving the directory by adding an exception for a placeholder (e.g., add a .gitkeep inside .aicontext/data/brief/ and add an allow rule like "!/.aicontext/data/brief/.gitkeep") so the folder is tracked while other contents remain ignored—refer to the .gitignore entry for ".aicontext/data/brief/" and create the .gitkeep file in that directory.test/pr-reviews.test.js (1)
162-188: Consider makingOUTPUT_DIRconfigurable for better test isolation.The
nextIterationtests create a temp directory but cannot use it becauseOUTPUT_DIRis hardcoded in the module. The tests acknowledge this limitation in comments and only verify that the function returns a number without throwing.To properly test iteration logic (e.g., detecting existing files and incrementing), consider exporting a factory or accepting an optional
outputDirparameter.💡 Example approach
-function nextIteration(prNumber) { - fs.mkdirSync(OUTPUT_DIR, { recursive: true }); +function nextIteration(prNumber, outputDir = OUTPUT_DIR) { + fs.mkdirSync(outputDir, { recursive: true }); const pattern = new RegExp(`^pr-${prNumber}-(\\d+)\\.md$`); let max = 0; - for (const file of fs.readdirSync(OUTPUT_DIR)) { + for (const file of fs.readdirSync(outputDir)) { const match = file.match(pattern); if (match) max = Math.max(max, parseInt(match[1], 10)); } return max + 1; }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@test/pr-reviews.test.js` around lines 162 - 188, The tests can't isolate nextIteration because OUTPUT_DIR is hardcoded; update the implementation of nextIteration to accept an optional outputDir parameter (or export a factory like createNextIteration({ outputDir })) and fall back to the existing OUTPUT_DIR when not provided, then update the tests to pass the tempDir/.aicontext/data/github-pr-reviews path into nextIteration (or instantiate the factory with that path) so tests can create and inspect files in a real temp directory without relying on hardcoded paths; ensure function name nextIteration and the default constant OUTPUT_DIR remain usable for backward compatibility..aicontext/prompts/next-step.md (1)
3-5: Consider clarifying the actions when discoveries or plan updates are needed.Steps 3 and 4 pose questions but don't specify what to do when the answer is "yes." Step 5 only covers the "nothing to update" path. Consider adding guidance for the affirmative cases:
💡 Suggested clarification
3. Based on the results of the previous steps, did you discover any information that should be reflected in the task output? -4. Given your current knowledge, do you need to update or adjust the plan? -5. If nothing to update, begin implementing the next step + - If yes, update the task output section accordingly. +4. Given your current knowledge, do you need to update or adjust the plan? + - If yes, revise the remaining steps in the task file. +5. Begin implementing the next step.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/next-step.md around lines 3 - 5, Steps 3 and 4 in .aicontext/prompts/next-step.md ask whether discoveries or plan updates are needed but omit the follow-up actions; update the prompt to explicitly state what to do for affirmative answers: for "yes" to Step 3, instruct the agent to incorporate the new information into the task output, annotate what changed and why (provenance/context), and mark the output as updated; for "yes" to Step 4, instruct the agent to modify the plan (show the updated plan steps, highlight changes), re-evaluate priorities/dependencies, and loop back to re-run the next step with the revised plan; also change Step 5 to be conditional ("If nothing to update, begin implementing the next step") so the flow covers both branches..aicontext/prompts/prepare-release.md (1)
19-19: Use a fully qualified config path consistently.Lines 19/35/38 reference
release.mdwhile earlier steps use.aicontext/release.md. Keep one canonical path to avoid accidental reads/writes in the repo root.Suggested fix
-- Read the `## Notes` section in `release.md` for project-specific release rules +- Read the `## Notes` section in `.aicontext/release.md` for project-specific release rules -For each row in the `## Files to Update` table in `release.md`: +For each row in the `## Files to Update` table in `.aicontext/release.md`: -- When updating a changelog file, apply these writing principles by default. If `release.md` `## Notes` contains a `### Changelog Style` subsection, use that instead: +- When updating a changelog file, apply these writing principles by default. If `.aicontext/release.md` `## Notes` contains a `### Changelog Style` subsection, use that instead:Also applies to: 35-35, 38-38
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/prepare-release.md at line 19, Replace inconsistent references to the short path "release.md" with the fully qualified ".aicontext/release.md" inside the prompt file prepare-release.md so all occurrences (notably the mentions on lines shown in the review) use the canonical path; update the three string occurrences that currently read "release.md" to ".aicontext/release.md" so reads/writes always target the same config file..aicontext/templates/project.template.md (1)
90-90: Document thecommit_templatefield.The
commit_template: "description"field is set but not explained in the documentation section (lines 94-107). Consider adding a brief explanation of what template options are available and what "description" means.📝 Suggested documentation addition
Add documentation after line 97 or line 101:
- `per-task` — no commits during steps, commit once via `/finish-task` +**commit_template** — format of the commit subject line: +- `"description"` — uses step/task description as-is +- (other templates can be documented as they are implemented) + **commit_body** — what goes after the subject line:🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/templates/project.template.md at line 90, The commit_template field is present but undocumented; update the documentation section to describe the commit_template option (the commit_template: "description" value), listing available template options and explaining what "description" does (e.g., uses the project description as the commit message), include examples of other possible values and a short example usage — edit the docs near the existing template/configuration documentation and reference commit_template and the "description" value so readers know expected behavior..aicontext/templates/code-review.template.md (1)
8-12: Consider clarifying or consolidating the "Recommendation" and "Action" columns.The table includes both "Recommendation" and "Action" columns, which appear to track similar fix/skip decisions. If they serve distinct purposes (e.g., Recommendation = reviewer's suggestion, Action = team's decision), document this in the template header. Otherwise, consider consolidating them into a single column to reduce redundancy.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/templates/code-review.template.md around lines 8 - 12, The template's table currently has redundant "Recommendation" and "Action" columns; update the template (in .aicontext/templates/code-review.template.md) to either consolidate these into a single column (e.g., "Recommendation/Action") or explicitly document their distinct purposes in the template header (e.g., "Recommendation = reviewer's suggestion; Action = team's decision/implementation status"), and then adjust the example rows and any explanatory text to match the change so reviewers understand which column to use..aicontext/prompts/review-criteria.md (1)
24-47: Add an example of the APPROVED output format.Line 47 specifies that reviews with no significant issues should output
## Result: APPROVED, but the example output format (lines 26-43) only demonstrates the findings-present case. Including a brief example of the approved format would improve clarity and ensure consistent formatting when no issues are found.📋 Suggested addition to the Output section
After line 43, add:
**When no issues are found:** ## Result: APPROVED ### Positive - [anything well-implemented worth noting]🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/review-criteria.md around lines 24 - 47, Add an explicit example for the "no issues" case to the output examples by appending the suggested approved-format snippet after the existing findings-present example; include the exact text "## Result: APPROVED" followed by a "### Positive" section and a brief note (e.g., "- [anything well-implemented worth noting]") so the document shows both the findings-present format and the approved-format case (refer to the current example block that demonstrates numbered findings and the existing "## Result: APPROVED" token)..claude/skills/review/SKILL.md (1)
1-14: Note: Similar structure todeep-reviewskill.This skill and
.claude/skills/deep-review/SKILL.mdshare nearly identical logic (scope determination → conditional inline/agent execution). If this pattern is used across multiple review types, consider extracting the shared structure into a reusable template or documented pattern to reduce maintenance burden.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.claude/skills/review/SKILL.md around lines 1 - 14, The review skill duplicates the scope-determination and execution flow from .claude/skills/deep-review/SKILL.md; refactor by extracting the shared logic (the "Determine scope" and "Run review" sections) into a reusable template or include (e.g., a new common SKILL template or shared markdown fragment) and update both .claude/skills/review/SKILL.md and .claude/skills/deep-review/SKILL.md to reference that shared piece instead of duplicating text so maintenance is centralized..aicontext/prompts/add-step.md (1)
7-7: Use consistent path prefix for referenced prompt file.Line 7 references
identify-task.mdwithout a directory prefix, whilereview.mduses full paths like.aicontext/prompts/review-scope.mdand.aicontext/prompts/review-criteria.md. For consistency, use the full path:.aicontext/prompts/identify-task.md.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/add-step.md at line 7, Replace the relative reference "identify-task.md" with the full path ".aicontext/prompts/identify-task.md" in the add-step prompt so it matches the other prompt references (e.g., ".aicontext/prompts/review-scope.md" and ".aicontext/prompts/review-criteria.md"); specifically update the string "identify-task.md" in the content of add-step.md to ".aicontext/prompts/identify-task.md".docs/development-model.md (1)
7-9: Use language identifiers on fenced blocks for lint compliance.Add
text(ormd) to these fences to satisfy markdownlint MD040 consistently.Also applies to: 67-81, 85-95
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/development-model.md` around lines 7 - 9, Add a language identifier to each fenced code block like the one containing "Spec (what & why) → Task (how & progress) → Brief (working knowledge)" by changing the opening fence from ``` to ```text (or ```md) to satisfy markdownlint MD040; do the same for the other fenced blocks referenced (lines covering the three ranges noted) so every triple-backtick block has a language tag.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.aicontext/prompts/align-context.md:
- Line 9: Update the brief lookup path in the prompt text so it includes the
`.aicontext/` root to avoid incorrect file reads/writes: change the string that
currently references `data/brief/brief-{task-filename}` (the line "Read the task
file, spec (if linked), and brief (if it exists at
`data/brief/brief-{task-filename}`).") to use
`.aicontext/data/brief/brief-{task-filename}` so agents consistently resolve the
brief under the correct repository root.
In @.aicontext/prompts/check-task.md:
- Line 17: Update the derived brief path string from
"data/brief/brief-{task-filename}" to be rooted under the .aicontext directory
by changing it to ".aicontext/data/brief/brief-{task-filename}" wherever that
template or literal appears in .aicontext/prompts/check-task.md (search for the
exact "data/brief/brief-{task-filename}" token and replace it with
".aicontext/data/brief/brief-{task-filename}").
In @.aicontext/prompts/close-step.md:
- Around line 36-41: The fenced summary block in the prompt template (the
triple-backtick block that begins "Step N closed:") lacks a language tag and
triggers MD040; update that fence to include a language identifier (e.g., change
``` to ```text) so the block becomes a labeled text fence. Locate the fenced
block in .aicontext/prompts/close-step.md (the one containing "Step N closed:"
and the 4-line summary) and replace the opening backticks with ```text while
leaving the contents and closing backticks unchanged.
In @.aicontext/prompts/commit.md:
- Around line 17-20: The prompt currently reviews the staged diff before the
final staging steps, which can cause the commit message to drift; update the
flow so "Stage relevant files and commit" (the staging step) occurs before
"Review the staged diff — the commit message must describe only what is in the
diff" (the review step), and ensure the instruction to "Write a commit message
following the configured `commit_template`" remains after the review so the
message reflects the final staged diff.
In @.aicontext/prompts/create-task.md:
- Line 40: Update the next-action wording to use canonical skill invocation
syntax by replacing the bare tokens "run-steps" and "run-step" with the
slash-prefixed commands "/run-steps" and "/run-step" so the line reads that
users should invoke "/run-steps" to execute all steps automatically or
"/run-step" to start with the first one; modify the string in create-task prompt
where those tokens appear to ensure consistency with other skill invocations.
In @.aicontext/prompts/finish-task.md:
- Line 9: Update the brief path in the prompt text so it uses the repo-absolute
convention: replace the existing `data/brief/brief-{task-filename}` reference
with `.aicontext/data/brief/brief-{task-filename}` in the finish-task prompt
(the line that currently reads "Read the task file, spec (if linked), and brief
(if it exists at `data/brief/brief-{task-filename}`).") to match the other 1.6.0
prompts.
- Around line 50-55: The interactive prompt for when finish_action is unset is
missing the documented "commit+push+pr" choice; update the prompt text in
.aicontext/prompts/finish-task.md to include a fourth option `4. commit+push+pr
— commit, push, and open a PR` (or matching existing phrasing) so users can
manually select the full workflow, and ensure any downstream logic that reads
the `finish_action` value (the code paths handling `commit`, `commit+push`,
etc.) will accept and handle `commit+push+pr` as a valid selection.
In @.aicontext/prompts/gh-review-fix-loop.md:
- Around line 26-28: In .aicontext/prompts/gh-review-fix-loop.md update the
untyped fenced code blocks to include a language identifier by changing the
opening ``` to ```shell for each occurrence that wraps the commands (the blocks
containing "node .aicontext/scripts/pr-reviews.js", "node
.aicontext/scripts/pr-resolve.js --comment-id {id}", and the two "node
.aicontext/scripts/pr-reviews.js --count" examples) so markdownlint MD040 is
satisfied; leave the block contents unchanged and only modify the fence markers
to ```shell.
In @.aicontext/prompts/prepare-release.md:
- Line 43: The markdown heading "## 5. Present summary" skips Step 4; update the
section header (search for the literal "## 5. Present summary") to the correct
numbering—change it to "## 4. Present summary" (or insert the missing Step 4
content if that was intended) so the procedure numbering is consecutive.
In @.aicontext/prompts/run-step.md:
- Line 9: Update the brief path string in the prompt sentence that currently
references "data/brief/brief-{task-filename}" to include the .aicontext root so
it reads ".aicontext/data/brief/brief-{task-filename}"; this change should be
made in the .aicontext/prompts/run-step.md file where the sentence "Read the
task file, spec (if linked), and brief (if it exists at
`data/brief/brief-{task-filename}`)." appears to ensure brief loading uses the
correct storage location.
In @.aicontext/prompts/run-steps.md:
- Around line 8-11: The brief path in the "Read three-layer context" step is
inconsistent: it currently uses `data/brief/brief-{task-filename}` while other
prompts use `.aicontext/data/brief/...`; update the brief reference in that
bullet to the canonical `.aicontext/data/brief/brief-{task-filename}` (e.g.,
change `data/brief/brief-{task-filename}` to
`.aicontext/data/brief/brief-{task-filename}`) so all references to briefs use
the same `.aicontext/data/brief` location.
In @.aicontext/readme.md:
- Around line 105-106: Replace deprecated review command references
`/diff-review` and `/branch-review` in the README with the new unified review
command (e.g., `/review` or the project's canonical unified command). Update
every occurrence mentioned (lines that include `/diff-review`, `/branch-review`,
and the surrounding instructions that reference them) so the text points to the
unified workflow and, if necessary, adjust the example steps to show using the
single command for both uncommitted changes and full-branch reviews.
In @.aicontext/specs/spec-1.6.0-professional-dev-flow.md:
- Around line 44-54: The spec still lists the agent "standards-checker" as a
universal-instruction agent even though that agent was moved to
DEPRECATED_AGENTS; update the Unified Prompts section to remove or mark
"standards-checker" as deprecated and replace it with the current active
agent(s) or a note referencing DEPRECATED_AGENTS so the list accurately reflects
the CLI changes (update the line that currently names "standards-checker" in the
Unified Prompts bullet to either remove it or annotate it as deprecated).
In @.aicontext/templates/worklog.template.md:
- Around line 6-7: The comment starting with "<!--" before "### [Spec
Title](specs/spec-name.md)" is unclosed; update the template to use consistent
HTML comment syntax by adding the missing closing "-->" so that the opening
"<!--" and closing "-->" form a proper pair (ensure the line with "### [Spec
Title](specs/spec-name.md)" is either fully commented with "<!-- ... -->" or
each commented line uses its own "<!-- -->" like the later lines).
In @.claude/skills/finish-task/SKILL.md:
- Line 3: Update the description text in SKILL.md to replace the phrase "update
changelog" with "update worklog" (i.e., change the description line that
currently reads "Close out the current task — verify all steps done, sync spec,
fill completion notes, update changelog, and handle git (commit / push / PR per
config)" so it instead refers to "update worklog"). Also scan the same file for
any other occurrences of the term "changelog" (e.g., under the description key
or nearby task text) and update them to "worklog" to keep terminology
consistent.
In @.codex/skills/create-task/SKILL.md:
- Around line 1-4: Update the frontmatter in the Codex skill
`.codex/skills/create-task/SKILL.md` to match the Claude skill: add the key
`disable-model-invocation: true` to the YAML block and make the `description`
text identical (remove the trailing period so it matches the Claude version);
ensure the frontmatter ordering/keys match exactly so both skill files are
consistent.
In `@CHANGELOG.md`:
- Line 24: The changelog entry for the Commit Rules incorrectly states the
`commit_body` option defaults to `false`; update the line describing
**`commit_body` option** so it indicates the default is `true` (per the 1.6.0
PR). Edit the Commit Rules changelog sentence to read that `commit_body`
defaults to `true` and ensure the wording matches other entries (e.g., "default:
`true` — include subject and body").
In `@docs/workflow.md`:
- Around line 91-94: The doc claims the `/deep-review` workflow uses a 12-phase
methodology but the changelog and v1.6.0 docs reference an 11-phase deep-review;
reconcile by picking the canonical phase count and updating the `/deep-review`
section and its enumerated list to match (either remove or add the phase so the
numbered list aligns with the chosen count). Locate the `/deep-review` heading
and the numbered phase list in docs/workflow.md and adjust the list items and
the introductory sentence to the canonical definition used elsewhere (ensure the
`all` scope note and "Synthesis" phase remain correctly positioned), and update
any cross-references that mention "12-phase" or "11-phase" so they are
consistent.
- Around line 97-111: Update the "Standards Check" section to replace the
deprecated command string "/standards-check" with the current command
"/deep-review" so the documentation reflects the v1.6.0 change; locate the
string "/standards-check" in the Standards Check block and swap it to
"/deep-review" and ensure surrounding prose (section title and example usage)
remains consistent with existing references to "/gh-review-check" and
"/gh-review-fix-loop".
---
Outside diff comments:
In @.codex/skills/check-task/SKILL.md:
- Around line 1-4: The SKILL.md frontmatter is missing the
disable-model-invocation: true flag; update the YAML frontmatter at the top of
the file (around the existing name/description keys) to include
disable-model-invocation: true so the skill reads the prompt file directly
before any model invocation.
---
Nitpick comments:
In @.aicontext/prompts/add-step.md:
- Line 7: Replace the relative reference "identify-task.md" with the full path
".aicontext/prompts/identify-task.md" in the add-step prompt so it matches the
other prompt references (e.g., ".aicontext/prompts/review-scope.md" and
".aicontext/prompts/review-criteria.md"); specifically update the string
"identify-task.md" in the content of add-step.md to
".aicontext/prompts/identify-task.md".
In @.aicontext/prompts/next-step.md:
- Around line 3-5: Steps 3 and 4 in .aicontext/prompts/next-step.md ask whether
discoveries or plan updates are needed but omit the follow-up actions; update
the prompt to explicitly state what to do for affirmative answers: for "yes" to
Step 3, instruct the agent to incorporate the new information into the task
output, annotate what changed and why (provenance/context), and mark the output
as updated; for "yes" to Step 4, instruct the agent to modify the plan (show the
updated plan steps, highlight changes), re-evaluate priorities/dependencies, and
loop back to re-run the next step with the revised plan; also change Step 5 to
be conditional ("If nothing to update, begin implementing the next step") so the
flow covers both branches.
In @.aicontext/prompts/prepare-release.md:
- Line 19: Replace inconsistent references to the short path "release.md" with
the fully qualified ".aicontext/release.md" inside the prompt file
prepare-release.md so all occurrences (notably the mentions on lines shown in
the review) use the canonical path; update the three string occurrences that
currently read "release.md" to ".aicontext/release.md" so reads/writes always
target the same config file.
In @.aicontext/prompts/review-criteria.md:
- Around line 24-47: Add an explicit example for the "no issues" case to the
output examples by appending the suggested approved-format snippet after the
existing findings-present example; include the exact text "## Result: APPROVED"
followed by a "### Positive" section and a brief note (e.g., "- [anything
well-implemented worth noting]") so the document shows both the findings-present
format and the approved-format case (refer to the current example block that
demonstrates numbered findings and the existing "## Result: APPROVED" token).
In @.aicontext/templates/code-review.template.md:
- Around line 8-12: The template's table currently has redundant
"Recommendation" and "Action" columns; update the template (in
.aicontext/templates/code-review.template.md) to either consolidate these into a
single column (e.g., "Recommendation/Action") or explicitly document their
distinct purposes in the template header (e.g., "Recommendation = reviewer's
suggestion; Action = team's decision/implementation status"), and then adjust
the example rows and any explanatory text to match the change so reviewers
understand which column to use.
In @.aicontext/templates/project.template.md:
- Line 90: The commit_template field is present but undocumented; update the
documentation section to describe the commit_template option (the
commit_template: "description" value), listing available template options and
explaining what "description" does (e.g., uses the project description as the
commit message), include examples of other possible values and a short example
usage — edit the docs near the existing template/configuration documentation and
reference commit_template and the "description" value so readers know expected
behavior.
In @.claude/skills/review/SKILL.md:
- Around line 1-14: The review skill duplicates the scope-determination and
execution flow from .claude/skills/deep-review/SKILL.md; refactor by extracting
the shared logic (the "Determine scope" and "Run review" sections) into a
reusable template or include (e.g., a new common SKILL template or shared
markdown fragment) and update both .claude/skills/review/SKILL.md and
.claude/skills/deep-review/SKILL.md to reference that shared piece instead of
duplicating text so maintenance is centralized.
In @.gitignore:
- Around line 31-33: The .gitignore entry ignores the entire
.aicontext/data/brief/ directory which can cause new clones to miss the expected
scaffold; update .gitignore to allow preserving the directory by adding an
exception for a placeholder (e.g., add a .gitkeep inside .aicontext/data/brief/
and add an allow rule like "!/.aicontext/data/brief/.gitkeep") so the folder is
tracked while other contents remain ignored—refer to the .gitignore entry for
".aicontext/data/brief/" and create the .gitkeep file in that directory.
In `@docs/development-model.md`:
- Around line 7-9: Add a language identifier to each fenced code block like the
one containing "Spec (what & why) → Task (how & progress) → Brief (working
knowledge)" by changing the opening fence from ``` to ```text (or ```md) to
satisfy markdownlint MD040; do the same for the other fenced blocks referenced
(lines covering the three ranges noted) so every triple-backtick block has a
language tag.
In `@test/pr-reviews.test.js`:
- Around line 162-188: The tests can't isolate nextIteration because OUTPUT_DIR
is hardcoded; update the implementation of nextIteration to accept an optional
outputDir parameter (or export a factory like createNextIteration({ outputDir
})) and fall back to the existing OUTPUT_DIR when not provided, then update the
tests to pass the tempDir/.aicontext/data/github-pr-reviews path into
nextIteration (or instantiate the factory with that path) so tests can create
and inspect files in a real temp directory without relying on hardcoded paths;
ensure function name nextIteration and the default constant OUTPUT_DIR remain
usable for backward compatibility.
🪄 Autofix (Beta)
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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 6006d77b-03e9-4558-96c5-0aa5fc6c91c0
📒 Files selected for processing (128)
.aicontext/changelog.md.aicontext/prompts/add-step.md.aicontext/prompts/after_step.md.aicontext/prompts/aic-help.md.aicontext/prompts/aic-skills.md.aicontext/prompts/align-context.md.aicontext/prompts/challenge.md.aicontext/prompts/check-task.md.aicontext/prompts/close-step.md.aicontext/prompts/commit.md.aicontext/prompts/create-task.md.aicontext/prompts/deep-review-criteria.md.aicontext/prompts/deep-review.md.aicontext/prompts/do-it.md.aicontext/prompts/draft-issue.md.aicontext/prompts/draft-pr.md.aicontext/prompts/finish-task.md.aicontext/prompts/generate.md.aicontext/prompts/gh-review-check.md.aicontext/prompts/gh-review-fix-loop.md.aicontext/prompts/identify-task.md.aicontext/prompts/next-step.md.aicontext/prompts/plan-tasks.md.aicontext/prompts/prepare-release.md.aicontext/prompts/review-criteria.md.aicontext/prompts/review-plan.md.aicontext/prompts/review-scope.md.aicontext/prompts/review.md.aicontext/prompts/run-step.md.aicontext/prompts/run-steps.md.aicontext/prompts/start-feature.md.aicontext/prompts/start.md.aicontext/prompts/step-loop.md.aicontext/prompts/task.md.aicontext/prompts/test-writer.md.aicontext/prompts/web-inspect.md.aicontext/readme.md.aicontext/rules/process.md.aicontext/rules/standards.md.aicontext/scripts/pr-reviews.js.aicontext/specs/.gitkeep.aicontext/specs/spec-1.6.0-professional-dev-flow.md.aicontext/templates/brief.template.md.aicontext/templates/code-review.template.md.aicontext/templates/project.template.md.aicontext/templates/release.template.md.aicontext/templates/spec.template.md.aicontext/templates/task.template.md.aicontext/templates/worklog.template.md.claude/CLAUDE.md.claude/agents/reviewer.md.claude/agents/standards-checker.md.claude/agents/test-writer.md.claude/scripts/pr-resolve.js.claude/scripts/pr-reviews.js.claude/skills/add-step/SKILL.md.claude/skills/aic-help/SKILL.md.claude/skills/aic-skills/SKILL.md.claude/skills/align-context/SKILL.md.claude/skills/branch-review/SKILL.md.claude/skills/challenge/SKILL.md.claude/skills/check-plan/SKILL.md.claude/skills/check-task/SKILL.md.claude/skills/code-health/SKILL.md.claude/skills/commit/SKILL.md.claude/skills/create-task/SKILL.md.claude/skills/deep-review/SKILL.md.claude/skills/diff-review/SKILL.md.claude/skills/do-it/SKILL.md.claude/skills/draft-issue/SKILL.md.claude/skills/draft-pr/SKILL.md.claude/skills/finish-task/SKILL.md.claude/skills/gh-review-check/SKILL.md.claude/skills/gh-review-fix-loop/SKILL.md.claude/skills/next-step/SKILL.md.claude/skills/plan-tasks/SKILL.md.claude/skills/prepare-release/SKILL.md.claude/skills/review-plan/SKILL.md.claude/skills/review/SKILL.md.claude/skills/run-step/SKILL.md.claude/skills/run-steps/SKILL.md.claude/skills/standards-check/SKILL.md.claude/skills/start-feature/SKILL.md.claude/skills/start/SKILL.md.claude/skills/web-inspect/SKILL.md.codex/skills/add-step/SKILL.md.codex/skills/aic-help/SKILL.md.codex/skills/aic-skills/SKILL.md.codex/skills/align-context/SKILL.md.codex/skills/branch-review/SKILL.md.codex/skills/challenge/SKILL.md.codex/skills/check-plan/SKILL.md.codex/skills/check-task/SKILL.md.codex/skills/code-health/SKILL.md.codex/skills/commit/SKILL.md.codex/skills/create-task/SKILL.md.codex/skills/deep-review/SKILL.md.codex/skills/diff-review/SKILL.md.codex/skills/do-it/SKILL.md.codex/skills/draft-issue/SKILL.md.codex/skills/draft-pr/SKILL.md.codex/skills/finish-task/SKILL.md.codex/skills/gh-review-check/SKILL.md.codex/skills/gh-review-fix-loop/SKILL.md.codex/skills/next-step/SKILL.md.codex/skills/plan-tasks/SKILL.md.codex/skills/pr-review-check/SKILL.md.codex/skills/prepare-release/SKILL.md.codex/skills/review-plan/SKILL.md.codex/skills/review/SKILL.md.codex/skills/run-step/SKILL.md.codex/skills/run-steps/SKILL.md.codex/skills/standards-check/SKILL.md.codex/skills/start-feature/SKILL.md.codex/skills/start/SKILL.md.codex/skills/web-inspect/SKILL.md.cursor/rules/aicontext.mdc.github/copilot-instructions.md.gitignoreCHANGELOG.mdREADME.mdbin/aicontext.jsdocs/development-model.mddocs/skills.mddocs/workflow.mdtest/cli.test.jstest/pr-resolve.test.jstest/pr-reviews.test.js
💤 Files with no reviewable changes (17)
- .aicontext/prompts/after_step.md
- .aicontext/prompts/gh-review-check.md
- .aicontext/prompts/task.md
- .claude/skills/check-plan/SKILL.md
- .claude/skills/diff-review/SKILL.md
- .claude/skills/standards-check/SKILL.md
- .codex/skills/check-plan/SKILL.md
- .codex/skills/branch-review/SKILL.md
- .claude/skills/branch-review/SKILL.md
- .claude/agents/standards-checker.md
- .codex/skills/standards-check/SKILL.md
- .codex/skills/diff-review/SKILL.md
- .claude/skills/code-health/SKILL.md
- .codex/skills/pr-review-check/SKILL.md
- .codex/skills/code-health/SKILL.md
- .claude/scripts/pr-reviews.js
- .claude/scripts/pr-resolve.js
Fix: finish-task SKILL.md "changelog" → "worklog", CHANGELOG "11-phase" → "12-phase", removed deprecated /standards-check section from workflow.md, added web-inspect to FRAMEWORK_SKILLS. Co-Authored-By: Claude via AIContext
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
pr-resolve.js supports posting replies before resolving threads, but neither gh-review-check nor gh-review-fix-loop instructed the agent to fill the Reply column. Threads were being resolved without explanation. Co-Authored-By: Claude via AIContext
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
bin/aicontext.js (1)
554-565:⚠️ Potential issue | 🟠 MajorCreate
.aicontext/specs/during upgrades.
init()now bootstraps.aicontext/specs/.gitkeep, butupdate()never creates that tree. Projects upgrading from pre-1.6.0 will miss the new specs layer, so the new spec-driven flows only work after a manual fix.➕ Proposed fix
log('Updating data directory...', 'dim'); copyRecursive(path.join(packageRoot, '.aicontext', 'data', '.gitignore'), path.join(target, '.aicontext', 'data', '.gitignore')); + copyRecursive( + path.join(packageRoot, '.aicontext', 'specs', '.gitkeep'), + path.join(target, '.aicontext', 'specs', '.gitkeep') + );🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@bin/aicontext.js` around lines 554 - 565, The update flow currently copies prompts, templates and data but never creates the new specs tree, so modify the upgrade sequence in the update() routine in bin/aicontext.js to ensure .aicontext/specs exists by creating the directory and adding the .gitkeep file (similar to init()). Call copyRecursive or use fs.mkdirSync/ensureDir to create path.join(target, '.aicontext', 'specs') and then copy or write the .gitkeep from packageRoot (path.join(packageRoot, '.aicontext', 'specs', '.gitkeep')) into path.join(target, '.aicontext', 'specs', '.gitkeep') so projects upgrading from pre-1.6.0 get the specs layer automatically.
🧹 Nitpick comments (1)
test/cli.test.js (1)
802-812: Cover the new.codex/skillscleanup branch.
removeDeprecatedSkills()now walks both skill roots, but this fixture only proves the.claudepath. A regression in the new Codex branch would still pass.🧪 Suggested test expansion
fs.mkdirSync(path.join(tempDir, '.claude', 'skills', 'task'), { recursive: true }); fs.writeFileSync(path.join(tempDir, '.claude', 'skills', 'task', 'SKILL.md'), 'content'); fs.mkdirSync(path.join(tempDir, '.claude', 'skills', 'diff-review'), { recursive: true }); fs.writeFileSync(path.join(tempDir, '.claude', 'skills', 'diff-review', 'SKILL.md'), 'content'); + fs.mkdirSync(path.join(tempDir, '.codex', 'skills', 'task'), { recursive: true }); + fs.writeFileSync(path.join(tempDir, '.codex', 'skills', 'task', 'SKILL.md'), 'content'); removeDeprecatedSkills(tempDir); assert.strictEqual(fs.existsSync(path.join(tempDir, '.claude', 'skills', 'task')), false); assert.strictEqual(fs.existsSync(path.join(tempDir, '.claude', 'skills', 'diff-review')), false); + assert.strictEqual(fs.existsSync(path.join(tempDir, '.codex', 'skills', 'task')), false);🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@test/cli.test.js` around lines 802 - 812, The test only validates removal under the `.claude/skills` root but removeDeprecatedSkills() also traverses `.codex/skills`, so add the same fixture setup and assertions for the `.codex` path; create directories and SKILL.md under path.join(tempDir, '.codex', 'skills', 'task') and path.join(tempDir, '.codex', 'skills', 'diff-review') before calling removeDeprecatedSkills(tempDir) and assert those `.codex` directories no longer exist afterwards to cover the new branch.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.aicontext/prompts/gh-review-fix-loop.md:
- Around line 66-72: The main() function in pr-reviews.js doesn't handle the
--count flag so the script always writes a markdown file instead of returning a
plain integer count; update main() to parse process.argv (e.g., const args =
process.argv.slice(2); const countOnly = args.includes('--count')), then after
calling checkGhCli(), getPrInfo(), fetchThreads(), and buildEntries() check
countOnly: if true, console.log(entries.length) and return; otherwise proceed to
call nextIteration(), renderMarkdown(), create OUTPUT_DIR, write the file, and
log the saved message as before.
- Around line 52-54: The "3. Resolve" step incorrectly invokes pr-resolve.js
with a --comment-id flag; pr-resolve.js expects a single filepath to a markdown
review file. Replace the call that runs "node .aicontext/scripts/pr-resolve.js
--comment-id {id}" with a call that passes the review file path (e.g., "node
pr-resolve.js <path-to-review-file>") so the script can parse the markdown table
and resolve all entries marked "resolve" while using the Reply column to post
explanations; update the text to describe that the script processes the entire
review file rather than individual comment IDs.
In `@bin/aicontext.js`:
- Around line 566-574: The current logic overwrites the entire changelog.md when
adding the deprecation note, destroying user content; instead read the existing
content from oldChangelogPath (variable oldChangelogPath), and if it does not
include '@deprecated' prepend the deprecation banner to the existing content
(e.g., newContent = banner + '\n\n' + content) and write that back with
fs.writeFileSync; keep the existing log call (log(' Deprecated changelog.md
(replaced by worklog.md)', 'dim')) and only modify the write behavior in the
block that checks content.includes('@deprecated').
---
Outside diff comments:
In `@bin/aicontext.js`:
- Around line 554-565: The update flow currently copies prompts, templates and
data but never creates the new specs tree, so modify the upgrade sequence in the
update() routine in bin/aicontext.js to ensure .aicontext/specs exists by
creating the directory and adding the .gitkeep file (similar to init()). Call
copyRecursive or use fs.mkdirSync/ensureDir to create path.join(target,
'.aicontext', 'specs') and then copy or write the .gitkeep from packageRoot
(path.join(packageRoot, '.aicontext', 'specs', '.gitkeep')) into
path.join(target, '.aicontext', 'specs', '.gitkeep') so projects upgrading from
pre-1.6.0 get the specs layer automatically.
---
Nitpick comments:
In `@test/cli.test.js`:
- Around line 802-812: The test only validates removal under the
`.claude/skills` root but removeDeprecatedSkills() also traverses
`.codex/skills`, so add the same fixture setup and assertions for the `.codex`
path; create directories and SKILL.md under path.join(tempDir, '.codex',
'skills', 'task') and path.join(tempDir, '.codex', 'skills', 'diff-review')
before calling removeDeprecatedSkills(tempDir) and assert those `.codex`
directories no longer exist afterwards to cover the new branch.
🪄 Autofix (Beta)
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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: f3bf4d5c-aeff-4234-8c08-761125826ac9
📒 Files selected for processing (7)
.aicontext/prompts/gh-review-check.md.aicontext/prompts/gh-review-fix-loop.md.claude/skills/finish-task/SKILL.mdCHANGELOG.mdbin/aicontext.jsdocs/workflow.mdtest/cli.test.js
✅ Files skipped from review due to trivial changes (2)
- .claude/skills/finish-task/SKILL.md
- docs/workflow.md
🚧 Files skipped from review as they are similar to previous changes (1)
- CHANGELOG.md
SKIP_PATHS was hardcoded with .aicontext/ which filtered out review comments on framework files. Now reads from optional pr-reviews-config.json next to the script, falling back to defaults. Config file is gitignored — project-specific. Co-Authored-By: Claude via AIContext
- Add .aicontext/ prefix to brief paths in 5 prompts - Fix commit prompt: stage before reviewing diff - Fix prepare-release section numbering (3→5 skip) - Update stale references in readme.md (deprecated review commands, agents) - Remove standards-checker from spec agent list - Fix pr-resolve.js invocation: filepath, not --comment-id - Add --count flag to pr-reviews.js for polling - Preserve existing content when deprecating changelog.md Co-Authored-By: Claude via AIContext
There was a problem hiding this comment.
Actionable comments posted: 3
♻️ Duplicate comments (2)
.aicontext/readme.md (1)
85-85:⚠️ Potential issue | 🟡 MinorDeprecated review command names still appear in the data directory section.
Line 83 still says results come from
/diff-reviewand/branch-review, which conflicts with the unified/reviewworkflow documented elsewhere.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/readme.md at line 85, Update the data directory section to remove the deprecated command names by replacing any references to "/diff-review" and "/branch-review" with the unified "/review" workflow and ensure the table row describing github-pr-reviews references the correct current skill endpoint (e.g., "/gh-review-check" or the standardized "/review") so all entries match the documented unified workflow; locate mentions in .aicontext/readme.md (the data directory section around the table and the line that currently references "/diff-review" and "/branch-review") and update the text to consistently use "/review" and correct the example directory name if needed..aicontext/specs/spec-1.6.0-professional-dev-flow.md (1)
48-48:⚠️ Potential issue | 🟡 MinorRemove deprecated standards-checker from agent list.
Line 48 lists
standards-checkeras a universal-instruction agent, but per PR changes this agent was moved to DEPRECATED_AGENTS. Per the spec's own line 226, "standards-check dropped — fully subsumed by/deep-review."📝 Proposed fix
-- Claude Code agents with universal instructions (`reviewer`, `standards-checker`, `test-writer`) reference prompts. Tool-specific agents (`test-runner`, `researcher`) keep instructions inline. +- Claude Code agents with universal instructions (`reviewer`, `test-writer`) reference prompts. Tool-specific agents (`test-runner`, `researcher`) keep instructions inline.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/specs/spec-1.6.0-professional-dev-flow.md at line 48, Update the agent list to remove the deprecated agent name "standards-checker" from the universal-instruction Claude Code agents line (the sentence that currently reads about universal instructions `reviewer`, `test-writer`), since "standards-checker" was moved to DEPRECATED_AGENTS; locate the string "standards-checker" in that sentence and delete it, and optionally add a parenthetical note referencing that standards-check functionality is subsumed by "/deep-review" (as noted near the DEPRECATED_AGENTS section) to keep the spec consistent.
🧹 Nitpick comments (3)
.aicontext/prompts/gh-review-fix-loop.md (1)
74-78: Clarify commit behavior when no fixes were applied.Step 7 states "Commit all fixes" but doesn't specify behavior when step 4 (Fix) had nothing to implement (e.g., all comments were triaged as Resolve or Skip). If no code changes were made, should the commit step be skipped?
Consider adding:
"Commit all fixes. If no code changes were made (nothing to fix), skip the commit and proceed to polling."
This prevents empty commits and clarifies the loop exit condition when all review comments are non-actionable.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/gh-review-fix-loop.md around lines 74 - 78, Update the "### 7. Commit and Push" step to clarify behavior when there are no code changes: change the sentence "Commit all fixes." to "Commit all fixes. If no code changes were made (nothing to fix), skip the commit and proceed to polling." Ensure this change is applied in the "7. Commit and Push" section so the loop clearly avoids creating empty commits when all review comments were triaged as Resolve or Skip..aicontext/prompts/run-steps.md (2)
46-55: Consider referencing the table instead of duplicating it.The severity × effort table appears in multiple prompts (run-steps.md, gh-review-fix-loop.md) and in process.md. While inline duplication improves prompt readability, it creates a maintenance burden: changes require updates in 3+ places.
Since line 44 already instructs reading process.md before starting, consider replacing lines 46-55 with:
"Use the severity × effort table from process.md (already read in step 3)."
This keeps the single source of truth while maintaining the workflow reference.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/run-steps.md around lines 46 - 55, Replace the duplicated severity × effort table in run-steps.md with a single-line reference to the canonical table in process.md: remove the table block (the rows under "When findings are returned, assess each with this table:") and replace it with a sentence like "Use the severity × effort table from process.md (already read in step 3)." Ensure the wording matches the existing step 3 mention so readers know where to find the authoritative table and eliminate duplication.
31-34: Clarify commit_mode persistence when user defers commits to/finish-task.When the user chooses option 2 ("no — I'll handle commits later"), the code at line 36 only saves if the user chooses per-step. This leaves
commit_modeunset if the user defers, causing/run-stepsto re-prompt every subsequent run.Per the spec,
commit_modehas three distinct values (manual,per-step,per-task), and/run-stepsonly commits during execution ifcommit_modeisper-step. All other modes defer to/finish-task, which usesfinish_actionas the commit decision point. To properly implement this design:
- Save a default
commit_mode(e.g.,manual) when the user chooses "no"- Or prompt the user to choose between the other modes (
per-taskvsmanual) and persist that choice- Or explicitly document that "no" means the user will be asked again next time
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/run-steps.md around lines 31 - 34, The prompt handling in /run-steps leaves commit_mode unset when the user selects "no", causing repeated re-prompts; update the logic that handles the prompt (the branch that currently saves commit_mode only for "per-step") to persist an explicit commit_mode for the "no" choice (e.g., set commit_mode = "manual"), or instead prompt the user to choose between "per-task" and "manual" and persist that choice; ensure /run-steps checks commit_mode === "per-step" to auto-commit and that /finish-task uses finish_action as the commit decision point.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.aicontext/prompts/gh-review-fix-loop.md:
- Line 16: Update the incorrect brief path string in the gh-review-fix-loop.md
prompt: replace the occurrence of "data/brief/brief-{task-filename}" with the
canonical ".aicontext/data/brief/brief-{task-filename}" so it matches
run-steps.md and the rest of the codebase; locate the literal text in
.aicontext/prompts/gh-review-fix-loop.md and perform a direct string
substitution to keep the documentation consistent.
In @.aicontext/readme.md:
- Line 106: The README references the same prompt under two different filenames
(review-plan.md vs plan.md); choose one canonical filename (e.g.,
review-plan.md) and update both occurrences in the README so the "review-plan"
prompt key and the instruction line both point to that single filename; also
verify the chosen markdown file (review-plan.md or plan.md) exists in the
prompts directory and update the mapping entry for the "review-plan" key to
match the chosen filename.
In @.aicontext/specs/spec-1.6.0-professional-dev-flow.md:
- Line 111: The spec incorrectly lists `commit+push+pr` as a valid
finish_action; update the line to match the implemented options by replacing the
enum in the spec so it reads: `finish_action` options: `nothing` | `commit` |
`commit+push`, and ensure the documentation aligns with the `finish-task.md`
prompt which only supports `nothing`, `commit`, and `commit+push`.
---
Duplicate comments:
In @.aicontext/readme.md:
- Line 85: Update the data directory section to remove the deprecated command
names by replacing any references to "/diff-review" and "/branch-review" with
the unified "/review" workflow and ensure the table row describing
github-pr-reviews references the correct current skill endpoint (e.g.,
"/gh-review-check" or the standardized "/review") so all entries match the
documented unified workflow; locate mentions in .aicontext/readme.md (the data
directory section around the table and the line that currently references
"/diff-review" and "/branch-review") and update the text to consistently use
"/review" and correct the example directory name if needed.
In @.aicontext/specs/spec-1.6.0-professional-dev-flow.md:
- Line 48: Update the agent list to remove the deprecated agent name
"standards-checker" from the universal-instruction Claude Code agents line (the
sentence that currently reads about universal instructions `reviewer`,
`test-writer`), since "standards-checker" was moved to DEPRECATED_AGENTS; locate
the string "standards-checker" in that sentence and delete it, and optionally
add a parenthetical note referencing that standards-check functionality is
subsumed by "/deep-review" (as noted near the DEPRECATED_AGENTS section) to keep
the spec consistent.
---
Nitpick comments:
In @.aicontext/prompts/gh-review-fix-loop.md:
- Around line 74-78: Update the "### 7. Commit and Push" step to clarify
behavior when there are no code changes: change the sentence "Commit all fixes."
to "Commit all fixes. If no code changes were made (nothing to fix), skip the
commit and proceed to polling." Ensure this change is applied in the "7. Commit
and Push" section so the loop clearly avoids creating empty commits when all
review comments were triaged as Resolve or Skip.
In @.aicontext/prompts/run-steps.md:
- Around line 46-55: Replace the duplicated severity × effort table in
run-steps.md with a single-line reference to the canonical table in process.md:
remove the table block (the rows under "When findings are returned, assess each
with this table:") and replace it with a sentence like "Use the severity ×
effort table from process.md (already read in step 3)." Ensure the wording
matches the existing step 3 mention so readers know where to find the
authoritative table and eliminate duplication.
- Around line 31-34: The prompt handling in /run-steps leaves commit_mode unset
when the user selects "no", causing repeated re-prompts; update the logic that
handles the prompt (the branch that currently saves commit_mode only for
"per-step") to persist an explicit commit_mode for the "no" choice (e.g., set
commit_mode = "manual"), or instead prompt the user to choose between "per-task"
and "manual" and persist that choice; ensure /run-steps checks commit_mode ===
"per-step" to auto-commit and that /finish-task uses finish_action as the commit
decision point.
🪄 Autofix (Beta)
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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: c20454a7-fa8c-4f83-a315-d5fd49caf225
📒 Files selected for processing (12)
.aicontext/prompts/align-context.md.aicontext/prompts/check-task.md.aicontext/prompts/commit.md.aicontext/prompts/finish-task.md.aicontext/prompts/gh-review-fix-loop.md.aicontext/prompts/prepare-release.md.aicontext/prompts/run-step.md.aicontext/prompts/run-steps.md.aicontext/readme.md.aicontext/scripts/pr-reviews.js.aicontext/specs/spec-1.6.0-professional-dev-flow.mdbin/aicontext.js
✅ Files skipped from review due to trivial changes (6)
- .aicontext/prompts/run-step.md
- .aicontext/prompts/commit.md
- .aicontext/prompts/check-task.md
- .aicontext/prompts/align-context.md
- .aicontext/prompts/prepare-release.md
- .aicontext/prompts/finish-task.md
🚧 Files skipped from review as they are similar to previous changes (1)
- .aicontext/scripts/pr-reviews.js
- Add .aicontext/ prefix to brief path in gh-review-fix-loop prompt - Fix review-plan prompt path in readme.md (plan.md → review-plan.md) - Remove unsupported commit+push+pr from spec finish_action options Co-Authored-By: Claude via AIContext
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (1)
.aicontext/prompts/gh-review-fix-loop.md (1)
24-28: Make the review file path explicit across Step 1 → Step 3.Line 53 currently relies on a placeholder path. In repeated cycles, this can accidentally resolve against an older file.
Proposed prompt tweak
### 1. Fetch Review Commentsnode .aicontext/scripts/pr-reviews.js
+Capture the saved filepath from output as `review_file`. ... ### 3. Resolve Resolve all comments marked Resolve — the script processes the review file and posts Reply column text before resolving each thread:-node .aicontext/scripts/pr-resolve.js
+node .aicontext/scripts/pr-resolve.js {review_file}Also applies to: 51-54
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/gh-review-fix-loop.md around lines 24 - 28, Update the prompt so the output of node .aicontext/scripts/pr-reviews.js is captured into an explicit variable (e.g., review_file) and that variable is passed to node .aicontext/scripts/pr-resolve.js instead of relying on a placeholder path; specifically, modify the steps that invoke the pr-reviews.js and pr-resolve.js scripts to capture and reuse the saved filepath (review_file) so Step 3 calls pr-resolve.js {review_file}, ensuring you reference the review_file variable consistently across the flow that mentions pr-reviews.js and pr-resolve.js.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.aicontext/prompts/run-steps.md:
- Around line 31-35: The prompt text uses a non-canonical commit mode value "no"
which can create ambiguous saved state; update the wording to use the defined
commit_mode vocabulary instead (replace "no" with the canonical mode name used
by your config such as "none" or "deferred"), and ensure the examples and
explanatory line reference commit_mode and the existing "per-step" option (e.g.,
describe the alternative as the canonical "none"/"deferred" mode) so the UI and
persisted state use only supported mode tokens.
- Line 24: Replace the ambiguous bare filenames with the canonical .aicontext
paths: update the check order text that currently references "local.md" and
"project.md" (and the "## Commit Rules:" header) so it explicitly checks
".aicontext/local.md" then ".aicontext/project.md" (matching the "## Commit
Rules:" anchor) and clarifies that the first matching source wins; ensure the
string in run-steps.md is updated accordingly wherever "local.md" or
"project.md" are mentioned.
In @.aicontext/scripts/pr-reviews.js:
- Around line 14-16: SKIP_PATHS initialization is brittle: wrap the JSON.parse
of CONFIG_PATH in a try/catch and validate/coerce the parsed skip_paths value
before assigning to SKIP_PATHS (use DEFAULT_SKIP_PATHS on parse error,
non-object, or when parsed.skip_paths is not an array); ensure the code that
later does skip.some(...) receives a safe array of strings (e.g., map non-string
entries to strings or filter them out) so malformed pr-reviews-config.json or
incorrect skip_paths types won't throw at runtime; update the SKIP_PATHS const
initialization and any other places that read parsed.skip_paths (the code that
uses SKIP_PATHS and the variable used with .some) to use the validated/coerced
array.
In @.aicontext/specs/spec-1.6.0-professional-dev-flow.md:
- Line 101: Update the stale default quality-check sentence in the spec to match
the current timing table: replace the phrase "standards check after task" with
"deep review after task" (or "deep review + full test suite after task" if you
want to be explicit) so the sentence reads consistently with the table; locate
the sentence in the document containing "Default configuration: code review
after step, step-related tests after step, standards check after task, full test
suite after task" and edit it to reference "deep review" (and keep "full test
suite after task") to ensure both places align.
---
Nitpick comments:
In @.aicontext/prompts/gh-review-fix-loop.md:
- Around line 24-28: Update the prompt so the output of node
.aicontext/scripts/pr-reviews.js is captured into an explicit variable (e.g.,
review_file) and that variable is passed to node
.aicontext/scripts/pr-resolve.js instead of relying on a placeholder path;
specifically, modify the steps that invoke the pr-reviews.js and pr-resolve.js
scripts to capture and reuse the saved filepath (review_file) so Step 3 calls
pr-resolve.js {review_file}, ensuring you reference the review_file variable
consistently across the flow that mentions pr-reviews.js and pr-resolve.js.
🪄 Autofix (Beta)
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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 81c6b8a6-37ba-41a6-8286-cbd2c3c07fe0
📒 Files selected for processing (12)
.aicontext/prompts/align-context.md.aicontext/prompts/check-task.md.aicontext/prompts/commit.md.aicontext/prompts/finish-task.md.aicontext/prompts/gh-review-fix-loop.md.aicontext/prompts/prepare-release.md.aicontext/prompts/run-step.md.aicontext/prompts/run-steps.md.aicontext/readme.md.aicontext/scripts/pr-reviews.js.aicontext/specs/spec-1.6.0-professional-dev-flow.mdbin/aicontext.js
✅ Files skipped from review due to trivial changes (4)
- .aicontext/prompts/run-step.md
- .aicontext/prompts/commit.md
- .aicontext/prompts/check-task.md
- .aicontext/prompts/finish-task.md
🚧 Files skipped from review as they are similar to previous changes (3)
- .aicontext/prompts/align-context.md
- .aicontext/readme.md
- bin/aicontext.js
…spec - Use canonical "manual" instead of "no" in run-steps commit prompt - Harden pr-reviews-config.json parsing with try/catch and Array.isArray - Replace stale "standards check" with "deep review" in spec defaults Co-Authored-By: Claude via AIContext
Old flow polled comment count every 60s after push, but CodeRabbit takes 2-3min so the count was 0 (old threads resolved, new ones not yet posted). New flow: capture baseline count, push, wait for all checks via `gh pr checks --watch` (with 30m timeout, ignoring exit code), then compare counts. Also strengthened identify-task.md to explicitly override conversation context when IDE signal is present. Co-Authored-By: Claude via AIContext
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.aicontext/prompts/gh-review-fix-loop.md:
- Around line 95-96: The loop exit check that currently compares only
baseline_count is unsafe because resolved and new threads can net to the same
count; update the logic that decides whether to increment cycle or break so it
compares thread identities or latest review timestamps instead of just
baseline_count: capture a set/list of thread IDs (or the latest review
timestamp) before the wait, then after polling compare the sets/timestamps in
the same place where baseline_count is used to decide (the branch that
increments cycle or exits), and treat any new thread ID or newer timestamp as
"new review" to continue the loop and only exit when neither IDs nor timestamps
have changed.
In @.aicontext/prompts/run-steps.md:
- Around line 31-35: The prompt in run-steps.md that asks users when commit_mode
is unset only presents "per-step" and "manual", omitting the canonical
"per-task" option; update the wording where commit_mode choices are defined to
include a third explicit option "per-task — commit after the whole task
completes (canonical template mode)" so users can select it; ensure any
references to commit_mode handling in your templates and documentation align
with the added "per-task" label and that downstream code expecting "per-task"
(e.g., template logic that reads commit_mode) will recognize this exact string.
In @.aicontext/specs/spec-1.6.0-professional-dev-flow.md:
- Around line 155-156: Update the spec text for the gh-review-fix-loop to
reflect the implemented waiting strategy: replace the description that it "polls
every 60 seconds for comment count change" with the current behavior of waiting
on GitHub PR checks using "gh pr checks --watch" with a 30 minute timeout, and
remove or replace any assertions about comment-count polling; apply the same
edit to the later occurrence of the same text (the section referenced as lines
near 317) so both sections consistently describe waiting on PR checks with a 30m
timeout rather than 60s comment-count polling.
🪄 Autofix (Beta)
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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 499866f2-d12b-45fd-8750-d6f2d58e26a7
📒 Files selected for processing (5)
.aicontext/prompts/gh-review-fix-loop.md.aicontext/prompts/identify-task.md.aicontext/prompts/run-steps.md.aicontext/scripts/pr-reviews.js.aicontext/specs/spec-1.6.0-professional-dev-flow.md
✅ Files skipped from review due to trivial changes (1)
- .aicontext/prompts/identify-task.md
🚧 Files skipped from review as they are similar to previous changes (1)
- .aicontext/scripts/pr-reviews.js
After checks complete, check for a "review paused" comment from CodeRabbit. If found, warn the user and stop the loop — no point cycling without active reviews. Co-Authored-By: Claude via AIContext
When all threads are resolved but CodeRabbit's review state is still CHANGES_REQUESTED, warn the user to trigger a fresh approval with @coderabbitai review. Co-Authored-By: Claude via AIContext
Check all reviewers for lingering CHANGES_REQUESTED state, not just CodeRabbit. Any stale changes-requested review is worth flagging when all threads are resolved. Co-Authored-By: Claude via AIContext
Push to remote is now forbidden without user confirmation, unless pre-authorized by finish_action: commit+push or an active /gh-review-fix-loop cycle. Co-Authored-By: Claude via AIContext
Count-based comparison had an edge case where resolved + new threads could net to the same count. Now does a full fetch after checks complete — if unresolved threads exist, continue; if none, exit. Removed baseline capture step. Updated spec to match. Co-Authored-By: Claude via AIContext
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.aicontext/specs/spec-1.6.0-professional-dev-flow.md:
- Around line 148-150: The spec claims pr-reviews.js supports a configurable
"different output location" but the implementation hardcodes OUTPUT_DIR; update
pr-reviews.js to read an override from the existing config file (same place
skip_paths is read) or from an env var and fall back to the current default
('.aicontext/data/github-pr-reviews'); specifically, replace the hardcoded
OUTPUT_DIR constant in pr-reviews.js with logic that loads a value like
config.output_dir (or process.env.PR_REVIEWS_OUTPUT_DIR) and use that path
everywhere OUTPUT_DIR is referenced, validating/creating the directory as
needed; alternatively, if you prefer removing the feature, update the spec/docs
instead of code (but implement the config option in pr-reviews.js if you want to
preserve claimed behavior).
🪄 Autofix (Beta)
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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 962759bf-f919-4ce8-a89d-ac7aeed14422
📒 Files selected for processing (6)
.aicontext/prompts/gh-review-fix-loop.md.aicontext/prompts/identify-task.md.aicontext/prompts/run-steps.md.aicontext/rules/standards.md.aicontext/scripts/pr-reviews.js.aicontext/specs/spec-1.6.0-professional-dev-flow.md
✅ Files skipped from review due to trivial changes (1)
- .aicontext/prompts/identify-task.md
🚧 Files skipped from review as they are similar to previous changes (1)
- .aicontext/scripts/pr-reviews.js
Co-Authored-By: Claude via AIContext
Added
/start-feature,/run-steps,/finish-task,/plan-tasks,/do-it,/align-context,/gh-review-fix-loopstep-loop.md): single source of truth for the implement → review → test → commit cycle, referenced by/run-stepsand/do-it.aicontext/specs/): feature-level requirements, decisions, and non-goals — survive refactors, no file paths or implementation details.aicontext/data/brief/): gitignored working memory the AI appends to after each step — enables seamless session restarts via/check-task.aicontext/worklog.md): spec and task status tracking, replaceschangelog.md. AI-generated, gitignored./check-task: identifies spec requirements not covered by task steps, offers to add steps or create separate tasksproject.md, per-task overrides in task files, personal overrides inlocal.mdprocess.md: configurable matrix of what checks run after steps vs after tasksspec.template.md,brief.template.md,worklog.template.md.aicontext/specs/.gitkeep) created duringaicontext init/reviewskill: unified review with scope args (diff, branch, commit, path, IDE selection) — replaces/diff-reviewand/branch-review/deep-reviewskill: comprehensive architecture + correctness review with 11-phase methodology (DRY & KISS, Placement, Responsibilities, API Design, Edge Cases, Bugs & Security, Framework Usage, Constants & Naming, Dependencies & Testability, Error Handling, Extensibility)review-criteria.md,deep-review-criteria.md,review-scope.md— shared between all tools, not just Claude Codecode-review.template.md): persistent review tracking with refactoring actions, findings, decisionsclose-step.mdprompt: enforces brief/spec updates after each step with visible summary output — prevents agents from skipping context updatescommit_bodyoption in Commit Rules: controls whether commits include a body (default:true— body with what/why + Co-Authored-By trailer)/web-inspectskill: browser-based investigation using playwright-cli — open pages in headed mode, inspect elements via snapshots, check console errors, capture screenshots. Useful for UI debugging, manual AI testing, and verifying fixes visually/aic-helpand/aic-skillsframework meta-skills:/aic-helpshows a quickstart guide with workflows and best practices;/aic-skillslists all available skills grouped by workflow stage/create-taskskill: create a task file from conversation context — lighter alternative to/start-featurewhen a full discovery interview isn't needed/add-stepskill: add a new step to the current task from conversation context — plan ahead without implementingidentify-task.md): shared prompt for finding the active task, prioritizing IDE-opened filesChanged
/start-task→/start-feature: always creates spec + task, no complexity assessment — small work uses direct conversation.aicontext/prompts/, skills are thin wrappers/check-tasknow reads three layers (spec → brief → task) with staleness checks/gh-review-fix-loopcycle reordered: fetch first → triage → fix → test → capture count → commit+push → poll.aicontext/scripts/(universal) instead of.claude/scripts/removeDeprecatedSkillsnow cleans both.claude/skills/and.codex/skills//run-steps)deep-reviewerandstandards-checkerinto singlerevieweragent — caller specifies criteria prompt, agent is generic/review= quick correctness (after step),/deep-review= comprehensive (after task)/run-stepscommit logic simplified: only commits per-step, per-task commits handled by/finish-taskviafinish_action/finish-taskwarns whenfinish_action: nothingbut uncommitted changes exist/code-healthinto/deep-review: cross-file checks (duplication, consistency, structural metrics) added as expanded phases —/deep-review allreplaces/code-healthfor full codebase scans/pr-review-check→/gh-review-checkand/check-plan→/review-planfor naming consistency.claude/scripts/to.aicontext/scripts/;pr-reviews.jsuses__dirnamefor output path resolutionDeprecated
changelog.md— replaced byworklog.md. Deprecation notice injected duringaicontext update./start-taskskill — replaced by/start-feature/diff-reviewand/branch-review— replaced by/reviewwith scope args/standards-check— fully subsumed by/deep-reviewdeep-reviewerandstandards-checkeragents — merged into singlerevieweragent/code-health— merged into/deep-review/pr-review-check— renamed to/gh-review-check/check-plan— renamed to/review-plan.claude/scripts/directory — scripts moved to.aicontext/scripts/Summary by CodeRabbit
New Features
Changes
Documentation