<< All versions

Skill v1.0.0

currentLLM-judged scan90/100
konflux-ci/integration-service/pr-definition-of-done
──Details
PublishedOctober 23, 2026 at 02:24 AM
Content Hashsha256:2afcb10b2e1cb671...
Git SHA9a8e5d800056
──Files
Files (1 file, 3.5 KB)
SKILL.md3.5 KBactive
SKILL.md · 77 lines · 3.5 KB

version: "1.0.0" name: pr-definition-of-done description: Use when preparing a pull request for review, before pushing, or when reviewing someone else's PR. Checklist of CI checks, commit conventions, code generation, testing, and documentation requirements.


PR Definition of Done

Overview

Every PR must pass CI checks, follow commit conventions, include tests, and keep generated code in sync. This checklist covers what CI enforces and what reviewers expect.

When to Use

  • Before pushing a PR for review
  • When CI checks fail and you need to understand why
  • When reviewing someone else's PR

Pre-Push Checklist

Commits

  • [ ] Conventional format: type(JIRA-ID): description (e.g., feat(STONEINTG-1519): create PR group snapshots)
  • [ ] Types: feat, fix, chore, refactor, test, docs
  • [ ] Signed off (DCO): git commit -s
  • [ ] Title < 72 chars, description lines < 72 chars
  • [ ] AI-assisted work: add Assisted-by: <tool-name> trailer

Code Generation (CI will fail if stale — see ci-cd-quirks for details)

  • [ ] After API type changes in api/v1beta2/: make generate manifests
  • [ ] After dependency changes: go mod tidy && go mod vendor
  • [ ] Run make fmt — CI fails on uncommitted formatting changes
  • [ ] Run make vet — catches common Go mistakes

Testing

  • [ ] Unit tests alongside code changes (Ginkgo + envtest)
  • [ ] Cover: happy path, error conditions, edge cases, idempotency
  • [ ] make test passes locally
  • [ ] Changed coverable lines meet the 85% patch-coverage target (run estimating-codecov-patch-coverage)

Security & RBAC

  • [ ] No secrets, keys, or credentials committed
  • [ ] No RBAC wildcards in config/ (CI checks this)
  • [ ] New resource types: add +kubebuilder:rbac markers
  • [ ] All cached resources accessed via client.Get() or client.List() have list and watch verbs in RBAC markers — excludes DisableFor resources (see ci-cd-quirks)

Documentation

  • [ ] PR description explains the "why", not just the "what"
  • [ ] PR title < 72 chars
  • [ ] Controller diagram in docs/ updated if controller logic changed

What CI Checks

CheckWorkflowWhat fails it
Go testspr.yamlmake test failures
Formattingpr.yamlUncommitted make fmt changes
Code generationpr.yamlUncommitted make generate manifests output
go mod tidypr.yamlUncommitted tidy changes
RBAC wildcardspr.yamlWildcard * in config RBAC files
Dockerfile lintpr.yamlhadolint violations
Go linterspr.yamlgosec, golangci-lint, staticcheck failures
CodeQLcodeql.ymlSecurity vulnerabilities
PR sizesize.yamlOversized PRs (informational)
Coveragecodecov.ymlPatch coverage below 85%
Tekton build.tekton/Image build failure, security scans

Common Mistakes

MistakeFix
Forgot go mod vendorRun go mod tidy && go mod vendor after any dep change
Stale deepcopyRun make generate after editing types in api/v1beta2/
Stale RBAC/CRD manifestsRun make manifests after changing +kubebuilder markers
Unsigned commitUse git commit -s or amend with git commit --amend -s
Coverage droppedAdd tests for new code paths — check cover.out for uncovered lines
Missing list/watch verbs on cached-client RBAC markerAdd list and watch to the RBAC marker and run make manifests
All versions