@codyswann/lisa 2.175.3 → 2.176.1
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/strategies/copy-contents.d.ts +14 -0
- package/dist/strategies/copy-contents.d.ts.map +1 -1
- package/dist/strategies/copy-contents.js +34 -0
- package/dist/strategies/copy-contents.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/upstream-to-lisa.md +20 -0
- 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/upstream-to-lisa.md +20 -0
- 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/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/upstream-to-lisa.md +20 -0
- package/plugins/src/base/rules/reference/upstream-to-lisa.md +44 -0
- /package/typescript/{copy-contents → copy-overwrite}/scripts/lisa-mutation.mjs +0 -0
|
@@ -52,6 +52,20 @@ export declare class CopyContentsStrategy implements ICopyStrategy {
|
|
|
52
52
|
* @returns Result of the merge operation
|
|
53
53
|
*/
|
|
54
54
|
private handleMerge;
|
|
55
|
+
/**
|
|
56
|
+
* Overwrite the destination with the full source content.
|
|
57
|
+
*
|
|
58
|
+
* Used when a copy-contents source carries no guardrails block: such a file
|
|
59
|
+
* cannot be block-merged, and the append fallback would duplicate the entire
|
|
60
|
+
* file on every content change. Overwriting matches the file's intent (a
|
|
61
|
+
* fully Lisa-managed file) and is idempotent.
|
|
62
|
+
* @param destPath Destination file path
|
|
63
|
+
* @param relativePath Relative path
|
|
64
|
+
* @param sourceContent Full source content to write
|
|
65
|
+
* @param context Strategy context
|
|
66
|
+
* @returns Result of the overwrite operation
|
|
67
|
+
*/
|
|
68
|
+
private handleOverwrite;
|
|
55
69
|
/**
|
|
56
70
|
* Apply copy-contents strategy: Create, replace block, or append to file
|
|
57
71
|
* @param sourcePath - Source file path
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy-contents.d.ts","sourceRoot":"","sources":["../../src/strategies/copy-contents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG9E;;;;;;GAMG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IACxD,QAAQ,CAAC,IAAI,EAAG,eAAe,CAAU;IAEzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA4B;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0B;IAE5D;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA0BpB;;;;;;;OAOG;YACW,aAAa;IAc3B;;;;;;;OAOG;YACW,WAAW;IAkBzB;;;;;;;OAOG;IACG,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"copy-contents.d.ts","sourceRoot":"","sources":["../../src/strategies/copy-contents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG9E;;;;;;GAMG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IACxD,QAAQ,CAAC,IAAI,EAAG,eAAe,CAAU;IAEzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA4B;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0B;IAE5D;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IA0BpB;;;;;;;OAOG;YACW,aAAa;IAc3B;;;;;;;OAOG;YACW,WAAW;IAkBzB;;;;;;;;;;;;OAYG;YACW,eAAe;IAkB7B;;;;;;;OAOG;IACG,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,mBAAmB,CAAC;CAqChC"}
|
|
@@ -107,6 +107,31 @@ export class CopyContentsStrategy {
|
|
|
107
107
|
action: "merged",
|
|
108
108
|
};
|
|
109
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Overwrite the destination with the full source content.
|
|
112
|
+
*
|
|
113
|
+
* Used when a copy-contents source carries no guardrails block: such a file
|
|
114
|
+
* cannot be block-merged, and the append fallback would duplicate the entire
|
|
115
|
+
* file on every content change. Overwriting matches the file's intent (a
|
|
116
|
+
* fully Lisa-managed file) and is idempotent.
|
|
117
|
+
* @param destPath Destination file path
|
|
118
|
+
* @param relativePath Relative path
|
|
119
|
+
* @param sourceContent Full source content to write
|
|
120
|
+
* @param context Strategy context
|
|
121
|
+
* @returns Result of the overwrite operation
|
|
122
|
+
*/
|
|
123
|
+
async handleOverwrite(destPath, relativePath, sourceContent, context) {
|
|
124
|
+
const { config, backupFile } = context;
|
|
125
|
+
if (!config.dryRun) {
|
|
126
|
+
await backupFile(destPath);
|
|
127
|
+
await writeFile(destPath, sourceContent, "utf-8");
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
relativePath,
|
|
131
|
+
strategy: this.name,
|
|
132
|
+
action: "overwritten",
|
|
133
|
+
};
|
|
134
|
+
}
|
|
110
135
|
/**
|
|
111
136
|
* Apply copy-contents strategy: Create, replace block, or append to file
|
|
112
137
|
* @param sourcePath - Source file path
|
|
@@ -125,6 +150,15 @@ export class CopyContentsStrategy {
|
|
|
125
150
|
}
|
|
126
151
|
const sourceContent = await readFile(sourcePath, "utf-8");
|
|
127
152
|
const destContent = await readFile(destPath, "utf-8");
|
|
153
|
+
// A copy-contents source must itself carry a guardrails block to manage.
|
|
154
|
+
// Without a BEGIN marker there is no block to replace, and the append
|
|
155
|
+
// fallback would duplicate the whole file on every content change (the
|
|
156
|
+
// bug that shipped lisa-mutation.mjs twice). Such a file is fully
|
|
157
|
+
// Lisa-managed and belongs in copy-overwrite — treat it as an overwrite
|
|
158
|
+
// here so a miscategorized file can never silently self-duplicate.
|
|
159
|
+
if (!sourceContent.includes(this.BEGIN_MARKER_PREFIX)) {
|
|
160
|
+
return this.handleOverwrite(destPath, relativePath, sourceContent, context);
|
|
161
|
+
}
|
|
128
162
|
const mergedContent = this.mergeContent(sourceContent, destContent);
|
|
129
163
|
if (mergedContent === destContent) {
|
|
130
164
|
return { relativePath, strategy: this.name, action: "skipped" };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy-contents.js","sourceRoot":"","sources":["../../src/strategies/copy-contents.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"copy-contents.js","sourceRoot":"","sources":["../../src/strategies/copy-contents.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
"ws": ">=8.20.1"
|
|
92
92
|
},
|
|
93
93
|
"name": "@codyswann/lisa",
|
|
94
|
-
"version": "2.
|
|
94
|
+
"version": "2.176.1",
|
|
95
95
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
96
96
|
"main": "dist/index.js",
|
|
97
97
|
"exports": {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Upstream To Lisa (load-bearing)
|
|
2
|
+
|
|
3
|
+
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`**.
|
|
4
|
+
|
|
5
|
+
When that happens, you have **two obligations — do both**:
|
|
6
|
+
|
|
7
|
+
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.
|
|
8
|
+
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.
|
|
9
|
+
|
|
10
|
+
## Do not
|
|
11
|
+
|
|
12
|
+
- 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.
|
|
13
|
+
- 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.
|
|
14
|
+
- Do **not** file the issue in this project's repo — it must land in `CodySwannGT/lisa`.
|
|
15
|
+
|
|
16
|
+
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.
|
|
17
|
+
|
|
18
|
+
> Not applicable when you are already working **inside the Lisa repo itself** — there the fix is local, so just make it directly.
|
|
19
|
+
|
|
20
|
+
Full procedure: [reference/upstream-to-lisa.md](../reference/upstream-to-lisa.md).
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Upstream To Lisa
|
|
2
|
+
|
|
3
|
+
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*.
|
|
4
|
+
|
|
5
|
+
## When this applies
|
|
6
|
+
|
|
7
|
+
You are working in a downstream/host project (not the Lisa source repo) and you discover one of:
|
|
8
|
+
|
|
9
|
+
- A bug or gap in a Lisa-distributed **template, rule, skill, agent, hook, or CI workflow**.
|
|
10
|
+
- A **governance pattern** discovered here that should be generalized back into Lisa's templates so every project benefits.
|
|
11
|
+
- 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`**.
|
|
12
|
+
|
|
13
|
+
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.
|
|
14
|
+
|
|
15
|
+
## What to do — both steps, always
|
|
16
|
+
|
|
17
|
+
### 1. Fix it locally so you are not blocked
|
|
18
|
+
|
|
19
|
+
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.
|
|
20
|
+
|
|
21
|
+
### 2. File an upstream issue in the Lisa repository
|
|
22
|
+
|
|
23
|
+
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.
|
|
24
|
+
|
|
25
|
+
The issue should capture, following the skill's three-audience / acceptance-criteria conventions:
|
|
26
|
+
|
|
27
|
+
- **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.
|
|
28
|
+
- **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.
|
|
29
|
+
- **Proposed durable fix** — the change to make in Lisa's source so it propagates to all projects on the next apply.
|
|
30
|
+
- **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.
|
|
31
|
+
|
|
32
|
+
## Do not
|
|
33
|
+
|
|
34
|
+
- 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.
|
|
35
|
+
- 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.
|
|
36
|
+
- Do **not** file the issue in this project's own repo. The durable fix is tracked in `CodySwannGT/lisa`.
|
|
37
|
+
|
|
38
|
+
## Access fallback
|
|
39
|
+
|
|
40
|
+
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.
|
|
41
|
+
|
|
42
|
+
## Not applicable inside the Lisa repo itself
|
|
43
|
+
|
|
44
|
+
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,20 @@
|
|
|
1
|
+
# Upstream To Lisa (load-bearing)
|
|
2
|
+
|
|
3
|
+
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`**.
|
|
4
|
+
|
|
5
|
+
When that happens, you have **two obligations — do both**:
|
|
6
|
+
|
|
7
|
+
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.
|
|
8
|
+
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.
|
|
9
|
+
|
|
10
|
+
## Do not
|
|
11
|
+
|
|
12
|
+
- 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.
|
|
13
|
+
- 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.
|
|
14
|
+
- Do **not** file the issue in this project's repo — it must land in `CodySwannGT/lisa`.
|
|
15
|
+
|
|
16
|
+
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.
|
|
17
|
+
|
|
18
|
+
> Not applicable when you are already working **inside the Lisa repo itself** — there the fix is local, so just make it directly.
|
|
19
|
+
|
|
20
|
+
Full procedure: [reference/upstream-to-lisa.md](../reference/upstream-to-lisa.md).
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Upstream To Lisa
|
|
2
|
+
|
|
3
|
+
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*.
|
|
4
|
+
|
|
5
|
+
## When this applies
|
|
6
|
+
|
|
7
|
+
You are working in a downstream/host project (not the Lisa source repo) and you discover one of:
|
|
8
|
+
|
|
9
|
+
- A bug or gap in a Lisa-distributed **template, rule, skill, agent, hook, or CI workflow**.
|
|
10
|
+
- A **governance pattern** discovered here that should be generalized back into Lisa's templates so every project benefits.
|
|
11
|
+
- 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`**.
|
|
12
|
+
|
|
13
|
+
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.
|
|
14
|
+
|
|
15
|
+
## What to do — both steps, always
|
|
16
|
+
|
|
17
|
+
### 1. Fix it locally so you are not blocked
|
|
18
|
+
|
|
19
|
+
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.
|
|
20
|
+
|
|
21
|
+
### 2. File an upstream issue in the Lisa repository
|
|
22
|
+
|
|
23
|
+
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.
|
|
24
|
+
|
|
25
|
+
The issue should capture, following the skill's three-audience / acceptance-criteria conventions:
|
|
26
|
+
|
|
27
|
+
- **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.
|
|
28
|
+
- **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.
|
|
29
|
+
- **Proposed durable fix** — the change to make in Lisa's source so it propagates to all projects on the next apply.
|
|
30
|
+
- **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.
|
|
31
|
+
|
|
32
|
+
## Do not
|
|
33
|
+
|
|
34
|
+
- 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.
|
|
35
|
+
- 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.
|
|
36
|
+
- Do **not** file the issue in this project's own repo. The durable fix is tracked in `CodySwannGT/lisa`.
|
|
37
|
+
|
|
38
|
+
## Access fallback
|
|
39
|
+
|
|
40
|
+
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.
|
|
41
|
+
|
|
42
|
+
## Not applicable inside the Lisa repo itself
|
|
43
|
+
|
|
44
|
+
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,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.1",
|
|
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.1",
|
|
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.1",
|
|
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.1",
|
|
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.1",
|
|
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"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Upstream To Lisa (load-bearing)
|
|
2
|
+
|
|
3
|
+
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`**.
|
|
4
|
+
|
|
5
|
+
When that happens, you have **two obligations — do both**:
|
|
6
|
+
|
|
7
|
+
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.
|
|
8
|
+
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.
|
|
9
|
+
|
|
10
|
+
## Do not
|
|
11
|
+
|
|
12
|
+
- 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.
|
|
13
|
+
- 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.
|
|
14
|
+
- Do **not** file the issue in this project's repo — it must land in `CodySwannGT/lisa`.
|
|
15
|
+
|
|
16
|
+
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.
|
|
17
|
+
|
|
18
|
+
> Not applicable when you are already working **inside the Lisa repo itself** — there the fix is local, so just make it directly.
|
|
19
|
+
|
|
20
|
+
Full procedure: [reference/upstream-to-lisa.md](../reference/upstream-to-lisa.md).
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Upstream To Lisa
|
|
2
|
+
|
|
3
|
+
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*.
|
|
4
|
+
|
|
5
|
+
## When this applies
|
|
6
|
+
|
|
7
|
+
You are working in a downstream/host project (not the Lisa source repo) and you discover one of:
|
|
8
|
+
|
|
9
|
+
- A bug or gap in a Lisa-distributed **template, rule, skill, agent, hook, or CI workflow**.
|
|
10
|
+
- A **governance pattern** discovered here that should be generalized back into Lisa's templates so every project benefits.
|
|
11
|
+
- 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`**.
|
|
12
|
+
|
|
13
|
+
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.
|
|
14
|
+
|
|
15
|
+
## What to do — both steps, always
|
|
16
|
+
|
|
17
|
+
### 1. Fix it locally so you are not blocked
|
|
18
|
+
|
|
19
|
+
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.
|
|
20
|
+
|
|
21
|
+
### 2. File an upstream issue in the Lisa repository
|
|
22
|
+
|
|
23
|
+
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.
|
|
24
|
+
|
|
25
|
+
The issue should capture, following the skill's three-audience / acceptance-criteria conventions:
|
|
26
|
+
|
|
27
|
+
- **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.
|
|
28
|
+
- **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.
|
|
29
|
+
- **Proposed durable fix** — the change to make in Lisa's source so it propagates to all projects on the next apply.
|
|
30
|
+
- **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.
|
|
31
|
+
|
|
32
|
+
## Do not
|
|
33
|
+
|
|
34
|
+
- 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.
|
|
35
|
+
- 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.
|
|
36
|
+
- Do **not** file the issue in this project's own repo. The durable fix is tracked in `CodySwannGT/lisa`.
|
|
37
|
+
|
|
38
|
+
## Access fallback
|
|
39
|
+
|
|
40
|
+
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.
|
|
41
|
+
|
|
42
|
+
## Not applicable inside the Lisa repo itself
|
|
43
|
+
|
|
44
|
+
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.
|
|
File without changes
|