Skip to content

ci: add Release Please for automated versioning and GitHub Releases#278

Merged
Aureliolo merged 2 commits intomainfrom
ci/release-please
Mar 10, 2026
Merged

ci: add Release Please for automated versioning and GitHub Releases#278
Aureliolo merged 2 commits intomainfrom
ci/release-please

Conversation

@Aureliolo
Copy link
Copy Markdown
Owner

Summary

  • Add Release Please (Google) workflow for fully automated versioning and GitHub Releases
  • On every push to main, Release Please creates/updates a release PR with changelog from conventional commits
  • Merging the release PR creates a git tag (vX.Y.Z) + GitHub Release, which triggers the Docker workflow to build version-tagged images
  • Version bump type is inferred automatically: feat: = minor, fix: = patch, feat!: / BREAKING CHANGE = major
  • Commitizen kept locally for commit-msg validation only — version bumping is now Release Please's job

Files added/changed

File Purpose
.github/workflows/release.yml Release Please workflow (SHA-pinned v4.4.0)
.github/release-please-config.json Python release type, changelog sections, commitizen version sync
.github/.release-please-manifest.json Tracks current version (0.1.0)
pyproject.toml Added x-release-please-version marker to commitizen section
CLAUDE.md Documented release pipeline in CI section

Release flow

1. PRs merge to main as usual
2. Release Please auto-creates/updates a release PR with accumulated changelog
3. Merge the release PR when ready to release
4. Tag created → GitHub Release → Docker workflow builds version-tagged images

Test plan

  • CI passes (lint, type-check, tests)
  • Release Please workflow runs on push to main (creates release PR)
  • Changelog sections map correctly to conventional commit types
  • x-release-please-version marker in pyproject.toml is picked up
  • Merging release PR creates tag + GitHub Release (verify after first real release)

Review coverage

  • Auto-skipped agent review (no substantive code changes — CI workflow + config only)
  • Pre-commit hooks passed (check-yaml, check-toml, check-json, gitleaks, commitizen)

- Add release.yml workflow triggered on push to main
- Add release-please-config.json with Python release type and
  conventional commit changelog sections
- Add .release-please-manifest.json tracking current version (0.1.0)
- Add x-release-please-version marker to pyproject.toml commitizen
  section so Release Please keeps it in sync
- Document release pipeline in CLAUDE.md CI section
Copilot AI review requested due to automatic review settings March 10, 2026 21:41
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 10, 2026

Dependency Review

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

OpenSSF Scorecard

PackageVersionScoreDetails
actions/googleapis/release-please-action 16a9c90856f42705d54a6fda1823352bdc62cf38 UnknownUnknown

Scanned Files

  • .github/workflows/release.yml

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 10, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: a26a5119-a151-4261-ab43-f65cb48009f5

📥 Commits

Reviewing files that changed from the base of the PR and between da3875f and fa20f85.

📒 Files selected for processing (5)
  • .github/release-please-config.json
  • .github/workflows/release.yml
  • CLAUDE.md
  • pyproject.toml
  • src/ai_company/__init__.py

📝 Walkthrough

Summary by CodeRabbit

  • Chores

    • Added automated release management: version bumping, changelog generation, release PR creation, and GitHub Releases on merges to main via a new release workflow.
  • Documentation

    • Updated deployment/CI docs describing the new release flow and required configuration/secrets.

Walkthrough

Adds GitHub release-please automation: a manifest and release-please config for the root Python package, a GitHub Actions workflow to run release-please on pushes to main, and small project metadata/comments updated for release-please markers; documentation updated to describe the flow. (50 words)

Changes

Cohort / File(s) Summary
Release automation config
​.github/.release-please-manifest.json, ​.github/release-please-config.json, ​.github/workflows/release.yml
New release-please manifest, release configuration for the root Python package (changelog mapping, bump rules, extra-file entries), and a GitHub Actions workflow to invoke release-please on pushes to main using a release token.
Project metadata & docs
CLAUDE.md, pyproject.toml, src/ai_company/__init__.py
Documentation describing the Release Please flow added/updated; pyproject and package init annotated with x-release-please-version markers and a Commitizen setting removed.

