skills/arkd-gha/SKILL.md
Simulate arkd GitHub Actions CI pipeline locally. Runs lint, vet, build, unit tests, and integration tests (MANDATORY). Optionally proto lint — matching the real CI checks that run on PRs.
npx skillsauth add arklabshq/arkadian arkd-ghaInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Run the same checks that arkd's GitHub Actions CI pipeline runs on pull requests. This catches CI failures locally before pushing.
Source of truth: ${ARKD_REPO}/.github/workflows/ — always check these files for the latest CI definition. This skill documents the known pipeline as a fallback.
Before running CI checks, verify you're in the right location:
# Must run from the worktree directory (inherited from implement phase)
# The worktree path is in artifacts/implement/changes.yaml
pwd
ls go.mod # Must exist — confirms we're in an arkd repo root
make lint
Uses golangci-lint with .golangci.yml config. Checks: gofmt, goimports, govet, staticcheck, errcheck, gosec.
On failure:
make lint again — it auto-fixes some issues (gofmt, goimports)make lint to confirmgo vet ./...
Static analysis across all packages.
make build
Compiles the arkd binary. Must succeed — if it fails, there are compilation errors.
go test -count=1 -race -timeout 300s ./internal/...
NEVER use make test — it starts a PostgreSQL container on port 5432 which conflicts with pgnbxplorer from the test environment.
Run individual packages if the full suite is too slow:
go test -count=1 -race ./internal/core/application/...
go test -count=1 -race ./internal/core/domain/...
go test -count=1 -race ./internal/infrastructure/...
Only run if .proto files were modified:
# Check if proto files changed
git diff --name-only HEAD~1 | grep '\.proto$' && PROTO_CHANGED=true || PROTO_CHANGED=false
if [ "$PROTO_CHANGED" = "true" ]; then
make proto-lint
fi
Reuse the infrastructure already running from the implement phase. Do NOT start new Docker containers.
# Verify infra is still running
curl -s http://localhost:7070/v1/info > /dev/null && echo "arkd OK" || echo "arkd NOT RUNNING"
curl -s http://localhost:3000/api/blocks/tip/height > /dev/null && echo "Esplora OK" || echo "Esplora NOT RUNNING"
If infrastructure is running, run a subset of integration tests as regression check:
# Run a few key tests (NOT the full suite — that's too slow for CI sim)
go test -v -count=1 -run "TestSettleInSameRound|TestSendOffChain|TestCollaborativeExit" \
-timeout 800s github.com/arkade-os/arkd/internal/test/e2e
If infrastructure is NOT running, you MUST start it before proceeding:
# Start the test environment
cd ${ARKD_REPO} # Use the main repo, not the worktree
make build-test-env && make setup-test-env
cd - # Return to worktree
Wait for services to be ready (re-check health endpoints above). If infrastructure cannot be started after 3 attempts, report the CI phase as FAILED — do NOT skip integration tests. Integration tests are the most critical CI check.
Write ci-evidence.md to ${ARTIFACTS_DIR} with results of each check:
# CI Evidence
## Environment
- **Project:** arkd
- **Branch:** <branch name>
- **Worktree:** <worktree path>
## Check Results
| Check | Status | Duration | Notes |
|-------|--------|----------|-------|
| Lint | PASS/FAIL | Xs | |
| Vet | PASS/FAIL | Xs | |
| Build | PASS/FAIL | Xs | |
| Unit Tests | PASS/FAIL | Xs | N passed, M failed |
| Proto Lint | PASS/SKIP | Xs | Skipped: no proto changes |
| Integration | PASS/FAIL | Xs | MANDATORY — never skip |
## Detailed Output
### Lint
<raw output>
### Vet
<raw output>
### Build
<raw output>
### Unit Tests
<raw output or summary>
### Integration Tests
<raw output — MUST NOT be skipped>
## Auto-Fixes Applied
- <list of auto-fixes, or "None">
## Verdict
All checks: PASS / X of Y FAILED
{
"agent_specific": {
"lint_passed": true,
"vet_passed": true,
"build_passed": true,
"unit_tests_passed": true,
"proto_lint_passed": true,
"proto_lint_skipped": false,
"integration_tests_passed": true,
"integration_tests_skipped": false,
"checks_run": 6,
"checks_passed": 6,
"checks_failed": 0,
"auto_fixes_applied": 0,
"files_changed": []
}
}
make test — port conflict with pgnbxplorermake integrationtest — too slow; run individual testsdocumentation
Update project documentation based on new commits and changes in the repository. Use when: user wants to sync docs after project changes.
testing
Remove a project from the Arkadian documentation registry and delete all associated documentation files. Use when: user wants to deregister a project.
tools
RESTRICTED to ark-project-manager. Generate actionable, dependency-ordered task lists organized by user story.
testing
RESTRICTED to ark-project-manager. Create or update feature specifications from natural language descriptions.