plugins/src/base/skills/lisa-tear-down-automations/SKILL.md
Remove recurring Lisa automations that /setup-automations registered for this project — either the whole lisa-auto-<project>-* fleet by default, or one named loop registration when approving a policy-obsolete proposal — using the CURRENT runtime's native scheduler — Codex automations or, on Claude, /schedule. This skill is a declarative specification: it identifies WHICH automations to remove; it does not run teardown scripts. Carries no fixed list of loops for fleet teardown: the registration set is the roster. Removes only this project's Lisa automations — never other projects' automations or non-Lisa ones. Leaves checked-in runbook files on disk. The inverse of /setup-automations.
npx skillsauth add codyswanngt/lisa lisa-tear-down-automationsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill is a specification, not a script. It tells the current runtime which recurring Lisa
automations to remove — the ones /setup-automations created for THIS project — and the runtime
removes them with its native scheduling mechanism. With no loop argument it removes the whole
project fleet. With a loop id argument (for example monitor or learnings-audit) it removes only
that one registered loop.
lisa-auto-<project>-* set via the native
automations mechanism (prefer the native delete over hand-removing
~/.codex/automations/<id>/, which is only the backing store)./schedule to list and remove the matching recurring routines./setup-automations registered for the current project — the whole
set found under the stable lisa-auto-<project>- name prefix, whatever it currently contains.
Membership is registration, not a roster (automation-runbook-contract): sweep the prefix and
remove what is there. Do not work from a fixed list of loop names — a list drifts the moment a
loop is added, which is exactly how the opt-in gardener came to be orphaned.$ARGUMENTS names a loop id from a policy-obsolete teardown proposal, remove only that
loop's registration under the same prefix, e.g. lisa-auto-<project>-monitor. Report every other
project automation left in place. If the named loop is absent, that single-loop teardown is a clean
no-op; do not widen it into a fleet teardown.learnings-audit gardener when it is registered:
/setup-automations learnings-audit=true registers it under the same prefix, so teardown removes
it with the rest. A conditionally-skipped loop (e.g. exploratory-bugs on a stack without
exploratory-qa) simply is not in the sweep.lisa-auto-<project>- prefix for THIS project; when in
doubt about an automation's ownership, leave it and report it rather than deleting it..lisa/automations/<loop-id>.runbook.md files that
/setup-automations scaffolded are project knowledge and the historical record of what these
loops did. Teardown removes scheduler registrations only; it never deletes, edits, or moves a
runbook file. An operator who wants them gone removes them deliberately, in git.policy-obsolete teardown proposalRunning this skill with the proposing loop id is the approve answer to a loop's own retirement
proposal. When a registered loop's runbook Retirement condition trips, that loop records the
policy-obsolete run outcome and files exactly one ticket recommending its own teardown
(automation-runbook-contract) — and then keeps running at its normal cadence, because a loop never
removes its own registration.
Teardown is always human-invoked: it is never
triggered by a loop, on any schedule, for any outcome. The operator has three answers, and only the
first brings you here. The proposal authorizes only that loop's registration unless the human
explicitly asks for fleet teardown.
/lisa:tear-down-automations monitor. When it has run, close the proposal as Completed: the
loop-scoped teardown it asked for actually happened, and Completed is the close reason that says
so./lisa:setup-automations; the loop never adjusts its own schedule. The proposal's evidence
carries the loop's current cadence as the baseline to choose against, plus a one-line summary
of its recent runs. Then close the proposal as Completed — the schedule change is the action
it asked for.List each automation removed by name. For "already absent", compare against the one source of truth
— the fleet scripts/automation-status-expected-fleet.mjs (resolveExpectedAutomationFleet)
resolves for this project — and name anything it expects that the sweep did not find; that is a
no-op, not an error. Do not invent an expected set of your own.
Then state, in the operator's words, that the runbook files under .lisa/automations/ were left on
disk and why: they are the written record of what those jobs did, kept on purpose, and if you
do not want them you delete them yourself in git. Finally, confirm that nothing outside this
project's lisa-auto-<project>- prefix was touched. Write it so a non-technical operator can
confirm what happened without reading code.
development
Prepare a machine — a fresh laptop or a throwaway container — to run coding agents, before any repository exists. Detects which of Lisa's supported agents (Claude Code, Codex, Cursor, OpenCode, Antigravity, Copilot) are already installed, asks which credential manager the machine uses (Bitwarden, 1Password, Doppler, Vault, AWS, or none), and installs only what is missing, each by its vendor's own preferred method. Idempotent, headless by default, and emits a Dockerfile for a spin-up/spin-down environment. Run it on a new machine, in a container, or before cloning anything.
tools
Provision and verify a remote execution environment for a host project — Codex Cloud today, other remote surfaces as they are added. Generates a repository-owned setup script that installs the declared toolchain, materializes secrets through lisa-secrets-access, and runs the project's own hook. Provisions by API where one exists, by driving the vendor console where one does not, and by emitting exact config otherwise — then proves the result with the same read-back regardless of which tier did the work. Use before dispatching any work with executionEnv.
tools
Bring a developer's machine in line with the toolchain the project declares. Reports every tool in remoteEnv.tools that is missing, outdated, or unpinned for this platform, and installs the missing ones into ~/.local/bin from the same pinned, checksummed entries the remote surfaces use — but only when asked. Same manifest, same pins, same installers as lisa-setup-remote-env; what differs is consent and that the pin is a floor rather than an equality. Run it on a fresh checkout, after a manifest change, or when a tool fails at the moment of use.
tools
Route one unit of work to a remote execution surface. Reads the executionEnv parameter (local by default, codex-cloud or claude-web today), verifies the environment is provisioned and bound to this repository, submits a thin skill invocation, records the task identifier to .lisa/remote-dispatch.json, and exits without polling. Routing only — the remote runs the identical skill from the identical repository. Composable and inline: other skills invoke it via the Skill tool rather than users calling it directly.