Skip to content

chore: improve AI-assisted development readiness (AgentReady Gold)#1507

Open
mkowalski wants to merge 1 commit into
nmstate:mainfrom
mkowalski:agentready/gold-certification
Open

chore: improve AI-assisted development readiness (AgentReady Gold)#1507
mkowalski wants to merge 1 commit into
nmstate:mainfrom
mkowalski:agentready/gold-certification

Conversation

@mkowalski
Copy link
Copy Markdown
Member

Summary

Improve repository infrastructure to achieve AgentReady Gold certification (81.1/100, up from 63.6/100 Silver).

AgentReady assesses repositories against evidence-based attributes for AI-assisted development readiness, based on research from 50+ authoritative sources (Anthropic, Microsoft, Google, ArXiv, IEEE/ACM).

Changes

Security & Dependencies

  • Dependabot: Added .github/dependabot.yml for automated Go module and GitHub Actions dependency updates (weekly schedule)

Code Quality & Linting

  • Pre-commit hooks: Added .pre-commit-config.yaml with golangci-lint, markdownlint, actionlint, conventional commit validation, and general hygiene hooks (trailing whitespace, YAML validation, large file detection, private key detection)
  • Markdownlint: Added .markdownlint.json configuration

Documentation

  • Architecture Decision Records: Added docs/adr/ with three initial ADRs:
    • 0001: Adopt ADRs for documenting architectural decisions
    • 0002: DaemonSet per-node architecture (documents existing design)
    • 0003: nmstate as the network configuration abstraction (documents existing design)
  • Quick Start: Added development Quick Start section to README.md with one-command build/test instructions

Issue Management

  • Issue templates: Migrated single-file .github/ISSUE_TEMPLATE.md to structured .github/ISSUE_TEMPLATE/ directory with:
    • bug_report.md — preserves existing bug report fields with improved structure
    • feature_request.md — new feature request template
    • config.yml — template chooser with documentation link

Repository Hygiene

  • .gitignore: Extended with macOS (.DS_Store), JetBrains IDE (.idea/), Go coverage (coverage.out), and AgentReady report patterns

AgentReady Score Breakdown

Attribute Before After
Dependency Security ❌ 5 ✅ 40
Pre-commit Hooks ❌ 0 ✅ 100
Conventional Commits ❌ 0 ✅ 100
Architecture Decisions ❌ 0 ✅ 84
Issue & PR Templates ❌ 50 ✅ 100
One-Command Setup ❌ 60 ✅ 100
Code Smells (linters) ❌ 50 ✅ 100
CI/CD Pipeline Visibility ❌ 70 ✅ 90
.gitignore Completeness ❌ 44 67
Overall 63.6 (Silver) 81.1 (Gold)

Remaining items (not addressed)

  • Standard Layout (50/100): AgentReady expects src/ directory, but Go projects use cmd/+pkg/+internal/ — this is correct for Go
  • File Size Limits (15/100): Large files are mostly in vendor/ — intentionally committed per Go convention
  • OpenAPI Specs (60/100): Vendor swagger files detected but not project-owned

🤖 This PR was created by OpenClaw on behalf of @mkowalski.

Add repository infrastructure to achieve AgentReady Gold certification:

- Add Dependabot config for Go modules and GitHub Actions updates
- Add pre-commit hooks (golangci-lint, markdownlint, actionlint,
  conventional commits, trailing whitespace, YAML validation)
- Add markdownlint configuration
- Add Architecture Decision Records (ADRs) documenting key design
  choices: ADR usage, DaemonSet architecture, nmstate abstraction
- Migrate single-file issue template to structured ISSUE_TEMPLATE
  directory with bug report, feature request, and config
- Extend .gitignore with macOS, JetBrains IDE, Go coverage, and
  AgentReady report patterns
- Add Quick Start section to README for one-command build/test

Note: A lint CI workflow (.github/workflows/lint.yml) would further
improve the score but requires a PAT with 'workflow' scope to push.

AgentReady assessment: 63.6/100 (Silver) -> targeting 75+ (Gold)

Signed-off-by: Mateusz Kowalski <mko@redhat.com>
Generated-by: OpenClaw
AI-model: claude-opus-4.6
Signed-off-by: Mateusz Kowalski <mko@redhat.com>
@kubevirt-bot
Copy link
Copy Markdown
Collaborator

Adding the "do-not-merge/release-note-label-needed" label because no release-note block was detected, please follow our release note process to remove it.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@kubevirt-bot kubevirt-bot added dco-signoff: yes Indicates the PR's author has DCO signed all their commits. do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. labels Apr 24, 2026
@kubevirt-bot kubevirt-bot requested review from emy and qinqon April 24, 2026 09:44
@kubevirt-bot
Copy link
Copy Markdown
Collaborator

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign qinqon for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces several project management and developer experience enhancements, including GitHub issue templates, a Dependabot configuration, pre-commit hooks, and initial Architecture Decision Records (ADRs). It also updates the .gitignore and adds a quick-start guide to the README.md. Review feedback highlights the need to correct the golangci-lint version, expand Dependabot coverage to the api/ directory, include critical manifests in YAML validation, and fix an incorrect make target in the documentation.

Comment thread .pre-commit-config.yaml
- id: detect-private-key

- repo: https://github.com/golangci/golangci-lint
rev: v2.1.5
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The version v2.1.5 for golangci-lint appears to be incorrect. The official golangci-lint repository uses v1.x.x versioning (e.g., v1.64.5). Using a non-existent tag will cause the pre-commit hook installation to fail.

    rev: v1.64.5

Comment thread .github/dependabot.yml
Comment on lines +7 to +18
- package-ecosystem: "gomod"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "go"
commit-message:
prefix: "deps"
include: "scope"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The repository contains a separate Go module in the api/ directory (as seen in the Makefile). Dependabot should be configured to monitor this directory as well to ensure its dependencies are kept up to date. Additionally, consider adding the docker ecosystem to track updates for the Dockerfiles in the build/ directory.

  - package-ecosystem: "gomod"
    directory: "/"
    schedule:
      interval: "weekly"
      day: "monday"
    open-pull-requests-limit: 5
    labels:
      - "dependencies"
      - "go"
    commit-message:
      prefix: "deps"
      include: "scope"

  - package-ecosystem: "gomod"
    directory: "/api"
    schedule:
      interval: "weekly"
      day: "monday"
    open-pull-requests-limit: 5
    labels:
      - "dependencies"
      - "go"
    commit-message:
      prefix: "deps"
      include: "scope"

Comment thread .pre-commit-config.yaml
- id: end-of-file-fixer
- id: check-yaml
args: [--allow-multiple-documents]
exclude: ^(docs/|deploy/|test/)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Excluding the deploy/ and test/ directories from check-yaml is discouraged. These directories contain critical Kubernetes manifests and test configurations that should be validated for syntax correctness. Consider only excluding directories that contain non-standard YAML or large vendored files.

        exclude: ^(docs/|.*vendor/)

Comment thread README.md
# Clone and build
git clone https://github.com/nmstate/kubernetes-nmstate.git
cd kubernetes-nmstate
make build
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The Makefile lacks a build target. Running make build will fail. Use make all or add a build alias to the Makefile.

Suggested change
make build
make all
References
  1. Simplify redundant phrases in documentation to improve clarity and conciseness.
  2. Ensure documentation is grammatically correct, specifically regarding comma splices and extra spaces, for improved readability and consistency.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dco-signoff: yes Indicates the PR's author has DCO signed all their commits. do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. size/L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants