@codyswann/lisa 2.252.0 → 2.253.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-automation-status/SKILL.md +14 -8
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-automations/SKILL.md +116 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-tear-down-automations/SKILL.md +25 -5
- package/plugins/lisa/scripts/automation-status-claude-adapter.mjs +36 -18
- package/plugins/lisa/scripts/automation-status-codex-adapter.mjs +50 -27
- package/plugins/lisa/scripts/automation-status-expected-fleet.mjs +149 -6
- package/plugins/lisa/skills/lisa-automation-status/SKILL.md +14 -8
- package/plugins/lisa/skills/lisa-setup-automations/SKILL.md +116 -1
- package/plugins/lisa/skills/lisa-tear-down-automations/SKILL.md +26 -6
- package/plugins/lisa/skills/lisa-tear-down-automations/agents/openai.yaml +2 -2
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/scripts/automation-status-claude-adapter.mjs +36 -18
- package/plugins/lisa-agy/scripts/automation-status-codex-adapter.mjs +50 -27
- package/plugins/lisa-agy/scripts/automation-status-expected-fleet.mjs +149 -6
- package/plugins/lisa-agy/skills/lisa-automation-status/SKILL.md +14 -8
- package/plugins/lisa-agy/skills/lisa-setup-automations/SKILL.md +116 -1
- package/plugins/lisa-agy/skills/lisa-tear-down-automations/SKILL.md +26 -6
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/scripts/automation-status-claude-adapter.mjs +36 -18
- package/plugins/lisa-copilot/scripts/automation-status-codex-adapter.mjs +50 -27
- package/plugins/lisa-copilot/scripts/automation-status-expected-fleet.mjs +149 -6
- package/plugins/lisa-copilot/skills/lisa-automation-status/SKILL.md +14 -8
- package/plugins/lisa-copilot/skills/lisa-setup-automations/SKILL.md +116 -1
- package/plugins/lisa-copilot/skills/lisa-tear-down-automations/SKILL.md +26 -6
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/scripts/automation-status-claude-adapter.mjs +36 -18
- package/plugins/lisa-cursor/scripts/automation-status-codex-adapter.mjs +50 -27
- package/plugins/lisa-cursor/scripts/automation-status-expected-fleet.mjs +149 -6
- package/plugins/lisa-cursor/skills/lisa-automation-status/SKILL.md +14 -8
- package/plugins/lisa-cursor/skills/lisa-setup-automations/SKILL.md +116 -1
- package/plugins/lisa-cursor/skills/lisa-tear-down-automations/SKILL.md +26 -6
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/scripts/automation-status-claude-adapter.mjs +36 -18
- package/plugins/src/base/scripts/automation-status-codex-adapter.mjs +50 -27
- package/plugins/src/base/scripts/automation-status-expected-fleet.mjs +149 -6
- package/plugins/src/base/skills/lisa-automation-status/SKILL.md +14 -8
- package/plugins/src/base/skills/lisa-setup-automations/SKILL.md +116 -1
- package/plugins/src/base/skills/lisa-tear-down-automations/SKILL.md +26 -6
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lisa-setup-automations
|
|
3
3
|
description: "Set up the recurring Lisa automations on the local workstation using the CURRENT runtime's native scheduler — Codex automations (the native automations / automation_update mechanism) or, on Claude, /schedule. This skill is a declarative specification: it states WHICH automations to create, how often, and with which parameters; it does not template schedule files or run scheduling code itself — the runtime's native automation mechanism does the creating. Creates six default automations: intake-repair (every 60 min), intake PRD (every 60 min), intake tickets (every 10 min), exploratory-bugs (once a day), exploratory-prds (once a day), monitor (once a day) — plus opt-in learnings-audit (once a week, the gardener). Three flags: auto-start-prds and auto-start-tickets control whether ideated PRDs / filed bug tickets are created auto-pickup-ready (prd_ready / ready, default true) or left for human review; learnings-audit (default false) opts into the weekly gardener loop. Tear down with /tear-down-automations."
|
|
4
|
-
allowed-tools: ["Skill", "Bash", "Read"]
|
|
4
|
+
allowed-tools: ["Skill", "Bash", "Read", "Write", "Edit"]
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Set up Lisa automations: $ARGUMENTS
|
|
@@ -105,6 +105,19 @@ the scheduled commands (for example `/lisa:intake acme/frontend intake_mode=prd`
|
|
|
105
105
|
config/read-context failure cannot silently redirect the cron. A short queueRepo is normalized to
|
|
106
106
|
`github.org` before writing the automation.
|
|
107
107
|
|
|
108
|
+
**Registration prompt shape (so status can read the command back).** Whatever prose the prompt
|
|
109
|
+
carries, it must contain the **literal Lisa command on a line of its own**, exactly as scheduled and
|
|
110
|
+
with every `owner/repo` already baked in:
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
/lisa:intake acme/planning intake_mode=build
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
This holds for loops that take **no arguments** too — `/lisa:monitor` and `/lisa:learnings:audit`
|
|
117
|
+
are written the same way, on their own line, with nothing after them. `/lisa:automation-status`
|
|
118
|
+
reads that line back to compare the live registration against this contract; a loop whose command
|
|
119
|
+
cannot be read back reports as drifted even though it is registered correctly.
|
|
120
|
+
|
|
108
121
|
**Naming + scope (so teardown is precise).** Name each automation with the stable prefix
|
|
109
122
|
`lisa-auto-<project>-` (e.g. `lisa-auto-<project>-intake-tickets`), where `<project>` identifies this
|
|
110
123
|
repo, and scope each Codex automation to the durable project automation checkout described above.
|
|
@@ -115,6 +128,91 @@ repos (don't rely on a bare repo basename when it could collide; qualify it, e.g
|
|
|
115
128
|
**Idempotent.** Re-running this skill updates the existing `lisa-auto-<project>-*` automations in
|
|
116
129
|
place (same names) rather than creating duplicates.
|
|
117
130
|
|
|
131
|
+
## Runbook scaffolding
|
|
132
|
+
|
|
133
|
+
Registration is what pulls a loop under the `automation-runbook-contract` rule, so registration is
|
|
134
|
+
what must produce its runbook. For **every automation actually registered above** — including the
|
|
135
|
+
conditionally-guarded `exploratory-bugs` and the opt-in `learnings-audit` — write a checked-in
|
|
136
|
+
runbook at:
|
|
137
|
+
|
|
138
|
+
```text
|
|
139
|
+
.lisa/automations/<loop-id>.runbook.md
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
`<loop-id>` is the automation's suffix, not its full name: `intake-tickets`, not
|
|
143
|
+
`lisa-auto-<project>-intake-tickets`. These files are **project knowledge and belong in git**, like
|
|
144
|
+
`.lisa/PROJECT_LEARNINGS.md` — commit them; they are not scratch output. Derive the set of runbooks
|
|
145
|
+
from what was registered on this run: a loop that was **skipped gets no runbook**, and a loop
|
|
146
|
+
registered later gets one when this skill next runs. Never write a runbook from a fixed list of
|
|
147
|
+
loop names.
|
|
148
|
+
|
|
149
|
+
Follow the `automation-runbook-contract` rule for the runbook's shape: its ten sections, in its
|
|
150
|
+
order, in its prose register. **Do not restate the template, the run outcomes, or the escalation
|
|
151
|
+
packet here** — cite the rule and instantiate it.
|
|
152
|
+
|
|
153
|
+
**File shape — two halves with different owners.**
|
|
154
|
+
|
|
155
|
+
1. A **machine-resolved header block**, delimited exactly by
|
|
156
|
+
`<!-- lisa:machine-resolved:start -->` and `<!-- lisa:machine-resolved:end -->`, written first
|
|
157
|
+
in the file. Lisa owns it: on every run it is **rewritten wholesale** from the values resolved
|
|
158
|
+
above. It carries the project identity (`<owner>/<repo>` and the `<project>` token), the loop
|
|
159
|
+
id, the full automation name, the exact scheduled command with every `owner/repo` already baked
|
|
160
|
+
in (never a placeholder), the human cadence and its `rrule`, the resolved queue arguments, and
|
|
161
|
+
the resolved flag values that shaped the command (`auto-start-prds` / `auto-start-tickets` /
|
|
162
|
+
`learnings-audit`). Its **first line inside the delimiters is a visible sentence**, so the
|
|
163
|
+
ownership boundary survives rendering to markdown where HTML comments disappear:
|
|
164
|
+
|
|
165
|
+
```text
|
|
166
|
+
Lisa rewrites this section on every /lisa:setup-automations run — edits here are lost. Your prose
|
|
167
|
+
belongs in the sections below.
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Immediately **below** the closing delimiter, write one more visible line — `Everything below is
|
|
171
|
+
yours.` — so an operator reading the rendered page knows where their half starts.
|
|
172
|
+
2. The **ten contract sections** below it. Lisa owns them **only on first write**, then they belong
|
|
173
|
+
to the operator. Seed them deterministically, never improvised:
|
|
174
|
+
- **Intent, Sources of truth, Candidate selection, Scope/bounds, Retirement condition** come
|
|
175
|
+
from the per-loop seed table below.
|
|
176
|
+
- **Proof, Autonomous-vs-approval boundary, Escalation, Recovery, Next-run state** are derived
|
|
177
|
+
from **that loop's own SKILL.md** — named per loop in the table's last column — so the runbook
|
|
178
|
+
describes what the loop actually does rather than a generic paraphrase. Quote its behavior in
|
|
179
|
+
the operator's voice; if the skill file is unreadable, write one sentence saying the section
|
|
180
|
+
was not derivable and which file to read, and continue.
|
|
181
|
+
|
|
182
|
+
Every seeded sentence is written for a non-technical operator (`factory-model` rule 5).
|
|
183
|
+
|
|
184
|
+
### Per-loop seed defaults
|
|
185
|
+
|
|
186
|
+
One line each; expand them into the operator's voice, keep the meaning.
|
|
187
|
+
|
|
188
|
+
| Loop | Intent | Sources of truth | Candidate selection | Scope/bounds | Retirement condition | Derive the other five from |
|
|
189
|
+
|---|---|---|---|---|---|---|
|
|
190
|
+
| **intake-repair** | Keeps the queues unstuck: work that stalled mid-flight gets diagnosed and moved again. | The PRD and build queues for this project, read through the tracker access layer. | Stuck or half-closed items — stalled in an in-progress role, terminal-labeled but still open, rollups whose children are all done — up to the `max_candidates` cap. | Only this project's configured queues; it repairs lifecycle state, never invents or closes real work. | Propose teardown when nothing has needed repair for a long quiet window AND this run found nothing. | `lisa-repair-intake/SKILL.md` |
|
|
191
|
+
| **intake-prd** | Keeps PRDs moving: a PRD a human marked ready gets validated and decomposed into work items. | The configured PRD queue and its lifecycle roles, read through the source access layer. | The oldest PRD in the ready role, one per run. | Only this project's PRD queue; it never authors product intent, only validates and decomposes it. | Propose teardown when no PRD has entered the queue for a long quiet window AND this run proposed nothing. | `lisa-intake/SKILL.md` |
|
|
192
|
+
| **intake-tickets** | Keeps the build queue moving: work items a human marked ready get built, reviewed, and shipped. | The configured tracker's build queue lanes plus each item's comments and linked PRs. | The oldest eligible leaf work item in the ready lane, one per run. | Only this repo's configured queue; containers with open children are repaired out, never built. | Propose teardown when no work item has entered this queue for a long quiet window AND this run proposed nothing. | `lisa-intake/SKILL.md` |
|
|
193
|
+
| **monitor** | Keeps production honest: observability regressions become tracked work instead of silent decay. | The connected observability providers, each through its access layer, plus this project's `monitor.gapTiers` config. | The regressions and coverage gaps this cycle surfaced, capped per run. | Only this project's own services and dashboards; it files findings, it never changes production. | Propose teardown when the project has no connected observability surfaces AND this run found nothing. | `lisa-monitor/SKILL.md` |
|
|
194
|
+
| **exploratory-prds** | Keeps the idea pipeline fed: the product's own gaps become PRDs when the PRD queue has room. | The PRD queue's pressure roles (the same ones `/lisa:queue-status` reports) and the project's own product surfaces. | One ideated PRD per run, and only when the pressure gate says the queue has capacity. | Never more than one PRD per run, and nothing at all while unresolved PRD pressure exists. | Propose teardown when the queue has been at pressure — or the project has shipped no new surface — across a long quiet window AND this run proposed nothing. | `lisa-project-ideation/SKILL.md` |
|
|
195
|
+
| **exploratory-bugs** | Keeps quality visible: bugs and usability problems get found by using the product, before a customer does. | The running application through its exploratory-qa surface, plus this project's existing bug queue for dedupe. | The findings of one exploratory session, capped per run and deduped against already-filed items. | Only this project's own app; it files tickets, it never changes product code. | Propose teardown when no session has produced a finding across a long quiet window AND this run found nothing. | `lisa-exploratory-qa/SKILL.md` (the stack's own copy) |
|
|
196
|
+
| **learnings-audit** | Keeps the project's knowledge true: stale, duplicated, or contradicted knowledge gets proposed for promotion, demotion, or retirement. | The learnings ledger, the rules trees, the skills, and the wiki — the project's knowledge surfaces. | The knowledge entries this audit judged stale, duplicated, or contradicted, capped per run. | It only proposes; every promote/demote/retire decision is a human-gated tracker ticket. | Propose teardown when the audit has proposed nothing across a long quiet window AND this run proposed nothing. | `lisa-learnings-audit/SKILL.md` |
|
|
197
|
+
|
|
198
|
+
A loop not in this table — one registered later — seeds all ten sections from its own SKILL.md the
|
|
199
|
+
same way. The table is seed prose for first write only; it is **not** a roster and never decides
|
|
200
|
+
which automations exist.
|
|
201
|
+
|
|
202
|
+
**Re-run rule (idempotent, never clobber).** When the file already exists: rewrite the
|
|
203
|
+
machine-resolved block in place and **leave every one of the ten sections exactly as found** — an
|
|
204
|
+
operator's edited Intent paragraph survives verbatim. If a contract section is **missing** from an
|
|
205
|
+
existing file, insert it **at its position in the contract's ten-section order** (never merely
|
|
206
|
+
appended at the end, which would leave the file permanently out of order) with its seeded default.
|
|
207
|
+
Never overwrite, reorder, reword, or delete prose already on disk. If the machine-resolved
|
|
208
|
+
delimiters are absent (a hand-written file), insert the block at the top and touch nothing else.
|
|
209
|
+
|
|
210
|
+
**Never a precondition.** A runbook that cannot be written is a **degradation, not a blocker**:
|
|
211
|
+
report the failure and continue registering automations. A loop with a missing runbook still runs —
|
|
212
|
+
on the contract's defaults, saying so in its one-line summary — per the contract's
|
|
213
|
+
never-block-always-degrade rule. Scaffolding failure never aborts setup and never leaves an
|
|
214
|
+
automation unregistered.
|
|
215
|
+
|
|
118
216
|
## Conditions / guards
|
|
119
217
|
|
|
120
218
|
- **exploratory-bugs** is created only when the project ships an `exploratory-qa` command (the
|
|
@@ -134,3 +232,20 @@ place (same names) rather than creating duplicates.
|
|
|
134
232
|
|
|
135
233
|
List each automation created or updated (name, the command it runs, cadence, and the resolved
|
|
136
234
|
`auto-start-prds` / `auto-start-tickets` values), plus any automation skipped and why.
|
|
235
|
+
|
|
236
|
+
Then list each runbook written, by path (`.lisa/automations/<loop-id>.runbook.md`), saying for each
|
|
237
|
+
whether it was **created** (seeded fresh) or **refreshed** (machine-resolved block rewritten,
|
|
238
|
+
operator prose left untouched). Name every skipped loop again here and state plainly that it has no
|
|
239
|
+
runbook because it was not registered, and why — for example, "exploratory-bugs was skipped because
|
|
240
|
+
this project ships no exploratory-qa command, so no runbook was written for it."
|
|
241
|
+
|
|
242
|
+
Close with the two lines that tell the operator what to do next:
|
|
243
|
+
|
|
244
|
+
- When any runbook was newly created: "N new files were written under `.lisa/automations/` — commit
|
|
245
|
+
them so the whole team sees them."
|
|
246
|
+
- When a runbook could not be written: name which one and what failed, then the consequence and the
|
|
247
|
+
fix — "that loop runs on defaults and its summaries will lead with 'Runbook missing' — re-run
|
|
248
|
+
`/lisa:setup-automations` to fix." The automation itself is still registered and still runs.
|
|
249
|
+
|
|
250
|
+
Every line states the consequence and the action, in words a non-technical operator can act on
|
|
251
|
+
without reading code.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lisa-tear-down-automations
|
|
3
|
-
description: "Remove every recurring Lisa automation that /setup-automations
|
|
3
|
+
description: "Remove every recurring Lisa automation that /setup-automations registered for this project — whatever is actually registered under the lisa-auto-<project>-* prefix, including the opt-in learnings-audit gardener — 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: 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."
|
|
4
4
|
allowed-tools: ["Skill", "Bash", "Read"]
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -21,14 +21,34 @@ removes them with its **native** scheduling mechanism.
|
|
|
21
21
|
|
|
22
22
|
## Scope (remove only what setup created)
|
|
23
23
|
|
|
24
|
-
- Remove
|
|
25
|
-
stable `lisa-auto-<project>-` name prefix
|
|
26
|
-
`
|
|
24
|
+
- Remove **every** automation `/setup-automations` registered for the current project — the whole
|
|
25
|
+
set found under the stable `lisa-auto-<project>-` name prefix, whatever it currently contains.
|
|
26
|
+
**Membership is registration, not a roster** (`automation-runbook-contract`): sweep the prefix and
|
|
27
|
+
remove what is there. Do **not** work from a fixed list of loop names — a list drifts the moment a
|
|
28
|
+
loop is added, which is exactly how the opt-in gardener came to be orphaned.
|
|
29
|
+
- This explicitly includes the opt-in **`learnings-audit`** gardener when it is registered:
|
|
30
|
+
`/setup-automations learnings-audit=true` registers it under the same prefix, so teardown removes
|
|
31
|
+
it with the rest. A conditionally-skipped loop (e.g. `exploratory-bugs` on a stack without
|
|
32
|
+
`exploratory-qa`) simply is not in the sweep.
|
|
27
33
|
- **Never** remove automations for a different project, or any non-Lisa automation (e.g. unrelated
|
|
28
34
|
crawlers/ingestors). Match strictly on the `lisa-auto-<project>-` prefix for THIS project; when in
|
|
29
35
|
doubt about an automation's ownership, leave it and report it rather than deleting it.
|
|
30
|
-
- **Idempotent** — an automation that is already absent is a no-op, not an error.
|
|
36
|
+
- **Idempotent** — an automation that is already absent is a no-op, not an error. Re-running when
|
|
37
|
+
the prefix sweep finds nothing is a clean, successful no-op.
|
|
38
|
+
- **Leave the runbooks alone.** The checked-in `.lisa/automations/<loop-id>.runbook.md` files that
|
|
39
|
+
`/setup-automations` scaffolded are project knowledge and the historical record of what these
|
|
40
|
+
loops did. Teardown removes scheduler registrations only; it never deletes, edits, or moves a
|
|
41
|
+
runbook file. An operator who wants them gone removes them deliberately, in git.
|
|
31
42
|
|
|
32
43
|
## Report
|
|
33
44
|
|
|
34
|
-
List each automation removed
|
|
45
|
+
List each automation removed by name. For "already absent", compare against the one source of truth
|
|
46
|
+
— the fleet `scripts/automation-status-expected-fleet.mjs` (`resolveExpectedAutomationFleet`)
|
|
47
|
+
resolves for this project — and name anything it expects that the sweep did not find; that is a
|
|
48
|
+
no-op, not an error. Do not invent an expected set of your own.
|
|
49
|
+
|
|
50
|
+
Then state, in the operator's words, that the runbook files under `.lisa/automations/` were left on
|
|
51
|
+
disk **and why**: they are the written record of what those jobs did, kept on purpose, and if you
|
|
52
|
+
do not want them you delete them yourself in git. Finally, confirm that nothing outside this
|
|
53
|
+
project's `lisa-auto-<project>-` prefix was touched. Write it so a non-technical operator can
|
|
54
|
+
confirm what happened without reading code.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.253.0",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.253.0",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.253.0",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.253.0",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.253.0",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|