@codyswann/lisa 2.175.2 → 2.176.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/dist/migrations/ensure-audit-ignore-local-exclusions.d.ts.map +1 -1
- package/dist/migrations/ensure-audit-ignore-local-exclusions.js.map +1 -1
- 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/rules/eager/security-audit-handling.md +20 -15
- package/plugins/lisa/rules/eager/upstream-to-lisa.md +20 -0
- package/plugins/lisa/rules/reference/security-audit-handling.md +38 -19
- package/plugins/lisa/rules/reference/upstream-to-lisa.md +44 -0
- package/plugins/lisa-agy/plugin.json +1 -1
- 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/rules/eager/security-audit-handling.md +20 -15
- package/plugins/lisa-copilot/rules/eager/upstream-to-lisa.md +20 -0
- package/plugins/lisa-copilot/rules/reference/security-audit-handling.md +38 -19
- package/plugins/lisa-copilot/rules/reference/upstream-to-lisa.md +44 -0
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/rules/security-audit-handling-reference.mdc +38 -19
- package/plugins/lisa-cursor/rules/security-audit-handling.mdc +20 -15
- package/plugins/lisa-cursor/rules/upstream-to-lisa-reference.mdc +49 -0
- package/plugins/lisa-cursor/rules/upstream-to-lisa.mdc +25 -0
- 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/rules/eager/security-audit-handling.md +20 -15
- package/plugins/src/base/rules/eager/upstream-to-lisa.md +20 -0
- package/plugins/src/base/rules/reference/security-audit-handling.md +38 -19
- package/plugins/src/base/rules/reference/upstream-to-lisa.md +44 -0
|
@@ -5,20 +5,29 @@ alwaysApply: false
|
|
|
5
5
|
|
|
6
6
|
# Security Audit Handling
|
|
7
7
|
|
|
8
|
-
If `git push` fails because the pre-push hook reports security vulnerabilities,
|
|
8
|
+
If `git push` fails because the pre-push hook reports security vulnerabilities, work the decision ladder below **autonomously**. Only one rung pauses to ask a human. Never use `--no-verify`, `HUSKY=0`, `core.hooksPath`, or any other hook bypass to skip the security audit.
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## The decision ladder
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
The remediation for any high/critical advisory is a simple, ordered decision — not a question to forward to the user. For each advisory, take the **first** action that is possible:
|
|
13
|
+
|
|
14
|
+
1. **Update the offending package** to a patched version.
|
|
15
|
+
2. **If that's not possible**, force a resolution/override on the vulnerable leaf package.
|
|
16
|
+
3. **If that's not possible**, evaluate whether the advisory actually affects the project.
|
|
17
|
+
4. **If it affects the project** (and 1 and 2 weren't possible), ask a human what to do.
|
|
18
|
+
5. **If it doesn't affect the project**, add it to the ignore list yourself.
|
|
19
|
+
|
|
20
|
+
Steps 1, 2, 3, and 5 are autonomous. Do not stop and ask the user except at step 4, and only after you have genuinely attempted steps 1 and 2 and performed the step-3 evaluation.
|
|
15
21
|
|
|
16
22
|
## Node.js Projects (GHSA advisories)
|
|
17
23
|
|
|
18
|
-
1. Note the GHSA ID(s), affected package(s), and advisory URL from the error output
|
|
19
|
-
2. Check the advisory URL to determine
|
|
20
|
-
3. If a patched version exists
|
|
21
|
-
4.
|
|
24
|
+
1. Note the GHSA ID(s), affected package(s), and advisory URL from the error output.
|
|
25
|
+
2. Check the advisory URL to determine whether a patched version of the vulnerable package exists.
|
|
26
|
+
3. **Step 1 — update:** If a patched version exists and is compatible, add a resolution/override in `package.json` to force the patched version (add to **both** `resolutions` and `overrides`), run the package manager install to regenerate the lockfile, commit, and retry the push.
|
|
27
|
+
4. **Step 2 — force override:** If no straight upgrade lands the patched version but a compatible patched version exists somewhere on the graph, pin it via `resolutions` + `overrides` on the **leaf** package (see "Override the vulnerable package, not its parent" below), regenerate the lockfile, commit, and retry.
|
|
28
|
+
5. **Step 3 — evaluate impact:** If neither an upgrade nor an override is possible (no fixed version exists, or every compatible pin breaks a dependent), determine whether the vulnerability actually affects this project. Consider: is the vulnerable code path reachable from this project's usage? Does it process untrusted input? Is the dependency runtime, or dev/build-only? Record the conclusion.
|
|
29
|
+
6. **Step 4 — escalate:** If the evaluation shows the vulnerability **does** affect the project and neither step 1 nor step 2 was possible, ask the user what to do. This is the only step that pauses for a human.
|
|
30
|
+
7. **Step 5 — ignore:** If the evaluation shows the vulnerability **does not** affect the project, add an exclusion entry to `audit.ignore.local.json` yourself, in the format `{"id": "GHSA-xxx", "package": "pkg-name", "reason": "<impact evaluation: why this advisory does not affect this project>"}`, then commit and retry the push. No human approval is required for this step — the `reason` field is the record of your evaluation.
|
|
22
31
|
|
|
23
32
|
### Critical: Override the vulnerable package, not its parent
|
|
24
33
|
|
|
@@ -26,16 +35,26 @@ When the audit output shows a dependency chain like `@expo/cli › glob › mini
|
|
|
26
35
|
|
|
27
36
|
**Never override a parent package to force a lower major version** — other packages in the project may depend on a newer major version, and a resolution/override forces ALL installations to the specified version. For example, overriding `glob` to `^8.1.0` will break `@expo/cli` which requires `glob@^13.0.0`, causing `expo prebuild` to fail with `files.map is not a function`.
|
|
28
37
|
|
|
29
|
-
Before adding a resolution/override, verify:
|
|
30
|
-
- You are targeting the **actually vulnerable package**, not a parent in the chain
|
|
31
|
-
- The override version is **compatible with all dependents** (check with `bun why <package>` or `npm ls <package>`)
|
|
32
|
-
- The override does not **downgrade** a package across a major version boundary that other dependencies require
|
|
38
|
+
Before adding a resolution/override (step 2), verify:
|
|
39
|
+
- You are targeting the **actually vulnerable package**, not a parent in the chain.
|
|
40
|
+
- The override version is **compatible with all dependents** (check with `bun why <package>` or `npm ls <package>`).
|
|
41
|
+
- The override does not **downgrade** a package across a major version boundary that other dependencies require.
|
|
42
|
+
|
|
43
|
+
If any of these checks fail, the override is "not possible" for the purposes of the ladder — drop to step 3 (evaluate impact).
|
|
44
|
+
|
|
45
|
+
### Never
|
|
46
|
+
|
|
47
|
+
- Never add a blanket audit bypass or lower the configured audit level.
|
|
48
|
+
- Never jump to step 4 (ask a human) before genuinely attempting steps 1–3.
|
|
49
|
+
- Never add a step-5 ignore entry without an impact evaluation recorded in its `reason`.
|
|
33
50
|
|
|
34
51
|
## Rails Projects (bundler-audit)
|
|
35
52
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
53
|
+
Same ladder, bundler mechanics:
|
|
54
|
+
|
|
55
|
+
1. Note the advisory ID, affected gem, and advisory URL from the error output.
|
|
56
|
+
2. Check whether a patched version of the gem exists.
|
|
57
|
+
3. **Step 1 — update:** If a patched version exists:
|
|
58
|
+
- **Direct dependency** (in Gemfile): update its version constraint, run `bundle update <gem>`, commit, retry.
|
|
59
|
+
- **Transitive dependency** (only in Gemfile.lock): run `bundle update <gem>` to pull the patched version without changing the Gemfile, commit the lockfile change, retry.
|
|
60
|
+
4. **Steps 3–5 — no patch:** If no patched version exists, evaluate whether the advisory affects the project. If it **does** and no fix is possible, ask the user (step 4). If it **does not**, document the exception and retry (step 5).
|
|
@@ -5,36 +5,41 @@ alwaysApply: true
|
|
|
5
5
|
|
|
6
6
|
# Security Audit Handling (load-bearing)
|
|
7
7
|
|
|
8
|
-
If `git push` fails because the pre-push hook reports security vulnerabilities,
|
|
8
|
+
If `git push` fails because the pre-push hook reports security vulnerabilities, work the decision ladder below **autonomously**. Do not stop to ask the user except at the one rung that explicitly requires it. **Never use `--no-verify`**, `HUSKY=0`, `core.hooksPath`, or any other hook bypass to skip the security audit.
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Decision ladder (do not skip rungs)
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
2. Only if no safe fix exists, ask the user to make the risk-acceptance decision. Add a narrow documented ignore for the specific advisory, package, and reason.
|
|
14
|
-
3. Never add a blanket audit bypass, lower an audit level, or self-approve a new risk-acceptance entry.
|
|
12
|
+
For each high/critical advisory the gate reports, take the **first** action that is possible:
|
|
15
13
|
|
|
16
|
-
|
|
14
|
+
1. **Update the offending package.** Upgrade the actually-vulnerable leaf package to a patched compatible version, regenerate the lockfile, retry the gate. Done.
|
|
15
|
+
2. **If an upgrade isn't possible** (no compatible patched version on the dependency graph): **force a resolution/override** on the vulnerable leaf package (both `resolutions` and `overrides`), regenerate the lockfile, retry. Done.
|
|
16
|
+
3. **If an override isn't possible either** (would break a dependent, or no fixed version exists anywhere): **evaluate whether the advisory actually affects this project** — is the vulnerable code path reachable, does it process untrusted input, is it runtime vs. dev/build-only?
|
|
17
|
+
4. **If it does affect the project** and neither (1) nor (2) was possible: **ask a human** what to do. This is the only rung that pauses for a person.
|
|
18
|
+
5. **If it does not affect the project**: **add a documented exclusion yourself** to `audit.ignore.local.json` (`{"id", "package", "reason"}` — reason states the impact evaluation), commit, retry. No human approval needed.
|
|
19
|
+
|
|
20
|
+
Steps 1, 2, 3, and 5 are autonomous. Only step 4 escalates.
|
|
21
|
+
|
|
22
|
+
## Core override rule
|
|
17
23
|
|
|
18
24
|
Override the actually-vulnerable **leaf package**, not its parent. The audit chain shows `parent › intermediate › vulnerable` — only the vulnerable leaf needs the override.
|
|
19
25
|
|
|
20
26
|
**Never override a parent package to force a lower major version.** Other packages may depend on the newer major; a forced downgrade breaks them.
|
|
21
27
|
|
|
22
|
-
Before adding any override, verify:
|
|
28
|
+
Before adding any override (step 2), verify:
|
|
23
29
|
- You are targeting the actually-vulnerable package, not a parent in the chain.
|
|
24
30
|
- The override is compatible with all dependents (check via `bun why <pkg>` or `npm ls <pkg>`).
|
|
25
31
|
- The override does not downgrade across a major version boundary other deps require.
|
|
26
32
|
|
|
27
|
-
|
|
33
|
+
If those checks fail, the override is "not possible" — drop to step 3.
|
|
34
|
+
|
|
35
|
+
## Never
|
|
28
36
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
- Never add a blanket audit bypass or lower the configured audit level.
|
|
38
|
+
- Never escalate to a human (step 4) before genuinely attempting steps 1–3.
|
|
39
|
+
- Never add an ignore entry (step 5) without an impact evaluation recorded in its `reason`. (This is a policy requirement enforced by convention. The `reason` field is not programmatically validated by Lisa tooling, so its presence relies on Claude following this rule faithfully.)
|
|
32
40
|
|
|
33
41
|
## Rails (bundler-audit)
|
|
34
42
|
|
|
35
|
-
|
|
36
|
-
2. If direct dep with patch: update Gemfile constraint, `bundle update <gem>`, commit, retry.
|
|
37
|
-
3. If transitive with patch: `bundle update <gem>` to bump the lockfile only, commit, retry.
|
|
38
|
-
4. If no patch but safe: document the exception, retry.
|
|
43
|
+
Same ladder. Note advisory ID, gem, URL. (1) Direct dep with patch → update Gemfile constraint, `bundle update <gem>`, retry. (2) Transitive with patch → `bundle update <gem>` to bump the lockfile only, retry. (3) No patch → evaluate impact. (4) Affects the project → ask a human. (5) Doesn't affect → document the exception, retry.
|
|
39
44
|
|
|
40
45
|
Full procedure with examples: [reference/security-audit-handling.md](security-audit-handling-reference.mdc).
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Upstream To Lisa"
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Upstream To Lisa
|
|
7
|
+
|
|
8
|
+
When working in a project that has Lisa installed, you will sometimes find that the **real fix belongs upstream in Lisa**, not in this project. This rule defines what to do so the fix is both unblocking *now* and durable *later*.
|
|
9
|
+
|
|
10
|
+
## When this applies
|
|
11
|
+
|
|
12
|
+
You are working in a downstream/host project (not the Lisa source repo) and you discover one of:
|
|
13
|
+
|
|
14
|
+
- A bug or gap in a Lisa-distributed **template, rule, skill, agent, hook, or CI workflow**.
|
|
15
|
+
- A **governance pattern** discovered here that should be generalized back into Lisa's templates so every project benefits.
|
|
16
|
+
- Anything where the file you want to change is **Lisa-managed** — it carries Lisa governance markers, lives in a path Lisa owns, or any edit would be **overwritten on the next `lisa apply`**.
|
|
17
|
+
|
|
18
|
+
The defining test: *if I fix this only here, does `lisa apply` wipe it out next time?* If yes, the root cause lives in Lisa and must be upstreamed.
|
|
19
|
+
|
|
20
|
+
## What to do — both steps, always
|
|
21
|
+
|
|
22
|
+
### 1. Fix it locally so you are not blocked
|
|
23
|
+
|
|
24
|
+
Apply the stopgap in this project so you can keep working. Do **not** stall waiting for an upstream fix to land. Treat the local change as temporary — it will be clobbered when the upstream fix ships and Lisa re-applies. That is expected and fine; the upstream issue (step 2) is what makes it durable.
|
|
25
|
+
|
|
26
|
+
### 2. File an upstream issue in the Lisa repository
|
|
27
|
+
|
|
28
|
+
Use the `github-write-issue` skill (`lisa:github-write-issue`) to create a GitHub Issue **in Lisa's source repository `CodySwannGT/lisa`** — not in this project's own repo. The skill uses the `gh` CLI; the target repo must be `CodySwannGT/lisa` (e.g. `gh issue create --repo CodySwannGT/lisa ...`), because the agent's default repo is this host project.
|
|
29
|
+
|
|
30
|
+
The issue should capture, following the skill's three-audience / acceptance-criteria conventions:
|
|
31
|
+
|
|
32
|
+
- **Root cause** — which Lisa template/rule/skill/agent/hook/workflow is wrong or missing, with the path under `plugins/src/...` (or the relevant template source) if known.
|
|
33
|
+
- **Symptom** — what broke or was missing in *this* project, and how it surfaced. Reference this project so the fix can be validated against a real case.
|
|
34
|
+
- **Proposed durable fix** — the change to make in Lisa's source so it propagates to all projects on the next apply.
|
|
35
|
+
- **Local stopgap applied** — note that a temporary local fix is in place here, so the maintainer knows the host project is unblocked and the local change will be superseded.
|
|
36
|
+
|
|
37
|
+
## Do not
|
|
38
|
+
|
|
39
|
+
- Do **not** only fix it locally and move on. The local fix is throwaway; without the upstream issue the root cause is lost and re-breaks for every project on the next apply.
|
|
40
|
+
- Do **not** edit Lisa's templates from inside this project. You are not in the Lisa repo; those edits don't exist upstream and get overwritten — they create the illusion of a fix while the real source stays broken.
|
|
41
|
+
- Do **not** file the issue in this project's own repo. The durable fix is tracked in `CodySwannGT/lisa`.
|
|
42
|
+
|
|
43
|
+
## Access fallback
|
|
44
|
+
|
|
45
|
+
If you lack permission to create an issue in `CodySwannGT/lisa`, do not silently drop it. Surface the situation to the user along with the fully-drafted issue contents (root cause, symptom, proposed fix, local stopgap), so a human can file it or grant access.
|
|
46
|
+
|
|
47
|
+
## Not applicable inside the Lisa repo itself
|
|
48
|
+
|
|
49
|
+
When you are already working **inside the Lisa source repo** (`CodySwannGT/lisa`), this rule does not apply — the fix is local to that repo, so make it directly in `plugins/src/...` (and rebuild artifacts) rather than filing an issue against yourself.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Upstream To Lisa (load-bearing)"
|
|
3
|
+
alwaysApply: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Upstream To Lisa (load-bearing)
|
|
7
|
+
|
|
8
|
+
When working in a project that has Lisa installed, you will sometimes find that the **real fix belongs upstream in Lisa**, not in this project — a bug or gap in a Lisa-distributed template, rule, skill, agent, hook, or CI workflow, or a governance pattern worth generalizing back to the templates. Tell-tale signs: the file you want to change is Lisa-managed (carries Lisa governance markers, or lives in a path Lisa owns), and any edit you make here would be **overwritten on the next `lisa apply`**.
|
|
9
|
+
|
|
10
|
+
When that happens, you have **two obligations — do both**:
|
|
11
|
+
|
|
12
|
+
1. **Fix it locally so you are not blocked.** Apply the stopgap in this project so you can keep working. Treat it as temporary: it will be clobbered when the upstream fix ships and Lisa re-applies. Do not wait on the upstream fix.
|
|
13
|
+
2. **File an upstream issue in the Lisa repository.** Use the `github-write-issue` skill (`lisa:github-write-issue`) to create an issue **in Lisa's source repo `CodySwannGT/lisa`** (pass it as the target repo, e.g. `gh ... --repo CodySwannGT/lisa`) — **not** in this project's own repo. Capture: the root cause, the symptom you hit here, and the proposed durable fix in Lisa's templates/rules/skills.
|
|
14
|
+
|
|
15
|
+
## Do not
|
|
16
|
+
|
|
17
|
+
- Do **not** only fix it locally and move on — the local fix is throwaway; without the upstream issue the root cause is lost and re-breaks on the next apply.
|
|
18
|
+
- Do **not** try to edit Lisa's templates from inside this project — you are not in the Lisa repo; those edits don't exist upstream and get overwritten.
|
|
19
|
+
- Do **not** file the issue in this project's repo — it must land in `CodySwannGT/lisa`.
|
|
20
|
+
|
|
21
|
+
If you lack access to file an issue in `CodySwannGT/lisa`, surface that to the user with the proposed issue contents rather than silently dropping it.
|
|
22
|
+
|
|
23
|
+
> Not applicable when you are already working **inside the Lisa repo itself** — there the fix is local, so just make it directly.
|
|
24
|
+
|
|
25
|
+
Full procedure: [reference/upstream-to-lisa.md](upstream-to-lisa-reference.mdc).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.176.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.176.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.176.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.176.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.176.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"
|