Consolidates three codebases into a single agent orchestration repo: - agentci (from go-scm): Clotho dual-run verification, agent config, SSH security (sanitisation, secure commands, token masking) - jobrunner (from go-scm): Poll-dispatch-report pipeline with 7 handlers (dispatch, completion, auto-merge, publish draft, dismiss reviews, send fix command, tick parent epic) - plugins marketplace (from agentic/plugins): 27 Claude/Codex/Gemini plugins with shared MCP server All 150+ tests passing across 6 packages. Co-Authored-By: Virgil <virgil@lethean.io>
3.1 KiB
3.1 KiB
| name | description | hooks | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| qa | Run QA checks and fix all issues iteratively |
|
QA Fix Loop
Run the full QA pipeline and fix all issues.
Workspace: {{env.CLAUDE_CURRENT_MODULE}} ({{env.CLAUDE_MODULE_TYPE}})
Process
- Run QA: Execute
core {{env.CLAUDE_MODULE_TYPE}} qa - Parse issues: Extract failures from output (see format below)
- Fix each issue: Address one at a time, simplest first
- Re-verify: After fixes, re-run QA
- Repeat: Until all checks pass
- Report: Summary of what was fixed
Issue Priority
Fix in this order (fastest feedback first):
- fmt - formatting issues (auto-fix with
core go fmt) - lint - static analysis (usually quick fixes)
- test - failing tests (may need more investigation)
- build - compilation errors (fix before tests can run)
Output Parsing
Go QA Output
=== FMT ===
FAIL: pkg/api/handler.go needs formatting
=== LINT ===
pkg/api/handler.go:42:15: undefined: ErrNotFound (typecheck)
pkg/api/handler.go:87:2: ineffectual assignment to err (ineffassign)
=== TEST ===
--- FAIL: TestCreateUser (0.02s)
handler_test.go:45: expected 200, got 500
FAIL
=== RESULT ===
fmt: FAIL
lint: FAIL (2 issues)
test: FAIL (1 failed)
PHP QA Output
=== PINT ===
FAIL: 2 files need formatting
=== STAN ===
src/Http/Controller.php:42 - Undefined variable $user
=== TEST ===
✗ CreateUserTest::testSuccess
Expected status 200, got 500
=== RESULT ===
pint: FAIL
stan: FAIL (1 error)
test: FAIL (1 failed)
Fixing Strategy
Formatting (fmt/pint):
- Just run
core go fmtorcore php fmt - No code reading needed
Lint errors:
- Read the specific file:line
- Understand the error type
- Make minimal fix
Test failures:
- Read the test file to understand expectation
- Read the implementation
- Fix the root cause (not just the symptom)
Build errors:
- Usually missing imports or typos
- Fix before attempting other checks
Stop Condition
Only stop when:
- All QA checks pass, OR
- User explicitly cancels, OR
- Same error repeats 3 times (stuck - ask for help)
Example Session
Detecting project type... Found go.mod → Go project
Running: core go qa
## QA Issues
pkg/api/handler.go:42:15: undefined: ErrNotFound
--- FAIL: TestCreateUser (0.02s)
**Summary:** lint: FAIL (1) | test: FAIL (1)
---
Fixing lint issue: undefined ErrNotFound
Reading pkg/api/handler.go...
Adding error variable definition.
Running: core go qa
## QA Issues
--- FAIL: TestCreateUser (0.02s)
expected 200, got 404
**Summary:** lint: PASS | test: FAIL (1)
---
Fixing test issue: expected 200, got 404
Reading test setup...
Correcting test data.
Running: core go qa
✓ All checks passed!
**Summary:**
- Fixed: undefined ErrNotFound (added error variable)
- Fixed: TestCreateUser (corrected test setup)
- 2 issues resolved, all checks passing