kramme-cc-workflow/skills/kramme:verify:run/SKILL.md
Run verification checks (tests, formatting, builds, linting, type checking) for affected code based on the project's configuration.
npx skillsauth add abildtoft/kramme-cc-workflow kramme:verify:runInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
4 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Discover the project's verification commands, run them against affected code, and report results. This is a verification command only: it never modifies files or auto-fixes issues.
First, read all applicable project instruction files: read repo-root AGENTS.md, CLAUDE.md, .github/copilot-instructions.md, and any markdown instruction files in repo-root .claude/ when present, then any relevant nested instruction files (AGENTS.md, CLAUDE.md, .github/copilot-instructions.md, markdown instruction files in a nearby .claude/ directory, or equivalents). If both AGENTS.md and CLAUDE.md exist, read both. Look for:
nx format:check, dotnet format, prettier --check)nx lint, eslint, dotnet format --verify-no-changes)tsc --noEmit, nx typecheck)nx build, dotnet build, npm run build)nx test, dotnet test --filter Category=Unit)nx component-test, Cypress component, Storybook)nx integration-test, dotnet test --filter Category=Integration)nx e2e, dotnet test --filter Category=E2E)If project instructions do not specify commands, check CI configuration files:
.github/workflows/*.yml (GitHub Actions)azure-pipelines.yml (Azure DevOps)Jenkinsfile (Jenkins).circleci/config.yml (CircleCI)Extract only the test, build, lint, type-check, and format commands. CI files interleave verification with deploy, publish, release, and other state-mutating steps — never run those, and never run steps that push to a remote, write to a registry, or modify infrastructure. If a step's intent is ambiguous, skip it and note it in the report rather than running it.
If no configuration specifies commands, detect the project type:
nx.json or project.json*.csproj or *.sln filespackage.jsonpyproject.toml or pytest.ini (defaults: pytest, ruff check)go.mod (defaults: go test ./..., go vet ./...)Cargo.toml (defaults: cargo test, cargo clippy, cargo fmt --check)If none of these match and no commands were found in steps 1-2, report "No verification commands found" with the locations checked, then stop. Do not invent commands.
This skill relies on git, plus the toolchain for the detected project type (nx, dotnet, npm, pytest/ruff, go, or cargo) and jq for the JSON-inspection snippets below. If a required tool is missing, mark the checks that need it as SKIPPED with the reason (same handling as a missing target) rather than failing the run.
For affected detection and format checks, determine the base branch:
Synced base/diff scope contract (keep aligned across base-aware and diff-aware skills): use the shared resolve-base.sh script for base refs; use the shared collect-review-diff.sh script for unified changed-file scope; canonical base priority is explicit --base, PR target branch, then origin/HEAD, origin/main, or origin/master, and canonical diff scope is committed PR diff from MERGE_BASE...HEAD plus staged, unstaged, and untracked paths.
AGENTS.md, CLAUDE.md, .github/copilot-instructions.md, markdown instruction files in a nearby .claude/ directory, or equivalent) for a specified base branch. If one is specified, set BASE_BRANCH_OVERRIDE to that value.nx.json for defaultBase setting (Nx projects). If present and no project instruction already specified a base, set BASE_BRANCH_OVERRIDE to that value.RESOLVE_ARGS=(--strict)
[ -n "${BASE_BRANCH_OVERRIDE:-}" ] && RESOLVE_ARGS+=(--base "$BASE_BRANCH_OVERRIDE")
RESOLVED=$("${CLAUDE_PLUGIN_ROOT}/scripts/resolve-base.sh" "${RESOLVE_ARGS[@]}") || {
echo "Base resolution failed; see the message above and stop." >&2
exit 1
}
eval "$RESOLVED"
The script exports BASE_REF, BASE_BRANCH, and MERGE_BASE. Use BASE_REF for affected comparisons (for example Nx --base=$BASE_REF), because it is the fetched remote-tracking ref that the resolver guarantees exists. Use BASE_BRANCH only for display or tools that truly require a branch name.
For Nx projects, discover available targets before running:
# List affected projects
nx show projects --affected
# Check what targets are available for a project (quote the name; the brackets are a placeholder)
PROJECT=my-app
nx show project "$PROJECT" --json | jq '.targets | keys'
# Or inspect project.json files directly
Run checks in this order (continue through ALL checks even if some fail):
When project instructions and CI config don't specify commands, read references/commands-by-project-type.md for default check-only command sets (Nx, C#/.NET, Node.js, Python, Go, Rust) and per-ecosystem test-suite discovery. Read only the section for the project type you detected in step 3, and use the $BASE_REF from step 4 for affected comparisons.
Before running tests, discover which suites exist so you can run only those and mark the rest SKIPPED. Per-ecosystem discovery commands are in references/commands-by-project-type.md.
Before running checks, inspect changed and untracked paths for skill directories in top-level or nested plugin roots (skills/*/SKILL.md, */skills/*/SKILL.md, */skills/*/references/**, */skills/*/assets/**, or */skills/*/scripts/**). When skill files changed, include a static-only SkillSpector scan in the verification set:
make -C kramme-cc-workflow skill-security-changed, because wrappers can map nested plugin paths like kramme-cc-workflow/skills/... to the owning skill directory.skillspector scan <changed-skill-dir> --no-llm for each changed skill directory when the CLI is available.SKIPPED when no skill files changed, the scanner is unavailable, or no safe static-only command is discoverable.Use parallel execution where possible for faster feedback:
--parallel flag (e.g., nx affected -t lint --parallel)--parallelAfter running all checks, provide:
## Formatting
Status: PASS
## Linting
Status: FAIL
Errors:
src/components/Button.tsx:15:3
error: 'unused' is defined but never used @typescript-eslint/no-unused-vars
src/utils/helpers.ts:42:10
error: Missing return type on function @typescript-eslint/explicit-function-return-type
## Type Checking
Status: PASS
## Build
Status: PASS
## Unit Tests
Status: FAIL
Errors:
FAIL src/utils/helpers.test.ts
● calculateTotal › should handle empty array
Expected: 0
Received: undefined
at Object.<anonymous> (src/utils/helpers.test.ts:25:14)
## Component Tests
Status: SKIPPED (no component-test target found)
## Integration Tests
Status: PASS
## E2E Tests
Status: SKIPPED (not running E2E for this verification)
Verification Summary:
- Formatting: PASS
- Linting: FAIL (2 errors)
- Type Checking: PASS
- Build: PASS
- Unit Tests: FAIL (1 error)
- Component Tests: SKIPPED
- Integration Tests: PASS
- E2E Tests: SKIPPED
Issues Found: 2 steps failed - see errors above for details
--affected or equivalent to minimize scope when possibleBASE_BRANCH_OVERRIDE; otherwise let the shared resolver auto-detect in step 4kramme:verify:before-completion skill.tools
Requires Linear MCP. Implements one Linear issue end to end, selects applicable code-review, convention, and PR-refactor gates, runs them to bounded convergence, verifies, and optionally opens the PR and iterates on CI and review feedback until green. Use when the user wants a single Linear issue taken from implementation through a clean Pull Request. Not for implementation-only work, SIW-tracked issues, stacked PRs, existing PR updates, or post-merge rollout.
development
Reviews PR and local changes for convention drift and overcaution against documented rules and mined peer-file practice. Use for new patterns, dependencies, abstractions, or defensive complexity that departs from established practice; every finding cites evidence. Supports --inline. Not for general code quality (use kramme:pr:code-review) or spec review (use kramme:siw:spec-audit --team).
testing
Charts huge or foggy initiatives into a local `.context` decision map and resolves one typed frontier ticket per session until the work is ready for SIW or another execution workflow. Use when the route to a destination cannot fit in one agent session or parallel workspaces need coordinated planning state. Not for clear specs, ordinary issue decomposition, implementation, or Linear-native tracking.
development
Investigates a question against primary sources and saves one cited Markdown artifact. Use for reading legwork: official docs/API facts, source-code or spec checks, standards, and first-party service behavior before planning or implementation. Not for making product or architecture decisions, implementing code, broad web search, secondary blog summaries, or uncited answers.