Skip to content

Version/1.7.0#19

Merged
zahardev merged 37 commits into
mainfrom
version/1.7.0
Apr 10, 2026
Merged

Version/1.7.0#19
zahardev merged 37 commits into
mainfrom
version/1.7.0

Conversation

@zahardev

@zahardev zahardev commented Apr 10, 2026

Copy link
Copy Markdown
Owner

[1.7.0] - 2026-04-10

Added

  • Adaptive workflow config — the AI asks your preferences on first run (reviews, tests, commits, push) and remembers them. All settings live in config.yml with personal overrides in config.local.yml (gitignored). Interactive setup during aicontext init
  • /draft-issue creates GitHub issues — optionally create issues on GitHub directly, save locally, or both. Editable issue template. Auto-fills issue ID for subsequent task creation
  • /interview skill — structured breadth-first interview that recommends answers based on codebase exploration and captures decisions
  • /brainstorm skill — generate missing angles, better implementations, and new combinations
  • /thoughts skill — lightweight "what do you think?" check-in mid-conversation
  • /add-idea skill — capture deferred ideas to a backlog mid-session so they're not lost. AI suggests it when out-of-scope ideas surface
  • Spec alignment checks — plan and task-close verification that spec requirements are covered
  • Co-Authored-By trailer config — customizable format, or disable entirely
  • Spec Driven Development framing — docs and README position AIContext as an SDD framework

Changed

  • /start-feature interview improved — batches independent questions, recommends answers, walks dimensions breadth-first
  • /run-steps renamed to /run-task
  • /review-plan renamed to /review-task-plan
  • Quality check prompts use friendly labels — "Quick review — this step's changes" instead of "Partial"
  • Review scope maps to the right playbook — quick review for step-level, deep review for task-level
  • Unified commit codepath — all prompts delegate to the same commit logic
  • Spec requirements now use checkboxes with traceability footers

Removed

  • Old commit.mode / commit.finish_action config keys (silently migrated)
  • Per-task commit rule overrides (lifecycle config lives in config.yml only)
  • Specs and worklog from git tracking (project-specific working files, now gitignored)

Summary by CodeRabbit

  • New Features

    • Added commands: /add-idea, /interview, /brainstorm, /thoughts, /gh-fix-tests, plus a structured /run-task and step-loop execution.
  • Renamed Commands

    • /run-steps → /run-task; /review-plan → /review-task-plan.
  • Configuration

    • Adaptive first-run config with local overrides and centralized lifecycle/commit settings (including commit message controls).
  • Spec-Driven Development

    • Checkbox requirements, traceable “implemented by” links, and Decision Overrides logging.
  • Task & Worklog

    • Deliverables section, stricter close/finish gates, new Worklog “Ideas” + /add-idea.
  • CI/CD

    • Automated CI diagnosis and fix workflow via gh-fix-tests.

zahardev added 30 commits April 5, 2026 00:40
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
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
@coderabbitai

coderabbitai Bot commented Apr 10, 2026

Copy link
Copy Markdown

Note

Reviews paused

It 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 reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Centralizes session startup and config handling, renames the runner to /run-task, adds config template/install helpers to the CLI, introduces new prompts/skills (interview/brainstorm/add-idea/thoughts/gh-fix-tests), changes task/spec/brief conventions (Deliverables, checkbox requirements, Decision Overrides), and expands review/CI flows and tests.

Changes

Cohort / File(s) Summary
CLI & Tests
bin/aicontext.js, test/cli.test.js
Add config helpers (installConfig, setConfigValue, resolveCommitAnswer, hasExistingFrameworkFiles), wire config template install/merge, change version-cache read/write semantics, expand/rename framework prompt & skill catalogs, and update tests to cover new behaviors.
Config Templates & Ignore
.aicontext/templates/config.template.yml, .aicontext/templates/*.md, .gitignore, .aicontext/.gitignore
Introduce config.template.yml, new issue/worklog templates, remove per-task commit rules from templates, add gitignore entries for config.local.yml and data note/research directories.
Runner Rename & Orchestration
.aicontext/prompts/run-task.md, (deleted) .aicontext/prompts/run-steps.md, .claude/skills/run-task/SKILL.md, .codex/skills/run-task/SKILL.md, docs/skills.md
Replace run-steps with run-task across prompts/skills/docs; run-task adds ask-batching, delegates step execution to step-loop.md, and centralizes after_task handling.
Session Startup & Agent Setup
.aicontext/prompts/start.md, .aicontext/prompts/auto-setup.md, .aicontext/prompts/agent-setup.md, .claude/CLAUDE.md, .cursor/rules/aicontext.mdc, .github/copilot-instructions.md
Centralize session start, add auto-setup, and introduce agent startup "Output Discipline" and concise saved-path reply requirements.
Step / Task Execution Flow
.aicontext/prompts/step-loop.md, .aicontext/prompts/run-step.md, .aicontext/prompts/add-step.md, .aicontext/prompts/close-step.md, .aicontext/prompts/next-step.md, .aicontext/prompts/do-it.md
Introduce ask-batching for after_step.*/after_task.*, unify review/test/commit via shared flows, add Deliverable Coverage and 100% checkbox rules, and tighten spec-sync / Decision Overrides handling.
Spec / Task / Brief Conventions
.aicontext/templates/spec.template.md, .aicontext/templates/task.template.md, .aicontext/templates/brief.template.md, .aicontext/rules/process.md, docs/development-model.md
Convert requirements to checkboxed lists with *Implemented by:* footers, add Deliverables to tasks, add Decision Overrides to briefs, and refactor process/docs toward a config-driven spec lifecycle.
New Prompts & Skills
.aicontext/prompts/interview.md, brainstorm.md, add-idea.md, thoughts.md, .claude/skills/*, .codex/skills/*
Add interview/brainstorm/add-idea/thoughts prompts and matching skill metadata; wire worklog ## Ideas handling and idea promotion commands.
Review, CI Fixing & Scope Detection
.aicontext/prompts/detect-review-scope.md, .aicontext/prompts/review-task-plan.md, .aicontext/prompts/gh-fix-tests.md, .aicontext/prompts/gh-review-fix-loop.md, .aicontext/prompts/check-update.md
Add deterministic review-scope detection with 200-line routing, new review-task-plan, an end-to-end /gh-fix-tests CI-fix flow, and refined update-check/cache behavior.
Docs, Changelog & Package
README.md, .aicontext/readme.md, CHANGELOG.md, docs/*.md, package.json
Bump to v1.7.0, document config-led workflow and new commands/skills, rename runner to /run-task, and update changelog/docs accordingly.
Deleted / Deprecated
.aicontext/specs/spec-1.6.0-professional-dev-flow.md, .aicontext/prompts/run-steps.md, .aicontext/prompts/review-plan.md, .aicontext/prompts/review-scope.md, .claude/skills/review-plan/SKILL.md, .codex/skills/review-plan/SKILL.md
Remove the prior 1.6.0 spec and deprecate prompts/skills tied to old run-steps/review-plan flows.

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)
Loading
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`
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~65 minutes

Possibly related PRs

  • Version/1.5.0 #16: Modifies CLI/framework helpers and tests—overlaps with new CLI exports, config install, and test changes in this PR.
  • Version 1.3.0 #13: Related prompt/skill renames and framework installation logic that this PR continues and expands.
  • Version 1.5.1 #17: Alters version-check/cache and update flow; overlaps with this PR’s cache schema and update-check behavior.

Poem

🐇 I hopped through specs and dotted lines,

Ideas tucked into worklog pines.
Tasks now flow and decisions trace,
Config kept snug in its quiet place.
One-seven-oh — the rabbit's pace!

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch version/1.7.0

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 | 🟡 Minor

Punctuation inconsistency between Codex and Claude skill variants.

The Codex variant's description ends with a period while the Claude variant (.claude/skills/brainstorm/SKILL.md line 3) omits it. Additionally, the Claude variant includes disable-model-invocation: true in 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-invocation should 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 | 🟡 Minor

Line 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 cached latestVersion and the current installed CLI version (obtained from the VERSION constant or .aicontext/.version file), 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 | 🟡 Minor

Avoid 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 | 🟡 Minor

Fix 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 | 🟡 Minor

Normalize 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 | 🟡 Minor

1.6.0 history conflicts with the 1.7.0 rename note.

Line 34 lists /run-task as already added in 1.6.0, but Line 18 says the rename from /run-steps happens 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 | 🟡 Minor

Capitalize platform name in prose

Use “GitHub” in text (while keeping the config key issue.create_in_github unchanged).

🤖 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 | 🟡 Minor

Inconsistent 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 | 🟡 Minor

Don't advertise /close-step as a public command here.

This reads like a supported user-facing entry point, but close-step is 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 that close-step.md is 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) and lastChecked (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.md is 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.yml overrides config.yml) and that migrations/default-fill should write to config.yml only, not config.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: Load standards.md explicitly before enforcing its rules

This prompt enforces Question Pacing from standards.md, but setup only loads project.md and structure.md. Add standards.md in “Before Asking” to keep standalone /interview runs 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

📥 Commits

Reviewing files that changed from the base of the PR and between 5d5492d and a883e8b.

⛔ Files ignored due to path filters (1)
  • package-lock.json is 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
  • .gitignore
  • CHANGELOG.md
  • README.md
  • bin/aicontext.js
  • docs/development-model.md
  • docs/skills.md
  • docs/workflow.md
  • package.json
  • test/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

Comment thread .aicontext/prompts/aic-help.md Outdated
Comment thread .aicontext/prompts/commit.md
Comment thread .aicontext/prompts/draft-issue.md Outdated
Comment thread .aicontext/prompts/finish-task.md Outdated
Comment thread .aicontext/prompts/prepare-release.md
Comment thread .aicontext/prompts/step-loop.md
Comment thread .claude/agents/test-runner.md
Comment thread bin/aicontext.js
Comment thread bin/aicontext.js
Comment thread bin/aicontext.js
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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
.aicontext/prompts/draft-issue.md (1)

40-40: Make the ask -> yes path explicitly reuse the --body-file flow.

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

📥 Commits

Reviewing files that changed from the base of the PR and between a883e8b and 9af1f6c.

📒 Files selected for processing (6)
  • .aicontext/prompts/aic-help.md
  • .aicontext/prompts/draft-issue.md
  • .aicontext/prompts/finish-task.md
  • .aicontext/prompts/prepare-release.md
  • bin/aicontext.js
  • test/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

coderabbitai[bot]
coderabbitai Bot previously approved these changes Apr 10, 2026
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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 9af1f6c and 126dd8a.

📒 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.md
  • CHANGELOG.md
  • README.md
  • docs/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

Comment thread README.md Outdated
Fixes markdownlint MD040 warning on the unlabeled workflow diagram.

Co-Authored-By: Claude via AIContext
coderabbitai[bot]
coderabbitai Bot previously approved these changes Apr 10, 2026
New tagline: "Teach AI to build features, not just write code"

Co-Authored-By: Claude via AIContext

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between d688e5a and 20553ab.

⛔ Files ignored due to path filters (1)
  • assets/logo2.svg is excluded by !**/*.svg
📒 Files selected for processing (1)
  • README.md

Comment thread README.md Outdated
@zahardev zahardev merged commit 3770445 into main Apr 10, 2026
2 checks passed
@coderabbitai coderabbitai Bot mentioned this pull request Apr 13, 2026
5 tasks
@coderabbitai coderabbitai Bot mentioned this pull request Apr 22, 2026
5 tasks
@coderabbitai coderabbitai Bot mentioned this pull request May 3, 2026
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant