chore(deps-dev): update mypy requirement from >=1.0.0 to >=1.19.1 #4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Claude Code Review | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| branches: [dev, main] | |
| paths: | |
| # Python files | |
| - '**.py' | |
| # Documentation | |
| - '**.md' | |
| - 'CLAUDE.md' | |
| - 'README.md' | |
| # Configuration | |
| - 'pyproject.toml' | |
| - '.github/**' | |
| # ASO skill structure | |
| - 'app-store-optimization/**' | |
| - '.claude/**' | |
| jobs: | |
| pr-labeling: | |
| name: Label PR Size | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Label PR by size | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const pr = context.payload.pull_request; | |
| const additions = pr.additions; | |
| const deletions = pr.deletions; | |
| const changes = additions + deletions; | |
| let sizeLabel; | |
| if (changes < 50) { | |
| sizeLabel = 'size: XS'; | |
| } else if (changes < 200) { | |
| sizeLabel = 'size: S'; | |
| } else if (changes < 500) { | |
| sizeLabel = 'size: M'; | |
| } else if (changes < 1000) { | |
| sizeLabel = 'size: L'; | |
| } else { | |
| sizeLabel = 'size: XL'; | |
| } | |
| // Remove old size labels | |
| const labels = await github.rest.issues.listLabelsOnIssue({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: pr.number, | |
| }); | |
| for (const label of labels.data) { | |
| if (label.name.startsWith('size: ')) { | |
| await github.rest.issues.removeLabel({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: pr.number, | |
| name: label.name, | |
| }); | |
| } | |
| } | |
| // Add new size label | |
| await github.rest.issues.addLabels({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: pr.number, | |
| labels: [sizeLabel], | |
| }); | |
| console.log(`Added label: ${sizeLabel} (${changes} changes)`); | |
| // Warn if PR is too large | |
| if (changes > 500) { | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: pr.number, | |
| body: `⚠️ **Large PR Alert**: This PR has ${changes} changes. Consider breaking it into smaller PRs for easier review and to reduce merge conflicts.\n\n**Recommendation**: Aim for <200 changes per PR for optimal velocity.`, | |
| }); | |
| } | |
| claude-review: | |
| name: Claude Code Review | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| issues: read | |
| id-token: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - name: Run Claude Code Review | |
| id: claude-review | |
| uses: anthropics/claude-code-action@v1 | |
| with: | |
| claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} | |
| prompt: | | |
| REPO: ${{ github.repository }} | |
| PR NUMBER: ${{ github.event.pull_request.number }} | |
| Please review this ASO skill pull request and provide focused feedback on: | |
| **ASO-Specific Concerns:** | |
| - Character limit validation (Apple: title 30, subtitle 30, keywords 100; Google: title 50, short desc 80) | |
| - Platform-specific logic correctness (Apple App Store vs Google Play Store) | |
| - Keyword analysis accuracy and relevance scoring | |
| - Metadata optimization quality (clear, actionable recommendations) | |
| - No external dependencies (standard library only) | |
| **Code Quality:** | |
| - Python best practices (PEP 8 compliance via ruff) | |
| - Type hints and function signatures | |
| - Docstring completeness for public functions | |
| - Error handling and edge cases | |
| - Performance considerations (especially for iTunes API calls) | |
| **Security:** | |
| - No hardcoded credentials or API keys | |
| - Safe URL handling and input validation | |
| - Proper data sanitization | |
| **Documentation:** | |
| - README.md accuracy for feature changes | |
| - CHANGELOG.md updates following Keep a Changelog format | |
| - Inline comments for complex ASO logic | |
| Use the repository's CLAUDE.md for ASO skill context and structure. Be concise and actionable. | |
| Use `gh pr comment` with your Bash tool to leave your review as a comment on the PR. | |
| # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md | |
| # or https://docs.claude.com/en/docs/claude-code/cli-reference for available options | |
| claude_args: '--allowed-tools "Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*)"' | |