Initial commit
This commit is contained in:
12
.claude-plugin/plugin.json
Normal file
12
.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "autofix",
|
||||
"description": "Autonomous GitHub issue resolution system. Automatically prioritizes, analyzes, and fixes open issues with intelligent complexity detection. Uses superpowers for complex problems, runs regression tests when no issues exist, and creates improvement proposals.",
|
||||
"version": "1.0.0",
|
||||
"author": {
|
||||
"name": "Agent Protocols Team",
|
||||
"email": "[email protected]"
|
||||
},
|
||||
"commands": [
|
||||
"./commands"
|
||||
]
|
||||
}
|
||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# autofix
|
||||
|
||||
Autonomous GitHub issue resolution system. Automatically prioritizes, analyzes, and fixes open issues with intelligent complexity detection. Uses superpowers for complex problems, runs regression tests when no issues exist, and creates improvement proposals.
|
||||
636
commands/fix-github.md
Normal file
636
commands/fix-github.md
Normal file
@@ -0,0 +1,636 @@
|
||||
# Start Autonomous Fix of GitHub Issues
|
||||
|
||||
Analyze all open GitHub issues, prioritize them, and begin systematically fixing or implementing them starting with the highest priority.
|
||||
|
||||
## What This Does
|
||||
|
||||
1. Creates priority labels (P0, P1, P2, P3) if they don't exist
|
||||
2. Fetches all open GitHub issues with priority labels
|
||||
3. Identifies the highest priority issue (P0 > P1 > P2 > P3)
|
||||
4. Displays the issue details and prompt for you to fix
|
||||
5. **For simple issues**: Directly troubleshoot and fix
|
||||
6. **For complex issues**: Use superpowers skills to plan and execute
|
||||
7. After fixing, moves to the next issue
|
||||
8. Continues until all issues are resolved
|
||||
9. **If there are no priority issues**: Run full regression test suite
|
||||
10. Analyze regression test results and create GitHub issues for failures
|
||||
11. Propose improvements (test coverage, robustness, simplicity)
|
||||
|
||||
Never stop, just keep looking for issues to address.
|
||||
|
||||
**Note**: This command uses GitHub labels (P0, P1, P2, P3) exclusively for priority detection. Issues without priority labels will not be processed by this workflow.
|
||||
|
||||
## Issue Complexity Detection
|
||||
|
||||
**Simple Issues** (direct fix):
|
||||
- Single file changes
|
||||
- Configuration tweaks
|
||||
- Small bug fixes
|
||||
- UI visibility issues
|
||||
- Test timeout adjustments
|
||||
- Removing deprecated code
|
||||
|
||||
**Complex Issues** (use superpowers):
|
||||
- Multiple failing tests (>10 failures)
|
||||
- Feature implementations
|
||||
- Architecture changes
|
||||
- Multi-file refactoring
|
||||
- New functionality requiring design
|
||||
- System integration issues
|
||||
|
||||
## Model Selection (Opus 4.5)
|
||||
|
||||
When spawning agents or using the Task tool during issue resolution, select the model based on task complexity:
|
||||
|
||||
### Issue Complexity → Model Mapping
|
||||
|
||||
| Issue Type | Model | Rationale |
|
||||
|------------|-------|-----------|
|
||||
| Simple (P2/P3, clear fix) | Sonnet | Known patterns, documented solutions |
|
||||
| Complex (P0/P1, architectural) | Opus | Deep analysis, trade-off decisions |
|
||||
| Regression test analysis | Sonnet | Standard test interpretation |
|
||||
| Root cause investigation | Opus | Multi-factor analysis |
|
||||
| Improvement proposals | Opus | Creative problem-solving |
|
||||
| Labeling & formatting | Haiku | Mechanical operations |
|
||||
|
||||
### Escalation Triggers
|
||||
|
||||
**Start with Sonnet, escalate to Opus when:**
|
||||
- Fix attempt fails after 2 tries with same approach
|
||||
- Issue involves 5+ files requiring coordinated changes
|
||||
- Root cause is unclear after initial investigation
|
||||
- Multiple test failures share non-obvious common cause
|
||||
- Issue requires architectural decision (new patterns, dependencies)
|
||||
|
||||
**Stay with Sonnet when:**
|
||||
- Error messages clearly indicate the fix
|
||||
- Issue matches known patterns from previous fixes
|
||||
- Single file change with isolated impact
|
||||
- Test failures have obvious cause (typo, missing import)
|
||||
|
||||
**Drop to Haiku for:**
|
||||
- Adding/updating priority labels
|
||||
- Posting status comments to GitHub
|
||||
- Formatting commit messages
|
||||
- Simple file cleanup (delete, rename)
|
||||
|
||||
### Model Usage by Workflow Phase
|
||||
|
||||
| Phase | Recommended Model |
|
||||
|-------|-------------------|
|
||||
| Initial complexity assessment | Sonnet |
|
||||
| Simple issue: direct fix | Sonnet |
|
||||
| Complex issue: systematic-debugging skill | Opus |
|
||||
| Complex issue: brainstorming skill | Opus |
|
||||
| Complex issue: writing-plans skill | Opus |
|
||||
| Complex issue: executing-plans skill | Sonnet |
|
||||
| Verification before completion | Sonnet |
|
||||
| Regression test execution | Sonnet |
|
||||
| Regression test analysis | Sonnet → Opus if patterns unclear |
|
||||
| Improvement proposals | Opus |
|
||||
| Issue creation from failures | Haiku |
|
||||
|
||||
### Example Task Tool Usage
|
||||
|
||||
```javascript
|
||||
// Initial assessment - start with Sonnet
|
||||
Task("analyst", "Assess complexity of issue #${ISSUE_NUM}...", model="sonnet")
|
||||
|
||||
// Complex root cause - use Opus
|
||||
Task("debugger", "Investigate why 15 tests fail with timeout...", model="opus")
|
||||
|
||||
// Standard fix - use Sonnet
|
||||
Task("coder", "Update package.json to fix dependency conflict...", model="sonnet")
|
||||
|
||||
// Label management - use Haiku
|
||||
Task("labeler", "Add P2 label to issue #${ISSUE_NUM}...", model="haiku")
|
||||
```
|
||||
|
||||
## Instructions
|
||||
|
||||
Start working on GitHub issues now:
|
||||
|
||||
```bash
|
||||
# Load project-specific configuration from CLAUDE.md
|
||||
if [ -f "CLAUDE.md" ]; then
|
||||
echo "📋 Reading project configuration from CLAUDE.md"
|
||||
|
||||
# Check if autofix configuration exists
|
||||
if ! grep -q "## Automated Testing & Issue Management" CLAUDE.md; then
|
||||
echo "⚠️ No autofix configuration found in CLAUDE.md"
|
||||
echo "📝 Adding autofix configuration section to CLAUDE.md..."
|
||||
|
||||
# Append autofix configuration to CLAUDE.md
|
||||
cat >> CLAUDE.md << 'AUTOFIX_CONFIG'
|
||||
|
||||
## Automated Testing & Issue Management
|
||||
|
||||
This section configures the `/fix-github` command for autonomous issue resolution.
|
||||
|
||||
### Regression Test Suite
|
||||
```bash
|
||||
npm test
|
||||
```
|
||||
|
||||
### Build Verification
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Test Framework Details
|
||||
|
||||
**Unit Tests**:
|
||||
- Framework: (Configure your test framework)
|
||||
- Location: (Configure test file locations)
|
||||
|
||||
**E2E Tests**:
|
||||
- Framework: (Configure E2E test framework)
|
||||
- Location: (Configure E2E test locations)
|
||||
|
||||
**Test Reports**:
|
||||
- Location: `docs/test/regression-reports/`
|
||||
|
||||
AUTOFIX_CONFIG
|
||||
|
||||
echo "✅ Added autofix configuration to CLAUDE.md - please update with project-specific details"
|
||||
fi
|
||||
|
||||
# Extract test command
|
||||
if grep -q "### Regression Test Suite" CLAUDE.md; then
|
||||
TEST_COMMAND=$(sed -n "/### Regression Test Suite/,/^###/{/^\`\`\`bash$/n;p;}" CLAUDE.md | grep -v "^#" | grep -v "^\`\`\`" | grep -v "^$" | head -1)
|
||||
echo "✅ Regression test command: $TEST_COMMAND"
|
||||
else
|
||||
TEST_COMMAND="npm test"
|
||||
echo "⚠️ No regression test command found, using default: $TEST_COMMAND"
|
||||
fi
|
||||
|
||||
# Extract build command
|
||||
if grep -q "### Build Verification" CLAUDE.md; then
|
||||
BUILD_COMMAND=$(sed -n "/### Build Verification/,/^###/{/^\`\`\`bash$/n;p;}" CLAUDE.md | grep -v "^#" | grep -v "^\`\`\`" | grep -v "^$" | head -1)
|
||||
echo "✅ Build command: $BUILD_COMMAND"
|
||||
else
|
||||
BUILD_COMMAND="npm run build"
|
||||
echo "⚠️ No build command found, using default: $BUILD_COMMAND"
|
||||
fi
|
||||
else
|
||||
echo "⚠️ No CLAUDE.md found in project, using defaults"
|
||||
TEST_COMMAND="npm test"
|
||||
BUILD_COMMAND="npm run build"
|
||||
fi
|
||||
|
||||
# Ensure priority labels exist (one-time setup per project)
|
||||
if [ ! -f ".github/.priority-labels-configured" ]; then
|
||||
echo "🏷️ Checking priority labels (one-time setup)..."
|
||||
EXISTING_LABELS=$(gh label list --json name --jq '.[].name' 2>/dev/null || echo "")
|
||||
|
||||
for label in "P0:Critical priority issue:d73a4a" "P1:High priority issue:ff9800" "P2:Medium priority issue:ffeb3b" "P3:Low priority issue:4caf50"; do
|
||||
IFS=':' read -r name desc color <<< "$label"
|
||||
if ! echo "$EXISTING_LABELS" | grep -qFx "$name"; then
|
||||
echo "Creating label: $name"
|
||||
gh label create "$name" --description "$desc" --color "$color" 2>/dev/null || true
|
||||
fi
|
||||
done
|
||||
|
||||
# Mark labels as configured
|
||||
mkdir -p .github
|
||||
echo "# Priority labels configured on $(date -I)" > .github/.priority-labels-configured
|
||||
echo "✅ Priority labels configured"
|
||||
fi
|
||||
|
||||
# Get highest priority issue (using labels only)
|
||||
gh issue list --state open --json number,title,body,labels --limit 100 > /tmp/all-issues.json
|
||||
|
||||
cat /tmp/all-issues.json | jq -r '
|
||||
.[] |
|
||||
select(
|
||||
(.labels | map(.name) | any(. == "P0" or . == "P1" or . == "P2" or . == "P3"))
|
||||
) |
|
||||
{
|
||||
number: .number,
|
||||
title: .title,
|
||||
body: (.body // ""),
|
||||
priority: (
|
||||
if (.labels | map(.name) | any(. == "P0")) then 0
|
||||
elif (.labels | map(.name) | any(. == "P1")) then 1
|
||||
elif (.labels | map(.name) | any(. == "P2")) then 2
|
||||
elif (.labels | map(.name) | any(. == "P3")) then 3
|
||||
else 4
|
||||
end
|
||||
)
|
||||
}
|
||||
' | jq -s 'sort_by(.priority) | .[0]' > /tmp/top-issue.json
|
||||
|
||||
# Display the top issue
|
||||
ISSUE_NUM=$(cat /tmp/top-issue.json | jq -r '.number')
|
||||
ISSUE_TITLE=$(cat /tmp/top-issue.json | jq -r '.title')
|
||||
ISSUE_BODY=$(cat /tmp/top-issue.json | jq -r '.body')
|
||||
ISSUE_PRIORITY=$(cat /tmp/top-issue.json | jq -r '.priority')
|
||||
|
||||
echo ""
|
||||
echo "🎯 Highest Priority Issue to Fix"
|
||||
echo "════════════════════════════════════════"
|
||||
echo "Issue: #$ISSUE_NUM"
|
||||
echo "Priority: P$ISSUE_PRIORITY"
|
||||
echo "Title: $ISSUE_TITLE"
|
||||
echo ""
|
||||
echo "Description:"
|
||||
echo "$ISSUE_BODY" | head -20
|
||||
echo ""
|
||||
echo "════════════════════════════════════════"
|
||||
echo ""
|
||||
echo "📋 Starting work on issue #$ISSUE_NUM..."
|
||||
echo ""
|
||||
|
||||
# Create fix branch
|
||||
git checkout -b "fix/issue-${ISSUE_NUM}-auto" 2>/dev/null || git checkout "fix/issue-${ISSUE_NUM}-auto"
|
||||
|
||||
# Post comment that work started
|
||||
gh issue comment "$ISSUE_NUM" --body "🤖 **Automated Fix Started**
|
||||
|
||||
Starting automated fix for this issue.
|
||||
|
||||
**Branch**: \`fix/issue-${ISSUE_NUM}-auto\`
|
||||
**Started**: $(date)
|
||||
|
||||
Fix in progress..." 2>/dev/null || true
|
||||
|
||||
echo "✅ Created branch: fix/issue-${ISSUE_NUM}-auto"
|
||||
echo "✅ Posted GitHub comment"
|
||||
echo ""
|
||||
```
|
||||
|
||||
## Fixing Strategy
|
||||
|
||||
### Step 1: Assess Complexity
|
||||
|
||||
Analyze the issue and determine if it's simple or complex:
|
||||
|
||||
**Simple Issue Indicators**:
|
||||
- Description < 500 chars
|
||||
- Single component/file mentioned
|
||||
- Clear, specific fix described
|
||||
- No test failures OR < 5 test failures
|
||||
- Keywords: "hide", "timeout", "remove", "add field", "typo"
|
||||
|
||||
**Complex Issue Indicators**:
|
||||
- Description > 1000 chars
|
||||
- Multiple failing tests (>10)
|
||||
- Multiple components involved
|
||||
- Requires design/architecture
|
||||
- Keywords: "implement", "system", "management", "integration", "~30 failures"
|
||||
|
||||
### Step 2A: Simple Issue - Direct Fix
|
||||
|
||||
For simple issues, proceed directly:
|
||||
|
||||
1. Read relevant code files to understand the root cause
|
||||
2. Implement a complete fix (not partial)
|
||||
3. Run targeted tests to verify the fix works
|
||||
4. Create a git commit with the changes
|
||||
5. Mark as complete
|
||||
|
||||
```bash
|
||||
# After fixing simple issue:
|
||||
git add -A
|
||||
git commit -m "Fix #${ISSUE_NUM}: Brief description
|
||||
|
||||
Detailed explanation of what was fixed and how.
|
||||
|
||||
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
||||
|
||||
Co-Authored-By: Claude <noreply@anthropic.com>"
|
||||
|
||||
# Merge to main
|
||||
git checkout main
|
||||
git merge "fix/issue-${ISSUE_NUM}-auto" --no-edit
|
||||
git branch -d "fix/issue-${ISSUE_NUM}-auto"
|
||||
|
||||
# Close issue
|
||||
gh issue close "$ISSUE_NUM" --comment "✅ **Issue Resolved**
|
||||
|
||||
[Detailed explanation of fix]
|
||||
|
||||
**Branch**: \`fix/issue-${ISSUE_NUM}-auto\` (merged and deleted)
|
||||
|
||||
🤖 Auto-resolved by autonomous fix workflow"
|
||||
```
|
||||
|
||||
### Step 2B: Complex Issue - Use Superpowers
|
||||
|
||||
For complex issues requiring design and planning:
|
||||
|
||||
**1. Systematic Debugging (if bugs)**
|
||||
|
||||
If the issue involves bugs or test failures, use the systematic-debugging skill:
|
||||
|
||||
```
|
||||
Use Skill tool: superpowers:systematic-debugging
|
||||
```
|
||||
|
||||
This will:
|
||||
- Investigate root cause thoroughly
|
||||
- Analyze patterns across failures
|
||||
- Test hypotheses before implementing
|
||||
- Ensure understanding before solutions
|
||||
|
||||
**2. Brainstorming (if new features)**
|
||||
|
||||
If the issue requires new feature design:
|
||||
|
||||
```
|
||||
Use Skill tool: superpowers:brainstorming
|
||||
```
|
||||
|
||||
This will:
|
||||
- Explore design alternatives
|
||||
- Clarify requirements through questions
|
||||
- Validate assumptions
|
||||
- Refine rough ideas into concrete designs
|
||||
|
||||
**3. Writing Plans (for implementation)**
|
||||
|
||||
After design is complete, create implementation plan:
|
||||
|
||||
```
|
||||
Use Skill tool: superpowers:writing-plans
|
||||
```
|
||||
|
||||
This will:
|
||||
- Break down into bite-sized tasks
|
||||
- Specify exact file paths and changes
|
||||
- Include verification steps
|
||||
- Assume zero prior codebase knowledge
|
||||
|
||||
**4. Executing Plans**
|
||||
|
||||
Execute the plan in controlled batches:
|
||||
|
||||
```
|
||||
Use Skill tool: superpowers:executing-plans
|
||||
```
|
||||
|
||||
This will:
|
||||
- Load and review the plan critically
|
||||
- Execute tasks in batches
|
||||
- Report progress for review between batches
|
||||
- Track completion systematically
|
||||
|
||||
**5. Verification**
|
||||
|
||||
Before claiming complete, verify the fix:
|
||||
|
||||
```
|
||||
Use Skill tool: superpowers:verification-before-completion
|
||||
```
|
||||
|
||||
This will:
|
||||
- Run verification commands
|
||||
- Confirm output shows success
|
||||
- Provide evidence before assertions
|
||||
- Ensure tests pass before committing
|
||||
|
||||
### Step 3: Commit and Close
|
||||
|
||||
After verification passes:
|
||||
|
||||
```bash
|
||||
# Commit changes
|
||||
git add -A
|
||||
git commit -m "Fix #${ISSUE_NUM}: Brief description
|
||||
|
||||
Detailed multi-line explanation of:
|
||||
- Root cause analysis
|
||||
- Solution approach
|
||||
- Changes made
|
||||
- Verification results
|
||||
|
||||
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
||||
|
||||
Co-Authored-By: Claude <noreply@anthropic.com>"
|
||||
|
||||
# Merge to main
|
||||
git checkout main
|
||||
git merge "fix/issue-${ISSUE_NUM}-auto" --no-edit
|
||||
git branch -d "fix/issue-${ISSUE_NUM}-auto"
|
||||
|
||||
# Close issue with detailed explanation
|
||||
gh issue close "$ISSUE_NUM" --comment "✅ **Issue Resolved**
|
||||
|
||||
## Root Cause
|
||||
[Detailed analysis]
|
||||
|
||||
## Solution
|
||||
[Approach taken]
|
||||
|
||||
## Changes Made
|
||||
[List of changes]
|
||||
|
||||
## Verification
|
||||
[Test results and evidence]
|
||||
|
||||
**Branch**: \`fix/issue-${ISSUE_NUM}-auto\` (merged and deleted)
|
||||
**Commit**: [commit hash]
|
||||
|
||||
🤖 Auto-resolved by autonomous fix workflow with superpowers"
|
||||
```
|
||||
|
||||
## Example Workflow
|
||||
|
||||
### Simple Issue Example:
|
||||
```
|
||||
Issue #240: TypeScript compilation errors in disabled-features
|
||||
→ Direct fix: Delete broken test files
|
||||
→ Verify: $BUILD_COMMAND (from CLAUDE-AUTOFIX-CONFIG.md)
|
||||
→ Commit and close
|
||||
```
|
||||
|
||||
### Complex Issue Example:
|
||||
```
|
||||
Issue #222: Review Management system broken (~30 test failures)
|
||||
→ Complexity detected: >30 failures, multiple components
|
||||
→ Use superpowers:systematic-debugging
|
||||
- Investigate root cause
|
||||
- Analyze test failure patterns
|
||||
- Identify common issues
|
||||
→ Use superpowers:brainstorming
|
||||
- Design fix approach
|
||||
- Validate assumptions
|
||||
→ Use superpowers:writing-plans
|
||||
- Create implementation plan
|
||||
- Break into tasks
|
||||
→ Use superpowers:executing-plans
|
||||
- Execute in batches
|
||||
- Review between batches
|
||||
→ Use superpowers:verification-before-completion
|
||||
- Run all tests
|
||||
- Confirm passing
|
||||
→ Commit and close with evidence
|
||||
```
|
||||
|
||||
## Skip Criteria
|
||||
|
||||
Skip to next issue if:
|
||||
- Issue requires external dependencies (API keys, services)
|
||||
- Issue is blocked by another issue
|
||||
- Issue requires user input/decision
|
||||
- Issue is too large even for superpowers (>100 test failures, major architecture change)
|
||||
|
||||
Post a comment explaining why skipped:
|
||||
|
||||
```bash
|
||||
gh issue comment "$ISSUE_NUM" --body "⏭️ **Skipped for Manual Review**
|
||||
|
||||
This issue requires [reason] and cannot be automatically resolved.
|
||||
|
||||
**Recommendation**: [Suggested approach]
|
||||
|
||||
Moving to next priority issue.
|
||||
|
||||
🤖 Autonomous fix workflow"
|
||||
```
|
||||
|
||||
## No Priority Issues Found
|
||||
|
||||
If no issues with P0-P3 labels exist, run full regression testing:
|
||||
|
||||
### Step 1: Run Regression Test Suite
|
||||
|
||||
```bash
|
||||
# Run complete regression test suite (uses command from CLAUDE-AUTOFIX-CONFIG.md)
|
||||
$TEST_COMMAND
|
||||
|
||||
# This command is configured in the project's CLAUDE-AUTOFIX-CONFIG.md
|
||||
# It should run all tests and generate a report with GitHub issue integration
|
||||
```
|
||||
|
||||
### Step 2: Analyze Regression Results
|
||||
|
||||
The regression test suite automatically:
|
||||
- Creates GitHub issues for new test failures
|
||||
- Updates existing issues with regression data
|
||||
- Applies priority labels (P0-P3) based on severity
|
||||
|
||||
**Priority Assignment**:
|
||||
- **P0 - Critical**: Auth, security, crashes, data loss
|
||||
- **P1 - High**: Major features broken, CRUD operations failing
|
||||
- **P2 - Medium**: Filtering, sorting, search, display issues
|
||||
- **P3 - Low**: UI issues, validation, edge cases
|
||||
|
||||
### Step 3: Review Generated Issues
|
||||
|
||||
Check newly created issues:
|
||||
|
||||
```bash
|
||||
# View issues created by regression test
|
||||
gh issue list --label "test-failure" --state open --json number,title,labels --limit 20
|
||||
```
|
||||
|
||||
### Step 4: Restart /fix-github Workflow
|
||||
|
||||
After regression testing creates new issues, restart the workflow:
|
||||
|
||||
```bash
|
||||
# Refresh issue list and continue
|
||||
/fix-github
|
||||
```
|
||||
|
||||
The workflow will now pick up the newly created issues and begin fixing them.
|
||||
|
||||
### Step 5: If All Tests Pass
|
||||
|
||||
If regression tests pass completely (no issues created):
|
||||
|
||||
**Propose Improvements**:
|
||||
|
||||
1. **Test Coverage Analysis**
|
||||
- Identify untested code paths
|
||||
- Add missing E2E scenarios
|
||||
- Improve edge case coverage
|
||||
|
||||
2. **Code Quality Improvements**
|
||||
- Refactor complex functions
|
||||
- Reduce code duplication
|
||||
- Improve type safety
|
||||
|
||||
3. **Performance Optimizations**
|
||||
- Identify slow queries
|
||||
- Add caching where needed
|
||||
- Optimize bundle size
|
||||
|
||||
4. **Documentation Updates**
|
||||
- Update API docs
|
||||
- Add code examples
|
||||
- Document best practices
|
||||
|
||||
**Create Improvement Issues**:
|
||||
|
||||
```bash
|
||||
# Create issues for proposed improvements
|
||||
gh issue create \
|
||||
--label "enhancement,proposed" \
|
||||
--title "P3-Improvement: [Brief description]" \
|
||||
--body "## Proposed Improvement
|
||||
|
||||
[Detailed description]
|
||||
|
||||
## Rationale
|
||||
[Why this improvement is valuable]
|
||||
|
||||
## Implementation
|
||||
[How to implement]
|
||||
|
||||
## Impact
|
||||
[Expected benefits]
|
||||
|
||||
🤖 Proposed by autonomous improvement workflow"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## MANDATORY: Continuous Loop
|
||||
|
||||
**THIS WORKFLOW RUNS FOREVER UNTIL MANUALLY STOPPED.**
|
||||
|
||||
After completing ANY of these actions, you MUST immediately continue:
|
||||
|
||||
1. **After fixing and closing an issue** → Fetch next priority issue
|
||||
2. **After skipping an issue** → Fetch next priority issue
|
||||
3. **After running regression tests** → Check for new issues created
|
||||
4. **After proposing improvements** → Fetch next priority issue
|
||||
5. **If no issues found** → Run regression tests, then check again
|
||||
|
||||
### Loop Implementation
|
||||
|
||||
After every issue is resolved, skipped, or when checking for work:
|
||||
|
||||
```bash
|
||||
# Fetch next highest priority issue
|
||||
gh issue list --state open --json number,title,body,labels --limit 100 > /tmp/all-issues.json
|
||||
|
||||
PRIORITY_ISSUES=$(cat /tmp/all-issues.json | jq '[.[] | select(.labels | map(.name) | any(. == "P0" or . == "P1" or . == "P2" or . == "P3"))] | length')
|
||||
|
||||
if [ "$PRIORITY_ISSUES" -gt 0 ]; then
|
||||
echo "🔄 Found $PRIORITY_ISSUES priority issues. Continuing..."
|
||||
# Process next issue (repeat from "Get highest priority issue" section)
|
||||
else
|
||||
echo "✅ No priority issues. Running regression tests..."
|
||||
# Run regression tests, then loop back
|
||||
fi
|
||||
```
|
||||
|
||||
### Never Stop
|
||||
|
||||
- **DO NOT** wait for user input between issues
|
||||
- **DO NOT** stop after fixing one issue
|
||||
- **DO NOT** ask "should I continue?"
|
||||
- **DO** keep processing issues until the queue is empty
|
||||
- **DO** run regression tests when queue is empty
|
||||
- **DO** process any new issues created by regression tests
|
||||
- **DO** propose improvements only when everything passes
|
||||
- **DO** loop back and check for new issues after proposing improvements
|
||||
|
||||
**The only way this workflow stops is if the user manually interrupts it.**
|
||||
|
||||
---
|
||||
|
||||
🤖 **Ready to fix issue #$ISSUE_NUM! Start working on it now, then IMMEDIATELY continue to the next issue.**
|
||||
45
plugin.lock.json
Normal file
45
plugin.lock.json
Normal file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"$schema": "internal://schemas/plugin.lock.v1.json",
|
||||
"pluginId": "gh:laird/agents:plugins/autofix",
|
||||
"normalized": {
|
||||
"repo": null,
|
||||
"ref": "refs/tags/v20251128.0",
|
||||
"commit": "afac11b3150239a21d00037b3dfad94a84c107f6",
|
||||
"treeHash": "51127e5754a24312a3fae5aa2920b8807085d75e26aad8b26d768da3107e531b",
|
||||
"generatedAt": "2025-11-28T10:20:03.646298Z",
|
||||
"toolVersion": "publish_plugins.py@0.2.0"
|
||||
},
|
||||
"origin": {
|
||||
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
||||
"branch": "master",
|
||||
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
||||
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
||||
},
|
||||
"manifest": {
|
||||
"name": "autofix",
|
||||
"description": "Autonomous GitHub issue resolution system. Automatically prioritizes, analyzes, and fixes open issues with intelligent complexity detection. Uses superpowers for complex problems, runs regression tests when no issues exist, and creates improvement proposals.",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"content": {
|
||||
"files": [
|
||||
{
|
||||
"path": "README.md",
|
||||
"sha256": "26d7759b067492441cf8c910f5d9e044ee38de2841146645c668462789639d84"
|
||||
},
|
||||
{
|
||||
"path": ".claude-plugin/plugin.json",
|
||||
"sha256": "b6483719583d7a9ff81cb85b9609ab2be8af3eec3bfe71a8bfc98c4902742c5e"
|
||||
},
|
||||
{
|
||||
"path": "commands/fix-github.md",
|
||||
"sha256": "cade2af2599bc07286b01063a244fd83a734c02d0685f4b79660ec0b1c28b9a8"
|
||||
}
|
||||
],
|
||||
"dirSha256": "51127e5754a24312a3fae5aa2920b8807085d75e26aad8b26d768da3107e531b"
|
||||
},
|
||||
"security": {
|
||||
"scannedAt": null,
|
||||
"scannerVersion": null,
|
||||
"flags": []
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user