Skip to content
Back to skills

Verifying Changes

ASecurity

Concrete, per-area proof that a change actually works before reporting it fixed, done, or "should work now" — which dev server, test command, or invocation proves a template UI change, an action, a migration, a guard, or a core/package change. Use before every wrap-up, and before stopping mid-task to ask permission instead of continuing.

  • 6,969 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 3, 2026
ai-agentsgosqlnodegitbackend

Works with

  • terminal
  • cli

Security analysis

A100/100

Scanned September 30, 2026

npx -y skills add BuilderIO/agent-native --skill verifying-changes --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Verifying Changes?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Verifying Changes
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/builderio-verifying-changes/badge)](https://www.skillsdirectory.com/skills/builderio-verifying-changes)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: verifying-changes
description: >-
  Concrete, per-area proof that a change actually works before reporting it
  fixed, done, or "should work now" — which dev server, test command, or
  invocation proves a template UI change, an action, a migration, a guard, or
  a core/package change. Use before every wrap-up, and before stopping
  mid-task to ask permission instead of continuing.
scope: dev
metadata:
  internal: true
---

# Verifying Changes

## When this applies

Before telling the user a fix, feature, or bug is done, choose the smallest
proof that exercises the behavior you changed and use the row below as a guide.
"I changed the code and it looks right" is not proof — it's the exact gap this
skill exists to close. A failing check is a reason to keep working, not a reason
to stop, ask, or report done anyway.

## Scale the verification

Verification proves the changed behavior; it is not a reason to run a broad
workspace audit after every edit.

- For a localized one-line or small-file change, inspect the diff and run the
  narrowest relevant test, typecheck, formatter, or direct invocation. Do not
  run `pnpm run prep`, browser automation, or restart a dev server unless the
  changed area requires it.
- For an action or capability-card change, use the focused action/card check.
  Restart only when the runtime process must reload registration or the change
  explicitly affects startup.
- Escalate to package-wide tests or `pnpm run prep` for shared contracts,
  cross-cutting changes, migrations, or when a focused check exposes a wider
  failure. Keep repository-required guards and doctor checks when they apply.
- If a focused check is unavailable, state the exact gap rather than replacing
  it with unrelated expensive work.

## Do NOT report done in these situations

- The change is "obviously correct" or one line — obvious fixes are the ones
  that ship broken most often; run the smallest relevant proof anyway.
- You verified a similar path earlier in the session — re-run against the
  actual latest edit, not a memory of an earlier pass.
- The user didn't explicitly ask you to test it — test it anyway; verify-
  before-done is a standing rule here, not an opt-in.
- The full test suite is slow or flaky — run the targeted command for the
  changed area (below) instead of skipping verification entirely.
- You're mid-task and unsure whether to keep going — keep going. Only stop for
  a missing credential, an ambiguous decision only the user can make, or a
  destructive action that needs confirmation. Silence from the user means
  keep working, not pause and wait.
- You genuinely cannot run anything — say so out loud (see below); never let
  "unverified" read as "done".

## Proof by area

| You changed | What proves it | Command |
| --- | --- | --- |
| Template UI/behavior (`templates/<app>/app/**`) | Drive the real page and check console + network, not just the diff | `pnpm --filter <app> dev` (or root `pnpm dev` for the gateway), then click through the exact flow with whatever browser tool is available; check for console errors and failed (4xx/5xx) requests on that page |
| An action (`templates/<app>/actions/*.ts`) | Call it with representative args and inspect the real return value | `cd templates/<app> && pnpm action <name> --key value`; for a write, follow with `pnpm action db-query --sql "SELECT ..."` to confirm the row actually landed |
| Schema/migration | Boot the app so migrations run, then read back the new column/table | `pnpm --filter <app> dev` once, then `cd templates/<app> && pnpm action db-query --sql "..."` (`action` is a per-template script, not a root one); `pnpm guard:additive-migrations` catches destructive DDL before CI does |
| A guard/lint script (`scripts/guard-*.{mjs,ts}`) | Run it directly against a case that should now pass and one that should still fail | `pnpm guard:<name>` (name matches the `package.json` script); `pnpm guards` for the full sweep |
| `packages/core` or another publishable package | Run that package's actual tests, not just typecheck | `pnpm --filter @agent-native/core exec vitest --run <changed.spec.ts>`, or `pnpm test:core-integration` for cross-cutting paths |
| A CI job, workflow, or `scripts/ci-*.ts` | Show the new scope on real history; the PR's own CI is a full run and cannot show it | `node --experimental-strip-types --test scripts/ci-change-scope.test.ts`, then run `scripts/ci-change-scope.ts` with `GITHUB_OUTPUT` on real `main` commits; see `adding-tests-and-ci` |
| Cross-cutting change, or unsure which area | Workspace-wide pass | `pnpm run prep` (fmt + typecheck + `test:fast` + `guards`, run in parallel) |
| Deployed behavior (when requested or environment-specific) | Add a deployed check only when requested or a concrete beta/production difference could make local proof misleading (for example, deploy-time config or secrets, host/cookie/OAuth settings, CDN/SSR, serverless runtime, storage, or external connectivity). A merge-triggered deploy alone is not a reason to retest every path remotely; focused local proof and required CI are the default. When warranted, exercise the affected path on that environment and inspect relevant logs; deploy success alone is not behavior proof |
| Docs only (`.md`, `AGENTS.md`, `SKILL.md`) | Nothing to run | Say "docs-only, no runtime check applies" — don't invent a verification step |

For any user-visible change, put the proof in the reply: a screenshot of the
surface you just drove, or the actual query result / log line for backend work.
"Show me screenshots" is a standing expectation, not a special request.

`pnpm test:fast` excludes `.db.test.ts` / `.integration.*` / `.e2e.*` /
`.live.*` / `.perf.*` suites. If your change touches one of those, name and
run that specific file — `test:fast` passing does not cover it.

## Production forensics

When inspecting production runs, query interactive and scheduled/background
work as separate populations before summarizing reliability. Report both
`id NOT LIKE 'job-%'` and `id LIKE 'job-%'` (or the repo's current equivalent),
including app, run count, completed count, failure count, and top terminal
reasons for each slice. A healthy interactive sample does not prove scheduled
jobs work.

## When you can't verify

State it plainly and name what would close the gap: "I could not run this —
verifying it needs `<command>` or a browser check of `<page>`." Never write
"should be fixed" or "this resolves it" without having actually run the check
above.

## Real failures this replaces

- "still getting it friend. this is the third time you said you fixed it when
  you didn't. please reproduce end to end and verify"
- "did you test end to end? can you do so in the browser and confirm?" — asked
  on nearly every wrap-up before this rule existed
- "ok so should work now?? i am getting sick of saying 'try this' and it still
  not working. you confident?"
- "my analytics dashboards ALWAYS fail ... i have asked agents to fix this for
  weeks at least 10x and they always say they did and then the emails keep
  failing"
- "WHY THE FUCK DO YOU KEEP STOPPING" / "sorry what is still queued? you
  should be doing everything now don't queue" — stopping mid-task instead of
  finishing and verifying

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…