Marketplace autonomous-ci
Ensures Claude verifies both local tests AND remote CI before claiming completion. Use BEFORE any completion claims, commits, or pull requests. Mandatory verification with evidence.
git clone https://github.com/aiskillstore/marketplace
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/ancplua/autonomous-ci" ~/.claude/skills/aiskillstore-marketplace-autonomous-ci && rm -rf "$T"
skills/ancplua/autonomous-ci/SKILL.mdAutonomous CI Verification
Overview
Never claim success without CI verification. This skill ensures Claude automatically verifies both local tests AND remote CI before declaring work complete.
Core Principle: Evidence before claims. Always.
When to Use This Skill
This skill is MANDATORY before:
- ANY completion claims
- ANY expressions of satisfaction ("Done!", "Fixed!", "Working now!")
- Committing code
- Creating pull requests
- Moving to next task
- Responding "should work" or similar phrases
The Verification Protocol
BEFORE claiming any completion: 1. RUN LOCAL VERIFICATION └─> Execute project-specific test command └─> Check exit code └─> If fails: Fix and repeat 2. COMMIT AND PUSH └─> Only if local tests pass └─> Push to remote repository 3. MONITOR CI (BLOCKING) └─> Find workflow run for commit └─> WAIT for completion (do not proceed) └─> Check all workflows in .github/workflows/ 4. IF CI FAILS └─> Download failure logs └─> Analyze root cause └─> Fix the issue └─> REPEAT from step 1 5. ONLY WHEN ALL CI PASSES └─> Report success with evidence
Available Tools
This skill uses scripts from the plugin directory:
Local Verification
The plugin provides a generic test runner that auto-detects your project type:
# For .NET projects dotnet test --configuration Release # For Node.js projects npm test # For Python projects pytest # For Go projects go test ./...
Claude will automatically detect your project type and run the appropriate command.
CI Monitoring
After pushing, Claude will use GitHub CLI to monitor CI:
# Find and watch workflow run gh run list --limit 1 --commit <sha> gh run watch <run-id> # Check final status gh run view <run-id> --json conclusion
Red Flags - STOP Immediately
If Claude catches itself thinking or about to say:
- ❌ "Should work now"
- ❌ "Tests pass locally, we're done"
- ❌ "I'll push and assume it works"
- ❌ "Let me commit this and move on"
- ❌ "The change is small, CI will pass"
- ❌ "Pushed! ✅" (without waiting for CI)
STOP. Run the verification protocol instead.
The Workflow
Step 1: Local Verification
# ALWAYS verify locally first # For .NET: dotnet build --configuration Release dotnet test --no-build --configuration Release # For Node.js: npm run build npm test # For Python: pytest # ONLY proceed if exit code = 0
Step 2: Commit and Push
# Only after local tests pass git add . git commit -m "Fix: issue description" git push
Step 3: Monitor CI (Blocking)
# Get commit SHA COMMIT_SHA=$(git rev-parse HEAD) # Find workflow run RUN_ID=$(gh run list --commit "$COMMIT_SHA" --limit 1 --json databaseId -q '.[0].databaseId') # Watch workflow (BLOCKS until complete) gh run watch "$RUN_ID" # Check conclusion CONCLUSION=$(gh run view "$RUN_ID" --json conclusion -q .conclusion) if [ "$CONCLUSION" = "success" ]; then echo "✅ CI passed" else echo "❌ CI failed - analyzing logs" gh run view "$RUN_ID" --log-failed fi
Step 4: Handle Failures
When CI fails:
- Download failure logs:
gh run view <run-id> --log-failed - Analyze root cause
- Fix the issue
- REPEAT from step 1 (run local tests again)
Common Rationalizations (All Wrong)
| Excuse | Reality |
|---|---|
| "Tests passed locally" | CI environment may differ |
| "It's a small change" | Small changes break CI too |
| "I'm confident" | Confidence ≠ verification |
| "CI takes too long" | Waiting is mandatory |
| "I'll check later" | No. Check now. |
| "Just this once" | No exceptions. Ever. |
Project-Specific Examples
.NET Multi-Framework Projects
# Local verification dotnet test --configuration Release # This runs ALL target frameworks # Example: net8.0, net9.0, net10.0
Multi-Workflow Projects
For projects with multiple CI workflows (tests.yml, lint.yml, build.yml):
# Monitor ALL workflows gh run list --commit <sha> --json databaseId,name,conclusion # All must pass: # ✅ tests.yml: success # ✅ lint.yml: success # ✅ build.yml: success
Projects with Test Results Upload
Some projects upload test results to services like Codecov:
# Wait for primary workflow gh run watch <run-id> # Verify uploads completed # Check workflow logs for "Upload complete" messages
Success Criteria
Claude may ONLY claim completion when:
- ✅ Local tests passed (verified by running them)
- ✅ Code committed and pushed
- ✅ CI workflow(s) found and monitored
- ✅ ALL CI checks passed with status "success"
- ✅ Claude has URLs/logs as evidence
Reporting Success
When all checks pass, report with evidence:
✅ Verification Complete Local Tests: 159/159 passed CI Status: All checks passed Workflows: - tests.yml: ✅ success https://github.com/user/repo/actions/runs/12345 - lint.yml: ✅ success https://github.com/user/repo/actions/runs/12346 Commit: abc123def Timestamp: 2025-11-21 15:30:45 Work is verified complete.
Why This Matters
From painful experience:
- "Should work" → CI fails → wasted time
- Skipping verification → broken main branch
- False completion → lost trust
- Claiming success without evidence → dishonesty
Requirements
- GitHub CLI (
) installed and authenticatedgh - Git repository with GitHub Actions
- Project with test suite
The Bottom Line
No shortcuts. No exceptions. No rationalizations.
- Run local tests
- Push code
- Wait for CI (blocking)
- Fix failures and repeat
- Only claim completion when CI passes
This is non-negotiable.