Skip to content

feat(EC-1862): add AI skills for ec-cli - #3434

Open
BohdanMar wants to merge 3 commits into
conforma:mainfrom
BohdanMar:EC-1862-ai-skills
Open

feat(EC-1862): add AI skills for ec-cli#3434
BohdanMar wants to merge 3 commits into
conforma:mainfrom
BohdanMar:EC-1862-ai-skills

Conversation

@BohdanMar

@BohdanMar BohdanMar commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Add 6 repo-specific AI skills under .claude/skills/, following the pattern established in conforma/e2e-tests (EC-1929).

Skills: run-tests, debug-failure, build-and-lint, pr-checklist, write-tests, benchmark.

Jira: EC-1862

Add 6 skills covering test execution, debugging, build/lint,
PR checklist, test authoring, and benchmarking.

Jira: EC-1862
@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 73f07494-8527-4465-b2c6-882e57b0bb50

📥 Commits

Reviewing files that changed from the base of the PR and between 1e119d0 and 0ba04c5.

📒 Files selected for processing (2)
  • .claude/skills/debug-failure/SKILL.md
  • .claude/skills/run-tests/SKILL.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • .claude/skills/debug-failure/SKILL.md
  • .claude/skills/run-tests/SKILL.md

📝 Walkthrough

Walkthrough

Six new Claude skill documents provide Conforma CLI guidance for test development, test execution, failure debugging, builds, benchmarks, and pull request preparation.

Changes

Conforma CLI development skills

Layer / File(s) Summary
Test development and execution workflows
.claude/skills/write-tests/SKILL.md, .claude/skills/run-tests/SKILL.md, .claude/skills/debug-failure/SKILL.md
Documents test conventions, test commands, focused execution, acceptance setup and options, environment variables, module boundaries, and common local and CI failure patterns.
Build, lint, and benchmark workflows
.claude/skills/build-and-lint/SKILL.md, .claude/skills/benchmark/SKILL.md
Documents build, lint, code generation, dependency tidying, container publishing, benchmark execution, stress configuration, and profiling commands.
Pull request completion checklist
.claude/skills/pr-checklist/SKILL.md
Documents pull request readiness checks, commit and description conventions, quality requirements, and multi-module dependency tidying.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly states the main change: adding AI skills for ec-cli and references the related Jira issue.
Description check ✅ Passed The description covers what changed, why it follows the existing pattern, and links the Jira ticket, though it does not use the template headings.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@fullsend-ai-review

fullsend-ai-review Bot commented Jul 23, 2026

Copy link
Copy Markdown

🤖 Review · ⚠️ Cancelled · Started 10:58 AM UTC · Ended 11:18 AM UTC
Commit: 87c4a29 · View workflow run →

@qodo-for-conforma

Copy link
Copy Markdown

PR Summary by Qodo

Add repo-specific Claude AI skills for ec-cli workflows

📝 Documentation ⚙️ Configuration changes 🕐 10-20 Minutes

Grey Divider

AI Description

• Add six Claude skills under .claude/skills/ for common ec-cli workflows.
• Document standardized commands for tests, build/lint, debugging, and benchmarking.
• Provide a PR definition-of-done checklist to align contributions with CI expectations.
Diagram

graph TD
  Dev["Developer"] --> Claude["Claude (AI)"] --> Skills[".claude/skills/*.md"] --> Guidance["Workflow guidance"] --> Commands["make/go/ec commands"] --> Env["Docker/Podman & CI"]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Single consolidated skill ("ec-cli-workflows")
  • ➕ Less duplication and fewer files to maintain
  • ➕ Easier to ensure consistent phrasing and avoid drift
  • ➖ Harder for the AI to pick the right narrow skill
  • ➖ Longer prompt context; lower signal-to-noise for specific asks
2. Reference canonical CONTRIBUTING/README docs instead of duplicating steps
  • ➕ Reduces documentation drift by keeping one source of truth
  • ➕ Encourages improving existing onboarding docs
  • ➖ Skill prompts become less self-contained
  • ➖ Existing docs may not be structured for quick, task-oriented retrieval

Recommendation: Keep the current split-by-task skills (better routing and focused guidance), but consider adding lightweight cross-links to the canonical docs (if/when they exist) to reduce future drift, especially for CI behaviors and Make targets that tend to change.

Files changed (6) +446 / -0

