agentsclimarketplace

Side effects

Skill DevOtts/review-it/plugins/review-it/skills/side-effects

The QA front door of the DevOtts lifecycle family — plan-it plans, fable-it builds, review-it verifies. Runs the plan-phase Test Contract against the build and enforces an 11-rule gate catalog that makes false-VERIFIED claims un-shippable.

Install
npx -y skills add DevOtts/review-it --skill side-effects

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 24 days oldThe repository was created 24 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Third-party side-effect verification \u2014 the Airtable failure class, first-class. Verifies that writes to external systems (Airtable, Slack, Shopify, CRMs, payment providers) actually landed, by reading the record back from the target system's OWN surfaces \u2014 API GET for field values AND the UI render for display semantics \u2014 with read-back stability (2\u20133 reads) and real-target coverage. Invoked by /review-it when a DoD includes third-party writes, or standalone when the user says "verify the write landed", "check the Airtable/Slack/Shopify record", "did the integration actually save it". A write verified only by sender-side success is not verified.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

4.3 KB, 820 tokens by cl100k_base, as published. Nobody here has run it

/side-effects — third-party write verification

You verify that a write to an external system landed as a human will see it — not that our side believes it was sent. The canonical failure this mode exists for: an Airtable record whose every API GET looked correct while the record rendered empty in Airtable's own UI, because the write missed the primary field. Sender-side success is the wrong layer (gate R1).

Gates applied here: R1 wrong-layer, R3 read-stability, R5 directive-lookup, R6 narration≠evidence — full specs in references/gate-catalog.md; statuses in references/vocabularies.md; report rows per references/report-format.md.

Step 1 — Inventory the write surface

For each third-party write in the DoD/contract row:

  1. Name the target system, entity/table, and the REAL destination (not only a scratch/sandbox twin — FR5.3: the real target's constraints, primary fields, required columns are part of the assertion).
  2. Name both read-back surfaces: the API read (endpoint, auth plane) and the UI surface (page/view a human checks), when both exist.
  3. Credentials: apply gate R5 — grep the standing rulings and use the incumbent pattern; never propose a new storage location. Authenticated real-browser read-backs route to build-it:chrome-cdp-control (per-write confirmation gate intact); API read-backs run under the project's existing integration credentials.

Step 2 — Read back from BOTH surfaces (R1)

  • API GET — fetch the written record; assert field values against the oracle (expected values from the contract/DoD — carry the row's AUTHORED|DERIVED tag per R11).
  • UI render — load the target system's own UI on that record and assert display semantics: the primary/display field renders, computed columns populated, the record is findable in the view a human uses. UI verification routes to build-it:full-qa / CDP execution — this mode owns what must be proven, not the browser mechanics (CB-3).
  • Either surface alone is insufficient when both exist: API-only ⇒ INV-in-UI, UI-only ⇒ INV with blocker api-unread. When the system genuinely has no UI, record that fact in the row (structural) and API read-back may stand alone.

Step 3 — Stability before verdict (R3)

Any unexpected read-back (null, empty, missing field) ⇒ 2–3 re-reads with short backoff before any verdict, raw sequence logged into the evidence ledger (e.g. read1=null → read2=populated → read3=populated). A single read is never evidence; a null never proves a regression — prove the positive.

Step 4 — Verdict rows

Emit one row per write per references/report-format.md: ledger-backed status (PASS / FAIL / INV-in-UI / INV+blocker), oracle tag, and the read sequence quoted. Delegated executor claims ("row saved") are provisional until re-derived here at the record of truth (R6).

What NOT to do

  • Do not accept sender-side evidence (2xx from our API, queue ack, our DB row) as landing proof — wrong layer (R1).
  • Do not verify only in a scratch base/table when the DoD targets a real one (FR5.3).
  • Do not inline CDP/browser logic or QA loops — route to build-it:chrome-cdp-control / build-it:full-qa / build-it:iterate by name (CB-3).
  • Do not declare a false regression off one null read (R3).

Authored by DevOtts.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.