mirror of
https://github.com/coleam00/Archon.git
synced 2025-12-24 02:39:17 -05:00
The New Archon (Beta) - The Operating System for AI Coding Assistants!
This commit is contained in:
158
.github/workflows/claude-fix.yml
vendored
Normal file
158
.github/workflows/claude-fix.yml
vendored
Normal file
@@ -0,0 +1,158 @@
|
||||
name: Claude Code Fix (Write Access)
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
pull_request_review_comment:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
claude-fix:
|
||||
# Only trigger on @claude-fix command from authorized users
|
||||
if: |
|
||||
(
|
||||
github.event_name == 'issue_comment' ||
|
||||
github.event_name == 'pull_request_review_comment'
|
||||
) &&
|
||||
contains(github.event.comment.body, '@claude-fix') &&
|
||||
contains(fromJSON('["Wirasm", "coleam00", "sean-eskerium"]'), github.event.comment.user.login)
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
contents: write # Allow creating branches and editing files
|
||||
pull-requests: write # Allow creating and updating pull requests
|
||||
issues: write # Allow commenting on and updating issues
|
||||
id-token: write # Required for OIDC authentication
|
||||
actions: read # Read CI results
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # Full history for better context
|
||||
|
||||
- name: Run Claude Code Fix
|
||||
id: claude
|
||||
uses: anthropics/claude-code-action@beta
|
||||
timeout-minutes: 30
|
||||
with:
|
||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||
|
||||
# Custom trigger phrase for fix workflow
|
||||
trigger_phrase: "@claude-fix"
|
||||
|
||||
# Fix-specific instructions
|
||||
custom_instructions: |
|
||||
You are authorized to IMPLEMENT FIXES and CREATE PULL REQUESTS.
|
||||
|
||||
## Your Role
|
||||
You are fixing issues in Archon V2 Alpha. Follow CLAUDE.md for project principles and commands.
|
||||
|
||||
## Architecture Context
|
||||
- Frontend: React + TypeScript + Vite (port 3737)
|
||||
- Backend: FastAPI + Socket.IO + Python (port 8181)
|
||||
- MCP Service: MCP protocol server (port 8051)
|
||||
- Agents Service: PydanticAI agents (port 8052)
|
||||
- Database: Supabase (PostgreSQL + pgvector)
|
||||
|
||||
## Fix Workflow - MINIMAL CHANGES ONLY
|
||||
|
||||
### 1. ROOT CAUSE ANALYSIS (RCA)
|
||||
- **Reproduce**: Can you reproduce the issue? If not, state why
|
||||
- **Identify**: Use ripgrep to search for error messages, function names, patterns
|
||||
- **Trace**: Follow the execution path using git blame and code navigation
|
||||
- **Root Cause**: What is the ACTUAL cause vs symptoms?
|
||||
- Is it a typo/syntax error?
|
||||
- Is it a logic error?
|
||||
- Is it a missing dependency?
|
||||
- Is it a type mismatch?
|
||||
- Is it an async/timing issue?
|
||||
- Is it a state management issue?
|
||||
|
||||
### 2. MINIMAL FIX STRATEGY
|
||||
- **Scope**: Fix ONLY the root cause, nothing else
|
||||
- **Pattern Match**: Look for similar code in the codebase - follow existing patterns
|
||||
- **Side Effects**: Will this break anything else? Check usages with ripgrep
|
||||
- **Alternative**: If fix seems too invasive, document alternative approaches
|
||||
|
||||
### 3. IMPLEMENTATION
|
||||
- Create branch: `fix/issue-{number}` or `fix/pr-{number}-{description}` or `fix/{brief-description}`
|
||||
- Make the minimal change that fixes the root cause
|
||||
- If existing tests break, understand why before changing them
|
||||
- Add test to prevent regression (especially for bug fixes)
|
||||
|
||||
### 4. VERIFICATION LOOP
|
||||
- Run tests according to CLAUDE.md commands
|
||||
- If tests fail:
|
||||
- Analyze why they failed
|
||||
- Is it your fix or unrelated?
|
||||
- Fix and retry until all green
|
||||
- If fix breaks something else:
|
||||
- Do another RCA on the new issue
|
||||
- Consider alternative approach
|
||||
- Document tradeoffs in PR
|
||||
|
||||
### 5. PULL REQUEST
|
||||
Use the template in .github/pull_request_template.md:
|
||||
- Fill all sections accurately
|
||||
- Mark type as "Bug fix"
|
||||
- Show test evidence with actual command outputs
|
||||
- If can't fix completely, document what's blocking in Additional Notes
|
||||
|
||||
## Decision Points
|
||||
- **Don't fix if**: Needs product decision, requires major refactoring, or changes core architecture
|
||||
- **Document blockers**: If something prevents a complete fix, explain in PR
|
||||
- **Ask for guidance**: Use PR description to ask questions if uncertain
|
||||
|
||||
## Remember
|
||||
- The person triggering this workflow wants a fix - deliver one or explain why you can't
|
||||
- Follow CLAUDE.md for all commands and project principles
|
||||
- Prefer ripgrep over grep for searching
|
||||
- Keep changes minimal - resist urge to refactor
|
||||
- Alpha project: Quick fixes over perfect solutions
|
||||
|
||||
# Commented out - using default tools
|
||||
# allowed_tools: "Edit(*),MultiEdit(*),Write(*),Read(*),Grep(*),LS(*),Glob(*),TodoWrite(*),NotebookEdit(*),Bash(git *),Bash(npm *),Bash(uv *),Bash(python *),Bash(pip *),Bash(cd *),Bash(pwd),Bash(ls *),Bash(cat *),Bash(head *),Bash(tail *),Bash(wc *),Bash(find *),Bash(grep *),Bash(rg *),Bash(sed *),Bash(awk *),Bash(curl *),Bash(wget *),Bash(echo *),Bash(mkdir *),Bash(rm -rf node_modules),Bash(rm -rf __pycache__),Bash(rm -rf .pytest_cache),WebSearch(*),WebFetch(*)"
|
||||
|
||||
unauthorized-message:
|
||||
# Post message for unauthorized users
|
||||
if: |
|
||||
(
|
||||
github.event_name == 'issue_comment' ||
|
||||
github.event_name == 'pull_request_review_comment'
|
||||
) &&
|
||||
contains(github.event.comment.body, '@claude-fix') &&
|
||||
!contains(fromJSON('["Wirasm", "coleam00", "sean-eskerium"]'), github.event.comment.user.login)
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- name: Post unauthorized message
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const comment = {
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
body: `❌ @${context.actor} - You are not authorized to trigger Claude fixes.\n\nOnly maintainers can trigger Claude: Please ask a maintainer to run the fix command.`
|
||||
};
|
||||
|
||||
if (context.eventName === 'issue_comment') {
|
||||
await github.rest.issues.createComment({
|
||||
...comment,
|
||||
issue_number: context.issue.number
|
||||
});
|
||||
} else if (context.eventName === 'pull_request_review_comment') {
|
||||
await github.rest.pulls.createReplyForReviewComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
pull_number: context.payload.pull_request.number,
|
||||
comment_id: context.payload.comment.id,
|
||||
body: comment.body
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user