Other (6) +446 / -0
SKILL.mdAdd skill for running simple and stress benchmarks with profiling hints +68/-0

Add skill for running simple and stress benchmarks with profiling hints

• Introduces a benchmarking skill describing two benchmark modes (simple vs stress), required data preparation, and environment prerequisites. Documents standard Go benchmark output and how to collect runtime traces/pprof profiles via '--trace'.

.claude/skills/benchmark/SKILL.md

SKILL.mdAdd skill for build, lint, codegen, and multi-module dependency hygiene +60/-0

Add skill for build, lint, codegen, and multi-module dependency hygiene

• Adds build and lint instructions centered on Make targets (build/dist/lint/lint-fix/tekton-lint) plus single-file lint examples. Documents code generation expectations in CI, multi-module 'go mod tidy' guidance, and image/task-bundle workflows.

.claude/skills/build-and-lint/SKILL.md

SKILL.mdAdd skill for debugging test failures and common environment issues +76/-0

Add skill for debugging test failures and common environment issues

• Provides a structured troubleshooting playbook: preserving temp dirs/containers, interpreting outputs, and resolving common failures (DNS, Podman, inotify/key limits, Go checksum mismatch, snapshot updates). Includes notes about CI-specific behaviors that affect acceptance tests.

.claude/skills/debug-failure/SKILL.md

SKILL.mdAdd PR definition-of-done checklist and contribution conventions +45/-0

Add PR definition-of-done checklist and contribution conventions

• Defines a pre-submit checklist aligned to repo CI expectations ('make ci', codegen cleanliness, correct module tidying, snapshot updates). Captures commit message conventions with Jira keys and reiterates PR template expectations and code-quality guardrails.

.claude/skills/pr-checklist/SKILL.md

SKILL.mdAdd skill for running unit/integration/generative and acceptance tests +82/-0

Add skill for running unit/integration/generative and acceptance tests

• Documents core test entry points ('make test', 'make acceptance', 'make ci'), tag-based timeouts, and how to run focused tests/features/scenarios. Includes acceptance debugging options, macOS Podman setup guidance, and key environment variables.

.claude/skills/run-tests/SKILL.md

SKILL.mdAdd skill with testing patterns: build tags, snapshots, acceptance, and table tests +115/-0

Add skill with testing patterns: build tags, snapshots, acceptance, and table tests

• Adds guidance for authoring unit and integration tests (including required build tags), snapshot testing with go-snaps, and acceptance tests structure (features + Godog step definitions). Recommends naming conventions and table-driven test patterns consistent with Go practices.

.claude/skills/write-tests/SKILL.md

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.claude/skills/build-and-lint/SKILL.md:
- Around line 29-30: Update the lint commands in the build-and-lint skill to
invoke golangci-lint through the repository-pinned tooling defined by
tools/go.mod rather than an unqualified global binary. Replace the single-file
example with an appropriate package path that provides reliable coverage, and
keep the gofmt check aligned with that target.

In @.claude/skills/pr-checklist/SKILL.md:
- Around line 21-24: Update the commit-message example fenced block in SKILL.md
to include the text language identifier, preserving its existing example
content.

In @.claude/skills/run-tests/SKILL.md:
- Around line 67-70: Update the fenced /etc/hosts blocks in
.claude/skills/run-tests/SKILL.md lines 67-70 and
.claude/skills/debug-failure/SKILL.md lines 38-41 to declare the text language.
No other content changes are needed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 86a00619-00a3-4f91-a273-6a3a0a7bee66

📥 Commits

Reviewing files that changed from the base of the PR and between 4ea11df and 1e119d0.

📒 Files selected for processing (6)
  • .claude/skills/benchmark/SKILL.md
  • .claude/skills/build-and-lint/SKILL.md
  • .claude/skills/debug-failure/SKILL.md
  • .claude/skills/pr-checklist/SKILL.md
  • .claude/skills/run-tests/SKILL.md
  • .claude/skills/write-tests/SKILL.md

Comment on lines +29 to +30
golangci-lint run internal/evaluator/evaluator.go
gofmt -l internal/evaluator/evaluator.go

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== files =="
git ls-files | sed -n '1,120p' | rg 'Makefile|go.mod|SKILL\.md|tools/go.mod|evaluator.go' || true

echo
echo "== relevant skill excerpt =="
if [ -f .claude/skills/build-and-lint/SKILL.md ]; then
  nl -ba .claude/skills/build-and-lint/SKILL.md | sed -n '1,80p'
