Skip to content

chore: add pre-pr-review skill and update CLAUDE.md#103

Merged
Aureliolo merged 3 commits intomainfrom
chore/add-pre-pr-review-skill
Mar 5, 2026
Merged

chore: add pre-pr-review skill and update CLAUDE.md#103
Aureliolo merged 3 commits intomainfrom
chore/add-pre-pr-review-skill

Conversation

@Aureliolo
Copy link
Copy Markdown
Owner

Summary

  • Add .claude/skills/pre-pr-review/SKILL.md — automated pre-PR review pipeline that runs lint, format, type-check, tests, and launches review agents before creating PRs
  • Update CLAUDE.md with mandatory pre-PR review workflow section (always use /pre-pr-review instead of direct gh pr create)
  • Skill handles uncommitted/untracked changes and auto-creates feature branches when on main

Test plan

  • Lint passes (ruff check)
  • Format passes (ruff format)
  • Type-check passes (mypy)
  • All 1595 tests pass, 94.97% coverage
  • Verify /pre-pr-review works end-to-end on a future code change

Review coverage

Skipped agent review (no substantive code changes — docs/config only).

🤖 Generated with Claude Code

Add automated pre-PR review pipeline skill that runs lint, format,
type-check, tests, and optional review agents before creating PRs.
Update CLAUDE.md with mandatory pre-PR review workflow instructions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings March 5, 2026 10:19
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 5, 2026

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 5, 2026

📝 Walkthrough

Summary by CodeRabbit

  • Documentation
    • Added comprehensive Pre-PR Review documentation describing a multi-phase automated review workflow: precondition checks, quick-mode detection, automated quality checks, parallel review agents, findings triage, user-driven approval, patch application, post-fix verification, optional polishing, and PR creation with final summaries.
    • Expanded CI docs to include Python 3.14 support and enhanced checks: Dependabot updates, secret scanning, dependency review, and improved coverage reporting.

Walkthrough

Adds a new Pre-PR Review skill document describing a multi-phase automated review pipeline (prechecks, automated checks, agent-based reviews, triage, fixes, verification, PR creation) and updates CLAUDE.md to include the Pre-PR Review section and expanded CI matrix.

Changes

Cohort / File(s) Summary
Pre-PR Review Workflow Documentation
​.claude/skills/pre-pr-review/SKILL.md
New comprehensive skill document describing an automated multi-phase Pre-PR Review pipeline with precondition checks, quick-mode detection, automated checks (lint/format/type/test), agent roster and parallel execution, findings consolidation/triage, user approval flow, patch application, post-fix verification, optional polishing, PR creation/push, extensive agent prompts, and error/branch/large-diff handling.
Repository Documentation
CLAUDE.md
Added mandatory Pre-PR Review section and expanded CI configuration (includes Python 3.14 and added checks: Dependabot updates, secret scanning, dependency review, enhanced coverage reporting).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title directly summarizes the main changes: adding a pre-pr-review skill and updating CLAUDE.md documentation.
Description check ✅ Passed The description clearly explains all changeset components: the new SKILL.md file, CLAUDE.md updates, key features, test results, and scope limitations.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/add-pre-pr-review-skill

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Replace direct CLI PR creation (blocked by hookify) with
mcp__github__create_pull_request MCP tool call.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a significant workflow enhancement by implementing an automated pre-PR review pipeline. This new system aims to ensure that all pull requests undergo automated checks, agent-based reviews, and potential fixes before creation, thereby improving code quality and streamlining the development process. It also updates the project's documentation to mandate this new, more robust PR creation method.

Highlights

  • New Pre-PR Review Skill: A new skill, .claude/skills/pre-pr-review/SKILL.md, has been added to automate the pre-pull request review process, encompassing automated checks, review agents, and fixes before PR creation.
  • Mandatory Workflow Update: The CLAUDE.md documentation has been updated to mandate the use of the /pre-pr-review workflow for creating all pull requests, blocking direct gh pr create commands.
  • Branch and Change Handling: The new pre-PR review skill includes robust logic to handle uncommitted and untracked changes, and automatically creates feature branches when a user attempts to create a PR from the main branch.
Changelog
  • .claude/skills/pre-pr-review/SKILL.md
    • Added a new skill definition for an automated pre-PR review pipeline.
    • Detailed the multi-phase process including precondition checks, automated checks (lint, format, type-check, test), agent roster determination, parallel agent launches, findings consolidation and triage, fix implementation, post-fix verification, polish pass, and PR creation.
    • Included specific rules for agent behavior and fix implementation.
  • CLAUDE.md
    • Added a new mandatory section for "Pre-PR Review".
    • Stated that PRs must always be created using /pre-pr-review and that direct gh pr create is blocked.
    • Provided guidance for quick mode and handling external reviewer feedback.
Activity
  • The pull request introduces a new automated pre-PR review skill.
  • Agent review was skipped for this specific PR as it only involved documentation and configuration changes.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a new Claude skill to standardize an automated pre-PR workflow (checks → optional agent reviews → fixes → PR creation) and updates the repo’s contributor guidance to mandate using that workflow.

Changes:

  • Document a mandatory “Pre-PR Review” workflow in CLAUDE.md.
  • Add .claude/skills/pre-pr-review/SKILL.md describing an end-to-end pre-PR pipeline (checks, agent roster selection, triage, fix loop, PR creation).

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 6 comments.

File Description
CLAUDE.md Adds a mandatory pre-PR workflow section directing contributors to /pre-pr-review.
.claude/skills/pre-pr-review/SKILL.md Introduces the new /pre-pr-review skill detailing the automation steps and agent orchestration.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.