Sequence Diagram(s)

sequenceDiagram
    participant Dev as Developer
    participant GH as GitHub (push)
    participant Action as GitHub Actions (Release workflow)
    participant RP as release-please action
    participant Repo as Repository (creates PR & tags)
    participant Downstream as Downstream workflows

    Dev->>GH: Push to main
    GH->>Action: Trigger Release workflow
    Action->>RP: Run release-please with config & manifest
    RP->>Repo: Open Release PR (changelog + version bump)
    Dev->>Repo: Merge Release PR
    Repo->>Repo: Create git tag vX.Y.Z and GitHub Release
    Repo->>Downstream: Tag push triggers downstream workflows (e.g., Docker build)
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: adding Release Please for automated versioning and GitHub Releases, which aligns with all the configuration files and workflow changes in the changeset.
Description check ✅ Passed The description is directly related to the changeset, providing detailed context on Release Please setup, affected files, the release flow, and test plan coverage for the CI automation changes.
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 docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch ci/release-please
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch ci/release-please

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

@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 significantly enhances the project's continuous integration and delivery pipeline by introducing an automated release management system. By integrating Google's Release Please, the project now benefits from streamlined versioning, automatic changelog generation, and consistent GitHub Releases, which in turn trigger subsequent build processes like Docker image creation. This change aims to reduce manual overhead and ensure a more reliable and predictable release cycle.

Highlights

  • Automated Versioning and Releases: Integrated Release Please for fully automated versioning and GitHub Releases, streamlining the release process.
  • Release Pull Request Workflow: On every push to the main branch, Release Please now creates or updates a release pull request, generating a changelog from conventional commits.
  • Automated Tagging and Docker Builds: Merging the release pull request automatically creates a git tag (vX.Y.Z) and a GitHub Release, which then triggers the Docker workflow to build version-tagged images.
  • Version Bump Inference: The type of version bump (major, minor, patch) is automatically inferred from conventional commit messages (e.g., 'feat:' for minor, 'fix:' for patch, 'feat!:' or 'BREAKING CHANGE' for major).
  • Commitizen Role Update: Commitizen is now retained locally for commit-message validation only, with version bumping responsibilities transferred to Release Please.
Changelog
  • .github/.release-please-manifest.json
    • Initialized the manifest with the current project version "0.1.0".
  • .github/release-please-config.json
    • Configured Release Please for Python projects, defining the package name and release type.
    • Mapped conventional commit types to specific changelog sections (e.g., Features, Bug Fixes, Maintenance).
    • Specified pyproject.toml as an extra file for Release Please to manage.
  • CLAUDE.md
    • Added documentation detailing the new automated release pipeline within the CI section.
  • pyproject.toml
    • Annotated the version field with an x-release-please-version comment, marking it for management by Release Please.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/release.yml
Activity
  • CI passed for linting, type-checking, and tests.
  • Pre-commit hooks (check-yaml, check-toml, check-json, gitleaks, commitizen) passed successfully.
  • Agent review was auto-skipped as changes were limited to CI workflow and configuration files.
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
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 Release Please for automated versioning and release management, which is a great step for automating the release process. The configuration files for Release Please have been added and the project documentation updated accordingly.

However, there is a critical issue: the GitHub workflow file .github/workflows/release.yml, which contains the core logic for this change, is mentioned in both the pull request description and CLAUDE.md but is not included in the changes. Without this file, it's impossible to fully review the implementation. Please add the missing workflow file to the pull request.

I have also included a couple of suggestions on the provided configuration files to improve robustness and clarity.

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

