agent/plugins/core-go/commands/qa.md
Snider 55bc34c885 feat(agent/plugins): create plugins/{core-go,core-php,infra} tree (RFC.plugin-restructure §1+§2)
plugins/ subtree created from scratch (no dappcore-go/dappcore-php
existed to rename). Per docs/RFC-AGENT-PLUGIN-RESTRUCTURE.md:

plugins/core-go/:
- .claude-plugin/plugin.json (name: core-go)
- README.md, marketplace.yaml, .mcp.json (calls core mcp serve)
- commands/{commit,qa,review,verify}.md
- skills/{core,core-go,go-agent}/SKILL.md (seeded from existing repo material)
- skills/api-endpoints/SKILL.md (NEW per ticket)
- agents/go-developer.md
- hook scripts referenced by commands

plugins/core-php/: same structure, php-developer agent + php-specific
api-endpoints skill.

plugins/infra/: plugin.json, README.md, marketplace.yaml, agents/infra-ops.md.

Manifests use core-* not dappcore-*. .mcp.json files call core mcp serve.
No dappcore-* names left.

Note: seed skills copied from existing repo material per ticket spec —
some upstream Host UK examples remain in copied skill docs. Future PR
can purge those if Host UK references are out of scope for the public
plugin marketplace.

Co-authored-by: Codex <noreply@openai.com>
Closes tasks.lthn.sh/view.php?id=234
2026-04-25 20:05:05 +01:00

2.6 KiB

name description hooks
qa Run Go QA checks and fix all issues iteratively
PostToolUse Stop
matcher hooks
Bash
type command
command ${CLAUDE_PLUGIN_ROOT}/scripts/qa-filter.sh
hooks
type command once
command ${CLAUDE_PLUGIN_ROOT}/scripts/qa-verify.sh true

QA Fix Loop

Run the full Go QA pipeline and fix all issues.

Process

  1. Run QA: Execute core go qa
  2. Parse issues: Extract failures from output (see format below)
  3. Fix each issue: Address one at a time, simplest first
  4. Re-verify: After fixes, re-run QA
  5. Repeat: Until all checks pass
  6. Report: Summary of what was fixed

Issue Priority

Fix in this order (fastest feedback first):

  1. fmt - formatting issues (auto-fix with core go fmt)
  2. lint - static analysis (usually quick fixes)
  3. test - failing tests (may need more investigation)
  4. 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)

Fixing Strategy

Formatting (fmt):

  • Just run core go 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

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