3. **Push** with `-u` flag:
```bash
git push -u origin $(git branch --show-current)
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

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

Same quoting issue here: $(git branch --show-current) is unquoted in the git push command, so unusual branch names can cause argument splitting and push failures. Quote it or store it in a variable first.

Suggested change
git push -u origin $(git branch --show-current)
git push -u origin "$(git branch --show-current)"

Copilot uses AI. Check for mistakes.

4. **If PR already exists** (detected in Phase 0): push only, do NOT create a new PR.

5. **If no PR exists**, create one using the **`mcp__github__create_pull_request`** tool (NOT `gh pr create` — that is blocked by hookify):
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

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

This skill uses gh pr create, but CLAUDE.md now states gh pr create is blocked by hookify and that PRs must be created via /pre-pr-review. Please reconcile this: either clarify that hookify only blocks manual usage (but allows /pre-pr-review), or update the skill to use the hookify-approved PR creation path so Phase 10 can succeed.

Suggested change
5. **If no PR exists**, create one using the **`mcp__github__create_pull_request`** tool (NOT `gh pr create` — that is blocked by hookify):
5. **If no PR exists**, create one via the hookify-approved `/pre-pr-review` path using the **`mcp__github__create_pull_request`** tool. Do **not** run `gh pr create` manually — hookify blocks manual `gh` usage, but allows PRs created through this skill’s `/pre-pr-review` workflow:

Copilot uses AI. Check for mistakes.
Comment on lines +149 to +156
| **python-reviewer** | Any `src_py` or `test_py` | `everything-claude-code:python-reviewer` |
| **pr-test-analyzer** | `test_py` changed, OR `src_py` changed with no corresponding test changes | `pr-review-toolkit:pr-test-analyzer` |
| **silent-failure-hunter** | Diff contains `try`, `except`, `raise`, error handling patterns | `pr-review-toolkit:silent-failure-hunter` |
| **comment-analyzer** | Diff contains docstring changes (`"""`) or significant comment changes | `pr-review-toolkit:comment-analyzer` |
| **type-design-analyzer** | Diff contains `class ` definitions, `BaseModel`, `TypedDict`, type aliases | `pr-review-toolkit:type-design-analyzer` |
| **logging-audit** | Any `src_py` changed | `pr-review-toolkit:code-reviewer` (custom prompt below) |
| **resilience-audit** | Files in `src/ai_company/providers/` changed | `pr-review-toolkit:code-reviewer` (custom prompt below) |
| **security-reviewer** | Files in `api/`, `security/`, `tools/`, `config/` changed, OR diff contains `subprocess`, `eval`, `exec`, `pickle`, `yaml.load`, auth/credential patterns | `everything-claude-code:security-reviewer` |
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

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

everything-claude-code:python-reviewer and everything-claude-code:security-reviewer subagent types aren’t referenced anywhere else under .claude/skills/, unlike pr-review-toolkit:*. If these subagents aren’t guaranteed to exist in this environment, /pre-pr-review will fail at launch time—consider aligning to the existing toolkit agents or documenting where these come from.

Suggested change
| **python-reviewer** | Any `src_py` or `test_py` | `everything-claude-code:python-reviewer` |
| **pr-test-analyzer** | `test_py` changed, OR `src_py` changed with no corresponding test changes | `pr-review-toolkit:pr-test-analyzer` |
| **silent-failure-hunter** | Diff contains `try`, `except`, `raise`, error handling patterns | `pr-review-toolkit:silent-failure-hunter` |
| **comment-analyzer** | Diff contains docstring changes (`"""`) or significant comment changes | `pr-review-toolkit:comment-analyzer` |
| **type-design-analyzer** | Diff contains `class ` definitions, `BaseModel`, `TypedDict`, type aliases | `pr-review-toolkit:type-design-analyzer` |
| **logging-audit** | Any `src_py` changed | `pr-review-toolkit:code-reviewer` (custom prompt below) |
| **resilience-audit** | Files in `src/ai_company/providers/` changed | `pr-review-toolkit:code-reviewer` (custom prompt below) |
| **security-reviewer** | Files in `api/`, `security/`, `tools/`, `config/` changed, OR diff contains `subprocess`, `eval`, `exec`, `pickle`, `yaml.load`, auth/credential patterns | `everything-claude-code:security-reviewer` |
| **python-reviewer** | Any `src_py` or `test_py` | `pr-review-toolkit:code-reviewer` |
| **pr-test-analyzer** | `test_py` changed, OR `src_py` changed with no corresponding test changes | `pr-review-toolkit:pr-test-analyzer` |
| **silent-failure-hunter** | Diff contains `try`, `except`, `raise`, error handling patterns | `pr-review-toolkit:silent-failure-hunter` |
| **comment-analyzer** | Diff contains docstring changes (`"""`) or significant comment changes | `pr-review-toolkit:comment-analyzer` |
| **type-design-analyzer** | Diff contains `class ` definitions, `BaseModel`, `TypedDict`, type aliases | `pr-review-toolkit:type-design-analyzer` |
| **logging-audit** | Any `src_py` changed | `pr-review-toolkit:code-reviewer` (custom prompt below) |
| **resilience-audit** | Files in `src/ai_company/providers/` changed | `pr-review-toolkit:code-reviewer` (custom prompt below) |
| **security-reviewer** | Files in `api/`, `security/`, `tools/`, `config/` changed, OR diff contains `subprocess`, `eval`, `exec`, `pickle`, `yaml.load`, auth/credential patterns | `pr-review-toolkit:code-reviewer` |

Copilot uses AI. Check for mistakes.

## Pre-PR Review (MANDATORY)

- **NEVER create a PR directly** — `gh pr create` is blocked by hookify
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

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

hookify is referenced as the mechanism blocking gh pr create, but it isn’t mentioned/configured anywhere else in the repo. Consider adding a short pointer to where hookify is configured (or rephrasing to avoid the opaque dependency), otherwise readers can’t validate/understand the restriction.

Suggested change
- **NEVER create a PR directly**`gh pr create` is blocked by hookify
- **NEVER create a PR directly**`gh pr create` is blocked by the repository's Git hook configuration

Copilot uses AI. Check for mistakes.
- **ALWAYS use `/pre-pr-review`** to create PRs — it runs automated checks + review agents + fixes before creating the PR
- For trivial/docs-only changes: `/pre-pr-review quick` skips agents but still runs automated checks
- After the PR exists, use `/aurelio-review-pr` to handle external reviewer feedback
- The `/commit-push-pr` command is effectively blocked (it calls `gh pr create` internally)
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

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

/commit-push-pr is described as blocked, but there’s no corresponding skill/command definition in .claude/skills/ (and no other repo references). Either add the command, or remove/replace this line so CLAUDE.md doesn’t document a nonexistent workflow.

Suggested change
- The `/commit-push-pr` command is effectively blocked (it calls `gh pr create` internally)
- Any direct PR-creation commands that call `gh pr create` internally are effectively blocked by hooks

Copilot uses AI. Check for mistakes.
3. **Check if a PR already exists for this branch:**

```bash
gh pr list --head $(git branch --show-current) --json number,title,url --jq '.[0]'
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

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

Branch name is injected into the shell command without quoting. Git branch names can contain spaces/special chars, which can break the command (and is generally unsafe). Quote the command substitution / use $(git symbolic-ref --short HEAD) and pass it as a single argument.

Suggested change
gh pr list --head $(git branch --show-current) --json number,title,url --jq '.[0]'
gh pr list --head "$(git symbolic-ref --short HEAD)" --json number,title,url --jq '.[0]'

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a new pre-PR review skill and updates the CLAUDE.md documentation to reflect the new mandatory workflow. The new skill definition in .claude/skills/pre-pr-review/SKILL.md is comprehensive and well-structured. I have one suggestion to improve the accuracy of the trigger conditions for the security agent. The update to CLAUDE.md is clear and aligns with the new process.

Note: Security Review has been skipped due to the limited scope of the PR.

| **type-design-analyzer** | Diff contains `class ` definitions, `BaseModel`, `TypedDict`, type aliases | `pr-review-toolkit:type-design-analyzer` |
| **logging-audit** | Any `src_py` changed | `pr-review-toolkit:code-reviewer` (custom prompt below) |
| **resilience-audit** | Files in `src/ai_company/providers/` changed | `pr-review-toolkit:code-reviewer` (custom prompt below) |
| **security-reviewer** | Files in `api/`, `security/`, `tools/`, `config/` changed, OR diff contains `subprocess`, `eval`, `exec`, `pickle`, `yaml.load`, auth/credential patterns | `everything-claude-code:security-reviewer` |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The file paths in the condition for the security-reviewer agent appear to be missing the src/ai_company/ prefix. According to the project structure in CLAUDE.md, directories like api, config, etc., are located under src/ai_company/. This might cause the security review to be skipped for changes in those directories.

Suggested change
| **security-reviewer** | Files in `api/`, `security/`, `tools/`, `config/` changed, OR diff contains `subprocess`, `eval`, `exec`, `pickle`, `yaml.load`, auth/credential patterns | `everything-claude-code:security-reviewer` |
| **security-reviewer** | Files in `src/ai_company/api/`, `src/ai_company/security/`, `src/ai_company/tools/`, `src/ai_company/config/` changed, OR diff contains `subprocess`, `eval`, `exec`, `pickle`, `yaml.load`, auth/credential patterns | `everything-claude-code:security-reviewer` |

@greptile-apps
Copy link
Copy Markdown

greptile-apps bot commented Mar 5, 2026

Greptile Summary

This PR introduces a new /pre-pr-review skill and updates CLAUDE.md to mandate its use instead of calling gh pr create directly (which is blocked by hookify). The skill defines an 11-phase automated pipeline covering branch/change detection, ruff/mypy/pytest checks, parallel review agent dispatch, user-approved fix implementation, and PR creation via mcp__github__create_pull_request.

Key findings:

  • Logic bug in Phase 3 diff command: git diff --staged main compares the index against the tip of main rather than the merge-base. When main has advanced since the branch was created (explicitly warned about in Phase 0), new main-only commits appear as deletions in the diff sent to review agents, producing misleading findings. Phase 0 step 2 already uses the correct three-dot / merge-base approach (git diff main...HEAD); Phase 3 should mirror it with git diff --staged $(git merge-base HEAD main).
  • Redundant checks in quick mode: The quick-mode flow routes Phase 2 → Phase 8, but Phase 8 runs the identical ruff/mypy/pytest suite again with no fixes applied in between. Skipping Phase 8 entirely in quick mode would halve the check runtime for the most common "docs/config only" case.
  • CLAUDE.md changes are clean and clearly communicate the mandatory workflow.

Confidence Score: 3/5

  • Safe to merge with minor fixes — one logic bug in the diff command could mislead review agents when the branch is behind main, but the skill is otherwise well-structured and all automated checks pass.
  • Score reflects that the changes are documentation/config only (no production code risk), but the Phase 3 diff command bug is a genuine logic error that will cause incorrect behaviour in a common scenario (branch behind main). The redundant quick-mode check pass is minor. The CLAUDE.md update is clean.
  • .claude/skills/pre-pr-review/SKILL.md — Phase 3 diff command and quick-mode Phase 8 redundancy.

Important Files Changed

Filename Overview
.claude/skills/pre-pr-review/SKILL.md New skill defining an 11-phase automated pre-PR pipeline. Contains a logic bug in the Phase 3 diff command (git diff --staged main instead of the merge-base equivalent) that would produce misleading diffs for review agents when the branch is behind main, and a minor redundancy where quick mode runs automated checks twice.
CLAUDE.md Adds a concise "Pre-PR Review (MANDATORY)" section that correctly documents the /pre-pr-review workflow, the hookify-blocked gh pr create, and the /aurelio-review-pr follow-up command. No issues found.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    P0["Phase 0: Preconditions\n(branch check, detect changes,\nexisting PR check, behind-main warn)"]
    P1["Phase 1: Quick Mode Detection\n(explicit 'quick' arg or auto-detect\nnon-substantive changes)"]
    P2["Phase 2: Automated Checks\n(ruff lint+format, mypy, pytest)\nfix & re-run on failure"]
    P3["Phase 3: Determine Agent Roster\ngit add -A\ngit diff --staged main ⚠️"]
    P4["Phase 4: Launch Agents in Parallel\n(code-reviewer, python-reviewer,\ntest-analyzer, security-reviewer, etc.)"]
    P5["Phase 5: Consolidate & Triage\n(deduplicate, severity mapping,\nconflict detection)"]
    P6["Phase 6: Present to User\n(AskUserQuestion: implement all /\nreview list / skip some)"]
    P7["Phase 7: Implement Fixes\n(grouped by file)"]
    P8["Phase 8: Post-Fix Verification\n(ruff, mypy, pytest again)"]
    P9["Phase 9: Polish Pass\n(code-simplifier agent)"]
    P10["Phase 10: Commit + Push + Create PR\n(mcp__github__create_pull_request)"]
    P11["Phase 11: Summary Report"]

    QUICK_SKIP{Quick mode?}
    AUTO_SKIP{Auto-skip\nagents?}
    NO_CHANGES([Abort: No changes])

    P0 --> P1
    P0 -- No changes --> NO_CHANGES
    P1 --> QUICK_SKIP
    QUICK_SKIP -- yes --> P2
    QUICK_SKIP -- no --> AUTO_SKIP
    AUTO_SKIP -- yes --> P2
    AUTO_SKIP -- no --> P2
    P2 --> |quick mode| P8
    P2 --> |normal mode| P3
    P3 --> P4
    P4 --> P5
    P5 --> P6
    P6 --> P7
    P7 --> P8
    P8 --> P9
    P9 --> P10
    P8 --> |quick mode| P10
    P10 --> P11
Loading

Last reviewed commit: 6d24426

@Aureliolo
Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 5, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/skills/pre-pr-review/SKILL.md:
- Around line 4-13: The frontmatter list "allowed-tools" in SKILL.md is missing
the required MCP tool and causes the pipeline to break; add
"mcp__github__create_pull_request" to the allowed-tools array so Phase 10 can
run successfully, updating the existing allowed-tools block (the frontmatter
section at the top of the file) to include mcp__github__create_pull_request
alongside the existing entries.
- Around line 33-35: Fix the markdownlint issues by ensuring there is an empty
line immediately before and after each fenced code block (e.g., the block
containing "git checkout -b <branch-name>") to resolve MD031, and normalize
ordered-list prefixes to be consistent (use either all explicit incremental
numbers or all "1." prefixes) across the document (including the other affected
sections noted) to resolve MD029; update the listed sections (the code-fenced
snippets and any enumerated lists around them) so spacing and list prefixes are
consistent throughout the SKILL.md content.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: d4be8a25-797d-4241-bf22-14bc4d943e99

📥 Commits

Reviewing files that changed from the base of the PR and between c4f1f1c and e87c978.

📒 Files selected for processing (2)
  • .claude/skills/pre-pr-review/SKILL.md
  • CLAUDE.md
📜 Review details
🧰 Additional context used
🧠 Learnings (12)
📓 Common learnings
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-02-26T17:43:50.902Z
Learning: When making changes that affect architecture, services, key files, settings, or workflows, update the relevant sections of existing documentation (CLAUDE.md, README.md, etc.) to reflect those changes.
📚 Learning: 2026-02-26T17:43:50.902Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-02-26T17:43:50.902Z
Learning: When making changes that affect architecture, services, key files, settings, or workflows, update the relevant sections of existing documentation (CLAUDE.md, README.md, etc.) to reflect those changes.

Applied to files:

  • .claude/skills/pre-pr-review/SKILL.md
  • CLAUDE.md
📚 Learning: 2026-02-26T17:43:50.902Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-02-26T17:43:50.902Z
Learning: Applies to src/agents/**/*.py : Agents must extend `BaseAgent`, use retry logic, and implement configurable timeout via settings.

Applied to files:

  • .claude/skills/pre-pr-review/SKILL.md
📚 Learning: 2026-02-26T17:43:50.902Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-02-26T17:43:50.902Z
Learning: Never defer work—do not suggest "this can be done later" or "consider for a future PR". Complete all requested changes fully.

Applied to files:

  • .claude/skills/pre-pr-review/SKILL.md
📚 Learning: 2026-01-26T08:59:32.818Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-26T08:59:32.818Z
Learning: Never defer work. Do not suggest 'this can be done later' or 'consider for a future PR'. Complete all requested changes fully.

Applied to files:

  • .claude/skills/pre-pr-review/SKILL.md
📚 Learning: 2026-03-05T10:09:27.502Z
Learnt from: CR
Repo: Aureliolo/ai-company PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-05T10:09:27.502Z
Learning: Pre-commit hooks must be run to enforce trailing-whitespace, end-of-file-fixer, check-yaml, check-toml, check-json, check-merge-conflict, check-added-large-files, no-commit-to-branch (main), ruff check+format, and gitleaks

Applied to files:

  • .claude/skills/pre-pr-review/SKILL.md
  • CLAUDE.md
📚 Learning: 2026-01-26T08:59:32.818Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-26T08:59:32.818Z
Learning: After every push, you MUST check that CI passes. If CI fails, fix the issue immediately and push again until all checks are green. Never walk away from a failing CI pipeline.

Applied to files:

  • .claude/skills/pre-pr-review/SKILL.md
📚 Learning: 2026-01-24T16:33:29.354Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-01-24T16:33:29.354Z
Learning: No bypassing CI - never use `git push --no-verify` or modify test coverage thresholds to make tests pass. If tests fail, fix the actual issue. Pre-push hooks exist to catch problems before they reach CI.

Applied to files:

  • .claude/skills/pre-pr-review/SKILL.md
  • CLAUDE.md
📚 Learning: 2026-01-26T08:59:32.818Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-26T08:59:32.818Z
Learning: Applies to README.md : Update README.md for significant feature changes

Applied to files:

  • CLAUDE.md
📚 Learning: 2026-01-24T16:33:29.354Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-24T16:33:29.354Z
Learning: Before each commit, run `ruff format .` to format code, `ruff check .` to lint code (use `ruff check --fix .` to auto-fix), and `pytest` to run tests

Applied to files:

  • CLAUDE.md
📚 Learning: 2026-01-24T16:33:29.354Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-01-24T16:33:29.354Z
Learning: Run `ruff check .` and `ruff check --fix .` to lint code before committing

Applied to files:

  • CLAUDE.md
📚 Learning: 2026-01-26T08:59:32.818Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-26T08:59:32.818Z
Learning: Applies to **/*.py : After making code changes, run `ruff check .` to lint code (use `ruff check --fix .` to auto-fix)

Applied to files:

  • CLAUDE.md
🪛 LanguageTool
.claude/skills/pre-pr-review/SKILL.md

[style] ~66-~66: Consider using the more polite verb “ask” (“tell” implies ordering/instructing someone).
Context: ... triage)" If user picks B, stop and tell them to run /aurelio-review-pr. 4. *...

(TELL_ASK)


[style] ~191-~191: Since ownership is already implied, this phrasing may be redundant.
Context: ... rules:** 1. Driver subclass implements its own retry/backoff logic instead of relying ...

(PRP_OWN)


[style] ~195-~195: This phrase is redundant. Consider using “outside”.
Context: .... asyncio.sleep used for retry delays outside of RetryHandler (MAJOR) **Soft rules (S...

(OUTSIDE_OF)


[grammar] ~225-~225: Please add a punctuation mark at the end of paragraph.
Context: ...heck against CLAUDE.md rules and actual code Deduplication: If multiple agents ...

(PUNCTUATION_PARAGRAPH_END)


[grammar] ~291-~291: Please add a punctuation mark at the end of paragraph.
Context: ...viewed by N agents, M findings addressed" 3. Push with -u flag: ```bash...

(PUNCTUATION_PARAGRAPH_END)


[uncategorized] ~300-~300: The official name of this software platform is spelled with a capital “H”.
Context: ...If no PR exists**, create one using the mcp__github__create_pull_request tool (NOT `gh p...

(GITHUB)


[style] ~316-~316: Consider using a different verb for a more formal wording.
Context: ...commit fails due to pre-commit hooks:** fix the issue and create a NEW commit. **NE...

(FIX_RESOLVE)

🪛 markdownlint-cli2 (0.21.0)
.claude/skills/pre-pr-review/SKILL.md

[warning] 33-33: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 35-35: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 101-101: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 106-106: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 111-111: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 116-116: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 121-121: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 153-153: Spaces inside code span elements

(MD038, no-space-in-code)


[warning] 174-174: Ordered list item prefix
Expected: 1; Actual: 7; Style: 1/2/3

(MD029, ol-prefix)


[warning] 175-175: Ordered list item prefix
Expected: 2; Actual: 8; Style: 1/2/3

(MD029, ol-prefix)


[warning] 176-176: Ordered list item prefix
Expected: 3; Actual: 9; Style: 1/2/3

(MD029, ol-prefix)


[warning] 177-177: Ordered list item prefix
Expected: 4; Actual: 10; Style: 1/2/3

(MD029, ol-prefix)


[warning] 285-285: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 294-294: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)

🔇 Additional comments (1)
CLAUDE.md (1)

114-121: Good workflow-policy update; this section is clear and enforceable.

The new mandatory Pre-PR flow is consistent with the introduced skill and removes ambiguity around PR creation paths.

Based on learnings: "When making changes that affect architecture, services, key files, settings, or workflows, update the relevant sections of existing documentation (CLAUDE.md, README.md, etc.)".

Comment on lines +33 to +35
```bash
git checkout -b <branch-name>
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Resolve markdownlint violations to keep doc checks clean.

This file currently has lint warnings (MD031 fenced-block spacing and MD029 ordered-list prefixes). Please normalize these sections to avoid noisy/failing docs lint runs.

Also applies to: 101-121, 174-177, 285-294

🧰 Tools
🪛 markdownlint-cli2 (0.21.0)

[warning] 33-33: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 35-35: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/pre-pr-review/SKILL.md around lines 33 - 35, Fix the
markdownlint issues by ensuring there is an empty line immediately before and
after each fenced code block (e.g., the block containing "git checkout -b
<branch-name>") to resolve MD031, and normalize ordered-list prefixes to be
consistent (use either all explicit incremental numbers or all "1." prefixes)
across the document (including the other affected sections noted) to resolve
MD029; update the listed sections (the code-fenced snippets and any enumerated
lists around them) so spacing and list prefixes are consistent throughout the
SKILL.md content.

…, and Gemini

- Add mcp__github__create_pull_request to allowed-tools (Critical)
- Fix quick mode flow to explicitly continue to Phase 10/11 (Critical)
- Use full src/ai_company/ paths in security-reviewer condition (Major)
- Add Phase 2 scoping note to skip checks for docs-only changes (Medium)
- Quote branch name in gh pr list and git push commands (Minor)
- Fix markdownlint MD031 (blank lines around fences) and MD029 (list prefixes) (Minor)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Comment on lines +147 to +152
```bash
# Stage everything so the diff includes uncommitted + untracked changes
git add -A
# Unified diff: all changes (committed + staged) vs main
git diff --staged main
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Incorrect diff base when main has advanced

The command git diff --staged main compares the index against the tip of main, not against the common ancestor. When main has progressed since the feature branch was created (a scenario the skill explicitly warns about in Phase 0 step 4), every commit that landed on main after the branch point will appear as deletions in the diff fed to the review agents. This creates false signals — agents will believe the PR is removing code that was legitimately added to main.

Phase 0 step 2 correctly uses the three-dot syntax (git diff main...HEAD --name-only), which resolves to the merge-base. Phase 3 should do the same:

Suggested change
```bash
# Stage everything so the diff includes uncommitted + untracked changes
git add -A
# Unified diff: all changes (committed + staged) vs main
git diff --staged main
```
# Stage everything so the diff includes uncommitted + untracked changes
git add -A
# Unified diff: all changes (committed + staged) vs merge-base with main
git diff --staged $(git merge-base HEAD main)

This ensures review agents see exactly what the PR will introduce — nothing more, nothing less.

Prompt To Fix With AI
This is a comment left during a code review.
Path: .claude/skills/pre-pr-review/SKILL.md
Line: 147-152

Comment:
**Incorrect diff base when main has advanced**

The command `git diff --staged main` compares the index against the *tip* of `main`, not against the common ancestor. When `main` has progressed since the feature branch was created (a scenario the skill explicitly warns about in Phase 0 step 4), every commit that landed on `main` after the branch point will appear as **deletions** in the diff fed to the review agents. This creates false signals — agents will believe the PR is removing code that was legitimately added to `main`.

Phase 0 step 2 correctly uses the three-dot syntax (`git diff main...HEAD --name-only`), which resolves to the merge-base. Phase 3 should do the same:

```suggestion
# Stage everything so the diff includes uncommitted + untracked changes
git add -A
# Unified diff: all changes (committed + staged) vs merge-base with main
git diff --staged $(git merge-base HEAD main)
```

This ensures review agents see exactly what the PR will introduce — nothing more, nothing less.

How can I resolve this? If you propose a fix, please make it concise.

- If something can't be auto-fixed: present the error to the user via AskUserQuestion, ask how to proceed (fix now / skip check / abort)
- After fixing, stage changes with `git add -A`

**If in quick mode:** After automated checks pass, skip directly to Phase 8 (Post-Fix Verification), then continue to Phase 10 (Commit + Push + Create PR) and Phase 11 (Summary).
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redundant automated checks in quick mode

In quick mode the flow is: Phase 2 (automated checks) → Phase 8 (post-fix verification, which runs the same four commands) → Phase 10. Because agents are skipped in quick mode there are no fixes applied between Phase 2 and Phase 8, so Phase 8 is a pure duplicate run of exactly the same ruff/mypy/pytest commands that already passed. This doubles CI time for the most common "trivial changes" use-case.

Consider short-circuiting Phase 8 in quick mode:

Suggested change
**If in quick mode:** After automated checks pass, skip directly to Phase 8 (Post-Fix Verification), then continue to Phase 10 (Commit + Push + Create PR) and Phase 11 (Summary).
**If in quick mode:** After automated checks pass, skip directly to Phase 10 (Commit + Push + Create PR) and Phase 11 (Summary). Phase 8 is unnecessary because no agent-driven fixes were applied.
Prompt To Fix With AI
This is a comment left during a code review.
Path: .claude/skills/pre-pr-review/SKILL.md
Line: 141

Comment:
**Redundant automated checks in quick mode**

In quick mode the flow is: Phase 2 (automated checks) → Phase 8 (post-fix verification, which runs the same four commands) → Phase 10. Because agents are skipped in quick mode there are no fixes applied between Phase 2 and Phase 8, so Phase 8 is a pure duplicate run of exactly the same ruff/mypy/pytest commands that already passed. This doubles CI time for the most common "trivial changes" use-case.

Consider short-circuiting Phase 8 in quick mode:

```suggestion
**If in quick mode:** After automated checks pass, skip directly to Phase 10 (Commit + Push + Create PR) and Phase 11 (Summary). Phase 8 is unnecessary because no agent-driven fixes were applied.
```

How can I resolve this? If you propose a fix, please make it concise.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/skills/pre-pr-review/SKILL.md:
- Around line 117-121: Update the conditional text in the checklist to
explicitly account for the scoping rule mentioned at line 101: replace the
ambiguous phrase "If steps 1-2 changed any files" with a clearer condition such
as "If steps 1-2 were run AND changed any files, stage them" so readers
understand that staging only applies when steps 1-2 actually executed (i.e.,
when `.py` files triggered those steps) rather than when they simply would have
changed files; update the sentence in the markdown where the current step 3
wording appears to this clarified phrasing.
- Around line 310-311: Update the wording of Step 4 in SKILL.md to clarify
intent: when a PR already exists (detected in Phase 0) do not create a new PR —
skip Step 5 (PR creation); the push already performed in Step 3 updates the
existing PR. Mention Phase 0, Step 3, and Step 5 explicitly so readers
understand no additional push is required and that only PR creation is skipped.
- Around line 141-142: Update the SKILL.md guidance to address whether Phase 8
should run in quick mode: either document the rationale for keeping Phase 8 as a
defensive verification (e.g., to catch transient CI flakiness or confirm
auto-fixes) or add a conditional rule to skip Phase 8 when quick mode is
selected and no agent fixes were applied; reference "quick mode", "Phase 2", and
"Phase 8" in the explanation so readers can understand the decision and when the
skip applies.
- Around line 328-329: The guidance about handling commit failures (the sentence
starting "If commit fails due to pre-commit hooks:... NEVER use `--no-verify`.")
is placed far from the commit step and should be moved or clarified; either
relocate that sentence so it immediately follows step 2's "Commit" instructions,
or modify it in place to explicitly reference step 2 (e.g., "If step 2
fails..."). Update the SKILL.md content to reference the unique step labels
"Step 2" and "Step 6" accordingly so readers clearly see the failure-handling
guidance next to the commit instructions.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: dfa41cd0-a1c5-4ced-af0f-564af77965cc

📥 Commits

Reviewing files that changed from the base of the PR and between e87c978 and 6d24426.

📒 Files selected for processing (1)
  • .claude/skills/pre-pr-review/SKILL.md
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Greptile Review
🧰 Additional context used
🧠 Learnings (9)
📓 Common learnings
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-02-26T17:43:50.902Z
Learning: When making changes that affect architecture, services, key files, settings, or workflows, update the relevant sections of existing documentation (CLAUDE.md, README.md, etc.) to reflect those changes.
📚 Learning: 2026-02-26T17:43:50.902Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-02-26T17:43:50.902Z
Learning: When making changes that affect architecture, services, key files, settings, or workflows, update the relevant sections of existing documentation (CLAUDE.md, README.md, etc.) to reflect those changes.

Applied to files:

  • .claude/skills/pre-pr-review/SKILL.md
📚 Learning: 2026-02-26T17:43:50.902Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-02-26T17:43:50.902Z
Learning: Applies to src/agents/**/*.py : Agents must extend `BaseAgent`, use retry logic, and implement configurable timeout via settings.

Applied to files:

  • .claude/skills/pre-pr-review/SKILL.md
📚 Learning: 2026-01-24T16:33:29.354Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-01-24T16:33:29.354Z
Learning: Run `ruff check .` and `ruff check --fix .` to lint code before committing

Applied to files:

  • .claude/skills/pre-pr-review/SKILL.md
📚 Learning: 2026-02-26T17:43:50.902Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-02-26T17:43:50.902Z
Learning: Never defer work—do not suggest "this can be done later" or "consider for a future PR". Complete all requested changes fully.

Applied to files:

  • .claude/skills/pre-pr-review/SKILL.md
📚 Learning: 2026-01-26T08:59:32.818Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-26T08:59:32.818Z
Learning: Never defer work. Do not suggest 'this can be done later' or 'consider for a future PR'. Complete all requested changes fully.

Applied to files:

  • .claude/skills/pre-pr-review/SKILL.md
📚 Learning: 2026-03-05T10:09:27.502Z
Learnt from: CR
Repo: Aureliolo/ai-company PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-05T10:09:27.502Z
Learning: Pre-commit hooks must be run to enforce trailing-whitespace, end-of-file-fixer, check-yaml, check-toml, check-json, check-merge-conflict, check-added-large-files, no-commit-to-branch (main), ruff check+format, and gitleaks

Applied to files:

  • .claude/skills/pre-pr-review/SKILL.md
📚 Learning: 2026-01-26T08:59:32.818Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-01-26T08:59:32.818Z
Learning: After every push, you MUST check that CI passes. If CI fails, fix the issue immediately and push again until all checks are green. Never walk away from a failing CI pipeline.

Applied to files:

  • .claude/skills/pre-pr-review/SKILL.md
📚 Learning: 2026-01-24T16:33:29.354Z
Learnt from: CR
Repo: Aureliolo/story-factory PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-01-24T16:33:29.354Z
Learning: No bypassing CI - never use `git push --no-verify` or modify test coverage thresholds to make tests pass. If tests fail, fix the actual issue. Pre-push hooks exist to catch problems before they reach CI.

Applied to files:

  • .claude/skills/pre-pr-review/SKILL.md
🪛 LanguageTool
.claude/skills/pre-pr-review/SKILL.md

[style] ~69-~69: Consider using the more polite verb “ask” (“tell” implies ordering/instructing someone).
Context: ... triage)" If user picks B, stop and tell them to run /aurelio-review-pr. 4. *...

(TELL_ASK)


[style] ~201-~201: Since ownership is already implied, this phrasing may be redundant.
Context: ... rules:** 1. Driver subclass implements its own retry/backoff logic instead of relying ...

(PRP_OWN)


[style] ~205-~205: This phrase is redundant. Consider using “outside”.
Context: .... asyncio.sleep used for retry delays outside of RetryHandler (MAJOR) **Soft rules (S...

(OUTSIDE_OF)


[grammar] ~235-~235: Please add a punctuation mark at the end of paragraph.
Context: ...heck against CLAUDE.md rules and actual code Deduplication: If multiple agents ...

(PUNCTUATION_PARAGRAPH_END)


[uncategorized] ~312-~312: The official name of this software platform is spelled with a capital “H”.
Context: ...If no PR exists**, create one using the mcp__github__create_pull_request tool (NOT `gh p...

(GITHUB)


[style] ~328-~328: Consider using a different verb for a more formal wording.
Context: ...commit fails due to pre-commit hooks:** fix the issue and create a NEW commit. **NE...

(FIX_RESOLVE)

🪛 markdownlint-cli2 (0.21.0)
.claude/skills/pre-pr-review/SKILL.md

[warning] 163-163: Spaces inside code span elements

(MD038, no-space-in-code)

🔇 Additional comments (9)
.claude/skills/pre-pr-review/SKILL.md (9)

1-14: Past issue resolved: MCP tool now in allowed-tools.

The mcp__github__create_pull_request tool is now correctly included in the allowed-tools list, which resolves the past review finding about Phase 10 being unable to create PRs.


24-88: LGTM: Comprehensive precondition checks.

The Phase 0 logic correctly handles edge cases:

  • On-main detection with deferred branch creation (after change detection)
  • Multi-source change detection (uncommitted + staged + untracked + committed-but-unpushed)
  • PR existence check with user-choice flow
  • File categorization for agent routing

89-98: LGTM: Clear quick-mode detection logic.

The quick-mode criteria are well-defined with explicit examples of when to auto-skip vs. require full agent review. The flow transitions are consistent with Phase 2's quick-mode exit path.


143-167: LGTM: Comprehensive agent roster logic.

The agent selection conditions are well-targeted to relevant change patterns. The staging strategy (git add -A, then diff --staged main) correctly captures all changes including uncommitted and untracked files in a single diff.


168-210: LGTM: Well-structured audit prompts with appropriate scoping.

Both custom prompts define clear hard rules (violations) and soft rules (suggestions), with the logging-audit properly excluding non-applicable code patterns (data models, trivial functions, tests) from coverage suggestions. The rules align with the codebase's structured logging and resilience patterns.


211-268: LGTM: Solid agent execution and fix implementation flow.

The parallel execution strategy (Task tool, not run_in_background), deduplication logic, conflict detection, and file-grouped fix implementation all follow best practices. The explicit "never defer" stance in Phase 7 aligns with project learnings.


269-291: LGTM: Thorough verification and optional polish pass.

Phase 8's full re-verification after fixes and Phase 9's conditional polish logic (skip if quick mode or no findings) are both appropriate. The polish pass correctly re-runs formatters to catch any breakage.


330-353: LGTM: Comprehensive summary and well-defined operational rules.

Phase 11's summary report covers all key metrics, and the Rules section clearly enforces critical practices: no deferring work, no bypassing hooks, fixing everything approved, and handling agent failures gracefully. This aligns with all relevant project learnings.


163-163: Static analysis false positive: intentional space in pattern.

The markdownlint warning about class (MD038) is a false positive. The trailing space is intentional—it's part of the pattern to match "class " declarations in diffs. No change needed.

Comment on lines +117 to +121
3. If steps 1-2 changed any files, stage them:

```bash
git add -A
```
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 | 🔵 Trivial

Clarify conditional to account for scoping rule.

Line 101's scoping rule may skip steps 1-2 entirely when no .py files changed. Step 3's condition "If steps 1-2 changed any files" should explicitly account for this: "If steps 1-2 were run AND changed any files, stage them" to avoid ambiguity.

📝 Suggested clarification
-3. If steps 1-2 changed any files, stage them:
+3. If steps 1-2 were run AND changed any files, stage them:
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
3. If steps 1-2 changed any files, stage them:
```bash
git add -A
```
3. If steps 1-2 were run AND changed any files, stage them:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/pre-pr-review/SKILL.md around lines 117 - 121, Update the
conditional text in the checklist to explicitly account for the scoping rule
mentioned at line 101: replace the ambiguous phrase "If steps 1-2 changed any
files" with a clearer condition such as "If steps 1-2 were run AND changed any
files, stage them" so readers understand that staging only applies when steps
1-2 actually executed (i.e., when `.py` files triggered those steps) rather than
when they simply would have changed files; update the sentence in the markdown
where the current step 3 wording appears to this clarified phrasing.

Comment on lines +141 to +142
**If in quick mode:** After automated checks pass, skip directly to Phase 8 (Post-Fix Verification), then continue to Phase 10 (Commit + Push + Create PR) and Phase 11 (Summary).

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 | 🔵 Trivial

Consider whether Phase 8 is needed in quick mode.

In quick mode, Phase 8 re-runs the same automated checks that already passed in Phase 2. Since no agent fixes are applied (agents were skipped), this verification step may be redundant. Consider documenting the rationale (e.g., defensive verification of auto-fixes) or skipping Phase 8 when in quick mode with no code changes applied.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/pre-pr-review/SKILL.md around lines 141 - 142, Update the
SKILL.md guidance to address whether Phase 8 should run in quick mode: either
document the rationale for keeping Phase 8 as a defensive verification (e.g., to
catch transient CI flakiness or confirm auto-fixes) or add a conditional rule to
skip Phase 8 when quick mode is selected and no agent fixes were applied;
reference "quick mode", "Phase 2", and "Phase 8" in the explanation so readers
can understand the decision and when the skip applies.

Comment on lines +310 to +311
4. **If PR already exists** (detected in Phase 0): push only, do NOT create a new PR.

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 | 🔵 Trivial

Clarify step 4 wording to avoid confusion.

Step 4 says "push only, do NOT create a new PR," but step 3 already pushed the branch. The intent is to skip step 5 (PR creation), not to perform an additional push action. Consider rewording: "If PR already exists (detected in Phase 0): skip PR creation. The push in step 3 updates the existing PR."

📝 Suggested clarification
-4. **If PR already exists** (detected in Phase 0): push only, do NOT create a new PR.
+4. **If PR already exists** (detected in Phase 0): skip PR creation (the push in step 3 updates the existing PR).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/pre-pr-review/SKILL.md around lines 310 - 311, Update the
wording of Step 4 in SKILL.md to clarify intent: when a PR already exists
(detected in Phase 0) do not create a new PR — skip Step 5 (PR creation); the
push already performed in Step 3 updates the existing PR. Mention Phase 0, Step
3, and Step 5 explicitly so readers understand no additional push is required
and that only PR creation is skipped.

Comment on lines +328 to +329
6. **If commit fails due to pre-commit hooks:** fix the issue and create a NEW commit. **NEVER use `--no-verify`.**

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 | 🔵 Trivial

Reposition failure handling closer to the failing step.

Step 6 discusses commit failure handling (from step 2) after describing the push and PR creation steps. For clarity, either move this guidance immediately after step 2, or add "If step 2 failed..." to make the reference explicit.

📝 Suggested repositioning

Move step 6 content to immediately follow step 2:

2. **Commit** with a descriptive message:
   - Type based on changes (feat/fix/refactor/docs/etc.)
   - If agents ran, add body: "Pre-reviewed by N agents, M findings addressed"

   **If commit fails due to pre-commit hooks:** fix the issue and create a NEW commit. **NEVER use `--no-verify`.**

3. **Push** with `-u` flag:
🧰 Tools
🪛 LanguageTool

[style] ~328-~328: Consider using a different verb for a more formal wording.
Context: ...commit fails due to pre-commit hooks:** fix the issue and create a NEW commit. **NE...

(FIX_RESOLVE)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/pre-pr-review/SKILL.md around lines 328 - 329, The guidance
about handling commit failures (the sentence starting "If commit fails due to
pre-commit hooks:... NEVER use `--no-verify`.") is placed far from the commit
step and should be moved or clarified; either relocate that sentence so it
immediately follows step 2's "Commit" instructions, or modify it in place to
explicitly reference step 2 (e.g., "If step 2 fails..."). Update the SKILL.md
content to reference the unique step labels "Step 2" and "Step 6" accordingly so
readers clearly see the failure-handling guidance next to the commit
instructions.

@Aureliolo Aureliolo merged commit 92e9023 into main Mar 5, 2026
11 checks passed
@Aureliolo Aureliolo deleted the chore/add-pre-pr-review-skill branch March 5, 2026 14:26
Aureliolo added a commit that referenced this pull request Mar 10, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.1.1](ai-company-v0.1.0...ai-company-v0.1.1)
(2026-03-10)


### Features

* add autonomy levels and approval timeout policies
([#42](#42),
[#126](#126))
([#197](#197))
([eecc25a](eecc25a))
* add CFO cost optimization service with anomaly detection, reports, and
approval decisions
([#186](#186))
([a7fa00b](a7fa00b))
* add code quality toolchain (ruff, mypy, pre-commit, dependabot)
([#63](#63))
([36681a8](36681a8))
* add configurable cost tiers and subscription/quota-aware tracking
([#67](#67))
([#185](#185))
([9baedfa](9baedfa))
* add container packaging, Docker Compose, and CI pipeline
([#269](#269))
([435bdfe](435bdfe)),
closes [#267](#267)
* add coordination error taxonomy classification pipeline
([#146](#146))
([#181](#181))
([70c7480](70c7480))
* add cost-optimized, hierarchical, and auction assignment strategies
([#175](#175))
([ce924fa](ce924fa)),
closes [#173](#173)
* add design specification, license, and project setup
([8669a09](8669a09))
* add env var substitution and config file auto-discovery
([#77](#77))
([7f53832](7f53832))
* add FastestStrategy routing + vendor-agnostic cleanup
([#140](#140))
([09619cb](09619cb)),
closes [#139](#139)
* add HR engine and performance tracking
([#45](#45),
[#47](#47))
([#193](#193))
([2d091ea](2d091ea))
* add issue auto-search and resolution verification to PR review skill
([#119](#119))
([deecc39](deecc39))
* add memory retrieval, ranking, and context injection pipeline
([#41](#41))
([873b0aa](873b0aa))
* add pluggable MemoryBackend protocol with models, config, and events
([#180](#180))
([46cfdd4](46cfdd4))
* add pluggable MemoryBackend protocol with models, config, and events
([#32](#32))
([46cfdd4](46cfdd4))
* add pluggable PersistenceBackend protocol with SQLite implementation
([#36](#36))
([f753779](f753779))
* add progressive trust and promotion/demotion subsystems
([#43](#43),
[#49](#49))
([3a87c08](3a87c08))
* add retry handler, rate limiter, and provider resilience
([#100](#100))
([b890545](b890545))
* add SecOps security agent with rule engine, audit log, and ToolInvoker
integration ([#40](#40))
([83b7b6c](83b7b6c))
* add shared org memory and memory consolidation/archival
([#125](#125),
[#48](#48))
([4a0832b](4a0832b))
* design unified provider interface
([#86](#86))
([3e23d64](3e23d64))
* expand template presets, rosters, and add inheritance
([#80](#80),
[#81](#81),
[#84](#84))
([15a9134](15a9134))
* implement agent runtime state vs immutable config split
([#115](#115))
([4cb1ca5](4cb1ca5))
* implement AgentEngine core orchestrator
([#11](#11))
([#143](#143))
([f2eb73a](f2eb73a))
* implement basic tool system (registry, invocation, results)
([#15](#15))
([c51068b](c51068b))
* implement built-in file system tools
([#18](#18))
([325ef98](325ef98))
* implement communication foundation — message bus, dispatcher, and
messenger ([#157](#157))
([8e71bfd](8e71bfd))
* implement company template system with 7 built-in presets
([#85](#85))
([cbf1496](cbf1496))
* implement conflict resolution protocol
([#122](#122))
([#166](#166))
([e03f9f2](e03f9f2))
* implement core entity and role system models
([#69](#69))
([acf9801](acf9801))
* implement crash recovery with fail-and-reassign strategy
([#149](#149))
([e6e91ed](e6e91ed))
* implement engine extensions — Plan-and-Execute loop and call
categorization
([#134](#134),
[#135](#135))
([#159](#159))
([9b2699f](9b2699f))
* implement enterprise logging system with structlog
([#73](#73))
([2f787e5](2f787e5))
* implement graceful shutdown with cooperative timeout strategy
([#130](#130))
([6592515](6592515))
* implement hierarchical delegation and loop prevention
([#12](#12),
[#17](#17))
([6be60b6](6be60b6))
* implement LiteLLM driver and provider registry
([#88](#88))
([ae3f18b](ae3f18b)),
closes [#4](#4)
* implement LLM decomposition strategy and workspace isolation
([#174](#174))
([aa0eefe](aa0eefe))
* implement meeting protocol system
([#123](#123))
([ee7caca](ee7caca))
* implement message and communication domain models
([#74](#74))
([560a5d2](560a5d2))
* implement model routing engine
([#99](#99))
([d3c250b](d3c250b))
* implement parallel agent execution
([#22](#22))
([#161](#161))
([65940b3](65940b3))
* implement per-call cost tracking service
([#7](#7))
([#102](#102))
([c4f1f1c](c4f1f1c))
* implement personality injection and system prompt construction
([#105](#105))
([934dd85](934dd85))
* implement single-task execution lifecycle
([#21](#21))
([#144](#144))
([c7e64e4](c7e64e4))
* implement subprocess sandbox for tool execution isolation
([#131](#131))
([#153](#153))
([3c8394e](3c8394e))
* implement task assignment subsystem with pluggable strategies
([#172](#172))
([c7f1b26](c7f1b26)),
closes [#26](#26)
[#30](#30)
* implement task decomposition and routing engine
([#14](#14))
([9c7fb52](9c7fb52))
* implement Task, Project, Artifact, Budget, and Cost domain models
([#71](#71))
([81eabf1](81eabf1))
* implement tool permission checking
([#16](#16))
([833c190](833c190))
* implement YAML config loader with Pydantic validation
([#59](#59))
([ff3a2ba](ff3a2ba))
* implement YAML config loader with Pydantic validation
([#75](#75))
([ff3a2ba](ff3a2ba))
* initialize project with uv, hatchling, and src layout
([39005f9](39005f9))
* initialize project with uv, hatchling, and src layout
([#62](#62))
([39005f9](39005f9))
* Litestar REST API, WebSocket feed, and approval queue (M6)
([#189](#189))
([29fcd08](29fcd08))
* make TokenUsage.total_tokens a computed field
([#118](#118))
([c0bab18](c0bab18)),
closes [#109](#109)
* parallel tool execution in ToolInvoker.invoke_all
([#137](#137))
([58517ee](58517ee))
* testing framework, CI pipeline, and M0 gap fixes
([#64](#64))
([f581749](f581749))
* wire all modules into observability system
([#97](#97))
([f7a0617](f7a0617))


### Bug Fixes

* address Greptile post-merge review findings from PRs
[#170](https://github.com/Aureliolo/ai-company/issues/170)-[#175](https://github.com/Aureliolo/ai-company/issues/175)
([#176](#176))
([c5ca929](c5ca929))
* address post-merge review feedback from PRs
[#164](https://github.com/Aureliolo/ai-company/issues/164)-[#167](https://github.com/Aureliolo/ai-company/issues/167)
([#170](#170))
([3bf897a](3bf897a)),
closes [#169](#169)
* enforce strict mypy on test files
([#89](#89))
([aeeff8c](aeeff8c))
* harden Docker sandbox, MCP bridge, and code runner
([#50](#50),
[#53](#53))
([d5e1b6e](d5e1b6e))
* harden git tools security + code quality improvements
([#150](#150))
([000a325](000a325))
* harden subprocess cleanup, env filtering, and shutdown resilience
([#155](#155))
([d1fe1fb](d1fe1fb))
* incorporate post-merge feedback + pre-PR review fixes
([#164](#164))
([c02832a](c02832a))
* pre-PR review fixes for post-merge findings
([#183](#183))
([26b3108](26b3108))
* strengthen immutability for BaseTool schema and ToolInvoker boundaries
([#117](#117))
([7e5e861](7e5e861))


### Performance

* harden non-inferable principle implementation
([#195](#195))
([02b5f4e](02b5f4e)),
closes [#188](#188)


### Refactoring

* adopt NotBlankStr across all models
([#108](#108))
([#120](#120))
([ef89b90](ef89b90))
* extract _SpendingTotals base class from spending summary models
([#111](#111))
([2f39c1b](2f39c1b))
* harden BudgetEnforcer with error handling, validation extraction, and
review fixes
([#182](#182))
([c107bf9](c107bf9))
* harden personality profiles, department validation, and template
rendering ([#158](#158))
([10b2299](10b2299))
* pre-PR review improvements for ExecutionLoop + ReAct loop
([#124](#124))
([8dfb3c0](8dfb3c0))
* split events.py into per-domain event modules
([#136](#136))
([e9cba89](e9cba89))


### Documentation

* add ADR-001 memory layer evaluation and selection
([#178](#178))
([db3026f](db3026f)),
closes [#39](#39)
* add agent scaling research findings to DESIGN_SPEC
([#145](#145))
([57e487b](57e487b))
* add CLAUDE.md, contributing guide, and dev documentation
([#65](#65))
([55c1025](55c1025)),
closes [#54](#54)
* add crash recovery, sandboxing, analytics, and testing decisions
([#127](#127))
([5c11595](5c11595))
* address external review feedback with MVP scope and new protocols
([#128](#128))
([3b30b9a](3b30b9a))
* expand design spec with pluggable strategy protocols
([#121](#121))
([6832db6](6832db6))
* finalize 23 design decisions (ADR-002)
([#190](#190))
([8c39742](8c39742))
* update project docs for M2.5 conventions and add docs-consistency
review agent
([#114](#114))
([99766ee](99766ee))


### Tests

* add e2e single agent integration tests
([#24](#24))
([#156](#156))
([f566fb4](f566fb4))
* add provider adapter integration tests
([#90](#90))
([40a61f4](40a61f4))


### CI/CD

* add Release Please for automated versioning and GitHub Releases
([#278](#278))
([a488758](a488758))
* bump actions/checkout from 4 to 6
([#95](#95))
([1897247](1897247))
* bump actions/upload-artifact from 4 to 7
([#94](#94))
([27b1517](27b1517))
* harden CI/CD pipeline
([#92](#92))
([ce4693c](ce4693c))
* split vulnerability scans into critical-fail and high-warn tiers
([#277](#277))
([aba48af](aba48af))


### Maintenance

* add /worktree skill for parallel worktree management
([#171](#171))
([951e337](951e337))
* add design spec context loading to research-link skill
([8ef9685](8ef9685))
* add post-merge-cleanup skill
([#70](#70))
([f913705](f913705))
* add pre-pr-review skill and update CLAUDE.md
([#103](#103))
([92e9023](92e9023))
* add research-link skill and rename skill files to SKILL.md
([#101](#101))
([651c577](651c577))
* bump aiosqlite from 0.21.0 to 0.22.1
([#191](#191))
([3274a86](3274a86))
* bump pyyaml from 6.0.2 to 6.0.3 in the minor-and-patch group
([#96](#96))
([0338d0c](0338d0c))
* bump ruff from 0.15.4 to 0.15.5
([a49ee46](a49ee46))
* fix M0 audit items
([#66](#66))
([c7724b5](c7724b5))
* pin setup-uv action to full SHA
([#281](#281))
([4448002](4448002))
* post-audit cleanup — PEP 758, loggers, bug fixes, refactoring, tests,
hookify rules
([#148](#148))
([c57a6a9](c57a6a9))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Aureliolo added a commit that referenced this pull request Mar 11, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.1.0](v0.0.0...v0.1.0)
(2026-03-11)


### Features

* add autonomy levels and approval timeout policies
([#42](#42),
[#126](#126))
([#197](#197))
([eecc25a](eecc25a))
* add CFO cost optimization service with anomaly detection, reports, and
approval decisions
([#186](#186))
([a7fa00b](a7fa00b))
* add code quality toolchain (ruff, mypy, pre-commit, dependabot)
([#63](#63))
([36681a8](36681a8))
* add configurable cost tiers and subscription/quota-aware tracking
([#67](#67))
([#185](#185))
([9baedfa](9baedfa))
* add container packaging, Docker Compose, and CI pipeline
([#269](#269))
([435bdfe](435bdfe)),
closes [#267](#267)
* add coordination error taxonomy classification pipeline
([#146](#146))
([#181](#181))
([70c7480](70c7480))
* add cost-optimized, hierarchical, and auction assignment strategies
([#175](#175))
([ce924fa](ce924fa)),
closes [#173](#173)
* add design specification, license, and project setup
([8669a09](8669a09))
* add env var substitution and config file auto-discovery
([#77](#77))
([7f53832](7f53832))
* add FastestStrategy routing + vendor-agnostic cleanup
([#140](#140))
([09619cb](09619cb)),
closes [#139](#139)
* add HR engine and performance tracking
([#45](#45),
[#47](#47))
([#193](#193))
([2d091ea](2d091ea))
* add issue auto-search and resolution verification to PR review skill
([#119](#119))
([deecc39](deecc39))
* add mandatory JWT + API key authentication
([#256](#256))
([c279cfe](c279cfe))
* add memory retrieval, ranking, and context injection pipeline
([#41](#41))
([873b0aa](873b0aa))
* add pluggable MemoryBackend protocol with models, config, and events
([#180](#180))
([46cfdd4](46cfdd4))
* add pluggable MemoryBackend protocol with models, config, and events
([#32](#32))
([46cfdd4](46cfdd4))
* add pluggable output scan response policies
([#263](#263))
([b9907e8](b9907e8))
* add pluggable PersistenceBackend protocol with SQLite implementation
([#36](#36))
([f753779](f753779))
* add progressive trust and promotion/demotion subsystems
([#43](#43),
[#49](#49))
([3a87c08](3a87c08))
* add retry handler, rate limiter, and provider resilience
([#100](#100))
([b890545](b890545))
* add SecOps security agent with rule engine, audit log, and ToolInvoker
integration ([#40](#40))
([83b7b6c](83b7b6c))
* add shared org memory and memory consolidation/archival
([#125](#125),
[#48](#48))
([4a0832b](4a0832b))
* design unified provider interface
([#86](#86))
([3e23d64](3e23d64))
* expand template presets, rosters, and add inheritance
([#80](#80),
[#81](#81),
[#84](#84))
([15a9134](15a9134))
* implement agent runtime state vs immutable config split
([#115](#115))
([4cb1ca5](4cb1ca5))
* implement AgentEngine core orchestrator
([#11](#11))
([#143](#143))
([f2eb73a](f2eb73a))
* implement AuditRepository for security audit log persistence
([#279](#279))
([94bc29f](94bc29f))
* implement basic tool system (registry, invocation, results)
([#15](#15))
([c51068b](c51068b))
* implement built-in file system tools
([#18](#18))
([325ef98](325ef98))
* implement communication foundation — message bus, dispatcher, and
messenger ([#157](#157))
([8e71bfd](8e71bfd))
* implement company template system with 7 built-in presets
([#85](#85))
([cbf1496](cbf1496))
* implement conflict resolution protocol
([#122](#122))
([#166](#166))
([e03f9f2](e03f9f2))
* implement core entity and role system models
([#69](#69))
([acf9801](acf9801))
* implement crash recovery with fail-and-reassign strategy
([#149](#149))
([e6e91ed](e6e91ed))
* implement engine extensions — Plan-and-Execute loop and call
categorization
([#134](#134),
[#135](#135))
([#159](#159))
([9b2699f](9b2699f))
* implement enterprise logging system with structlog
([#73](#73))
([2f787e5](2f787e5))
* implement graceful shutdown with cooperative timeout strategy
([#130](#130))
([6592515](6592515))
* implement hierarchical delegation and loop prevention
([#12](#12),
[#17](#17))
([6be60b6](6be60b6))
* implement LiteLLM driver and provider registry
([#88](#88))
([ae3f18b](ae3f18b)),
closes [#4](#4)
* implement LLM decomposition strategy and workspace isolation
([#174](#174))
([aa0eefe](aa0eefe))
* implement meeting protocol system
([#123](#123))
([ee7caca](ee7caca))
* implement message and communication domain models
([#74](#74))
([560a5d2](560a5d2))
* implement model routing engine
([#99](#99))
([d3c250b](d3c250b))
* implement parallel agent execution
([#22](#22))
([#161](#161))
([65940b3](65940b3))
* implement per-call cost tracking service
([#7](#7))
([#102](#102))
([c4f1f1c](c4f1f1c))
* implement personality injection and system prompt construction
([#105](#105))
([934dd85](934dd85))
* implement single-task execution lifecycle
([#21](#21))
([#144](#144))
([c7e64e4](c7e64e4))
* implement subprocess sandbox for tool execution isolation
([#131](#131))
([#153](#153))
([3c8394e](3c8394e))
* implement task assignment subsystem with pluggable strategies
([#172](#172))
([c7f1b26](c7f1b26)),
closes [#26](#26)
[#30](#30)
* implement task decomposition and routing engine
([#14](#14))
([9c7fb52](9c7fb52))
* implement Task, Project, Artifact, Budget, and Cost domain models
([#71](#71))
([81eabf1](81eabf1))
* implement tool permission checking
([#16](#16))
([833c190](833c190))
* implement YAML config loader with Pydantic validation
([#59](#59))
([ff3a2ba](ff3a2ba))
* implement YAML config loader with Pydantic validation
([#75](#75))
([ff3a2ba](ff3a2ba))
* initialize project with uv, hatchling, and src layout
([39005f9](39005f9))
* initialize project with uv, hatchling, and src layout
([#62](#62))
([39005f9](39005f9))
* Litestar REST API, WebSocket feed, and approval queue (M6)
([#189](#189))
([29fcd08](29fcd08))
* make TokenUsage.total_tokens a computed field
([#118](#118))
([c0bab18](c0bab18)),
closes [#109](#109)
* parallel tool execution in ToolInvoker.invoke_all
([#137](#137))
([58517ee](58517ee))
* testing framework, CI pipeline, and M0 gap fixes
([#64](#64))
([f581749](f581749))
* wire all modules into observability system
([#97](#97))
([f7a0617](f7a0617))


### Bug Fixes

* address Greptile post-merge review findings from PRs
[#170](https://github.com/Aureliolo/ai-company/issues/170)-[#175](https://github.com/Aureliolo/ai-company/issues/175)
([#176](#176))
([c5ca929](c5ca929))
* address post-merge review feedback from PRs
[#164](https://github.com/Aureliolo/ai-company/issues/164)-[#167](https://github.com/Aureliolo/ai-company/issues/167)
([#170](#170))
([3bf897a](3bf897a)),
closes [#169](#169)
* enforce strict mypy on test files
([#89](#89))
([aeeff8c](aeeff8c))
* harden Docker sandbox, MCP bridge, and code runner
([#50](#50),
[#53](#53))
([d5e1b6e](d5e1b6e))
* harden git tools security + code quality improvements
([#150](#150))
([000a325](000a325))
* harden subprocess cleanup, env filtering, and shutdown resilience
([#155](#155))
([d1fe1fb](d1fe1fb))
* incorporate post-merge feedback + pre-PR review fixes
([#164](#164))
([c02832a](c02832a))
* pre-PR review fixes for post-merge findings
([#183](#183))
([26b3108](26b3108))
* resolve circular imports, bump litellm, fix release tag format
([#286](#286))
([a6659b5](a6659b5))
* strengthen immutability for BaseTool schema and ToolInvoker boundaries
([#117](#117))
([7e5e861](7e5e861))


### Performance

* harden non-inferable principle implementation
([#195](#195))
([02b5f4e](02b5f4e)),
closes [#188](#188)


### Refactoring

* adopt NotBlankStr across all models
([#108](#108))
([#120](#120))
([ef89b90](ef89b90))
* extract _SpendingTotals base class from spending summary models
([#111](#111))
([2f39c1b](2f39c1b))
* harden BudgetEnforcer with error handling, validation extraction, and
review fixes
([#182](#182))
([c107bf9](c107bf9))
* harden personality profiles, department validation, and template
rendering ([#158](#158))
([10b2299](10b2299))
* pre-PR review improvements for ExecutionLoop + ReAct loop
([#124](#124))
([8dfb3c0](8dfb3c0))
* split events.py into per-domain event modules
([#136](#136))
([e9cba89](e9cba89))


### Documentation

* add ADR-001 memory layer evaluation and selection
([#178](#178))
([db3026f](db3026f)),
closes [#39](#39)
* add agent scaling research findings to DESIGN_SPEC
([#145](#145))
([57e487b](57e487b))
* add CLAUDE.md, contributing guide, and dev documentation
([#65](#65))
([55c1025](55c1025)),
closes [#54](#54)
* add crash recovery, sandboxing, analytics, and testing decisions
([#127](#127))
([5c11595](5c11595))
* address external review feedback with MVP scope and new protocols
([#128](#128))
([3b30b9a](3b30b9a))
* expand design spec with pluggable strategy protocols
([#121](#121))
([6832db6](6832db6))
* finalize 23 design decisions (ADR-002)
([#190](#190))
([8c39742](8c39742))
* update project docs for M2.5 conventions and add docs-consistency
review agent
([#114](#114))
([99766ee](99766ee))


### Tests

* add e2e single agent integration tests
([#24](#24))
([#156](#156))
([f566fb4](f566fb4))
* add provider adapter integration tests
([#90](#90))
([40a61f4](40a61f4))


### CI/CD

* add Release Please for automated versioning and GitHub Releases
([#278](#278))
([a488758](a488758))
* bump actions/checkout from 4 to 6
([#95](#95))
([1897247](1897247))
* bump actions/upload-artifact from 4 to 7
([#94](#94))
([27b1517](27b1517))
* bump anchore/scan-action from 6.5.1 to 7.3.2
([#271](#271))
([80a1c15](80a1c15))
* bump docker/build-push-action from 6.19.2 to 7.0.0
([#273](#273))
([dd0219e](dd0219e))
* bump docker/login-action from 3.7.0 to 4.0.0
([#272](#272))
([33d6238](33d6238))
* bump docker/metadata-action from 5.10.0 to 6.0.0
([#270](#270))
([baee04e](baee04e))
* bump docker/setup-buildx-action from 3.12.0 to 4.0.0
([#274](#274))
([5fc06f7](5fc06f7))
* bump sigstore/cosign-installer from 3.9.1 to 4.1.0
([#275](#275))
([29dd16c](29dd16c))
* harden CI/CD pipeline
([#92](#92))
([ce4693c](ce4693c))
* split vulnerability scans into critical-fail and high-warn tiers
([#277](#277))
([aba48af](aba48af))


### Maintenance

* add /worktree skill for parallel worktree management
([#171](#171))
([951e337](951e337))
* add design spec context loading to research-link skill
([8ef9685](8ef9685))
* add post-merge-cleanup skill
([#70](#70))
([f913705](f913705))
* add pre-pr-review skill and update CLAUDE.md
([#103](#103))
([92e9023](92e9023))
* add research-link skill and rename skill files to SKILL.md
([#101](#101))
([651c577](651c577))
* bump aiosqlite from 0.21.0 to 0.22.1
([#191](#191))
([3274a86](3274a86))
* bump pyyaml from 6.0.2 to 6.0.3 in the minor-and-patch group
([#96](#96))
([0338d0c](0338d0c))
* bump ruff from 0.15.4 to 0.15.5
([a49ee46](a49ee46))
* fix M0 audit items
([#66](#66))
([c7724b5](c7724b5))
* **main:** release ai-company 0.1.1
([#282](#282))
([2f4703d](2f4703d))
* pin setup-uv action to full SHA
([#281](#281))
([4448002](4448002))
* post-audit cleanup — PEP 758, loggers, bug fixes, refactoring, tests,
hookify rules
([#148](#148))
([c57a6a9](c57a6a9))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Signed-off-by: Aurelio <19254254+Aureliolo@users.noreply.github.com>
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.

2 participants