Comment on lines +19 to +24
"extra-files": [
{
"type": "generic",
"path": "pyproject.toml"
}
]
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

While using the generic updater with the x-release-please-version comment is a valid feature, it can be brittle. Since it's a line-based updater, it is sensitive to formatting changes in pyproject.toml. For better robustness, I recommend using the toml updater type, which targets the version field structurally using a jsonpath. This makes the configuration more resilient to future file modifications.

      "extra-files": [
        {
          "type": "toml",
          "path": "pyproject.toml",
          "jsonpath": "$.tool.commitizen.version"
        }
      ]

[tool.commitizen]
name = "cz_conventional_commits"
version = "0.1.0"
version = "0.1.0" # x-release-please-version
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

With release-please now managing versioning and tagging, some keys in the [tool.commitizen] section have become redundant. Specifically, version_files (line 198) and tag_format (line 199) are for the cz bump command, which is no longer the primary versioning mechanism. Removing these keys would improve configuration clarity and make it explicit that commitizen is only used for validating commit messages.

@greptile-apps
Copy link
Copy Markdown

greptile-apps bot commented Mar 10, 2026

Greptile Summary

This PR introduces a Release Please workflow for fully automated versioning and GitHub Releases, replacing Commitizen's bump-on-demand model. On every push to main, Release Please creates or updates a release PR that accumulates a changelog from conventional commits; merging that PR creates a vX.Y.Z tag and GitHub Release, which in turn triggers the existing Docker workflow to build version-tagged images.

Key design decisions are sound:

  • The GitHub Action is SHA-pinned (16a9c90856f42705d54a6fda1823352bdc62cf38 = v4.4.0) — good supply-chain hygiene.
  • Top-level permissions: {} with explicit job-level contents: write + pull-requests: write follows least-privilege.
  • RELEASE_PLEASE_TOKEN (PAT/App token) is correctly used instead of GITHUB_TOKEN so the tag push fires the Docker workflow.
  • Both pyproject.toml and src/ai_company/__init__.py are registered in extra-files with x-release-please-version markers, keeping the [tool.hatch.version] source, ai_company.__version__, and [tool.commitizen].version (read by docker.yml) all in sync after every release.
  • Removing version_files from the commitizen config is intentional — commitizen is now validation-only.

Changes:

  • .github/workflows/release.yml — new Release Please workflow (SHA-pinned, scoped permissions)
  • .github/release-please-config.json — Python release type, changelog sections, extra-files for both version-bearing files
  • .github/.release-please-manifest.json — initialises root package at 0.1.0
  • pyproject.toml — adds x-release-please-version marker to commitizen version, removes now-redundant version_files
  • src/ai_company/__init__.py — adds x-release-please-version inline comment
  • CLAUDE.md — documents the full release pipeline

Confidence Score: 4/5

  • Safe to merge — CI/config-only change with no runtime code impact; minor open question on changelog verbosity (tracked in a prior thread).
  • The implementation is correct and well-structured: action SHA-pinned, permissions properly scoped, both version files covered by extra-files with the right markers, and the trigger chain (tag → Docker) will work as intended. One point is held back because the changelog-section verbosity issue from the previous review thread remains unresolved (ci/test/docs/chore sections still appear without "hidden": true), which will produce noisy GitHub Release notes going forward.
  • .github/release-please-config.json — the changelog-sections configuration (noted in a prior review thread) is the only outstanding concern.

Important Files Changed

Filename Overview
.github/workflows/release.yml New Release Please workflow; action SHA-pinned to v4.4.0, top-level permissions deny-all with job-level least-privilege scoping, correctly uses RELEASE_PLEASE_TOKEN so downstream tag-triggered workflows fire.
.github/release-please-config.json Python release type with extra-files covering both pyproject.toml and init.py via x-release-please-version markers; pre-major bump settings are conservative and intentional. Changelog sections (ci, test, docs, chore) remain visible without "hidden": true — noted in a previous review thread.
pyproject.toml Adds x-release-please-version marker to commitizen version field; removes version_files (intentional, commitizen now validation-only); docker.yml reads tool.commitizen.version which Release Please will keep updated.
src/ai_company/init.py Adds x-release-please-version marker so Release Please's generic updater keeps version in sync; hatch reads this file as the authoritative package version source.

