Version/1.7.0#19
Conversation
Add "Solution Before Organization" rule to standards — confirm approach before asking task/spec organizational questions. Add "steps describe what, not behavior" rule to process — keep behavioral details in specs. Update spec template with grouped Problem/Solution headings and versioned filename convention. Gitignore specs/ and worklog.md — these are project-specific working files, not distributed to users. Co-Authored-By: Claude via AIContext
Replace project.md prose settings with .aicontext/config.yml — a YAML config file shipped with defaults during init, with interactive setup for key settings (task naming, commit mode, update frequency). Unify all commit operations through commit.md as single codepath with co_authored_trailer override. Add ensure-config.md as reusable config loading prompt. Add Question UX rule (AskUserQuestion in Claude Code, numbered options elsewhere) with claude.question_style setting. Update 20+ prompts and documentation to reference config.yml. Add Checkbox Discipline and Solution Before Organization rules. Remove unsupported commit+push+pr option. Add finish_action: ask mode. Co-Authored-By: Claude via AIContext
Co-Authored-By: Claude via AIContext
Add project.base_branch setting to config.yml, replacing the hardcoded 'main' in draft-pr.md, review-scope.md, and prepare-release.md. CLI init auto-detects main/master/develop from git and offers numbered options. Co-Authored-By: Claude via AIContext
…rite start-feature, and rename run-steps to run-task New /grill-me skill for structured one-at-a-time interviews with recommended answers. New /brainstorm for creative idea generation. New /thoughts for quick lightweight check-ins mid-conversation. Added spec alignment verification to /review-plan (plan-time) and /finish-task (completion-time). Rewrote /start-feature to delegate interviews to grill-me with prior-context guard, scope question, and mandatory spec+task creation. Renamed /run-steps to /run-task for clarity, with old name added to deprecated lists. Co-Authored-By: Claude Opus 4.6 via AIContext
Add behavioral alignment as the primary review step — trace runtime behavior end-to-end before comparing spec text to plan text. Prevents false "covered" assessments when requirements span multiple code paths. Rename "Spec alignment" to "Spec coverage" with stricter wording. Co-Authored-By: Claude Opus 4.6 via AIContext
Add lastChecked to version cache so /start can gate update checks by frequency. Create update-check.md prompt with frequency-aware checking, first-run preference prompt, upgrade offer, and WebFetch fallback for non-CLI environments. readCache() now returns full cache object for stale data access. Co-Authored-By: Claude Opus 4.6 via AIContext
Move file-loading instructions from duplicated entry points into start.md as single source of truth. Entry points now reference start.md with full path. Extract auto-setup guard to separate prompt. Require project name and tech stack in confirmation (proof of reading). Clarify update-check.md: CLI path trusts the CLI entirely, only WebFetch fallback writes cache. Co-Authored-By: Claude Opus 4.6 via AIContext
create-task now asks the user about spec handling instead of deciding autonomously — options are: use existing spec, create new spec inline, or standalone. add-step gains a `here` keyword to always target the IDE-opened file, plus conflict-resolution logic when IDE and conversation tasks differ. Co-Authored-By: Claude Sonnet 4.6 via AIContext
Replaces up to 58 per-file Override? prompts with a single upfront question: Y = override everything at once, N = choose file by file. Skips redundant Continue? prompt after bulk Y. Skipped entirely when --override-agents/--override-skills flags are pre-set. Co-Authored-By: Claude Sonnet 4.6 via AIContext
Co-Authored-By: Claude Sonnet 4.6 via AIContext
Adds a lightweight Ideas backlog to the framework — a place to capture deferred ideas mid-session without losing them to the conversation. - `worklog.template.md`: new `## Ideas` section with format comment and example lines; positioned between Done and Standalone Tasks - `/add-idea` skill (Claude Code + Codex): asks for idea description, silently infers type (spec/task/step) from context, asks only when ambiguous; supports all tools via question_style config - `process.md`: new `## Ideas` section documenting format and proactive suggestion rule — AI nudges users to capture out-of-scope ideas - `bin/aicontext.js`: `add-idea` registered in FRAMEWORK_SKILLS and FRAMEWORK_CODEX_SKILLS so it deploys on aicontext init/update - `test/cli.test.js`: updated skill count (28→29) and expected list - Documented in README.md, docs/workflow.md, and .aicontext/readme.md Co-Authored-By: Claude Sonnet 4.6 via AIContext
Co-Authored-By: Claude Sonnet 4.6 via AIContext
The first-session command flow (/start → /start-feature → /run-task → /finish-task) and the rule to run /start every session were buried in section 5 of 8. New users saw Spec/Task/Brief/Worklog vocabulary before they saw a single command. Reordering puts action first: the new "Your First Session" section leads with the flow, so concepts anchor to commands the user has already typed. Removes the "After Init" folder inventory (replaced by a concrete next action) and the duplicated "Running Skills" mini-section. Co-Authored-By: Claude Opus 4.6 via AIContext
Rewrite grill-me with an internal dimension map (live, not fixed), breadth-first traversal, a 1-2 follow-up depth cap on surprises, and a "Decisions so far" running list to prevent mid-interview drift. Replace the freeform closing summary with a structured block (Dimensions covered / Decisions / Open items / Out of scope) that the caller copies verbatim. Add a standalone next-action prompt for when grill-me runs outside an orchestrator. Update start-feature to seed the dimension list from codebase exploration, hand it off to grill-me, suppress the standalone next-action prompt, reconcile Out of scope after the Step 4 scope question, and (in Step 7) copy grill-me's structured summary verbatim into the spec Decisions section plus the full decision tree into the brief Decisions section. Extend the Question Pacing rule with a batchable exception for 2-3 narrow follow-ups on the same topic, numbered per the existing Question Numbering rule. Add a "Concise by default" line to Communication Style. Co-Authored-By: Claude via AIContext
Step 1 now captures up to ~5 non-obvious codebase patterns during exploration so they can seed the brief — non-obvious only, with a fresh-reader 30-second filter to prevent context clutter. Add a callout block between step 6 and step 7 that explicitly resets agent attention after the long interview phase: "discussion phase is over, every output is a file on disk, do not summarize, do not ask follow-ups, move directly into Step 7." Expand step 7 from spec+task creation to spec + task + brief + worklog — all four artifacts in one gated step. Briefs are created upfront from the template with References seeded, Codebase Patterns from step 1, and the decision tree from the interview. Worklog entries land under "## In Progress" with a per-spec heading, created if missing. Add a new step 8 with a mandatory output summary parallel to close-step.md. Summary includes explicit file counts; "if a count is 0, the step is incomplete and you must fix it before outputting the summary" makes the count requirement a real verification gate rather than decorative ceremony. Co-Authored-By: Claude via AIContext
Adds a two-layer requirements model: spec requirements (what the system must do, broad and durable) and task requirements (what this work bundle delivers, concrete and testable). Many-to-many mapping; task requirements are a translation, not a copy. Spec template gains checkbox bullets grouped into ### subsections with a per-subsection *Implemented by:* footer linking owning tasks. Task template gains a ## Requirements: section with behavioral, testable deliverables. Lifecycle and timing rules added to process.md under Task File Management. Spec lifecycle: requirements and decisions delete when no longer apply or no longer being defended; brief and git history preserve rationale, spec stays clean. Checkbox update timing splits across two cognitive frames: close-step checks off only what a step delivered 100% unambiguously (in-flight conservatism); finish-task walks task requirements as a hard block, then spec requirements as a warning gate. Warnings resolve via one fixed contract: deliver / defer / revise. check-task gains spec drift detection with two complementary signals: git log for file-level changes, AI semantic comparison for coverage mismatch. Both run when possible. start-feature, create-task, and add-step populate and maintain task Requirements sections; add-step gates on a verbalization rule before extending scope. Co-Authored-By: Claude via AIContext
- Information Density rule in standards.md (clearest answer with no waste, not minimization); subagents inherit via agent-setup.md - Question Pacing pivoted from narrowness to independence: parallel questions batch by default, atomic only when answers depend on each other - Context Discipline rules in process.md: Targeted reads, Brief content boundary, No paraphrased rules, Long-form notes location - Long Tool Output to file rule in standards.md - Shared agent-setup.md with per-role file routing + Output Discipline (subagents reply with summary, save full detail to file) - reviewer/researcher/test-runner/test-writer refactored to follow agent-setup.md; reviewer Response Format hard-capped - Workflow handoff continuity: new Always Offer Next Action rule plus state-branching handoff lines in start-feature/close-step/finish-task/ check-task - Implementation Permission Protocol refactored to align with the task-file workflow (plan lives in the task file, not inline in chat) - data/research and data/notes directories gitignored Co-Authored-By: Claude via AIContext
Elevates Information Density to a hard rule with stronger opening framing, adds Task Planning Guidelines against automated chores and manual human steps in plans, and chains /next-step into /run-step to remove duplicated execution logic. Co-Authored-By: Claude via AIContext
The brief's `## Decisions` section is a supersession log, not a decision store — the old name made workflow prompts describe a "brief -> spec elevation" flow that contradicts the Brief content boundary rule in process.md. Renamed to `## Decision Overrides` and reframed close-step, finish-task, and check-task so new decisions go directly to the spec; only spec supersessions land in the brief. Co-Authored-By: Claude Opus 4.6 (1M context) via AIContext
Shared name with spec Requirements caused repeated confusion about apparent duplication — the layers are distinct concepts. Co-Authored-By: Claude Opus 4.6 (1M context) via AIContext
Previous rule missed the "teaching what docs cover" antipattern and had no size ceiling. Moved to standards.md per the no-paraphrase rule. Co-Authored-By: Claude Opus 4.6 (1M context) via AIContext
Manual per-prompt review caught cross-prompt bugs and tool-specific assumptions a pure verbosity audit would have missed. Three filename renames disambiguate verb-verb readings; brief template slimmed ~70%. Co-Authored-By: Claude Opus 4.6 (1M context) via AIContext
Drift failures during a check-task interview produced two new behavior rules (interview persistence, mid-conversation thread continuity). Consolidation pass removed ~60 lines of duplication and reorganized around responsibility boundaries, with scope headers now guardrailing the split between process.md and standards.md. Co-Authored-By: Claude via AIContext
Review/tests now take partial/full/false/ask at both timings — no more deep_review/full_tests naming hack. Commit/push stay boolean. Two-stage ask UX (decision + save-as-default) runs upfront at /run-step or /run-task so the rest proceeds unattended. Reviewer subagent receives an explicit corpus based on commit state, closing a latent gap invisible until per-step commits became configurable. Co-Authored-By: Claude via AIContext
… 5 Whys Four behavioral gaps closed in interview.md: optional (considered: X) suffix for genuinely-weighed alternatives, compressed surprise rule with dimension-map test, standalone purpose check with smart skip, and 5 Whys one-line pointer for diagnostic drilling. Co-Authored-By: Claude via AIContext
Extend /draft-issue to optionally create issues on GitHub via config (issue.save_to_file, issue.create_in_github). Extract issue body into editable template. Fix review playbook mapping in run-task/step-loop. Co-Authored-By: Claude via AIContext
Options now explain what they do ("Quick review — this step's changes")
instead of config jargon ("Partial"). Scope check question reworded
so "No" is a natural answer to "Anything to add or change?"
Co-Authored-By: Claude via AIContext
Position AIContext as a Spec Driven Development framework. Update README, docs, and skills reference for 1.7.0 features. Finalize changelog and bump version to 1.7.0. Co-Authored-By: Claude via AIContext
Co-Authored-By: Claude via AIContext
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughCentralizes session startup and config handling, renames the runner to Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Agent
participant Config as Config (config.yml)
participant Task as Task File
participant Spec as Spec File
participant Brief as Brief File
participant Reviewer as Reviewer Agent
participant Tester as Test Runner
User->>Agent: /run-task
Agent->>Config: ensure-config (load after_step/after_task)
Agent->>Task: read task file
Agent->>Spec: read linked spec
Agent->>Brief: read/create brief
Agent->>Agent: batch-ask for after_step.* (if any)
Agent->>Config: persist resolved answers
loop each unchecked step
Agent->>Agent: execute step-loop
Agent->>Brief: append session knowledge / Decision Overrides
alt review required
Agent->>Reviewer: send review corpus + scope
Reviewer->>Agent: findings
end
alt tests required
Agent->>Tester: run tests
Tester->>Agent: results
end
alt commit required
Agent->>Agent: commit via commit.md
end
Agent->>Spec: apply new decisions or record supersessions
end
alt after_task review/tests
Agent->>Reviewer: full review
Reviewer->>Agent: findings
Agent->>Tester: full tests
Tester->>Agent: results
end
Agent->>Agent: finish-task (apply Decision Overrides, update worklog)
sequenceDiagram
participant User
participant Agent
participant Interview as Interview Subflow
participant Spec as Spec File
participant Task as Task File
participant Brief as Brief File
User->>Agent: /start-feature
Agent->>Agent: seed dimension map
Agent->>Interview: delegate interview with seed
loop breadth-first
Interview->>User: ask dimension question
User->>Interview: answer
Interview->>Interview: update decisions
end
Interview->>Agent: interview summary
Agent->>User: confirm out-of-scope
Agent->>Spec: create spec (decisions)
Agent->>Task: create task(s) and append footers
Agent->>Brief: create brief
Agent->>User: output counts + next `/run-task`
Estimated code review effort🎯 4 (Complex) | ⏱️ ~65 minutes Possibly related PRs
Poem
✨ Finishing Touches🧪 Generate unit tests (beta)
|
There was a problem hiding this comment.
Actionable comments posted: 12
Note
Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.
🟡 Minor comments (9)
.codex/skills/brainstorm/SKILL.md-3-3 (1)
3-3:⚠️ Potential issue | 🟡 MinorPunctuation inconsistency between Codex and Claude skill variants.
The Codex variant's description ends with a period while the Claude variant (
.claude/skills/brainstorm/SKILL.mdline 3) omits it. Additionally, the Claude variant includesdisable-model-invocation: truein its frontmatter while the Codex variant does not.🔧 Proposed fix for consistency
If the differences are intentional (e.g., Codex and Claude have different frontmatter requirements), no action needed. Otherwise, align the descriptions and consider whether
disable-model-invocationshould be present in both:--- name: brainstorm -description: Generate missing angles, better implementations, and new combinations — creative expansion that complements /challenge. +description: Generate missing angles, better implementations, and new combinations — creative expansion that complements /challenge ---🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.codex/skills/brainstorm/SKILL.md at line 3, The frontmatter/description mismatch between the Codex skill (.codex/skills/brainstorm/SKILL.md) and the Claude skill (.claude/skills/brainstorm/SKILL.md) should be made consistent: update the description field in .codex/skills/brainstorm/SKILL.md to match the Claude variant (remove or add the trailing period so both descriptions are identical) and decide whether the frontmatter key disable-model-invocation should be present in both files; if it’s required, add disable-model-invocation: true to the Codex frontmatter, otherwise remove it from the Claude file so both frontmatters match..aicontext/prompts/check-update.md-34-34 (1)
34-34:⚠️ Potential issue | 🟡 MinorLine 34 has incorrect wording about cache contents — clarify where installed CLI version comes from.
Line 34 states "compare against the installed CLI version from the cache," but the cache structure (
{ latestVersion, timestamp, lastChecked }) does not include the installed version. The comparison should be between the cachedlatestVersionand the current installed CLI version (obtained from theVERSIONconstant or.aicontext/.versionfile), not from the cache. Reword to clarify this distinction.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/check-update.md at line 34, Line 34 is misleading about where the installed CLI version comes from; update the wording to state that the cached object ({ latestVersion, timestamp, lastChecked }) only holds the latest available version and should be compared against the actual installed CLI version (e.g., the VERSION constant or the .aicontext/.version file), not a value from the cache — mention `latestVersion`, `timestamp`, `lastChecked`, and `VERSION` (or `.aicontext/.version`) to make the distinction clear..aicontext/templates/task.template.md-13-18 (1)
13-18:⚠️ Potential issue | 🟡 MinorAvoid pre-checked deliverables in the base template.
Line 17 seeds new tasks with an already-completed item, which can lead to accidental false positives during close-time verification.
Suggested template-safe adjustment
## Deliverables: <!-- Definition of done for this work bundle — checkable at close time. See process.md "Task Deliverables vs Spec Requirements" for the four categories (spec delivery, process artifacts, constraints, drive-bys). --> - [ ] [Concrete deliverable 1] - [ ] [Concrete deliverable 2] -- [x] [Concrete deliverable 3 — example of a delivered requirement] +- [ ] [Concrete deliverable 3] +<!-- Example completed item format: - [x] [Delivered requirement description] -->🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/templates/task.template.md around lines 13 - 18, The base task template currently contains a pre-checked deliverable ("- [x] [Concrete deliverable 3 — example of a delivered requirement]") which can cause false positives; update the Deliverables list in the task template by changing the checked box marker "[x]" to an unchecked "[ ]" (or remove the example completed item entirely) so all seeded checkboxes start unchecked; target the Deliverables section and the specific checklist line that contains "[x] [Concrete deliverable 3 — example of a delivered requirement]" when making the edit..aicontext/templates/spec.template.md-17-17 (1)
17-17:⚠️ Potential issue | 🟡 MinorFix grammar in the solution prompt sentence.
Line 17 reads “how does it addresses the problem?”; this should be “how does it address the problem?” for correct template wording.
✏️ Proposed fix
-[High-level description of the approach. What will change and how does it addresses the problem?] +[High-level description of the approach. What will change and how does it address the problem?]🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/templates/spec.template.md at line 17, The template sentence currently reads "how does it addresses the problem?" — update that phrasing to "how does it address the problem?" in the spec.template.md template (look for the high-level description prompt line containing "how does it addresses the problem?") so the verb agrees correctly with "does"..aicontext/prompts/plan-tasks.md-15-15 (1)
15-15:⚠️ Potential issue | 🟡 MinorNormalize capitalization in the context-loading instruction.
Line 15 uses “already Read earlier,” which reads like an accidental capitalization. Use lowercase “read” for consistency.
✏️ Proposed fix
-Follow `ensure-config.md` to read project settings (`task_naming` drives the version prefix). Load the spec and any existing tasks linked in its `## Tasks` section — skip any file already Read earlier in this conversation. +Follow `ensure-config.md` to read project settings (`task_naming` drives the version prefix). Load the spec and any existing tasks linked in its `## Tasks` section — skip any file already read earlier in this conversation.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/plan-tasks.md at line 15, The sentence in .aicontext/prompts/plan-tasks.md currently uses an incorrect capitalization ("Read" in "already Read earlier"); update that occurrence to lowercase "read" so the instruction reads "skip any file already read earlier in this conversation" — locate the sentence in the text that includes "skip any file already Read earlier in this conversation" and change "Read" to "read" to normalize capitalization.CHANGELOG.md-34-35 (1)
34-35:⚠️ Potential issue | 🟡 Minor1.6.0 history conflicts with the 1.7.0 rename note.
Line 34 lists
/run-taskas already added in 1.6.0, but Line 18 says the rename from/run-stepshappens in 1.7.0.🛠️ Suggested fix
-- **New skills**: `/start-feature`, `/run-task`, `/finish-task`, `/plan-tasks`, `/do-it`, `/align-context`, `/gh-review-fix-loop` +- **New skills**: `/start-feature`, `/run-steps`, `/finish-task`, `/plan-tasks`, `/do-it`, `/align-context`, `/gh-review-fix-loop`🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@CHANGELOG.md` around lines 34 - 35, The changelog has a version history conflict: 1.6.0 lists the new skill `/run-task` while the 1.7.0 entry documents a rename from `/run-steps` → `/run-task`; update the entries to be consistent by either removing `/run-task` from the 1.6.0 "New skills" list or changing the 1.7.0 rename note to reflect that `/run-task` already existed (e.g., convert the 1.7.0 line about renaming `/run-steps` to `/run-task` into a note that `/run-steps` was deprecated or clarify the actual rename), and ensure both the 1.6.0 and 1.7.0 lines referring to `/run-task` and `/run-steps` match.docs/workflow.md-173-173 (1)
173-173:⚠️ Potential issue | 🟡 MinorCapitalize platform name in prose
Use “GitHub” in text (while keeping the config key
issue.create_in_githubunchanged).🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/workflow.md` at line 173, Update the prose to capitalize the platform name as "GitHub" while leaving the config key `issue.create_in_github` unchanged; specifically change the sentence that mentions creating the issue on GitHub via `gh issue create` so the visible text uses "GitHub" (keep the inline code/backticks and config key exactly as-is).README.md-55-55 (1)
55-55:⚠️ Potential issue | 🟡 MinorInconsistent config messaging in onboarding copy
Line 55 says “Zero config files to edit,” but the Customization section later asks users to edit
config.yml/config.local.yml. Please reword this line to avoid a contradictory setup expectation.Suggested wording tweak
-**The AI adapts to your workflow** — on first run, it asks how you like to work: reviews after every step or only at the end? Commit per step or per task? Push automatically? It remembers your answers and never asks again. Zero config files to edit. +**The AI adapts to your workflow** — on first run, it asks how you like to work: reviews after every step or only at the end? Commit per step or per task? Push automatically? It remembers your answers and usually removes the need for manual config edits.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@README.md` at line 55, Update the onboarding sentence that currently reads "Zero config files to edit" to remove the contradiction with the Customization section; replace it with a clearer line such as "Minimal setup — sensible defaults with optional config files (e.g., config.yml, config.local.yml) for customization" so it references optional config files and matches the later instructions; locate and edit the exact sentence "Zero config files to edit" in the README and ensure the new wording mentions the optional nature of config.yml/config.local.yml and that edits are only required for customization..aicontext/rules/process.md-22-26 (1)
22-26:⚠️ Potential issue | 🟡 MinorDon't advertise
/close-stepas a public command here.This reads like a supported user-facing entry point, but
close-stepis not shipped in the installed skill lists. That will send some users to a command they do not actually have. Either reference only the public entry points here, or clarify thatclose-step.mdis internal/shared.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/rules/process.md around lines 22 - 26, The "Implementation Permission Protocol" entry references a non-public command "/close-step", which will mislead users; update the text under the "Implementation Permission Protocol" heading to either remove "/close-step" and list only supported public entry points or explicitly mark "/close-step" as internal/shared (not user-facing) so readers aren't directed to a command they don't have. Ensure the change mentions the exact token "/close-step" so reviewers can find and fix the line.
🧹 Nitpick comments (6)
.aicontext/prompts/align-context.md (1)
18-18: Complex reconciliation logic — consider adding an example.The three-way decision tree for spec reconciliation (skip/revise/append) introduces a sophisticated conflict-resolution mechanism with Decision Overrides. While the logic appears sound, the distinction between "contradicts existing → revise the spec" and "genuinely new → append" may benefit from a brief example or clearer guidance on when to revise vs. append, especially for borderline cases.
💡 Optional: Add example for clarity
Consider adding a brief example after line 18:
If a spec is linked, review it against session knowledge. For each candidate addition (decisions, requirements, non-goals): already present → skip; contradicts existing → revise the spec and record the supersession in the brief's Decision Overrides (see `process.md "Brief content boundary"`); genuinely new → append to the appropriate section. If an Edit fails because your memory is stale, Grep + Read just that section and retry. + +Example: if spec says "Use PostgreSQL" but session shows a decision to use MongoDB instead, revise the spec section and record "PostgreSQL → MongoDB: [reason]" in Decision Overrides.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/align-context.md at line 18, Add a short concrete example after the sentence describing the three-way decision tree (the line that starts "If a spec is linked, review it against session knowledge...") to clarify the difference between "contradicts existing → revise the spec" and "genuinely new → append"; use a mini scenario referencing "Decision Overrides" and the process.md 'Brief content boundary' (e.g., an existing requirement A vs. new spec B that changes A's acceptance criteria—show that as a revise with a recorded override, versus a wholly new requirement C being appended) so reviewers can see when to revise versus append in borderline cases..aicontext/prompts/check-update.md (1)
43-43: Dual timestamp representation in cache — consider consolidating.The cache schema requires both
timestamp(Unix ms) andlastChecked(ISO format) for the same moment. While this may provide flexibility, maintaining two representations of the same data introduces redundancy and potential for inconsistency.If both formats aren't required by different consumers, consider using a single format (ISO is more human-readable; Unix ms is better for arithmetic). If intentional for compatibility with the CLI implementation, this can be safely ignored.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/check-update.md at line 43, The cache currently writes both `timestamp` (Unix ms) and `lastChecked` (ISO) to `/tmp/aicontext-version-cache.json` causing redundancy; pick a single canonical field (either `lastChecked` as ISO for readability or `timestamp` as Unix ms for arithmetic), update the writer that creates `latestVersion`, `timestamp`, `lastChecked` so it only emits the chosen field, and update any consumer/reader logic to consume that one field instead of relying on both (references: the cache write that creates `latestVersion`/`timestamp`/`lastChecked` and any code that reads `/tmp/aicontext-version-cache.json`)..claude/agents/reviewer.md (1)
12-13: Constrain playbook source to trusted prompt paths.Consider explicitly limiting the playbook to
.aicontext/prompts/*.md(or an allowlist) to avoid accidental/untrusted path injection via caller input.Proposed wording tweak
-Follow `.aicontext/prompts/agent-setup.md` for shared startup files. Then read the review playbook the caller names (e.g. `.aicontext/prompts/review.md`) — it owns the review methodology (criteria, scoring, where findings get saved). +Follow `.aicontext/prompts/agent-setup.md` for shared startup files. Then read only a caller-provided playbook under `.aicontext/prompts/` (e.g. `.aicontext/prompts/review.md`) — it owns the review methodology (criteria, scoring, where findings get saved). If the path is outside that directory, stop and ask for a valid playbook path.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.claude/agents/reviewer.md around lines 12 - 13, Limit allowed playbook paths to a trusted allowlist to prevent path injection: when resolving the review playbook requested by the caller (the string that names files like ".aicontext/prompts/review.md" in reviewer.md), validate and only accept filenames matching the pattern ".aicontext/prompts/*.md" (or an explicit allowlist of known playbook basenames) before loading; reject or sanitize any other input and log a clear error. Ensure the check is applied where the caller-provided playbook name is used to open/read the file so only trusted prompt paths are loadable..aicontext/prompts/do-it.md (1)
7-7: Avoid hard-coded section numbers in cross-prompt references.Line 7 is brittle if
add-step.mdis reorganized. Prefer referencing the phase name only.♻️ Suggested tweak
-Follow `add-step.md` through its Update Spec phase (sections 1-4). Skip its Confirm step — implementation follows below. +Follow `add-step.md` through its **Update Spec** phase. Skip its **Confirm** step — implementation follows below.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/do-it.md at line 7, Replace the brittle numeric reference in the sentence "Follow `add-step.md` through its Update Spec phase (sections 1-4). Skip its Confirm step — implementation follows below." with a reference to the phase name only (e.g., "Follow add-step.md through its Update Spec phase. Skip its Confirm step..."), and update any other occurrences that mention "sections 1-4" so they reference the "Update Spec phase" by name instead of hard-coded section numbers..aicontext/prompts/ensure-config.md (1)
3-10: Clarify override precedence and mutability expectations.Consider explicitly stating precedence (
config.local.ymloverridesconfig.yml) and that migrations/default-fill should write toconfig.ymlonly, notconfig.local.yml, to avoid ambiguity in automation behavior.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/ensure-config.md around lines 3 - 10, Update the ensure-config prompt text to explicitly state that config.local.yml takes precedence over config.yml and that any automated migrations or default-fills must write only to .aicontext/config.yml (not config.local.yml); mention that config.local.yml is intended for user/local overrides and is mutable by users but should not be modified by automation, while config.yml is the single source for writing defaults and migrating settings from project.md (copy commit rules/task naming into config.yml and remove from project.md)..aicontext/prompts/interview.md (1)
8-10: Loadstandards.mdexplicitly before enforcing its rulesThis prompt enforces Question Pacing from
standards.md, but setup only loadsproject.mdandstructure.md. Addstandards.mdin “Before Asking” to keep standalone/interviewruns deterministic.Suggested patch
-2. Load `.aicontext/project.md` and `.aicontext/structure.md` (skip if already Read earlier in this conversation — rely on memory) +2. Load `.aicontext/rules/standards.md`, `.aicontext/project.md`, and `.aicontext/structure.md` (skip if already Read earlier in this conversation — rely on memory)Also applies to: 24-24
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/interview.md around lines 8 - 10, The "Before Asking" load list in .aicontext/prompts/interview.md currently loads `.aicontext/project.md` and `.aicontext/structure.md` but omits `standards.md`; update the "Before Asking" section to explicitly include `.aicontext/standards.md` so the Question Pacing rules are available at runtime and `/interview` runs are deterministic—locate the list around the lines that read "Load `.aicontext/project.md` and `.aicontext/structure.md`" and add `.aicontext/standards.md` alongside them.
🤖 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/aic-help.md:
- Line 57: The documentation line about lifecycle values is incorrect: update
the description in .aicontext/prompts/aic-help.md that mentions after_step and
after_task so it reflects the actual allowed values for review/tests (use
"partial | full | false | ask" instead of "true | false | ask"); search for
occurrences of after_step and after_task in the same file and revise any
examples or sentences that claim the values are true|false|ask so they
consistently document the correct modes for review/tests and keep the existing
wording about prompting behavior for ask.
In @.aicontext/prompts/commit.md:
- Around line 25-33: The doc currently conflicts about how an unset commit.body
should behave; make the canonical rule "unset behaves as true" and update both
the earlier commit.body description and the "Co-Authored-By trailer — MUST
follow" section to match: state that when commit.body is unset it is treated as
true, therefore trailer handling (read commit.co_authored_trailer, custom string
overrides, false suppresses trailer, default/empty uses tool default) applies;
ensure references to commit.body, commit.co_authored_trailer, and the
"Co-Authored-By trailer" wording are consistent and remove any conditional text
that scopes trailer logic only to commit.body: true so both sections convey the
same behavior.
In @.aicontext/prompts/draft-issue.md:
- Line 31: The draft describes running gh issue create when
issue.create_in_github is true but uses inline --body which breaks on multiline
markdown; change the invocation in the issue.create_in_github branch to use
--body-file <file> or stdin (-F - with a heredoc) instead of --body "{body}" so
arbitrary Markdown (quotes, backticks, newlines) is preserved; update the gh
issue create calls referenced (the lines using gh issue create and --body) to
write the body to a temporary file and pass --body-file or pipe the body via -F
-.
In @.aicontext/prompts/finish-task.md:
- Line 55: The push step in finish-task uses `git rev-list @{u}..HEAD --count`
which fails when the current branch has no upstream; update the logic in the
finish-task push gate (the after_task.push handling) to first detect whether an
upstream exists for the current branch (e.g., via `git rev-parse --verify @{u}`
or checking `git for-each-ref --format='%(upstream:short)'`/`git rev-parse
--abbrev-ref --symbolic-full-name @{u}`) and only run the rev-list/count check
if that upstream check succeeds; if no upstream exists, either skip the
push-gate and perform `git push --set-upstream origin <branch>` (or prompt/flag
accordingly) so the push step is resilient on newly created branches.
In @.aicontext/prompts/prepare-release.md:
- Around line 20-25: Update prepare-release.md to explicitly bootstrap
configuration before reading project.base_branch: insert a step to "run
ensure-config.md" (or check/load .aicontext/config.yml) prior to using
project.base_branch for the git diff, and implement a fallback branch behavior
if the config is missing (e.g., default to main/master or prompt). Ensure
references to project.base_branch, git diff, and ai_changelog in
prepare-release.md are conditioned on a successful config load so the git diff
step uses a validated branch value.
In @.aicontext/prompts/run-task.md:
- Around line 14-19: The batching logic currently reads/writes only config.yml;
change it to read the resolved configuration (config.yml merged with
config.local.yml and any runtime overrides) when collecting every after_step.*
and after_task.* field and use that resolved set for prompting and for deciding
whether to skip the batch; when persisting "Save as default in config.yml?
(y/N)" answers, only write the chosen defaults back to config.yml (not blindly
overwrite local/runtime overrides) and ensure writes respect and merge with
existing config.local.yml semantics so personal overrides are not lost; update
references used by the Ask UX in step-loop.md to call the resolved config loader
(use the project’s resolved config getter/merge function or implement a
getResolvedConfig helper) and ensure the save operation only updates config.yml
fields that were explicitly chosen to be persisted.
In @.aicontext/prompts/start-feature.md:
- Around line 7-11: Update the kickoff steps in
.aicontext/prompts/start-feature.md so Step 1 explicitly requires reading
project rules in the correct order: process.md, standards.md, project.md,
structure.md, local.md; keep the rest of the flow (asking the user for a one- or
two-sentence feature description, exploring the codebase, and building a
starting **dimension list**) unchanged but ensure the seeded dimension list step
still carries into Step 2.
In @.aicontext/prompts/step-loop.md:
- Around line 7-31: The documentation currently mixes step-level and task-level
ask prompts causing scope confusion: when implementing the single-step entry
flow (the logic that batches after_step.* asks) remove or relocate all
after_task.* rows from the "Ask UX" table so only after_step.* fields are shown,
or alternatively split the section into two explicit modes ("Single-step entry"
covering after_step.review/tests/commit" and "Task-level entry" covering
after_task.review/tests/commit/push") and make the behavior for each mode
explicit; update the tables and the leading sentence that references
`/run-step`, `/do-it`, `/next-step` to clearly state which fields are collected
in that mode and ensure any examples only list the corresponding after_step.* or
after_task.* config fields.
In @.claude/agents/test-runner.md:
- Line 20: Update the example pipeline that shows "node --test test/*.test.js
2>&1 | tee /tmp/test-run-...log" to preserve the exit status: recommend enabling
POSIX pipefail (e.g., run "set -o pipefail" or equivalent) before the pipeline
or show the alternative of capturing the test command's exit code and exiting
with it after tee, so that test failures from "node --test ..." are not masked
by "tee".
In `@bin/aicontext.js`:
- Around line 456-492: The current logic only appends whole top-level blocks
from template into configDest by comparing existingSections and newBlocks, which
misses new child keys inside existing sections; instead parse both template and
existing into JS objects (e.g., using js-yaml), perform a deep merge that
preserves existing values but inserts any missing keys from template into
corresponding sections (operate on the parsed objects rather than string
blocks), then stringify the merged object back to YAML and fs.writeFileSync to
configDest; keep the existing logging but change it to report per-section which
keys were added (use the parsed structures to compute added keys) and remove the
string-only block assembly (variables: template, existing, existingSections,
blocks, newBlocks) in favor of yaml parsing + deepMerge + write.
- Around line 17-20: Add the missing 'gh-fix-tests.md' entry to the
FRAMEWORK_PROMPTS array in bin/aicontext.js so the prompt file is
copied/installed (look for the FRAMEWORK_PROMPTS variable definition), and
update the prompt inventory assertions in test/cli.test.js to include
gh-fix-tests (adjust the expected list/count/assertion that checks which prompt
files are present) so tests reflect the new prompt being shipped.
- Around line 403-427: The branch detection currently runs git in the process
CWD (execSync('git branch', ...)) which can detect the caller's repo instead of
the install target; change the execSync call used when computing detectedBranch
so it runs with the target repository as its working directory (pass the target
path via the cwd option), e.g. replace the execSync invocation in the
detectedBranch block to use { cwd: targetPath, stdio: [...] } where targetPath
is the install target directory you already have access to, keep the same
try/catch fallback behavior, and ensure any later logic that uses detectedBranch
(branchOptions, branchMap, baseBranch assignment and setConfigValue) stays
unchanged so the correct base_branch is written for the target repo.
---
Minor comments:
In @.aicontext/prompts/check-update.md:
- Line 34: Line 34 is misleading about where the installed CLI version comes
from; update the wording to state that the cached object ({ latestVersion,
timestamp, lastChecked }) only holds the latest available version and should be
compared against the actual installed CLI version (e.g., the VERSION constant or
the .aicontext/.version file), not a value from the cache — mention
`latestVersion`, `timestamp`, `lastChecked`, and `VERSION` (or
`.aicontext/.version`) to make the distinction clear.
In @.aicontext/prompts/plan-tasks.md:
- Line 15: The sentence in .aicontext/prompts/plan-tasks.md currently uses an
incorrect capitalization ("Read" in "already Read earlier"); update that
occurrence to lowercase "read" so the instruction reads "skip any file already
read earlier in this conversation" — locate the sentence in the text that
includes "skip any file already Read earlier in this conversation" and change
"Read" to "read" to normalize capitalization.
In @.aicontext/rules/process.md:
- Around line 22-26: The "Implementation Permission Protocol" entry references a
non-public command "/close-step", which will mislead users; update the text
under the "Implementation Permission Protocol" heading to either remove
"/close-step" and list only supported public entry points or explicitly mark
"/close-step" as internal/shared (not user-facing) so readers aren't directed to
a command they don't have. Ensure the change mentions the exact token
"/close-step" so reviewers can find and fix the line.
In @.aicontext/templates/spec.template.md:
- Line 17: The template sentence currently reads "how does it addresses the
problem?" — update that phrasing to "how does it address the problem?" in the
spec.template.md template (look for the high-level description prompt line
containing "how does it addresses the problem?") so the verb agrees correctly
with "does".
In @.aicontext/templates/task.template.md:
- Around line 13-18: The base task template currently contains a pre-checked
deliverable ("- [x] [Concrete deliverable 3 — example of a delivered
requirement]") which can cause false positives; update the Deliverables list in
the task template by changing the checked box marker "[x]" to an unchecked "[ ]"
(or remove the example completed item entirely) so all seeded checkboxes start
unchecked; target the Deliverables section and the specific checklist line that
contains "[x] [Concrete deliverable 3 — example of a delivered requirement]"
when making the edit.
In @.codex/skills/brainstorm/SKILL.md:
- Line 3: The frontmatter/description mismatch between the Codex skill
(.codex/skills/brainstorm/SKILL.md) and the Claude skill
(.claude/skills/brainstorm/SKILL.md) should be made consistent: update the
description field in .codex/skills/brainstorm/SKILL.md to match the Claude
variant (remove or add the trailing period so both descriptions are identical)
and decide whether the frontmatter key disable-model-invocation should be
present in both files; if it’s required, add disable-model-invocation: true to
the Codex frontmatter, otherwise remove it from the Claude file so both
frontmatters match.
In `@CHANGELOG.md`:
- Around line 34-35: The changelog has a version history conflict: 1.6.0 lists
the new skill `/run-task` while the 1.7.0 entry documents a rename from
`/run-steps` → `/run-task`; update the entries to be consistent by either
removing `/run-task` from the 1.6.0 "New skills" list or changing the 1.7.0
rename note to reflect that `/run-task` already existed (e.g., convert the 1.7.0
line about renaming `/run-steps` to `/run-task` into a note that `/run-steps`
was deprecated or clarify the actual rename), and ensure both the 1.6.0 and
1.7.0 lines referring to `/run-task` and `/run-steps` match.
In `@docs/workflow.md`:
- Line 173: Update the prose to capitalize the platform name as "GitHub" while
leaving the config key `issue.create_in_github` unchanged; specifically change
the sentence that mentions creating the issue on GitHub via `gh issue create` so
the visible text uses "GitHub" (keep the inline code/backticks and config key
exactly as-is).
In `@README.md`:
- Line 55: Update the onboarding sentence that currently reads "Zero config
files to edit" to remove the contradiction with the Customization section;
replace it with a clearer line such as "Minimal setup — sensible defaults with
optional config files (e.g., config.yml, config.local.yml) for customization" so
it references optional config files and matches the later instructions; locate
and edit the exact sentence "Zero config files to edit" in the README and ensure
the new wording mentions the optional nature of config.yml/config.local.yml and
that edits are only required for customization.
---
Nitpick comments:
In @.aicontext/prompts/align-context.md:
- Line 18: Add a short concrete example after the sentence describing the
three-way decision tree (the line that starts "If a spec is linked, review it
against session knowledge...") to clarify the difference between "contradicts
existing → revise the spec" and "genuinely new → append"; use a mini scenario
referencing "Decision Overrides" and the process.md 'Brief content boundary'
(e.g., an existing requirement A vs. new spec B that changes A's acceptance
criteria—show that as a revise with a recorded override, versus a wholly new
requirement C being appended) so reviewers can see when to revise versus append
in borderline cases.
In @.aicontext/prompts/check-update.md:
- Line 43: The cache currently writes both `timestamp` (Unix ms) and
`lastChecked` (ISO) to `/tmp/aicontext-version-cache.json` causing redundancy;
pick a single canonical field (either `lastChecked` as ISO for readability or
`timestamp` as Unix ms for arithmetic), update the writer that creates
`latestVersion`, `timestamp`, `lastChecked` so it only emits the chosen field,
and update any consumer/reader logic to consume that one field instead of
relying on both (references: the cache write that creates
`latestVersion`/`timestamp`/`lastChecked` and any code that reads
`/tmp/aicontext-version-cache.json`).
In @.aicontext/prompts/do-it.md:
- Line 7: Replace the brittle numeric reference in the sentence "Follow
`add-step.md` through its Update Spec phase (sections 1-4). Skip its Confirm
step — implementation follows below." with a reference to the phase name only
(e.g., "Follow add-step.md through its Update Spec phase. Skip its Confirm
step..."), and update any other occurrences that mention "sections 1-4" so they
reference the "Update Spec phase" by name instead of hard-coded section numbers.
In @.aicontext/prompts/ensure-config.md:
- Around line 3-10: Update the ensure-config prompt text to explicitly state
that config.local.yml takes precedence over config.yml and that any automated
migrations or default-fills must write only to .aicontext/config.yml (not
config.local.yml); mention that config.local.yml is intended for user/local
overrides and is mutable by users but should not be modified by automation,
while config.yml is the single source for writing defaults and migrating
settings from project.md (copy commit rules/task naming into config.yml and
remove from project.md).
In @.aicontext/prompts/interview.md:
- Around line 8-10: The "Before Asking" load list in
.aicontext/prompts/interview.md currently loads `.aicontext/project.md` and
`.aicontext/structure.md` but omits `standards.md`; update the "Before Asking"
section to explicitly include `.aicontext/standards.md` so the Question Pacing
rules are available at runtime and `/interview` runs are deterministic—locate
the list around the lines that read "Load `.aicontext/project.md` and
`.aicontext/structure.md`" and add `.aicontext/standards.md` alongside them.
In @.claude/agents/reviewer.md:
- Around line 12-13: Limit allowed playbook paths to a trusted allowlist to
prevent path injection: when resolving the review playbook requested by the
caller (the string that names files like ".aicontext/prompts/review.md" in
reviewer.md), validate and only accept filenames matching the pattern
".aicontext/prompts/*.md" (or an explicit allowlist of known playbook basenames)
before loading; reject or sanitize any other input and log a clear error. Ensure
the check is applied where the caller-provided playbook name is used to
open/read the file so only trusted prompt paths are loadable.
🪄 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: eec257a7-49e7-485e-99dc-17cde7377c1b
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (94)
.aicontext/.gitignore.aicontext/prompts/add-idea.md.aicontext/prompts/add-step.md.aicontext/prompts/agent-setup.md.aicontext/prompts/aic-help.md.aicontext/prompts/aic-skills.md.aicontext/prompts/align-context.md.aicontext/prompts/auto-setup.md.aicontext/prompts/brainstorm.md.aicontext/prompts/check-task.md.aicontext/prompts/check-update.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/detect-review-scope.md.aicontext/prompts/do-it.md.aicontext/prompts/draft-issue.md.aicontext/prompts/draft-pr.md.aicontext/prompts/ensure-config.md.aicontext/prompts/finish-task.md.aicontext/prompts/generate.md.aicontext/prompts/gh-fix-tests.md.aicontext/prompts/gh-review-check.md.aicontext/prompts/gh-review-fix-loop.md.aicontext/prompts/identify-task.md.aicontext/prompts/install-playwright-cli.md.aicontext/prompts/interview.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-task-plan.md.aicontext/prompts/review.md.aicontext/prompts/run-step.md.aicontext/prompts/run-steps.md.aicontext/prompts/run-task.md.aicontext/prompts/start-feature.md.aicontext/prompts/start.md.aicontext/prompts/step-loop.md.aicontext/prompts/test-writer.md.aicontext/prompts/thoughts.md.aicontext/prompts/web-inspect.md.aicontext/readme.md.aicontext/rules/process.md.aicontext/rules/standards.md.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/config.template.yml.aicontext/templates/issue.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/researcher.md.claude/agents/reviewer.md.claude/agents/test-runner.md.claude/agents/test-writer.md.claude/skills/add-idea/SKILL.md.claude/skills/brainstorm/SKILL.md.claude/skills/deep-review/SKILL.md.claude/skills/gh-fix-tests/SKILL.md.claude/skills/interview/SKILL.md.claude/skills/review-plan/SKILL.md.claude/skills/review-task-plan/SKILL.md.claude/skills/review/SKILL.md.claude/skills/run-task/SKILL.md.claude/skills/thoughts/SKILL.md.codex/skills/add-idea/SKILL.md.codex/skills/brainstorm/SKILL.md.codex/skills/finish-task/SKILL.md.codex/skills/interview/SKILL.md.codex/skills/review-plan/SKILL.md.codex/skills/review-task-plan/SKILL.md.codex/skills/run-task/SKILL.md.codex/skills/thoughts/SKILL.md.cursor/rules/aicontext.mdc.github/copilot-instructions.md.gitignoreCHANGELOG.mdREADME.mdbin/aicontext.jsdocs/development-model.mddocs/skills.mddocs/workflow.mdpackage.jsontest/cli.test.js
💤 Files with no reviewable changes (8)
- .aicontext/prompts/review-plan.md
- .codex/skills/review-plan/SKILL.md
- .aicontext/templates/release.template.md
- .claude/skills/review-plan/SKILL.md
- .aicontext/templates/project.template.md
- .aicontext/prompts/run-steps.md
- .aicontext/prompts/review-scope.md
- .aicontext/specs/spec-1.6.0-professional-dev-flow.md
Add gh-fix-tests.md to FRAMEWORK_PROMPTS. Use --body-file for gh issue create. Handle missing upstream in finish-task push. Add ensure-config to prepare-release. Fix git branch cwd in CLI init. Co-Authored-By: Claude via AIContext
There was a problem hiding this comment.
🧹 Nitpick comments (1)
.aicontext/prompts/draft-issue.md (1)
40-40: Make theask -> yespath explicitly reuse the--body-fileflow.Line 40 is currently generic (
gh issue create), while Line 31 is precise (--body-file+ temp-file lifecycle). Please explicitly reference the Line 31 flow here to prevent accidental regression to inline--body.Suggested wording
-1. Create the issue via `gh issue create` and show the URL +1. Create the issue using the same temp-file flow above (`gh issue create --title "{title}" --body-file {tmp_file}`), show the URL, then delete the temp file🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.aicontext/prompts/draft-issue.md at line 40, The prompt currently says to "Create the issue via `gh issue create` and show the URL" but is ambiguous; update that sentence to explicitly state reusing the `--body-file` flow described earlier (the `--body-file` + temp-file lifecycle used in the ask -> yes path) so the ask->yes path is preserved — explicitly mention creating a temporary file, writing the issue body to it, invoking `gh issue create --body-file <temp-file>`, and cleaning up the temp-file after showing the URL; adjust the wording in the line that currently contains `gh issue create` to reference `--body-file` and the temp-file lifecycle so readers don't regress to inline `--body`.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In @.aicontext/prompts/draft-issue.md:
- Line 40: The prompt currently says to "Create the issue via `gh issue create`
and show the URL" but is ambiguous; update that sentence to explicitly state
reusing the `--body-file` flow described earlier (the `--body-file` + temp-file
lifecycle used in the ask -> yes path) so the ask->yes path is preserved —
explicitly mention creating a temporary file, writing the issue body to it,
invoking `gh issue create --body-file <temp-file>`, and cleaning up the
temp-file after showing the URL; adjust the wording in the line that currently
contains `gh issue create` to reference `--body-file` and the temp-file
lifecycle so readers don't regress to inline `--body`.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 0b0fab0a-5dfe-4031-ac3c-f1facbca709c
📒 Files selected for processing (6)
.aicontext/prompts/aic-help.md.aicontext/prompts/draft-issue.md.aicontext/prompts/finish-task.md.aicontext/prompts/prepare-release.mdbin/aicontext.jstest/cli.test.js
🚧 Files skipped from review as they are similar to previous changes (2)
- .aicontext/prompts/aic-help.md
- .aicontext/prompts/prepare-release.md
Missing from 1.7.0 release notes despite being a shipped skill. Co-Authored-By: Claude via AIContext
Keep the flag only on GitHub-facing skills (draft-issue, draft-pr, gh-fix-tests, gh-review-fix-loop, gh-review-check) that mutate external state. Local-only skills don't need it — config rules already gate side-effects like commits and pushes. 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 `@README.md`:
- Around line 37-43: The fenced diagram block in README.md is unlabeled causing
markdownlint MD040; update the opening fence from ``` to include a language
label (e.g., ```text) for the diagram block so the linter recognizes it as a
code/text block; locate the diagram fenced block (the triple-backtick block that
contains the /start-feature → Interview → Spec + Task(s) flow) and add the label
to the opening fence, leaving the content unchanged.
🪄 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: 4b7347ff-ce7d-42e6-929f-a17b6af8fff3
📒 Files selected for processing (27)
.claude/skills/add-idea/SKILL.md.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/brainstorm/SKILL.md.claude/skills/challenge/SKILL.md.claude/skills/check-task/SKILL.md.claude/skills/commit/SKILL.md.claude/skills/create-task/SKILL.md.claude/skills/deep-review/SKILL.md.claude/skills/do-it/SKILL.md.claude/skills/finish-task/SKILL.md.claude/skills/interview/SKILL.md.claude/skills/next-step/SKILL.md.claude/skills/plan-tasks/SKILL.md.claude/skills/review-task-plan/SKILL.md.claude/skills/review/SKILL.md.claude/skills/run-step/SKILL.md.claude/skills/run-task/SKILL.md.claude/skills/start-feature/SKILL.md.claude/skills/start/SKILL.md.claude/skills/thoughts/SKILL.md.claude/skills/web-inspect/SKILL.mdCHANGELOG.mdREADME.mddocs/workflow.md
💤 Files with no reviewable changes (16)
- .claude/skills/add-step/SKILL.md
- .claude/skills/aic-skills/SKILL.md
- .claude/skills/do-it/SKILL.md
- .claude/skills/next-step/SKILL.md
- .claude/skills/start/SKILL.md
- .claude/skills/commit/SKILL.md
- .claude/skills/challenge/SKILL.md
- .claude/skills/create-task/SKILL.md
- .claude/skills/check-task/SKILL.md
- .claude/skills/web-inspect/SKILL.md
- .claude/skills/run-step/SKILL.md
- .claude/skills/aic-help/SKILL.md
- .claude/skills/plan-tasks/SKILL.md
- .claude/skills/align-context/SKILL.md
- .claude/skills/start-feature/SKILL.md
- .claude/skills/finish-task/SKILL.md
✅ Files skipped from review due to trivial changes (5)
- .claude/skills/interview/SKILL.md
- .claude/skills/add-idea/SKILL.md
- .claude/skills/review-task-plan/SKILL.md
- .claude/skills/brainstorm/SKILL.md
- .claude/skills/thoughts/SKILL.md
🚧 Files skipped from review as they are similar to previous changes (3)
- .claude/skills/review/SKILL.md
- .claude/skills/run-task/SKILL.md
- .claude/skills/deep-review/SKILL.md
Fixes markdownlint MD040 warning on the unlabeled workflow diagram. Co-Authored-By: Claude via AIContext
New tagline: "Teach AI to build features, not just write code" 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 `@README.md`:
- Around line 55-56: Update the README sentence "It remembers your answers and
never asks again" to clarify save-as-default behavior (e.g., "It remembers your
answers if you save them as defaults and asks only when needed") and remove or
revise the contradictory claim "Zero config files to edit" so it aligns with
later instructions that reference editing `.aicontext/config.yml` and creating
`.aicontext/config.local.yml`; specifically, edit the lines containing the exact
phrases "It remembers your answers and never asks again" and "Zero config files
to edit" to the suggested wording so the README consistently reflects the prompt
behavior and the existence of optional config files.
🪄 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: 717beb8a-def6-4df4-9868-bed3815c488c
⛔ Files ignored due to path filters (1)
assets/logo2.svgis excluded by!**/*.svg
📒 Files selected for processing (1)
README.md
[1.7.0] - 2026-04-10
Added
config.ymlwith personal overrides inconfig.local.yml(gitignored). Interactive setup duringaicontext init/draft-issuecreates GitHub issues — optionally create issues on GitHub directly, save locally, or both. Editable issue template. Auto-fills issue ID for subsequent task creation/interviewskill — structured breadth-first interview that recommends answers based on codebase exploration and captures decisions/brainstormskill — generate missing angles, better implementations, and new combinations/thoughtsskill — lightweight "what do you think?" check-in mid-conversation/add-ideaskill — capture deferred ideas to a backlog mid-session so they're not lost. AI suggests it when out-of-scope ideas surfaceChanged
/start-featureinterview improved — batches independent questions, recommends answers, walks dimensions breadth-first/run-stepsrenamed to/run-task/review-planrenamed to/review-task-planRemoved
commit.mode/commit.finish_actionconfig keys (silently migrated)config.ymlonly)Summary by CodeRabbit
New Features
Renamed Commands
Configuration
Spec-Driven Development
Task & Worklog
CI/CD