@codyswann/lisa 2.77.1 → 2.78.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/rules/config-resolution.md +30 -0
- package/plugins/lisa/skills/doctor/SKILL.md +89 -0
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-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-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-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-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-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-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/src/base/rules/config-resolution.md +30 -0
- package/plugins/src/base/skills/doctor/SKILL.md +89 -0
package/package.json
CHANGED
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"lodash": ">=4.18.1"
|
|
83
83
|
},
|
|
84
84
|
"name": "@codyswann/lisa",
|
|
85
|
-
"version": "2.
|
|
85
|
+
"version": "2.78.0",
|
|
86
86
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
87
87
|
"main": "dist/index.js",
|
|
88
88
|
"exports": {
|
|
@@ -429,6 +429,36 @@ Doctor must validate config in three layers:
|
|
|
429
429
|
Doctor's severity rule is simple: unusable merged config is `FAIL`; locality drift with a still
|
|
430
430
|
usable merged config is `WARN`.
|
|
431
431
|
|
|
432
|
+
### Doctor vendor preflight
|
|
433
|
+
|
|
434
|
+
Once doctor can resolve the merged `tracker` and optional `source`, it must run a read-only vendor
|
|
435
|
+
preflight for those configured vendors only.
|
|
436
|
+
|
|
437
|
+
1. **Audit only the configured vendors**
|
|
438
|
+
- Always audit the merged `tracker`.
|
|
439
|
+
- Audit `source` when present and when it is not already covered by the tracker check.
|
|
440
|
+
- Every other vendor is a doctor `SKIP`, not an implicit pass.
|
|
441
|
+
2. **Read-capable substrate requirement**
|
|
442
|
+
- `github` requires `gh` CLI, a passing `gh auth status`, and read access to the configured
|
|
443
|
+
repo (`github.org` + `github.repo`).
|
|
444
|
+
- `jira` / `confluence` must reuse the `atlassian-access` substrate ladder. Doctor passes when
|
|
445
|
+
at least one supported read-capable substrate (`acli`, Atlassian MCP, or validated curl/API
|
|
446
|
+
token) can prove visibility to the configured `atlassian.cloudId` and target scope.
|
|
447
|
+
- `linear` passes when either the Linear MCP or a validated API-key probe can read the
|
|
448
|
+
configured workspace; tracker mode also requires visibility to `linear.teamKey`.
|
|
449
|
+
- `notion` passes when either the Notion MCP identity matches `notion.workspaceId` or a valid
|
|
450
|
+
internal-integration token does, and the configured `notion.prdDatabaseId` is readable.
|
|
451
|
+
3. **Observed-fact discipline**
|
|
452
|
+
- Missing executable / MCP availability and failed auth/scope probes must be reported
|
|
453
|
+
separately.
|
|
454
|
+
- Preserve the exact probe failure text or status code when a read attempt fails; doctor should
|
|
455
|
+
not collapse repo-not-found, wrong-workspace, and unauthenticated cases into one generic
|
|
456
|
+
readiness error.
|
|
457
|
+
4. **Severity**
|
|
458
|
+
- No read-capable substrate for the configured vendor, or a configured target that remains
|
|
459
|
+
unreadable after all supported probes, is a doctor `FAIL`.
|
|
460
|
+
- A reachable vendor with only auxiliary-substrate degradation is a doctor `WARN`.
|
|
461
|
+
|
|
432
462
|
## Skill mapping
|
|
433
463
|
|
|
434
464
|
The shim → vendor mapping is fixed:
|
|
@@ -104,6 +104,95 @@ this order:
|
|
|
104
104
|
Locality findings are advisory unless the merged config is unusable. Missing shared keys after the
|
|
105
105
|
merge are `FAIL`; shared keys that exist only locally are `WARN`.
|
|
106
106
|
|
|
107
|
+
### Minimum tracker/source preflight checks
|
|
108
|
+
|
|
109
|
+
After config readiness passes far enough to resolve the merged `tracker` and optional `source`,
|
|
110
|
+
doctor must perform read-only preflight checks for the configured vendors only. It does not probe
|
|
111
|
+
every vendor Lisa supports.
|
|
112
|
+
|
|
113
|
+
1. **Scope the audit to configured vendors**
|
|
114
|
+
- Audit the merged `tracker`.
|
|
115
|
+
- Audit the merged `source` only when present and distinct from the tracker.
|
|
116
|
+
- Report every non-configured vendor as `SKIP` rather than pretending it was checked.
|
|
117
|
+
2. **Prove a readable substrate exists**
|
|
118
|
+
- `tracker=github` or `source=github`: require `gh` CLI availability, a passing `gh auth status`,
|
|
119
|
+
and a read probe against the configured repo such as `gh repo view <org>/<repo>`.
|
|
120
|
+
- `tracker=jira`, `source=jira`, or `source=confluence`: follow the `atlassian-access`
|
|
121
|
+
substrate ladder and prove at least one read-capable path can see the configured
|
|
122
|
+
`atlassian.cloudId` and vendor scope. Acceptable substrates are `acli`, Atlassian MCP, or the
|
|
123
|
+
validated API-token/curl path documented by `config-resolution`.
|
|
124
|
+
- `tracker=linear` or `source=linear`: require either readable Linear MCP access or a valid
|
|
125
|
+
personal API-key probe against the configured workspace. When Linear is the tracker, doctor
|
|
126
|
+
must also prove the configured `linear.teamKey` is visible.
|
|
127
|
+
- `source=notion`: require either a Notion MCP identity match for `notion.workspaceId` or a
|
|
128
|
+
valid internal-integration token probe, plus read visibility to `notion.prdDatabaseId`.
|
|
129
|
+
3. **Separate missing tooling from missing auth or scope**
|
|
130
|
+
- Missing executable / MCP substrate availability is a distinct observed fact, not the same as
|
|
131
|
+
"auth failed."
|
|
132
|
+
- When a probe runs and fails, preserve the exact read-only failure text or HTTP/GraphQL status
|
|
133
|
+
in the observed output so the operator can distinguish wrong workspace/site/repo from missing
|
|
134
|
+
credentials.
|
|
135
|
+
4. **Severity ladder**
|
|
136
|
+
- `PASS` when at least one supported read-only substrate proves the configured vendor is
|
|
137
|
+
reachable with the required scope.
|
|
138
|
+
- `WARN` when the configured vendor is reachable, but an additional optional substrate is
|
|
139
|
+
unavailable and later Lisa flows would need to fall back.
|
|
140
|
+
- `FAIL` when no supported substrate can prove read access for the configured tracker/source, or
|
|
141
|
+
when the configured vendor target is unreadable from the current runtime.
|
|
142
|
+
|
|
143
|
+
### Minimum GitHub Project coordination checks
|
|
144
|
+
|
|
145
|
+
When `github.projects.v2` is configured, doctor must run one additional read-only coordination
|
|
146
|
+
check instead of treating the config block as implicitly ready.
|
|
147
|
+
|
|
148
|
+
1. **Delegate through the shared chokepoint**
|
|
149
|
+
- Call `lisa:github-project-v2` in read-only resolution mode:
|
|
150
|
+
|
|
151
|
+
```text
|
|
152
|
+
operation: resolve-project
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
- Do not inline ad-hoc Project GraphQL in doctor. Setup, doctor, writers, and linked-PR flows
|
|
156
|
+
must all read the same owner/access contract from the shared utility.
|
|
157
|
+
2. **Preserve exact namespace + access failures**
|
|
158
|
+
- Enforce the v1 namespace rule exactly as documented by the shared utility. If
|
|
159
|
+
`github.projects.v2.owner.slug` does not match `github.org`, report:
|
|
160
|
+
|
|
161
|
+
```yaml
|
|
162
|
+
code: project_namespace_mismatch
|
|
163
|
+
message: "github.projects.v2.owner.slug must match github.org in v1"
|
|
164
|
+
remediation: "Use a Project owned by <github.org> or remove github.projects.v2."
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
- For owner-access or GraphQL failures, preserve the exact GitHub / GraphQL failure text in the
|
|
168
|
+
observed output. Examples include missing Project, `Resource not accessible by integration`,
|
|
169
|
+
unsupported owner kind, or a wrong owner/number pair.
|
|
170
|
+
3. **Report exact remediation paths**
|
|
171
|
+
- Doctor must make the next operator action explicit. At minimum, say whether they need to:
|
|
172
|
+
1. choose a Project owned by the tracked repo namespace,
|
|
173
|
+
2. grant the token Project read/write access,
|
|
174
|
+
3. correct the configured Project number/owner, or
|
|
175
|
+
4. remove `github.projects.v2` when coordination is not required.
|
|
176
|
+
4. **Map shared utility outcomes into doctor severity**
|
|
177
|
+
- `required: false` => doctor `WARN`. Repository-local GitHub issue/PR flows remain usable while
|
|
178
|
+
Project coordination is degraded.
|
|
179
|
+
- `required: true` => doctor `FAIL`. The same Project validation failure blocks Lisa readiness
|
|
180
|
+
because coordination was configured as required.
|
|
181
|
+
|
|
182
|
+
Good output examples:
|
|
183
|
+
|
|
184
|
+
```text
|
|
185
|
+
WARN github.projects.v2: Resource not accessible by integration
|
|
186
|
+
Observed: exact GitHub / GraphQL failure text preserved from resolve-project.
|
|
187
|
+
Remediation: grant the token Project read/write access or remove github.projects.v2.required.
|
|
188
|
+
Repository-local GitHub issue/PR flows remain usable; Project coordination is disabled.
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
```text
|
|
192
|
+
FAIL github.projects.v2: github.projects.v2.owner.slug must match github.org in v1
|
|
193
|
+
Remediation: use a Project owned by CodySwannGT or remove github.projects.v2.
|
|
194
|
+
```
|
|
195
|
+
|
|
107
196
|
## Output contract
|
|
108
197
|
|
|
109
198
|
The final report must:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.78.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.78.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"
|
|
@@ -429,6 +429,36 @@ Doctor must validate config in three layers:
|
|
|
429
429
|
Doctor's severity rule is simple: unusable merged config is `FAIL`; locality drift with a still
|
|
430
430
|
usable merged config is `WARN`.
|
|
431
431
|
|
|
432
|
+
### Doctor vendor preflight
|
|
433
|
+
|
|
434
|
+
Once doctor can resolve the merged `tracker` and optional `source`, it must run a read-only vendor
|
|
435
|
+
preflight for those configured vendors only.
|
|
436
|
+
|
|
437
|
+
1. **Audit only the configured vendors**
|
|
438
|
+
- Always audit the merged `tracker`.
|
|
439
|
+
- Audit `source` when present and when it is not already covered by the tracker check.
|
|
440
|
+
- Every other vendor is a doctor `SKIP`, not an implicit pass.
|
|
441
|
+
2. **Read-capable substrate requirement**
|
|
442
|
+
- `github` requires `gh` CLI, a passing `gh auth status`, and read access to the configured
|
|
443
|
+
repo (`github.org` + `github.repo`).
|
|
444
|
+
- `jira` / `confluence` must reuse the `atlassian-access` substrate ladder. Doctor passes when
|
|
445
|
+
at least one supported read-capable substrate (`acli`, Atlassian MCP, or validated curl/API
|
|
446
|
+
token) can prove visibility to the configured `atlassian.cloudId` and target scope.
|
|
447
|
+
- `linear` passes when either the Linear MCP or a validated API-key probe can read the
|
|
448
|
+
configured workspace; tracker mode also requires visibility to `linear.teamKey`.
|
|
449
|
+
- `notion` passes when either the Notion MCP identity matches `notion.workspaceId` or a valid
|
|
450
|
+
internal-integration token does, and the configured `notion.prdDatabaseId` is readable.
|
|
451
|
+
3. **Observed-fact discipline**
|
|
452
|
+
- Missing executable / MCP availability and failed auth/scope probes must be reported
|
|
453
|
+
separately.
|
|
454
|
+
- Preserve the exact probe failure text or status code when a read attempt fails; doctor should
|
|
455
|
+
not collapse repo-not-found, wrong-workspace, and unauthenticated cases into one generic
|
|
456
|
+
readiness error.
|
|
457
|
+
4. **Severity**
|
|
458
|
+
- No read-capable substrate for the configured vendor, or a configured target that remains
|
|
459
|
+
unreadable after all supported probes, is a doctor `FAIL`.
|
|
460
|
+
- A reachable vendor with only auxiliary-substrate degradation is a doctor `WARN`.
|
|
461
|
+
|
|
432
462
|
## Skill mapping
|
|
433
463
|
|
|
434
464
|
The shim → vendor mapping is fixed:
|
|
@@ -104,6 +104,95 @@ this order:
|
|
|
104
104
|
Locality findings are advisory unless the merged config is unusable. Missing shared keys after the
|
|
105
105
|
merge are `FAIL`; shared keys that exist only locally are `WARN`.
|
|
106
106
|
|
|
107
|
+
### Minimum tracker/source preflight checks
|
|
108
|
+
|
|
109
|
+
After config readiness passes far enough to resolve the merged `tracker` and optional `source`,
|
|
110
|
+
doctor must perform read-only preflight checks for the configured vendors only. It does not probe
|
|
111
|
+
every vendor Lisa supports.
|
|
112
|
+
|
|
113
|
+
1. **Scope the audit to configured vendors**
|
|
114
|
+
- Audit the merged `tracker`.
|
|
115
|
+
- Audit the merged `source` only when present and distinct from the tracker.
|
|
116
|
+
- Report every non-configured vendor as `SKIP` rather than pretending it was checked.
|
|
117
|
+
2. **Prove a readable substrate exists**
|
|
118
|
+
- `tracker=github` or `source=github`: require `gh` CLI availability, a passing `gh auth status`,
|
|
119
|
+
and a read probe against the configured repo such as `gh repo view <org>/<repo>`.
|
|
120
|
+
- `tracker=jira`, `source=jira`, or `source=confluence`: follow the `atlassian-access`
|
|
121
|
+
substrate ladder and prove at least one read-capable path can see the configured
|
|
122
|
+
`atlassian.cloudId` and vendor scope. Acceptable substrates are `acli`, Atlassian MCP, or the
|
|
123
|
+
validated API-token/curl path documented by `config-resolution`.
|
|
124
|
+
- `tracker=linear` or `source=linear`: require either readable Linear MCP access or a valid
|
|
125
|
+
personal API-key probe against the configured workspace. When Linear is the tracker, doctor
|
|
126
|
+
must also prove the configured `linear.teamKey` is visible.
|
|
127
|
+
- `source=notion`: require either a Notion MCP identity match for `notion.workspaceId` or a
|
|
128
|
+
valid internal-integration token probe, plus read visibility to `notion.prdDatabaseId`.
|
|
129
|
+
3. **Separate missing tooling from missing auth or scope**
|
|
130
|
+
- Missing executable / MCP substrate availability is a distinct observed fact, not the same as
|
|
131
|
+
"auth failed."
|
|
132
|
+
- When a probe runs and fails, preserve the exact read-only failure text or HTTP/GraphQL status
|
|
133
|
+
in the observed output so the operator can distinguish wrong workspace/site/repo from missing
|
|
134
|
+
credentials.
|
|
135
|
+
4. **Severity ladder**
|
|
136
|
+
- `PASS` when at least one supported read-only substrate proves the configured vendor is
|
|
137
|
+
reachable with the required scope.
|
|
138
|
+
- `WARN` when the configured vendor is reachable, but an additional optional substrate is
|
|
139
|
+
unavailable and later Lisa flows would need to fall back.
|
|
140
|
+
- `FAIL` when no supported substrate can prove read access for the configured tracker/source, or
|
|
141
|
+
when the configured vendor target is unreadable from the current runtime.
|
|
142
|
+
|
|
143
|
+
### Minimum GitHub Project coordination checks
|
|
144
|
+
|
|
145
|
+
When `github.projects.v2` is configured, doctor must run one additional read-only coordination
|
|
146
|
+
check instead of treating the config block as implicitly ready.
|
|
147
|
+
|
|
148
|
+
1. **Delegate through the shared chokepoint**
|
|
149
|
+
- Call `lisa:github-project-v2` in read-only resolution mode:
|
|
150
|
+
|
|
151
|
+
```text
|
|
152
|
+
operation: resolve-project
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
- Do not inline ad-hoc Project GraphQL in doctor. Setup, doctor, writers, and linked-PR flows
|
|
156
|
+
must all read the same owner/access contract from the shared utility.
|
|
157
|
+
2. **Preserve exact namespace + access failures**
|
|
158
|
+
- Enforce the v1 namespace rule exactly as documented by the shared utility. If
|
|
159
|
+
`github.projects.v2.owner.slug` does not match `github.org`, report:
|
|
160
|
+
|
|
161
|
+
```yaml
|
|
162
|
+
code: project_namespace_mismatch
|
|
163
|
+
message: "github.projects.v2.owner.slug must match github.org in v1"
|
|
164
|
+
remediation: "Use a Project owned by <github.org> or remove github.projects.v2."
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
- For owner-access or GraphQL failures, preserve the exact GitHub / GraphQL failure text in the
|
|
168
|
+
observed output. Examples include missing Project, `Resource not accessible by integration`,
|
|
169
|
+
unsupported owner kind, or a wrong owner/number pair.
|
|
170
|
+
3. **Report exact remediation paths**
|
|
171
|
+
- Doctor must make the next operator action explicit. At minimum, say whether they need to:
|
|
172
|
+
1. choose a Project owned by the tracked repo namespace,
|
|
173
|
+
2. grant the token Project read/write access,
|
|
174
|
+
3. correct the configured Project number/owner, or
|
|
175
|
+
4. remove `github.projects.v2` when coordination is not required.
|
|
176
|
+
4. **Map shared utility outcomes into doctor severity**
|
|
177
|
+
- `required: false` => doctor `WARN`. Repository-local GitHub issue/PR flows remain usable while
|
|
178
|
+
Project coordination is degraded.
|
|
179
|
+
- `required: true` => doctor `FAIL`. The same Project validation failure blocks Lisa readiness
|
|
180
|
+
because coordination was configured as required.
|
|
181
|
+
|
|
182
|
+
Good output examples:
|
|
183
|
+
|
|
184
|
+
```text
|
|
185
|
+
WARN github.projects.v2: Resource not accessible by integration
|
|
186
|
+
Observed: exact GitHub / GraphQL failure text preserved from resolve-project.
|
|
187
|
+
Remediation: grant the token Project read/write access or remove github.projects.v2.required.
|
|
188
|
+
Repository-local GitHub issue/PR flows remain usable; Project coordination is disabled.
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
```text
|
|
192
|
+
FAIL github.projects.v2: github.projects.v2.owner.slug must match github.org in v1
|
|
193
|
+
Remediation: use a Project owned by CodySwannGT or remove github.projects.v2.
|
|
194
|
+
```
|
|
195
|
+
|
|
107
196
|
## Output contract
|
|
108
197
|
|
|
109
198
|
The final report must:
|