@crossplatformai/skills
Version:
Reusable Agent Skills for CrossPlatform.ai projects.
49 lines (33 loc) • 2.32 kB
Markdown
---
name: reconcile-setup
description: Idempotent run-once setup should be reconciled, not trusted - verify it continuously with an event-triggered, fail-loud QA drift-check.
---
# Reconcile Setup
## Use This Skill When
Authoring setup steps, tooling, generated or config files, or QA config — anytime you create a
"run once" operation. If something is worth doing once, decide how it gets re-verified.
## Principle
Worth doing once is worth repeating. Anything set up once drifts: a teammate edits the file, a fresh
checkout never ran it, a tool's output changes. So do not trust setup — reconcile it: re-verify the
desired state continuously, as a reminder and catch-all. This is the convergence pattern behind
Terraform, Ansible, and Kubernetes controllers, which run on a loop precisely to catch drift.
## Gate on idempotency
Reconcile only **idempotent** operations — where running twice produces the same result as running
once (checks, generators, validators). Never auto-repeat operations with accumulating side effects:
migrations, seed scripts, publishes, anything that appends or mutates. The discriminator is one
question: does run-twice equal run-once? Yes → safe to reconcile. No → never repeat by habit.
## Form: a drift-check in QA
Make reconciliation an **event-triggered** check, not a timer — run it when the thing it guards could
change (CI, or a hook on the relevant paths). It must be **silent on success and loud on drift**; a
check that constantly says "still fine" trains everyone to ignore it, and the reminder becomes noise.
Fail the build on drift; say nothing when clean.
Put the check where the artifact lives:
- **Producer side**, where the thing is authored — validate the source.
- **Consumer side**, where it is consumed — verify the installed or generated state still matches.
## Example
Intent skills: `intent validate` in the library repo (producer — validates the `SKILL.md` files),
and a `skills:check` QA step in each consumer that re-runs the generator and fails if the committed
block drifted from its output (consumer). Silent when current, loud when clobbered.
## Avoid
A timer when an event trigger exists; reconciling non-idempotent operations; checks that mutate as an
undeclared side effect; and success-noise that becomes background hum.