Sequence Diagram

sequenceDiagram
    participant Dev as Developer
    participant GH as GitHub (main)
    participant RP as Release Please Action
    participant GHPR as Release PR
    participant Tag as Git Tag (vX.Y.Z)
    participant Docker as Docker Workflow

    Dev->>GH: Push conventional commits to main
    GH->>RP: Trigger release.yml (on: push to main)
    RP->>RP: Parse commits since last release
    RP->>GHPR: Create/update release PR<br/>(bumps pyproject.toml, __init__.py,<br/>manifest, CHANGELOG)

    Dev->>GHPR: Merge release PR when ready
    GHPR->>GH: Push to main
    GH->>RP: Trigger release.yml again
    RP->>Tag: Create vX.Y.Z tag + GitHub Release
    Tag->>Docker: Trigger docker.yml (on: push tags v*)
    Docker->>Docker: Read version from tool.commitizen.version<br/>in pyproject.toml
    Docker->>Docker: Build, scan (Trivy + Grype), sign with cosign
    Docker->>Docker: Push version-tagged images to GHCR
Loading

Last reviewed commit: fa20f85

Comment on lines +9 to +18
"changelog-sections": [
{ "type": "feat", "section": "Features" },
{ "type": "fix", "section": "Bug Fixes" },
{ "type": "perf", "section": "Performance" },
{ "type": "refactor", "section": "Refactoring" },
{ "type": "docs", "section": "Documentation" },
{ "type": "test", "section": "Tests" },
{ "type": "ci", "section": "CI/CD" },
{ "type": "chore", "section": "Maintenance" }
],
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Noisy changelog from non-user-facing commit types

ci, test, docs, and chore types are listed without "hidden": true, which means every ci:, test:, docs:, and chore: commit will appear as its own section in every GitHub Release changelog. These commit types don't trigger a version bump on their own, but they will accumulate into the changelog alongside feat and fix entries, making it harder to identify user-facing changes at a glance.

The Release Please convention is to mark low-signal types as hidden:

Suggested change
"changelog-sections": [
{ "type": "feat", "section": "Features" },
{ "type": "fix", "section": "Bug Fixes" },
{ "type": "perf", "section": "Performance" },
{ "type": "refactor", "section": "Refactoring" },
{ "type": "docs", "section": "Documentation" },
{ "type": "test", "section": "Tests" },
{ "type": "ci", "section": "CI/CD" },
{ "type": "chore", "section": "Maintenance" }
],
"changelog-sections": [
{ "type": "feat", "section": "Features" },
{ "type": "fix", "section": "Bug Fixes" },
{ "type": "perf", "section": "Performance" },
{ "type": "refactor", "section": "Refactoring", "hidden": true },
{ "type": "docs", "section": "Documentation", "hidden": true },
{ "type": "test", "section": "Tests", "hidden": true },
{ "type": "ci", "section": "CI/CD", "hidden": true },
{ "type": "chore", "section": "Maintenance", "hidden": true }
],
Prompt To Fix With AI
This is a comment left during a code review.
Path: .github/release-please-config.json
Line: 9-18

Comment:
**Noisy changelog from non-user-facing commit types**

`ci`, `test`, `docs`, and `chore` types are listed without `"hidden": true`, which means every `ci:`, `test:`, `docs:`, and `chore:` commit will appear as its own section in every GitHub Release changelog. These commit types don't trigger a version bump on their own, but they will accumulate into the changelog alongside `feat` and `fix` entries, making it harder to identify user-facing changes at a glance.

The Release Please convention is to mark low-signal types as hidden:

```suggestion
      "changelog-sections": [
        { "type": "feat", "section": "Features" },
        { "type": "fix", "section": "Bug Fixes" },
        { "type": "perf", "section": "Performance" },
        { "type": "refactor", "section": "Refactoring", "hidden": true },
        { "type": "docs", "section": "Documentation", "hidden": true },
        { "type": "test", "section": "Tests", "hidden": true },
        { "type": "ci", "section": "CI/CD", "hidden": true },
        { "type": "chore", "section": "Maintenance", "hidden": true }
      ],
```

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

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 Release Please automation to manage semantic version bumps, release PRs, tags, and GitHub Releases, integrating with the existing Docker workflow’s tag-based image publishing.

Changes:

  • Added a Release Please GitHub Actions workflow pinned to a specific action SHA.
  • Introduced Release Please config + manifest files to control release type and version tracking.
  • Annotated pyproject.toml to allow Release Please to update the commitizen version field; documented the release flow in CLAUDE.md.

Reviewed changes

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

Show a summary per file
File Description
.github/workflows/release.yml New workflow to run Release Please on pushes to main.
.github/release-please-config.json Configures python release type, changelog sections, and extra file updates.
.github/.release-please-manifest.json Tracks the current released version for Release Please.
pyproject.toml Adds x-release-please-version marker to enable automated version updates in TOML.
CLAUDE.md Documents the new release pipeline behavior in CI docs.

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

[tool.commitizen]
name = "cz_conventional_commits"
version = "0.1.0"
version = "0.1.0" # x-release-please-version
Copy link

Copilot AI Mar 10, 2026

Choose a reason for hiding this comment

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

The project’s published package version is configured via Hatch ([tool.hatch.version] path = "src/ai_company/__init__.py"), but Release Please is currently set up to update only tool.commitizen.version in pyproject.toml. If Release Please doesn’t also bump src/ai_company/__init__.py::__version__, the built package and runtime-reported version will drift from the Git tag / Docker tag. Consider configuring Release Please to update the Hatch version file as well (e.g., add src/ai_company/__init__.py as an extra-file/version file), or switch the Docker/version source of truth to the Hatch file and have Release Please update that.

Suggested change
version = "0.1.0" # x-release-please-version
version = "0.1.0"

Copilot uses AI. Check for mistakes.
"extra-files": [
{
"type": "generic",
"path": "pyproject.toml"
Copy link

Copilot AI Mar 10, 2026

Choose a reason for hiding this comment

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

extra-files currently includes only pyproject.toml, but this repo’s actual package version is driven by Hatch from src/ai_company/__init__.py ([tool.hatch.version].path). If Release Please doesn’t update that file too, releases will produce tags/GitHub releases without updating the installed package/runtime __version__. Consider adding src/ai_company/__init__.py to the files Release Please bumps (via extra-files or the appropriate python version-file configuration) so the tag, Docker tags, and package version stay consistent.

Suggested change
"path": "pyproject.toml"
"path": "pyproject.toml"
},
{
"type": "python",
"path": "src/ai_company/__init__.py"

Copilot uses AI. Check for mistakes.
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 @.github/release-please-config.json:
- Around line 19-24: Release Please won't update the package version in your
Hatch-configured source file, so add the actual Hatch version source file to the
extra-files list in .github/release-please-config.json: include a generic entry
with "type": "generic" and "path": "src/ai_company/__init__.py" (the file that
contains the dynamic version at line 33) so the releaser updates both
pyproject.toml and the package __init__.py version string during releases.

In @.github/workflows/release.yml:
- Around line 17-20: The release workflow is using
googleapis/release-please-action which defaults to GITHUB_TOKEN (won't trigger
downstream workflows); update the action invocation to pass a non-default token
by adding a "token: ${{ secrets.RELEASE_PLEASE_TOKEN }}" entry under the "with:"
block (alongside config-file and manifest-file), ensure a repository secret
named RELEASE_PLEASE_TOKEN exists containing a PAT or GitHub App token with repo
permissions, and verify the downstream Docker workflow is configured to run on
release/tag events so the PAT can trigger it.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 9490e521-f80d-49e3-adeb-a2cc5207d299

📥 Commits

Reviewing files that changed from the base of the PR and between aba48af and da3875f.

📒 Files selected for processing (5)
  • .github/.release-please-manifest.json
  • .github/release-please-config.json
  • .github/workflows/release.yml
  • CLAUDE.md
  • pyproject.toml
📜 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). (2)
  • GitHub Check: Agent
  • GitHub Check: Greptile Review
🧰 Additional context used
📓 Path-based instructions (1)
pyproject.toml

📄 CodeRabbit inference engine (CLAUDE.md)

pyproject.toml: Use asyncio_mode = 'auto' for async tests — no manual @pytest.mark.asyncio needed
Test timeout: 30 seconds per test
All versions in pyproject.toml must be pinned with == (not ranges or loose constraints)
Dependency groups: test (pytest + plugins), dev (includes test + ruff, mypy, pre-commit, commitizen)

Files:

  • pyproject.toml
🧠 Learnings (5)
📓 Common learnings
Learnt from: CR
Repo: Aureliolo/ai-company PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-10T21:27:30.981Z
Learning: Use `/aurelio-review-pr` to handle external reviewer feedback after PR exists
📚 Learning: 2026-03-10T21:27:30.981Z
Learnt from: CR
Repo: Aureliolo/ai-company PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-10T21:27:30.981Z
Learning: Docker image scans: Trivy (CRITICAL = hard fail, HIGH = warn-only) + Grype (critical cutoff). CVE triage via `.trivyignore.yaml` and `.grype.yaml`. Images only pushed after scans pass.

Applied to files:

  • CLAUDE.md
📚 Learning: 2026-03-10T21:27:30.980Z
Learnt from: CR
Repo: Aureliolo/ai-company PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-10T21:27:30.980Z
Learning: Pre-commit hooks 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, gitleaks

Applied to files:

  • CLAUDE.md
📚 Learning: 2026-03-10T21:27:30.981Z
Learnt from: CR
Repo: Aureliolo/ai-company PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-10T21:27:30.981Z
Learning: CI Docker build tags with version from `pyproject.toml` (`[tool.commitizen].version`), semver, and SHA

Applied to files:

  • pyproject.toml
📚 Learning: 2026-03-10T21:27:30.980Z
Learnt from: CR
Repo: Aureliolo/ai-company PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-10T21:27:30.980Z
Learning: Git commits must use format `<type>: <description>` with types: feat, fix, refactor, docs, test, chore, perf, ci — enforced by commitizen

Applied to files:

  • pyproject.toml
🪛 LanguageTool
CLAUDE.md

[uncategorized] ~168-~168: The official name of this software platform is spelled with a capital “H”.
Context: ... build version-tagged images. Config in .github/release-please-config.json and `.githu...

(GITHUB)


[uncategorized] ~168-~168: The official name of this software platform is spelled with a capital “H”.
Context: ....github/release-please-config.jsonand.github/.release-please-manifest.json`. ## Dep...

(GITHUB)

- Add x-release-please-version marker to __init__.py and include it
  in extra-files so Release Please updates the canonical package version
- Use RELEASE_PLEASE_TOKEN secret instead of GITHUB_TOKEN so tag
  creation triggers downstream Docker workflow
- Remove redundant commitizen version_files (Release Please owns bumps)
- Document PAT requirement in CLAUDE.md
@Aureliolo Aureliolo merged commit a488758 into main Mar 10, 2026
6 of 10 checks passed
@Aureliolo Aureliolo deleted the ci/release-please branch March 10, 2026 21:52
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