Compare commits

...

38 Commits

Author SHA1 Message Date
km-anthropic
56229f4488 Add allowed_tools input parameter and enable MCP file ops for agent mode
- Add allowed_tools input to action.yml so workflows can specify allowed tools
- Pass allowed_tools to prepare step via environment variable
- Update agent mode to use allowed_tools when building claude_args
- Add GitHub file ops MCP server to agent mode when use_commit_signing is enabled
- This allows agent mode (used by auto-fix workflows) to write and commit files
2025-08-19 15:32:04 -07:00
km-anthropic
a44c75d118 Add explicit allowed_tools to auto-fix workflows
The slash command frontmatter allowed_tools isn't being passed through,
so we need to explicitly allow Edit/Write/MultiEdit tools in the workflow
2025-08-19 15:25:37 -07:00
km-anthropic
536d74a854 Update test file to trigger CI failure 2025-08-19 15:19:01 -07:00
km-anthropic
42fce56d3f Enable use_commit_signing to provide MCP file ops server for CI fixes
- Add use_commit_signing: true to auto-fix workflows
- Update slash commands to use mcp__github_file_ops__commit_files
- This enables Claude to write and commit files through MCP
2025-08-19 15:14:50 -07:00
km-anthropic
4a40e4252f Set allowed_tools to '*' to allow all tools for CI fix commands 2025-08-19 14:59:54 -07:00
km-anthropic
47c2eb29f7 Fix workflow to use anthropics/claude-code-action@v1-dev which has workflow_run support 2025-08-19 14:49:07 -07:00
km-anthropic
d48897c1f8 Fix GitHub Actions syntax error - replace optional chaining with conditional 2025-08-19 14:47:27 -07:00
km-anthropic
7fc38f28c0 Remove tool restrictions from fix-ci slash commands to allow git operations 2025-08-19 14:33:35 -07:00
km-anthropic
71431089b5 Add explicit fix-ci-commit command for clearer git commit instructions
- Create new slash command specifically for when branch already exists
- Makes it crystal clear that Bash tool must be used for git commands
- Update workflow to use the new command
2025-08-19 14:18:06 -07:00
km-anthropic
130eff6d9c Update CI fix workflows to ensure Claude commits changes
- Clarify that Claude must commit changes even when branch exists
- Update both slash command and inline workflow instructions
- Make git add and commit commands more explicit
2025-08-19 14:08:14 -07:00
km-anthropic
54d68a2a5f Trigger new CI failure to test auto-fix workflows 2025-08-19 13:58:08 -07:00
km-anthropic
110acf1b44 Test CI failure for auto-fix workflows 2025-08-19 13:47:27 -07:00
km-anthropic
e9dc3050fb Add auto-fix CI workflows with slash command and inline approaches
- Add /fix-ci slash command for programmatic CI failure fixing
- Create auto-fix-ci.yml workflow using slash command approach
- Create auto-fix-ci-inline.yml workflow with full inline prompt
- Both workflows automatically analyze CI failures and create fix branches
2025-08-19 13:44:34 -07:00
km-anthropic
9700ba8130 Fix: Use correct fork path janeapp/claude-code-action 2025-08-18 17:25:59 -07:00
km-anthropic
0a82bcdb04 Test PR 411: Point workflow to piotrb's fork with sticky comment feature 2025-08-18 17:17:52 -07:00
km-anthropic
a37014c520 Update workflow to use fork version with subagent fix 2025-08-14 15:14:20 -07:00
km-anthropic
3005c85cee Fix: Use CLAUDE_WORKING_DIR to correctly locate subagent files
The previous fix was looking in the wrong directory. Now uses CLAUDE_WORKING_DIR environment variable which points to the repository being processed, ensuring subagent files are found correctly.
2025-08-14 15:14:04 -07:00
km-anthropic
7ccb615087 Fix: Copy subagent files from repo to Claude runtime environment
This enables custom subagents to work in GitHub Actions by copying .claude/agents/*.md files from the repository to ~/.claude/agents/ during setup
2025-08-14 15:14:04 -07:00
km-anthropic
f317d3c55d Add deep-thinker subagent for testing subagent functionality 2025-08-14 15:14:04 -07:00
km-anthropic
50aee38198 Update review slash command to simple version that always posts comments 2025-08-12 15:00:33 -07:00
km-anthropic
39b3855841 Update workflow to use /review slash command 2025-08-12 14:29:54 -07:00
km-anthropic
d0f938f59a Merge fork changes 2025-08-12 14:28:57 -07:00
km-anthropic
d6a4b9c857 Add simple PR review slash command for GitHub Actions
- Reviews PR using embedded GitHub Actions variables
- Fetches PR details and diff using gh CLI
- Posts review as comment using gh pr comment
- Designed for use in automated workflows
2025-08-12 14:27:20 -07:00
km-anthropic
1dd746f3e2 Add slash command for comprehensive PR review
- Multi-agent review process with parallel analysis
- Confidence scoring for issues (80+ threshold)
- Strict formatting for GitHub comments
- Uses gh CLI for all GitHub interactions
2025-08-12 14:11:22 -07:00
km-anthropic
89eda5e432 Point workflow to origin's v1-dev branch 2025-08-12 13:22:46 -07:00
km-anthropic
dc5d6645af Use fork's v1-dev which has context prefixing 2025-08-12 12:56:53 -07:00
km-anthropic
ff46b61169 Add explicit MCP tool instructions to workflow 2025-08-12 12:52:31 -07:00
km-anthropic
e2e4286857 Simplify workflow - use origin v1-dev without explicit PR number 2025-08-12 12:49:10 -07:00
km-anthropic
6c58dba4ad Use fork's v1-dev with context prefixing 2025-08-12 12:40:58 -07:00
km-anthropic
74ee3b534f Explicitly specify PR number in prompt 2025-08-12 12:40:13 -07:00
km-anthropic
583874c9e0 Explicitly list MCP tools instead of using glob 2025-08-12 12:29:30 -07:00
km-anthropic
0932e8cf26 Fix quoting in claude_args for workflow 2025-08-12 12:26:35 -07:00
km-anthropic
c9bad6e9cb Allow MCP GitHub tools in auto-review workflow 2025-08-12 12:24:25 -07:00
km-anthropic
14e99e2a2b Add auto-review workflow for testing 2025-08-12 12:21:12 -07:00
km-anthropic
57cb0d9828 Match old workflow exactly - prevent approvals
- Use exact same permissions as old workflow
- Use fetch-depth: 1 like old workflow
- Remove timeout and extra features
- Only trigger on opened PRs
- Use claude_args with --allowedTools format
2025-08-11 14:54:48 -07:00
km-anthropic
44dd9dd8a8 Final test: Update README for complete review workflow test 2025-08-11 14:01:41 -07:00
km-anthropic
8052d271ce Enable PR review submission and remove old workflow
- Add back review submission tools to allow Claude to comment
- Keep using v1-dev with the fixed agent mode
- This replaces the old claude-review.yml functionality
2025-08-11 14:00:48 -07:00
km-anthropic
b61185b14c Test: Update README title for workflow testing 2025-08-11 13:55:00 -07:00
18 changed files with 726 additions and 68 deletions

View File

@@ -0,0 +1,31 @@
---
name: deep-thinker
description: A subagent that performs deep analysis with extended thinking
tools:
- "*"
proactive: false
---
# Deep Thinker Subagent
You are a specialized subagent designed to perform deep, thorough analysis of complex problems using extended thinking capabilities.
## Your Purpose
You excel at:
- Breaking down complex problems into smaller components
- Analyzing trade-offs and implications
- Providing comprehensive, well-reasoned solutions
- Exploring edge cases and potential issues
## Instructions
When given a task:
1. Use extended thinking to thoroughly analyze the problem
2. Consider multiple approaches and their trade-offs
3. Identify potential issues or edge cases
4. Provide a detailed, well-structured response
## Important
Always think deeply before responding. Take your time to ensure thoroughness and accuracy in your analysis.

View File

@@ -0,0 +1,54 @@
---
description: Fix CI failures and commit changes (for use when branch already exists)
allowed_tools: "*"
---
# Fix CI Failures and Commit
You are on a branch that was created to fix CI failures. Your task is to fix the issues and commit the changes.
## CI Failure Information
$ARGUMENTS
## Your Tasks
1. **Analyze the failures** - Understand what went wrong from the logs
2. **Fix the issues** - Make the necessary code changes
3. **Commit your fixes** - Use git to commit all changes
## Step-by-Step Instructions
### 1. Fix the Issues
Based on the error logs:
- Fix syntax errors
- Fix formatting issues
- Fix test failures
- Fix any other CI problems
### 2. Commit Your Changes (REQUIRED)
After fixing ALL issues, you MUST:
Use the `mcp__github_file_ops__commit_files` tool to commit all your changes with a descriptive message like:
```
Fix CI failures
- Fixed syntax errors
- Fixed formatting issues
- Fixed test failures
[List actual fixes made]
```
**IMPORTANT**: You MUST use the MCP file ops tool to commit your changes. The workflow expects you to commit your changes.
### 3. Verify (Optional)
If possible, run verification commands:
- `bun run format:check` for formatting
- `bun test` for tests
- `bun run typecheck` for TypeScript
Begin by analyzing the failure logs and then fix the issues.

View File

@@ -0,0 +1,67 @@
---
description: Analyze and fix CI failures by examining logs and making targeted fixes
allowed_tools: "*"
---
# Fix CI Failures
You are tasked with analyzing CI failure logs and fixing the issues. Follow these steps:
## Context Provided
$ARGUMENTS
## Step 1: Analyze the Failure
Parse the provided CI failure information to understand:
- Which jobs failed and why
- The specific error messages and stack traces
- Whether failures are test-related, build-related, or linting issues
## Step 2: Search and Understand the Codebase
Use search tools to locate the failing code:
- Search for the failing test names or functions
- Find the source files mentioned in error messages
- Review related configuration files (package.json, tsconfig.json, etc.)
## Step 3: Apply Targeted Fixes
Make minimal, focused changes:
- **For test failures**: Determine if the test or implementation needs fixing
- **For type errors**: Fix type definitions or correct the code logic
- **For linting issues**: Apply formatting using the project's tools
- **For build errors**: Resolve dependency or configuration issues
- **For missing imports**: Add the necessary imports or install packages
Requirements:
- Only fix the actual CI failures, avoid unrelated changes
- Follow existing code patterns and conventions
- Ensure changes are production-ready, not temporary hacks
- Preserve existing functionality while fixing issues
## Step 4: Commit Changes
After applying ALL fixes:
1. Use the `mcp__github_file_ops__commit_files` tool to commit your changes
2. Include a descriptive commit message explaining what was fixed
3. Document which CI jobs/tests were addressed in the commit message
4. Important: Use the MCP file ops tool, not git commands directly
## Step 5: Verify Fixes Locally
Run available verification commands:
- Execute the failing tests locally to confirm they pass
- Run the project's lint command (check package.json for scripts)
- Run type checking if available
- Execute any build commands to ensure compilation succeeds
## Important Guidelines
- Focus exclusively on fixing the reported CI failures
- Maintain code quality and follow the project's established patterns
- If a fix requires significant refactoring, document why it's necessary
- When multiple solutions exist, choose the simplest one that maintains code quality
- Add clear comments only if the fix is non-obvious
Begin by analyzing the failure details provided above.

View File

@@ -0,0 +1,22 @@
---
allowed-tools: Bash(gh pr comment:*), Bash(gh pr diff:*), Bash(gh pr view:*), Read, Glob, Grep
description: Code review a pull request
---
Review the current pull request and provide feedback.
1. Use `gh pr view` to get the PR details and `gh pr diff` to see the changes
2. Look for potential bugs, issues, or improvements
3. Always post a comment with your findings using `gh pr comment`
Format your comment like this:
## Code Review
[Your feedback here - be specific and constructive]
- If you find issues, describe them clearly
- If everything looks good, say so
- Link to specific lines when relevant
🤖 Generated with [Claude Code](https://claude.ai/code)

177
.github/workflows/auto-fix-ci-inline.yml vendored Normal file
View File

@@ -0,0 +1,177 @@
name: Auto Fix CI Failures (Inline)
on:
workflow_run:
workflows: ["CI"]
types:
- completed
permissions:
contents: write
pull-requests: write
actions: read
issues: write
jobs:
auto-fix:
if: |
github.event.workflow_run.conclusion == 'failure' &&
github.event.workflow_run.name != 'Auto Fix CI Failures' &&
github.event.workflow_run.name != 'Auto Fix CI Failures (Inline)'
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.event.workflow_run.head_branch }}
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup git
run: |
git config --global user.name "claude[bot]"
git config --global user.email "198276+claude[bot]@users.noreply.github.com"
- name: Create fix branch
id: branch
run: |
BRANCH_NAME="claude-auto-fix-ci-${{ github.event.workflow_run.head_branch }}-${{ github.run_id }}"
git checkout -b "$BRANCH_NAME"
echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
- name: Get CI failure details
id: failure_details
uses: actions/github-script@v7
with:
script: |
const run = await github.rest.actions.getWorkflowRun({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{ github.event.workflow_run.id }}
});
const jobs = await github.rest.actions.listJobsForWorkflowRun({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{ github.event.workflow_run.id }}
});
const failedJobs = jobs.data.jobs.filter(job => job.conclusion === 'failure');
let errorLogs = [];
for (const job of failedJobs) {
const logs = await github.rest.actions.downloadJobLogsForWorkflowRun({
owner: context.repo.owner,
repo: context.repo.repo,
job_id: job.id
});
errorLogs.push({
jobName: job.name,
logs: logs.data
});
}
return {
runUrl: run.data.html_url,
failedJobs: failedJobs.map(j => j.name),
errorLogs: errorLogs
};
- name: Fix CI failures with Claude
uses: anthropics/claude-code-action@v1-dev
with:
prompt: |
You are tasked with analyzing CI failure logs and fixing the issues. Follow these steps:
## Context Provided
Failed CI Run: ${{ fromJSON(steps.failure_details.outputs.result).runUrl }}
Failed Jobs: ${{ join(fromJSON(steps.failure_details.outputs.result).failedJobs, ', ') }}
Error logs:
${{ toJSON(fromJSON(steps.failure_details.outputs.result).errorLogs) }}
## Step 1: Analyze the Failure
Parse the provided CI failure information to understand:
- Which jobs failed and why
- The specific error messages and stack traces
- Whether failures are test-related, build-related, or linting issues
## Step 2: Search and Understand the Codebase
Use search tools to locate the failing code:
- Search for the failing test names or functions
- Find the source files mentioned in error messages
- Review related configuration files (package.json, tsconfig.json, etc.)
## Step 3: Apply Targeted Fixes
Make minimal, focused changes:
- **For test failures**: Determine if the test or implementation needs fixing
- **For type errors**: Fix type definitions or correct the code logic
- **For linting issues**: Apply formatting using the project's tools
- **For build errors**: Resolve dependency or configuration issues
- **For missing imports**: Add the necessary imports or install packages
Requirements:
- Only fix the actual CI failures, avoid unrelated changes
- Follow existing code patterns and conventions
- Ensure changes are production-ready, not temporary hacks
- Preserve existing functionality while fixing issues
## Step 4: Commit Changes
After applying ALL fixes:
1. Stage all modified files with `git add -A`
2. Commit with: `git commit -m "Fix CI failures: prettier formatting and syntax errors"`
3. Important: You MUST commit your changes - the branch already exists
## Step 5: Verify Fixes Locally
Run available verification commands:
- Execute the failing tests locally to confirm they pass
- Run the project's lint command (check package.json for scripts)
- Run type checking if available
- Execute any build commands to ensure compilation succeeds
## Important Guidelines
- Focus exclusively on fixing the reported CI failures
- Maintain code quality and follow the project's established patterns
- If a fix requires significant refactoring, document why it's necessary
- When multiple solutions exist, choose the simplest one that maintains code quality
Begin by analyzing the failure details provided above.
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
github_token: ${{ secrets.GITHUB_TOKEN }}
timeout_minutes: "30"
use_sticky_comment: "true"
use_commit_signing: "true"
allowed_tools: "Edit,MultiEdit,Write,Read,Glob,Grep,LS,Bash,mcp__github_file_ops__commit_files,mcp__github_file_ops__delete_files"
claude_args: "--max-turns 15"
- name: Push fix branch
if: success()
run: |
git push origin ${{ steps.branch.outputs.branch_name }}
- name: Create pull request comment
if: success()
uses: actions/github-script@v7
with:
script: |
const branchName = '${{ steps.branch.outputs.branch_name }}';
const baseBranch = '${{ github.event.workflow_run.head_branch }}';
const prUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/compare/${baseBranch}...${branchName}?quick_pull=1`;
const issueNumber = ${{ github.event.workflow_run.pull_requests[0] && github.event.workflow_run.pull_requests[0].number || 'null' }};
if (issueNumber) {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issueNumber,
body: `## 🤖 CI Auto-Fix Available\n\nClaude has analyzed the CI failures and prepared fixes.\n\n[**→ Create pull request to fix CI**](${prUrl})\n\n_This fix was generated automatically based on the [failed CI run](${{ fromJSON(steps.failure_details.outputs.result).runUrl }})._`
});
}

119
.github/workflows/auto-fix-ci.yml vendored Normal file
View File

@@ -0,0 +1,119 @@
name: Auto Fix CI Failures
on:
workflow_run:
workflows: ["CI"]
types:
- completed
permissions:
contents: write
pull-requests: write
actions: read
issues: write
jobs:
auto-fix:
if: |
github.event.workflow_run.conclusion == 'failure' &&
github.event.workflow_run.name != 'Auto Fix CI Failures'
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.event.workflow_run.head_branch }}
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup git
run: |
git config --global user.name "claude[bot]"
git config --global user.email "198276+claude[bot]@users.noreply.github.com"
- name: Create fix branch
id: branch
run: |
BRANCH_NAME="claude-auto-fix-ci-${{ github.event.workflow_run.head_branch }}-${{ github.run_id }}"
git checkout -b "$BRANCH_NAME"
echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
- name: Get CI failure details
id: failure_details
uses: actions/github-script@v7
with:
script: |
const run = await github.rest.actions.getWorkflowRun({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{ github.event.workflow_run.id }}
});
const jobs = await github.rest.actions.listJobsForWorkflowRun({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{ github.event.workflow_run.id }}
});
const failedJobs = jobs.data.jobs.filter(job => job.conclusion === 'failure');
let errorLogs = [];
for (const job of failedJobs) {
const logs = await github.rest.actions.downloadJobLogsForWorkflowRun({
owner: context.repo.owner,
repo: context.repo.repo,
job_id: job.id
});
errorLogs.push({
jobName: job.name,
logs: logs.data
});
}
return {
runUrl: run.data.html_url,
failedJobs: failedJobs.map(j => j.name),
errorLogs: errorLogs
};
- name: Fix CI failures with Claude
uses: anthropics/claude-code-action@v1-dev
with:
prompt: |
/fix-ci-commit Failed CI Run: ${{ fromJSON(steps.failure_details.outputs.result).runUrl }}
Failed Jobs: ${{ join(fromJSON(steps.failure_details.outputs.result).failedJobs, ', ') }}
Error logs:
${{ toJSON(fromJSON(steps.failure_details.outputs.result).errorLogs) }}
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
github_token: ${{ secrets.GITHUB_TOKEN }}
timeout_minutes: "30"
use_sticky_comment: "true"
use_commit_signing: "true"
allowed_tools: "Edit,MultiEdit,Write,Read,Glob,Grep,LS,Bash,mcp__github_file_ops__commit_files,mcp__github_file_ops__delete_files"
claude_args: "--max-turns 15"
- name: Push fix branch
if: success()
run: |
git push origin ${{ steps.branch.outputs.branch_name }}
- name: Create pull request comment
if: success()
uses: actions/github-script@v7
with:
script: |
const branchName = '${{ steps.branch.outputs.branch_name }}';
const baseBranch = '${{ github.event.workflow_run.head_branch }}';
const prUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/compare/${baseBranch}...${branchName}?quick_pull=1`;
const issueNumber = ${{ github.event.workflow_run.pull_requests[0] && github.event.workflow_run.pull_requests[0].number || 'null' }};
if (issueNumber) {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issueNumber,
body: `## 🤖 CI Auto-Fix Available\n\nClaude has analyzed the CI failures and prepared fixes.\n\n[**→ Create pull request to fix CI**](${prUrl})\n\n_This fix was generated automatically based on the [failed CI run](${{ fromJSON(steps.failure_details.outputs.result).runUrl }})._`
});
}

View File

@@ -1,49 +1,33 @@
name: Claude PR Review (Fixed)
name: Auto review PRs
on:
pull_request:
types: [opened, synchronize]
workflow_dispatch:
inputs:
pr_number:
description: "PR number to review"
required: false
type: string
types: [opened]
jobs:
auto-review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
issues: write
id-token: write
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-depth: 1
- name: Automatic PR Review
- name: Auto review PR
uses: anthropics/claude-code-action@v1-dev
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
timeout_minutes: "60"
prompt: |
Please review this pull request and provide comprehensive feedback.
Focus on:
Please review this PR. Look at the changes and provide thoughtful feedback on:
- Code quality and best practices
- Potential bugs or issues
- Performance considerations
- Security implications
- Test coverage
- Documentation updates if needed
- Suggestions for improvements
- Overall architecture and design decisions
- Documentation consistency: Verify that README.md and other documentation files are updated to reflect any code changes (especially new inputs, features, or configuration options)
Provide constructive feedback with specific suggestions for improvement.
Use inline comments to highlight specific areas of concern.
After your review, submit a proper GitHub review with your findings.
# Only include essential tools for reviewing (no submitting)
# This prevents multiple review submissions
claude_args: "--allowedTools Bash,Read,Grep,mcp__github-comment-server__get_pull_request_diff,mcp__github-comment-server__get_pull_request_files,mcp__github-comment-server__get_pull_request"
Be constructive and specific in your feedback. Give inline comments where applicable.
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_args: "--allowedTools mcp__github-comment-server__create_pending_pull_request_review,mcp__github-comment-server__add_comment_to_pending_review,mcp__github-comment-server__submit_pending_pull_request_review,mcp__github-comment-server__get_pull_request_diff"

View File

@@ -0,0 +1,26 @@
name: Auto Review PRs
on:
pull_request:
types: [opened, synchronize]
jobs:
auto-review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
issues: write
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Auto review PR
uses: anthropics/claude-code-action@v1-dev
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: /review

View File

@@ -1,33 +0,0 @@
name: Auto review PRs
on:
pull_request:
types: [opened]
jobs:
auto-review:
permissions:
contents: read
id-token: write
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Auto review PR
uses: anthropics/claude-code-action@main
with:
direct_prompt: |
Please review this PR. Look at the changes and provide thoughtful feedback on:
- Code quality and best practices
- Potential bugs or issues
- Suggestions for improvements
- Overall architecture and design decisions
- Documentation consistency: Verify that README.md and other documentation files are updated to reflect any code changes (especially new inputs, features, or configuration options)
Be constructive and specific in your feedback. Give inline comments where applicable.
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
allowed_tools: "mcp__github__create_pending_pull_request_review,mcp__github__add_comment_to_pending_review,mcp__github__submit_pending_pull_request_review,mcp__github__get_pull_request_diff"

View File

@@ -31,9 +31,13 @@ jobs:
- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@beta
uses: janeapp/claude-code-action@main
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
allowed_tools: "Bash(bun install),Bash(bun test:*),Bash(bun run format),Bash(bun typecheck)"
custom_instructions: "You have also been granted tools for editing files and running bun commands (install, run, test, typecheck) for testing your changes: bun install, bun test, bun run format, bun typecheck."
model: "claude-opus-4-1-20250805"
# Testing PR 411 - sticky comment customization
use_sticky_comment: true
sticky_comment_app_bot_id: "209825114"
sticky_comment_app_bot_name: "claude"

View File

@@ -1,6 +1,6 @@
![Claude Code Action responding to a comment](https://github.com/user-attachments/assets/1d60c2e9-82ed-4ee5-b749-f9e021c85f4d)
# Claude Code Action
# Claude Code Action (Final Test)
A general-purpose [Claude Code](https://claude.ai/code) action for GitHub PRs and issues that can answer questions and implement code changes. This action listens for a trigger phrase in comments and activates Claude act on the request. It supports multiple authentication methods including Anthropic direct API, Amazon Bedrock, and Google Vertex AI.

View File

@@ -81,6 +81,10 @@ inputs:
description: "Enable commit signing using GitHub's commit signature verification. When false, Claude uses standard git commands"
required: false
default: "false"
allowed_tools:
description: "Comma-separated list of tools to allow Claude to use (e.g., 'Edit,MultiEdit,Write,Read'). If not set, mode defaults apply."
required: false
default: ""
experimental_allowed_domains:
description: "Restrict network access to these domains only (newline-separated). If not set, no restrictions are applied. Provider domains are auto-detected."
required: false
@@ -130,6 +134,7 @@ runs:
ADDITIONAL_PERMISSIONS: ${{ inputs.additional_permissions }}
CLAUDE_ARGS: ${{ inputs.claude_args }}
MCP_CONFIG: ${{ inputs.mcp_config }}
ALLOWED_TOOLS: ${{ inputs.allowed_tools }}
- name: Install Base Action Dependencies
if: steps.prepare.outputs.contains_trigger == 'true'

View File

@@ -79,4 +79,37 @@ export async function setupClaudeCodeSettings(
console.log(`Slash commands directory not found or error copying: ${e}`);
}
}
// Copy subagent files from repository to Claude's agents directory
// CLAUDE_WORKING_DIR is set by the action to point to the repo being processed
const workingDir = process.env.CLAUDE_WORKING_DIR || process.cwd();
const repoAgentsDir = `${workingDir}/.claude/agents`;
const targetAgentsDir = `${home}/.claude/agents`;
try {
const agentsDirExists = await $`test -d ${repoAgentsDir}`.quiet().nothrow();
if (agentsDirExists.exitCode === 0) {
console.log(`Found subagents directory at ${repoAgentsDir}`);
// Create target agents directory if it doesn't exist
await $`mkdir -p ${targetAgentsDir}`.quiet();
console.log(`Created target agents directory at ${targetAgentsDir}`);
// Copy all .md files from repo agents to Claude's agents directory
const copyResult = await $`cp -r ${repoAgentsDir}/*.md ${targetAgentsDir}/ 2>/dev/null`.quiet().nothrow();
if (copyResult.exitCode === 0) {
// List copied agents for logging
const agents = await $`ls -la ${targetAgentsDir}/*.md 2>/dev/null | wc -l`.quiet().text();
const agentCount = parseInt(agents.trim()) || 0;
console.log(`Successfully copied ${agentCount} subagent(s) to ${targetAgentsDir}`);
} else {
console.log(`No subagent files found in ${repoAgentsDir}`);
}
} else {
console.log(`No subagents directory found at ${repoAgentsDir}`);
}
} catch (e) {
console.log(`Error handling subagents: ${e}`);
}
}

View File

@@ -0,0 +1,54 @@
---
description: Fix CI failures and commit changes (for use when branch already exists)
allowed_tools: "*"
---
# Fix CI Failures and Commit
You are on a branch that was created to fix CI failures. Your task is to fix the issues and commit the changes.
## CI Failure Information
$ARGUMENTS
## Your Tasks
1. **Analyze the failures** - Understand what went wrong from the logs
2. **Fix the issues** - Make the necessary code changes
3. **Commit your fixes** - Use git to commit all changes
## Step-by-Step Instructions
### 1. Fix the Issues
Based on the error logs:
- Fix syntax errors
- Fix formatting issues
- Fix test failures
- Fix any other CI problems
### 2. Commit Your Changes (REQUIRED)
After fixing ALL issues, you MUST:
Use the `mcp__github_file_ops__commit_files` tool to commit all your changes with a descriptive message like:
```
Fix CI failures
- Fixed syntax errors
- Fixed formatting issues
- Fixed test failures
[List actual fixes made]
```
**IMPORTANT**: You MUST use the MCP file ops tool to commit your changes. The workflow expects you to commit your changes.
### 3. Verify (Optional)
If possible, run verification commands:
- `bun run format:check` for formatting
- `bun test` for tests
- `bun run typecheck` for TypeScript
Begin by analyzing the failure logs and then fix the issues.

67
slash-commands/fix-ci.md Normal file
View File

@@ -0,0 +1,67 @@
---
description: Analyze and fix CI failures by examining logs and making targeted fixes
allowed_tools: "*"
---
# Fix CI Failures
You are tasked with analyzing CI failure logs and fixing the issues. Follow these steps:
## Context Provided
$ARGUMENTS
## Step 1: Analyze the Failure
Parse the provided CI failure information to understand:
- Which jobs failed and why
- The specific error messages and stack traces
- Whether failures are test-related, build-related, or linting issues
## Step 2: Search and Understand the Codebase
Use search tools to locate the failing code:
- Search for the failing test names or functions
- Find the source files mentioned in error messages
- Review related configuration files (package.json, tsconfig.json, etc.)
## Step 3: Apply Targeted Fixes
Make minimal, focused changes:
- **For test failures**: Determine if the test or implementation needs fixing
- **For type errors**: Fix type definitions or correct the code logic
- **For linting issues**: Apply formatting using the project's tools
- **For build errors**: Resolve dependency or configuration issues
- **For missing imports**: Add the necessary imports or install packages
Requirements:
- Only fix the actual CI failures, avoid unrelated changes
- Follow existing code patterns and conventions
- Ensure changes are production-ready, not temporary hacks
- Preserve existing functionality while fixing issues
## Step 4: Commit Changes
After applying fixes:
1. Use the `mcp__github_file_ops__commit_files` tool to commit your changes
2. Include a descriptive commit message explaining what was fixed
3. Document which CI jobs/tests were addressed in the commit message
4. Important: Use the MCP file ops tool to commit your changes
## Step 5: Verify Fixes Locally
Run available verification commands:
- Execute the failing tests locally to confirm they pass
- Run the project's lint command (check package.json for scripts)
- Run type checking if available
- Execute any build commands to ensure compilation succeeds
## Important Guidelines
- Focus exclusively on fixing the reported CI failures
- Maintain code quality and follow the project's established patterns
- If a fix requires significant refactoring, document why it's necessary
- When multiple solutions exist, choose the simplest one that maintains code quality
- Add clear comments only if the fix is non-obvious
Begin by analyzing the failure details provided above.

View File

@@ -83,6 +83,29 @@ export const agentMode: Mode = {
},
};
// Add GitHub file ops server when using commit signing
if (context.inputs?.useCommitSigning) {
mcpConfig.mcpServers["github-file-ops-server"] = {
command: "bun",
args: [
"run",
`${process.env.GITHUB_ACTION_PATH}/src/mcp/github-file-ops-server.ts`,
],
env: {
GITHUB_TOKEN: githubToken || "",
REPO_OWNER: context.repository.owner,
REPO_NAME: context.repository.repo,
BRANCH_NAME: "", // Agent mode doesn't pre-create branches
BASE_BRANCH: "",
REPO_DIR: process.env.GITHUB_WORKSPACE || process.cwd(),
GITHUB_EVENT_NAME: process.env.GITHUB_EVENT_NAME || "",
IS_PR: "false", // Agent mode doesn't create PRs by default
GITHUB_API_URL:
process.env.GITHUB_API_URL || "https://api.github.com",
},
};
}
// Add user-provided additional MCP config if any
const additionalMcpConfig = process.env.MCP_CONFIG || "";
if (additionalMcpConfig.trim()) {
@@ -101,12 +124,23 @@ export const agentMode: Mode = {
}
}
// Agent mode: pass through user's claude_args with MCP config
// Agent mode: pass through user's claude_args with MCP config and allowed_tools
const userClaudeArgs = process.env.CLAUDE_ARGS || "";
const userAllowedTools = process.env.ALLOWED_TOOLS || "";
const escapedMcpConfig = JSON.stringify(mcpConfig).replace(/'/g, "'\\''");
const claudeArgs =
`--mcp-config '${escapedMcpConfig}' ${userClaudeArgs}`.trim();
core.setOutput("claude_args", claudeArgs);
let claudeArgs = `--mcp-config '${escapedMcpConfig}'`;
// Add allowed_tools if specified
if (userAllowedTools) {
claudeArgs += ` --allowedTools "${userAllowedTools}"`;
}
// Add user's additional claude_args
if (userClaudeArgs) {
claudeArgs += ` ${userClaudeArgs}`;
}
core.setOutput("claude_args", claudeArgs.trim());
return {
commentId: undefined,

13
test-failure.ts Normal file
View File

@@ -0,0 +1,13 @@
// This file intentionally has TypeScript errors to trigger CI failure
// Testing auto-fix with MCP file ops enabled
const testFunction = (param: string): number => {
// Type error: returning string instead of number
return "this should be a number";
}
// Syntax error: missing closing brace
function brokenFunction() {
console.log("missing closing brace"
}
export { testFunction, brokenFunction };

View File

@@ -0,0 +1 @@
Custom prompt content