fi

echo
echo "== Makefile lint references =="
for f in Makefile build/*; do
  [ -f "$f" ] && echo "--- $f" && rg -n "golangci|lint|tools/go.mod" "$f" || true
done

echo
echo "== tools/go.mod if present =="
if [ -f tools/go.mod ]; then
  nl -ba tools/go.mod | sed -n '1,220p'
fi

echo
echo "== golangci references in repo =="
rg -n "golangci|tools/go.mod"|sed -n '1,200p' || true

Repository: conforma/cli

Length of output: 478


🏁 Script executed:

#!/bin/sh
set -euo pipefail

echo "== relevant skill excerpt =="
if [ -f .claude/skills/build-and-lint/SKILL.md ]; then
  awk '{printf "%6d\t%s\n", NR, $0}' .claude/skills/build-and-lint/SKILL.md | sed -n '1,80p'
fi

echo
echo "== Makefile lint references =="
awk '{printf "%6d\t%s\n", NR, $0}' Makefile 2>/dev/null | sed -n '1,220p' | rg -n "golangci|lint|tools/go.mod|.PHONY|run:" || true

echo
echo "== tools module files =="
git ls-files | rg '^tools/|go.mod|go.sum' || true

echo
echo "== golangci references in tracked files =="
rg -n "golangci|tools/go\.mod|cmd/golangci-lint|golangci-lint" . 2>/dev/null | sed -n '1,240p' || true

Repository: conforma/cli

Length of output: 10470


🏁 Script executed:

#!/bin/sh
set -euo pipefail

echo "== Makefile target definitions around lint =="
awk '{printf "%6d\t%s\n", NR, $0}' Makefile 2>/dev/null | sed -n '216,245p'

echo
echo "== root go.mod module line =="
awk 'NF && NR <= 6 {print}' go.mod

echo
echo "== tools.go import =="
awk '{printf "%6d\t%s\n", NR, $0}' tools/tools.go 2>/dev/null | sed -n '1,45p'

Repository: conforma/cli

Length of output: 3927


🌐 Web query:

golangci-lint v2 single file lint single file supported

💡 Result:

Yes, golangci-lint supports linting a single file [1]. You can execute it by passing the file path directly to the run command, for example: golangci-lint run file1.go [1]. However, there are important limitations to be aware of: 1. Compilation Dependencies: Golangci-lint typically requires the code to compile to perform analysis [2]. If the single file you are linting has dependencies on other files or packages within your project, and those dependencies are not properly resolved or the package does not compile as a whole, the linting may fail [2]. 2. Linter Capability: Not all linters are designed to work on a single file [3]. Some linters require information from the entire package or project to function correctly (e.g., they might need to see all usages of a constant or type) [4][3][5]. If a linter requires this broader scope, it may not produce accurate results or might fail when restricted to a single file [3]. 3. No Mixing: When specifying paths, you cannot mix individual files with package directories in a single command [1]. To ensure correct analysis, it is generally recommended to run golangci-lint on the package or project level (e.g., golangci-lint run ./...) to provide the necessary context for all linters to function as intended [1][2].

Citations:


Use the repository-pinned linter invocation.

The lint targets run golangci-lint through tools/go.mod, but this example uses an unqualified global binary, which can fail on a clean checkout or run a different version. Update it to pinned tooling and document an appropriate package path for reliable coverage.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.claude/skills/build-and-lint/SKILL.md around lines 29 - 30, Update the lint
commands in the build-and-lint skill to invoke golangci-lint through the
repository-pinned tooling defined by tools/go.mod rather than an unqualified
global binary. Replace the single-file example with an appropriate package path
that provides reliable coverage, and keep the gofmt check aligned with that
target.

Comment on lines +21 to +24
```
feat(EC-1234): add support for new attestation format
fix(EC-5678): handle empty predicate in bundle path
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add a language identifier to the commit example fence.

This violates markdownlint MD040. Use text (or another appropriate language) for the example block.

🧰 Tools
🪛 markdownlint-cli2 (0.23.0)

[warning] 21-21: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.claude/skills/pr-checklist/SKILL.md around lines 21 - 24, Update the
commit-message example fenced block in SKILL.md to include the text language
identifier, preserving its existing example content.

Source: Linters/SAST tools

Comment on lines +67 to +70
```
127.0.0.1 apiserver.localhost
127.0.0.1 rekor.localhost
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add language identifiers to both fenced blocks.

markdownlint MD040 requires every fenced code block to specify a language.

  • .claude/skills/run-tests/SKILL.md#L67-L70: mark the /etc/hosts block as text.
  • .claude/skills/debug-failure/SKILL.md#L38-L41: mark the /etc/hosts block as text.
🧰 Tools
🪛 markdownlint-cli2 (0.23.0)

[warning] 67-67: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

📍 Affects 2 files
  • .claude/skills/run-tests/SKILL.md#L67-L70 (this comment)
  • .claude/skills/debug-failure/SKILL.md#L38-L41
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.claude/skills/run-tests/SKILL.md around lines 67 - 70, Update the fenced
/etc/hosts blocks in .claude/skills/run-tests/SKILL.md lines 67-70 and
.claude/skills/debug-failure/SKILL.md lines 38-41 to declare the text language.
No other content changes are needed.

Source: Linters/SAST tools

@qodo-for-conforma

qodo-for-conforma Bot commented Jul 23, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📜 Skill insights (0)

Context used
⚠️ Tickets: not configured — ticket URL found in PR but could not be fetched — check ticket provider credentials
✅ Compliance rules (platform): 27 rules

Grey Divider


Action required

1. Broken acceptance persist command ✓ Resolved 🐞 Bug ≡ Correctness
Description
The skills instruct make acceptance -- -persist/-restore, but the acceptance Makefile target
does not forward arguments to the go test invocation, so -persist/-restore will be treated as
extra make goals and fail. This breaks the documented workflow for persisting/restoring acceptance
test environments.
Code

.claude/skills/run-tests/SKILL.md[R46-51]

+```bash
+# Keep test containers running after failure for debugging
+make acceptance -- -persist
+
+# Reattach to persisted containers
+make acceptance -- -restore
Relevance

⭐⭐⭐ High

Team often accepts fixes aligning docs/commands with real behavior; this is a concrete
broken-workflow doc bug.

PR-#3331
PR-#3021

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The skills suggest passing -persist/-restore via make, but make acceptance does not
accept/forward extra flags; the repo docs for acceptance explicitly require using `go test ...
-args` for these options.

.claude/skills/run-tests/SKILL.md[46-55]
.claude/skills/debug-failure/SKILL.md[13-24]
Makefile[121-152]
acceptance/README.md[29-51]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The skills documentation tells users to run `make acceptance -- -persist` / `make acceptance -- -restore`, but the Makefile does not support passing these flags through to the acceptance test binary.

## Issue Context
- `make acceptance` runs `cd acceptance && go test -timeout ... ./...` without any forwarding mechanism for custom test flags.
- The acceptance module explicitly documents that `-persist`/`-restore` must be passed via `go test ... -args ...` and that `./...` can’t be used with `-args`.

## Fix Focus Areas
- .claude/skills/run-tests/SKILL.md[46-55]
- .claude/skills/debug-failure/SKILL.md[19-24]

## Proposed fix
Update both skills to use a working command, e.g.:

```bash
cd acceptance
# keep env
E2E_INSTRUMENTATION=true go test ./acceptance -args -persist

# restore env
E2E_INSTRUMENTATION=true go test ./acceptance -args -restore
```

(Alternatively, add a Makefile mechanism to forward acceptance test args and then document that supported interface.)

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Comment thread .claude/skills/run-tests/SKILL.md Outdated
@codecov

codecov Bot commented Jul 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Flag Coverage Δ
acceptance 54.26% <ø> (ø)
generative 16.80% <ø> (ø)
integration 27.97% <ø> (ø)
unit 71.75% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Use `go test ./acceptance -args -persist` instead of
`make acceptance -- -persist` which doesn't forward args.

Jira: EC-1862
@fullsend-ai-review

fullsend-ai-review Bot commented Jul 23, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 11:18 AM UTC · Completed 11:35 AM UTC
Commit: 87c4a29 · View workflow run →

@fullsend-ai-review

fullsend-ai-review Bot commented Jul 23, 2026

Copy link
Copy Markdown

Review

Findings

Medium

  • [protected-path] .claude/skills/* — All 6 added files are under the .claude/ protected path (.claude/skills/benchmark/SKILL.md, .claude/skills/build-and-lint/SKILL.md, .claude/skills/debug-failure/SKILL.md, .claude/skills/pr-checklist/SKILL.md, .claude/skills/run-tests/SKILL.md, .claude/skills/write-tests/SKILL.md). The PR links to Jira EC-1862 and explains the rationale (adding AI skills following the pattern from conforma/e2e-tests EC-1929). Human approval is always required for protected-path changes, regardless of context.

  • [incorrect-technical-claim] .claude/skills/debug-failure/SKILL.md:15 — The skill claims ec validate image --debug ... preserves ec-work-* temp directories. This is incorrect. The --debug CLI flag (defined in cmd/root/root_cmd.go) only controls log verbosity. Temp directory preservation is controlled exclusively by the EC_DEBUG environment variable, checked in internal/evaluator/conftest_evaluator.go and internal/evaluator/base_evaluator.go. Note: this same incorrect claim also exists in AGENTS.md line 44, so the skill author likely copied from there.
    Remediation: Remove the ec validate image --debug ... line or change its comment to clarify it only increases log verbosity. The EC_DEBUG=1 line below it is correct and sufficient. Also fix the same claim in AGENTS.md.

Low

  • [incorrect-api-reference] .claude/skills/write-tests/SKILL.md:82 — The skill claims the acceptance test framework uses framework.NewFramework() for test setup, but this function does not exist anywhere in the codebase. The framework uses Godog's ScenarioContext with AddStepsTo() functions and context-based state passing via the testenv package.
    Remediation: Replace framework.NewFramework() with an accurate description of the test setup pattern.

  • [heading-convention] .claude/skills/pr-checklist/SKILL.md:10 — The H1 heading uses a noun phrase ('PR Definition of Done for Conforma CLI') while the other 5 skill files use imperative/verb-first phrasing. Minor inconsistency across the skill set.

  • [content-duplication] .claude/skills/run-tests/SKILL.md — The skill files reproduce content already present in AGENTS.md without a cross-reference or synchronization mechanism. CLAUDE.md explicitly states all future updates should be made to AGENTS.md. The --debug finding above demonstrates this maintenance risk — the incorrect claim was copied from AGENTS.md into the skill file.
    Remediation: Add a note in AGENTS.md flagging the skill files as downstream consumers that must be updated in parallel, or restructure skills to reference AGENTS.md sections rather than duplicating content.

Previous run

Review

Findings

Medium

  • [protected-path] .claude/skills/* — All 6 files are under .claude/, a protected path requiring human approval. The PR references Jira EC-1862 and explains the rationale (adding AI skills following the pattern from conforma/e2e-tests). Human approval is required for protected-path changes regardless of review outcome.

  • [content-duplication-with-AGENTS.md] .claude/skills/run-tests/SKILL.md — Significant portions of the skill files duplicate content already in AGENTS.md (test tags/timeouts table, build commands, lint commands, troubleshooting steps, CGO/DNS info, multi-module notes). CLAUDE.md designates AGENTS.md as the single source of truth ("All future updates should be made to AGENTS.md"). Claude Code skills may need to be self-contained for independent loading, but this creates a dual-maintenance burden. Consider documenting the duplication as intentional for skill self-containment, or referencing AGENTS.md sections where possible.

  • [incorrect command invocation] .claude/skills/run-tests/SKILL.md:46 — The command cd acceptance && go test ./acceptance -args -persist is inconsistent with the Makefile's focus-acceptance target, which uses cd acceptance && go test . -args .... However, the skill copies this command from acceptance/README.md (line 44), which documents the same ./acceptance form. This is a pre-existing documentation inconsistency, not introduced by this PR. Ideally both the README and skill should align with the Makefile's go test . form.

Low

  • [incorrect API reference] .claude/skills/write-tests/SKILL.md:79 — Claims the acceptance test framework uses framework.NewFramework() for test setup. This function does not exist anywhere in the codebase (verified via grep). This is a fabricated API reference that would mislead the AI agent. Remove the bullet or replace with the actual test initialization pattern from acceptance/acceptance_test.go.

  • [description-field-formatting] .claude/skills/debug-failure/SKILL.md:3 — Trigger phrases in the description: frontmatter fields vary in style across the six files: some use quoted command strings ("run benchmark"), others mix quoted commands with bare phrases ("test failed", "debug failure"). Minor inconsistency in skill trigger phrase formatting.


Labels: PR adds AI agent skill files under .claude/skills/

fullsend-ai-review[bot]

This comment was marked as outdated.

@fullsend-ai-review fullsend-ai-review Bot added requires-manual-review Review requires human judgment agentic documentation Improvements or additions to documentation labels Jul 23, 2026
@fullsend-ai-review

fullsend-ai-review Bot commented Jul 27, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 12:31 PM UTC · Completed 12:47 PM UTC
Commit: 87c4a29 · View workflow run →

@fullsend-ai-review fullsend-ai-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

See the review comment for full details.


```bash
# CLI: preserve ec-work-* temp directories
ec validate image --debug ...

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] incorrect-technical-claim

The skill claims ec validate image --debug ... preserves ec-work-* temp directories. This is incorrect. The --debug CLI flag only controls log verbosity. Temp directory preservation is controlled exclusively by the EC_DEBUG environment variable. Note: this same error also exists in AGENTS.md.

Suggested fix: Remove the ec validate image --debug ... line or clarify it only affects log verbosity. The EC_DEBUG=1 line is correct. Also fix the same claim in AGENTS.md.

- Context values for state passing between steps (no global state)

Run: `make scenario_it_works`

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[low] incorrect-api-reference

The skill claims the acceptance test framework uses framework.NewFramework() for test setup, but this function does not exist in the codebase. The framework uses Godog's ScenarioContext with AddStepsTo() functions and context-based state passing via the testenv package.

Suggested fix: Replace framework.NewFramework() with an accurate description of the test setup pattern.

---

# PR Definition of Done for Conforma CLI

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[low] heading-convention

The H1 heading uses a noun phrase while the other 5 skill files use imperative/verb-first phrasing. Minor inconsistency across the skill set.

@joejstuart

Copy link
Copy Markdown
Contributor

These are all good ideas for skills, but are written more as how-to guides than skills. Skills should be reusable workflows. Here is an example of the pr-checklist refactored.

---
name: pr-checklist
description: >
  Verify a Conforma CLI pull request is ready for review. Use when users ask
  "is this PR ready", "definition of done", "PR checklist", "before merging",
  "review checklist", or when preparing a PR for review.
---

# Verify PR Readiness for Conforma CLI

Run through each step below, report pass/fail for each, and summarize what remains.

## Step 1: Check for uncommitted generated code

```bash
make generate
git diff --exit-code

If there are uncommitted changes after make generate, flag them and stage the results.

Step 2: Check module tidiness

Run go mod tidy in every module that has changes, then check for drift:

go mod tidy
git diff --exit-code go.mod go.sum

If acceptance/ or tools/ files were modified, repeat in those directories:

cd acceptance && go mod tidy && git diff --exit-code go.mod go.sum
cd tools && go mod tidy && git diff --exit-code go.mod go.sum

Step 3: Run lint

make lint

Zero warnings required. If there are failures, run make lint-fix and report what was auto-fixed vs what needs manual attention.

Step 4: Run tests

make test

If acceptance-relevant code changed (features/, acceptance/, CLI commands), also run:

make acceptance

If behavior changed, check whether snapshots need updating:

git diff features/__snapshots__/

If snapshots are stale, update them with UPDATE_SNAPS=true make acceptance and report which snapshots changed.

Step 5: Verify build tags on new test files

Find any new test files in the diff and verify each starts with a build tag (//go:build unit, integration, or generative):

git diff --name-only --diff-filter=A HEAD~1 | grep '_test\.go$'

Read the first line of each new test file and flag any missing build tags.

Step 6: Check PR description

If a PR already exists for this branch, fetch its description and verify it covers:

  • What: What the change does
  • Why: Context and background
  • Tickets: Link to Jira issue

Compare against the template in .github/pull_request_template.md.

Step 7: Report

Produce a summary table:

Check Status Notes
Generated code pass/fail
Module tidiness pass/fail
Lint pass/fail
Tests pass/fail
Build tags pass/fail
Commit messages pass/fail
PR description pass/fail/skip

List any items that need attention before the PR is ready for review.


## Commit Messages

Use conventional commits with Jira key:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We don't want to enforce conventional commits. I see it got this from AGENTS.md, but we should remove it from there also. https://github.com/conforma/cli/blob/main/AGENTS.md?plain=1#L45

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

Labels

agentic documentation Improvements or additions to documentation requires-manual-review Review requires human judgment size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants