agentleFS
shammloshammlo/zoth-skills/skills/verify/SKILL.md

verify

Skill0 starsChanged 51 days agoMITView on GitHub

Requires runtime evidence, not only static checks, before a feature, fix, or migration is reported done. Use when closing out non-trivial implementation work, especially changes to auth, permissions, payments, file storage, multi-tenant queries, background jobs, or a shared package, and whenever a completion summary lists only typecheck, lint, or unit tests. Skip docs-only edits, config tweaks, and one-line changes.

188 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use instinct-export, instinct-import and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • TheKREATORSSkill

    instinct-export

    Export instincts from project/global scope to a file

    Also in 3 projects that use this

  • TheKREATORSSkill

    instinct-import

    Import instincts from file or URL into project/global scope

    Also in 3 projects that use this

  • AviadPSkill

    risk-assess

    Assess the risk and blast radius of a proposed code change before implementing it. Evaluates CI impact, framework-wide vs localized scope, rollback path, and identifies blindspots. Use when user says "what's the risk", "is this safe", "assess the impact", "risk assess", "blast radius", or before applying framework-wide or CI-affecting changes. Do NOT use for code quality review (use code-quality) or plan validation (use design-validator).

    Also in 3 projects that use this

  • diego-tobalinaSkill

    build-fix

    Fix build and compilation errors systematically. Run when build fails.

    Also in 6 projects that use this

  • AaravChadhaSkill

    secure

    Security review with a confidence gate - a finding exists only with a concrete exploit scenario and a high/medium/low confidence rating; everything else goes to a worth-hardening list, never inflated. Sweeps five surfaces: auth gates, secrets hygiene, injection and unsafe sinks, unsafe deserialization/crypto/transport, and LLM tool-use trust boundaries. Reports only, never fixes. Use when the user asks for a security review or to check vulnerabilities, secrets, or auth.

    Also in 3 projects that use this

  • ArvorCoSkill

    specify

    Create feature specification from natural language description. Use when starting a new feature or creating a spec. Triggers on: create spec, specify feature, new feature spec.

    Also in 10 projects that use this

  • +1 more from TheKREATORS

The file

We split this skill into the rules it gives an agent

5 rules. 0 are common, 5 are distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 167 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Run the migration or job against a real (test/local) database and inspect the resulting rows

    line 37
  2. Distinctive:

    If there's no way to exercise it locally (e.g.

    line 40
  3. Distinctive:

    Test the failure paths you named, not just the happy path.

    line 44
  4. Distinctive:

    Every task closes with a short block like this, not a bare "done":

    line 48
  5. Distinctive:

    If any line would honestly read "assumed, not checked," that line goes in the evidence block explicitly.

    line 60

“Common” is measured: kept by at least 6 in 10 of the 167 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Verify

Static checks passing is not evidence the feature works. An agent that reports "typecheck clean, tests green" has told you the code compiles and the tests it wrote pass, not that the thing behaves correctly when run. The bar here: every "done" claim carries both the test count and a description of what was actually executed at runtime, on every task, not just the ones where it happened to be top of mind.

When this fires

Before accepting or writing a "this is done" summary for non-trivial implementation work, whether from a subagent, an AI coding tool, or your own end-of-task report. Docs-only edits, config tweaks, and one-line changes don't need the full workflow; a sentence saying how the change was checked is enough. Applies most forcefully to:

  • Anything crossing a shared/core package boundary in a monorepo (auth, permissions, file handling, audit logs, translations, or whatever your project's shared layer covers)
  • Auth and permission checks. Did you confirm a request from the wrong role/tenant is actually rejected, not just that the right one succeeds?
  • Payments, billing, or any operation that creates a record as a side effect. Did you confirm retries/duplicate requests don't double-create?
  • File uploads and storage (bucket visibility, signed URLs). Did you confirm the URL/visibility is correct for the actual storage backend, not assumed from the code path?
  • Multi-tenant or scoped queries. Did you confirm data from one tenant doesn't leak into another's view, not just that the happy path returns data?
  • Background jobs, webhooks, cron. Did you confirm the job runs and produces the expected side effect, not just that the handler function typechecks?

The workflow

1. Define "done" before starting, not after

Before implementation begins, write down, in a sentence or two, what observable behavior proves this is finished. Not "the endpoint exists" but a specific, checkable claim, for example "a request from an unauthorized tenant returns 403 and no row is written." If you can't state this up front, the task isn't scoped enough to verify later.

2. Static checks are the floor, not the ceiling

Typecheck and lint clean, and the relevant unit/integration test suite passes. This is necessary and non-negotiable, but insufficient on its own. Never report a task as done on the strength of this step alone.

"Relevant" means the tests of what changed, run at the cadence the repo sets. If the repo defines a test cadence (for example, full suites only every few PRs), follow it: runtime evidence is a reason to exercise the changed behavior once, not to re-run whole suites or prove a failure pre-existed.

3. Runtime exercise, the step agents skip

Actually run the thing. This means one of:

  • Hit the endpoint/flow with a real (or realistic local) request and read the actual response, not the code that generates it
  • Run the migration or job against a real (test/local) database and inspect the resulting rows
  • For UI work, describe what was actually rendered/clicked, not just that the component compiles

If there's no way to exercise it locally (e.g. it depends on an external service you don't have credentials for), say so explicitly in the evidence block below rather than silently skipping this step.

4. Edge cases from the "done" definition in step 1

Test the failure paths you named, not just the happy path. A feature that only proves the authorized-user case works is not proof the authorization check works.

5. Evidence block, required output

Every task closes with a short block like this, not a bare "done":

Evidence:
- Typecheck: clean
- Tests: 42 passing (12 new: auth-boundary, tenant-isolation, upload-visibility)
- Runtime: hit POST /api/documents locally with a cross-tenant auth token,
  got 403, confirmed no row written to the documents table
- Not verified: production storage bucket visibility (no prod credentials in
  this session). Flagged for manual check before deploy

If any line would honestly read "assumed, not checked," that line goes in the evidence block explicitly. It does not get silently omitted.

6. Codify, when this task's evidence surfaces a lesson, decide where it goes

This step only fires when step 3's runtime exercise catches something that passed the static checks in step 2 and still would have shipped broken, the specific failure category this skill exists to close. When that happens, before the incident-log entry (below) is written, decide: does this lesson become a new check inside this skill itself (a permanent addition to what gets exercised next time), a new category in impact's checklist, a lint rule, or does it stay a one-off entry with no structural change? Record the answer in the incident-log entry's "Codified as" field. If the honest answer is "nothing, this was a one-time fluke," that's a valid answer. Write it down rather than skipping the field.

This is deliberately narrow: it only applies to lessons from verification failures. A design insight from work that succeeded (nothing broke, nothing failed a check, but something worth remembering came out of it anyway) belongs in reflect, not here.

Known failure modes (fill this in as it happens)

references/incident-log.md accumulates real incidents from your own projects, so future runs check for what has actually bitten you rather than a generic list. Add an entry whenever something passed typecheck and tests and still shipped broken. It starts empty for every installer.

Interaction with a design-review skill and an impact-mapping skill

This skill runs after implementation, as the last gate before "done." It doesn't replace a design review before implementation (dev-council) or an impact map of what a shared-boundary change reaches (impact). If an impact map flagged consumers of a changed module, this skill's evidence block should include runtime confirmation that those specific consumers still behave correctly, not just that the module's own tests pass.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.