Add docs, CI workflows, agent config, and supporting files

- Add MkDocs documentation with API reference for the CLI module
- Add CI/CD and Claude Code review GitHub Actions workflows
- Add Dependabot and Renovate configuration for dependency updates
- Add .claude settings, agents, and local-qa skill with QA script
- Add AGENTS.md with repository guidelines and CLAUDE.md symlink
- Update README.md with installation, usage examples, and commands

https://claude.ai/code/session_01YW3YHru8wRH9dvHnBX7xf1
This commit is contained in:
Claude
2026-03-28 14:00:48 +00:00
parent 527f9213da
commit 0f15b28ea3
17 changed files with 715 additions and 1 deletions
+98
View File
@@ -0,0 +1,98 @@
---
name: CI/CD
on:
push:
branches:
- main
pull_request:
branches:
- main
types:
- opened
- synchronize
- reopened
workflow_dispatch: # checkov:skip=CKV_GHA_7:workflow_dispatch inputs are required for manual runs
inputs:
workflow:
required: true
type: choice
options:
- lint-and-test
- docs-deploy
- release
description: Choose the workflow to run
default: lint-and-test
permissions:
contents: read
defaults:
run:
shell: bash -euo pipefail {0}
working-directory: .
jobs:
python-lint-and-scan:
if: >
github.event_name == 'push'
|| github.event_name == 'pull_request'
|| (github.event_name == 'workflow_dispatch' && inputs.workflow == 'lint-and-test')
permissions:
contents: read
uses: dceoy/gh-actions-for-devops/.github/workflows/python-package-lint-and-scan.yml@main # zizmor: ignore[unpinned-uses]
with:
package-path: .
runs-on: windows-latest
python-test:
if: >
github.event_name == 'push'
|| github.event_name == 'pull_request'
|| (github.event_name == 'workflow_dispatch' && inputs.workflow == 'lint-and-test')
permissions:
contents: read
uses: dceoy/gh-actions-for-devops/.github/workflows/python-package-test.yml@main # zizmor: ignore[unpinned-uses]
with:
package-path: .
runs-on: windows-latest
python-docs-deploy:
if: >
github.event_name == 'push'
|| (
github.event_name == 'workflow_dispatch'
&& (inputs.workflow == 'docs-deploy' || inputs.workflow == 'release')
)
permissions:
contents: write
uses: dceoy/gh-actions-for-devops/.github/workflows/python-package-mkdocs-gh-deploy.yml@main # zizmor: ignore[unpinned-uses]
with:
package-path: .
runs-on: ubuntu-slim
secrets:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
python-package-release:
if: >
github.event_name == 'push'
|| (
github.event_name == 'workflow_dispatch'
&& (inputs.workflow == 'release' || inputs.workflow == 'lint-and-test')
)
permissions:
contents: write
id-token: write
uses: dceoy/gh-actions-for-devops/.github/workflows/python-package-release-on-pypi-and-github.yml@main # zizmor: ignore[unpinned-uses]
with:
package-path: .
create-releases: ${{ github.event_name == 'workflow_dispatch' && inputs.workflow == 'release' }}
secrets:
PYPI_API_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
dependabot-auto-merge:
if: >
github.event_name == 'pull_request' && github.actor == 'dependabot[bot]'
needs:
- python-lint-and-scan
- python-test
uses: dceoy/gh-actions-for-devops/.github/workflows/dependabot-auto-merge.yml@main # zizmor: ignore[unpinned-uses]
permissions:
contents: write
pull-requests: write
actions: read
with:
unconditional: true
+57
View File
@@ -0,0 +1,57 @@
---
name: Claude Code review and mention bot
on:
pull_request:
branches:
- main
types:
- opened
- ready_for_review
issue_comment:
types:
- created
pull_request_review_comment:
types:
- created
issues:
types:
- opened
- assigned
pull_request_review:
types:
- submitted
permissions:
contents: read
jobs:
claude-code-review:
if: >
github.event_name == 'pull_request'
&& github.event.pull_request.draft == false
&& (! startsWith(github.head_ref, 'dependabot/'))
&& (! startsWith(github.head_ref, 'renovate/'))
permissions:
contents: read
pull-requests: write
issues: write
id-token: write
actions: read
uses: dceoy/gh-actions-for-devops/.github/workflows/claude-code-review.yml@main # zizmor: ignore[unpinned-uses]
secrets:
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} # zizmor: ignore[secrets-outside-env]
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
claude-code-bot:
if: >
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude'))
|| (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude'))
|| (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude'))
|| (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
permissions:
contents: read
pull-requests: write
issues: write
id-token: write
actions: read
uses: dceoy/gh-actions-for-devops/.github/workflows/claude-code-bot.yml@main # zizmor: ignore[unpinned-uses]
secrets:
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} # zizmor: ignore[secrets-outside-env]
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}