@codyswann/lisa 2.77.0 → 2.77.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/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 +31 -0
- package/plugins/lisa/skills/doctor/SKILL.md +35 -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 +31 -0
- package/plugins/src/base/skills/doctor/SKILL.md +35 -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.77.
|
|
85
|
+
"version": "2.77.1",
|
|
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": {
|
|
@@ -398,6 +398,37 @@ For batch skills that consume `source`:
|
|
|
398
398
|
2. If `$ARGUMENTS` is the bare token `notion` / `confluence` / `linear` / `github` / `jira`, the source is that vendor; resolve location from the corresponding config section.
|
|
399
399
|
3. If `$ARGUMENTS` is empty, fall back to `source` from config; if that's also empty, stop and report `"No source specified and no 'source' field in .lisa.config.json."`
|
|
400
400
|
|
|
401
|
+
### Doctor config readiness
|
|
402
|
+
|
|
403
|
+
`/lisa:doctor` reads the same config, but it audits readiness instead of dispatching a write.
|
|
404
|
+
Doctor must validate config in three layers:
|
|
405
|
+
|
|
406
|
+
1. **Parse and merge**
|
|
407
|
+
- Parse both config files as JSON. Missing or invalid `.lisa.config.json` is a blocking error.
|
|
408
|
+
`.lisa.config.local.json` is optional, but if present and invalid it is also a blocking error.
|
|
409
|
+
- Merge per key with the standard local-overrides-global rule. Doctor reports against the merged
|
|
410
|
+
effective config; it does not treat the local file as a full replacement for the committed
|
|
411
|
+
file.
|
|
412
|
+
2. **Required-key correctness**
|
|
413
|
+
- Missing `tracker` after merge is a blocking error. Unknown merged `tracker` / `source` values
|
|
414
|
+
are also blocking errors.
|
|
415
|
+
- If the configured tracker/source vendor is missing its required keys after merge, doctor must
|
|
416
|
+
report a blocking readiness failure using the vendor tables above. Examples: `tracker=github`
|
|
417
|
+
requires `github.org` + `github.repo`; `tracker=jira` requires `atlassian.cloudId` +
|
|
418
|
+
`jira.project`; `source=notion` requires `notion.workspaceId` + `notion.prdDatabaseId`.
|
|
419
|
+
3. **Field locality correctness**
|
|
420
|
+
- `atlassian.email`, `intake.assignee`, and `jira.verified_workflow_hash` are local-only. If
|
|
421
|
+
they appear in committed config, doctor warns that developer-specific state was checked into
|
|
422
|
+
the project file.
|
|
423
|
+
- Project-wide fields that exist only in `.lisa.config.local.json` should warn, not pass
|
|
424
|
+
silently. Current machine works, repository not durably configured for teammates and
|
|
425
|
+
automations. Common examples include `tracker`, `source`, `github.org`, `github.repo`,
|
|
426
|
+
`atlassian.cloudId`, `atlassian.site`, `jira.project`, `linear.workspace`, `linear.teamKey`,
|
|
427
|
+
and `deploy.branches`.
|
|
428
|
+
|
|
429
|
+
Doctor's severity rule is simple: unusable merged config is `FAIL`; locality drift with a still
|
|
430
|
+
usable merged config is `WARN`.
|
|
431
|
+
|
|
401
432
|
## Skill mapping
|
|
402
433
|
|
|
403
434
|
The shim → vendor mapping is fixed:
|
|
@@ -69,6 +69,41 @@ as applicable to the current repo:
|
|
|
69
69
|
|
|
70
70
|
If a check family is not applicable to the current repo, report `SKIP` with the reason.
|
|
71
71
|
|
|
72
|
+
### Minimum config-readiness checks
|
|
73
|
+
|
|
74
|
+
The Lisa config group is not just "does a file exist?" Doctor must audit the config contract in
|
|
75
|
+
this order:
|
|
76
|
+
|
|
77
|
+
1. **Presence + parseability**
|
|
78
|
+
- `FAIL` when `.lisa.config.json` is missing, empty, or invalid JSON.
|
|
79
|
+
- Read `.lisa.config.local.json` only when present; if present but invalid JSON, `FAIL`.
|
|
80
|
+
2. **Merged effective config**
|
|
81
|
+
- Resolve every key with the same per-key local-overrides-global semantics documented by
|
|
82
|
+
`config-resolution`. Doctor must describe findings against the effective merged value, not by
|
|
83
|
+
pretending one file fully replaces the other.
|
|
84
|
+
3. **Required top-level dispatch keys**
|
|
85
|
+
- `FAIL` when merged `tracker` is missing or is not one of `jira`, `github`, or `linear`.
|
|
86
|
+
- `FAIL` when merged `source` is present but is not one of `notion`, `confluence`, `linear`,
|
|
87
|
+
`github`, or `jira`.
|
|
88
|
+
4. **Vendor required-key audit**
|
|
89
|
+
- `FAIL` when the configured tracker/source points at a vendor whose required keys are absent
|
|
90
|
+
after merge. Examples: `tracker=github` requires `github.org` + `github.repo`;
|
|
91
|
+
`tracker=jira` requires `atlassian.cloudId` + `jira.project`; `source=notion` requires
|
|
92
|
+
`notion.workspaceId` + `notion.prdDatabaseId`.
|
|
93
|
+
- Reuse the `config-resolution` vendor tables rather than inventing a second required-key list.
|
|
94
|
+
5. **Local-vs-committed locality audit**
|
|
95
|
+
- `WARN` when developer-specific fields appear in committed config. At minimum enforce the
|
|
96
|
+
documented local-only examples: `atlassian.email`, `intake.assignee`, and
|
|
97
|
+
`jira.verified_workflow_hash`.
|
|
98
|
+
- `WARN` when project-wide shared fields exist only in `.lisa.config.local.json` and are absent
|
|
99
|
+
from `.lisa.config.json`, because the current machine may work while the repository remains
|
|
100
|
+
under-configured for teammates and automations. Examples include `tracker`, `source`,
|
|
101
|
+
`github.org`, `github.repo`, `atlassian.cloudId`, `atlassian.site`, `jira.project`,
|
|
102
|
+
`linear.workspace`, `linear.teamKey`, and `deploy.branches`.
|
|
103
|
+
|
|
104
|
+
Locality findings are advisory unless the merged config is unusable. Missing shared keys after the
|
|
105
|
+
merge are `FAIL`; shared keys that exist only locally are `WARN`.
|
|
106
|
+
|
|
72
107
|
## Output contract
|
|
73
108
|
|
|
74
109
|
The final report must:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.77.
|
|
3
|
+
"version": "2.77.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.77.
|
|
3
|
+
"version": "2.77.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"
|
|
@@ -398,6 +398,37 @@ For batch skills that consume `source`:
|
|
|
398
398
|
2. If `$ARGUMENTS` is the bare token `notion` / `confluence` / `linear` / `github` / `jira`, the source is that vendor; resolve location from the corresponding config section.
|
|
399
399
|
3. If `$ARGUMENTS` is empty, fall back to `source` from config; if that's also empty, stop and report `"No source specified and no 'source' field in .lisa.config.json."`
|
|
400
400
|
|
|
401
|
+
### Doctor config readiness
|
|
402
|
+
|
|
403
|
+
`/lisa:doctor` reads the same config, but it audits readiness instead of dispatching a write.
|
|
404
|
+
Doctor must validate config in three layers:
|
|
405
|
+
|
|
406
|
+
1. **Parse and merge**
|
|
407
|
+
- Parse both config files as JSON. Missing or invalid `.lisa.config.json` is a blocking error.
|
|
408
|
+
`.lisa.config.local.json` is optional, but if present and invalid it is also a blocking error.
|
|
409
|
+
- Merge per key with the standard local-overrides-global rule. Doctor reports against the merged
|
|
410
|
+
effective config; it does not treat the local file as a full replacement for the committed
|
|
411
|
+
file.
|
|
412
|
+
2. **Required-key correctness**
|
|
413
|
+
- Missing `tracker` after merge is a blocking error. Unknown merged `tracker` / `source` values
|
|
414
|
+
are also blocking errors.
|
|
415
|
+
- If the configured tracker/source vendor is missing its required keys after merge, doctor must
|
|
416
|
+
report a blocking readiness failure using the vendor tables above. Examples: `tracker=github`
|
|
417
|
+
requires `github.org` + `github.repo`; `tracker=jira` requires `atlassian.cloudId` +
|
|
418
|
+
`jira.project`; `source=notion` requires `notion.workspaceId` + `notion.prdDatabaseId`.
|
|
419
|
+
3. **Field locality correctness**
|
|
420
|
+
- `atlassian.email`, `intake.assignee`, and `jira.verified_workflow_hash` are local-only. If
|
|
421
|
+
they appear in committed config, doctor warns that developer-specific state was checked into
|
|
422
|
+
the project file.
|
|
423
|
+
- Project-wide fields that exist only in `.lisa.config.local.json` should warn, not pass
|
|
424
|
+
silently. Current machine works, repository not durably configured for teammates and
|
|
425
|
+
automations. Common examples include `tracker`, `source`, `github.org`, `github.repo`,
|
|
426
|
+
`atlassian.cloudId`, `atlassian.site`, `jira.project`, `linear.workspace`, `linear.teamKey`,
|
|
427
|
+
and `deploy.branches`.
|
|
428
|
+
|
|
429
|
+
Doctor's severity rule is simple: unusable merged config is `FAIL`; locality drift with a still
|
|
430
|
+
usable merged config is `WARN`.
|
|
431
|
+
|
|
401
432
|
## Skill mapping
|
|
402
433
|
|
|
403
434
|
The shim → vendor mapping is fixed:
|
|
@@ -69,6 +69,41 @@ as applicable to the current repo:
|
|
|
69
69
|
|
|
70
70
|
If a check family is not applicable to the current repo, report `SKIP` with the reason.
|
|
71
71
|
|
|
72
|
+
### Minimum config-readiness checks
|
|
73
|
+
|
|
74
|
+
The Lisa config group is not just "does a file exist?" Doctor must audit the config contract in
|
|
75
|
+
this order:
|
|
76
|
+
|
|
77
|
+
1. **Presence + parseability**
|
|
78
|
+
- `FAIL` when `.lisa.config.json` is missing, empty, or invalid JSON.
|
|
79
|
+
- Read `.lisa.config.local.json` only when present; if present but invalid JSON, `FAIL`.
|
|
80
|
+
2. **Merged effective config**
|
|
81
|
+
- Resolve every key with the same per-key local-overrides-global semantics documented by
|
|
82
|
+
`config-resolution`. Doctor must describe findings against the effective merged value, not by
|
|
83
|
+
pretending one file fully replaces the other.
|
|
84
|
+
3. **Required top-level dispatch keys**
|
|
85
|
+
- `FAIL` when merged `tracker` is missing or is not one of `jira`, `github`, or `linear`.
|
|
86
|
+
- `FAIL` when merged `source` is present but is not one of `notion`, `confluence`, `linear`,
|
|
87
|
+
`github`, or `jira`.
|
|
88
|
+
4. **Vendor required-key audit**
|
|
89
|
+
- `FAIL` when the configured tracker/source points at a vendor whose required keys are absent
|
|
90
|
+
after merge. Examples: `tracker=github` requires `github.org` + `github.repo`;
|
|
91
|
+
`tracker=jira` requires `atlassian.cloudId` + `jira.project`; `source=notion` requires
|
|
92
|
+
`notion.workspaceId` + `notion.prdDatabaseId`.
|
|
93
|
+
- Reuse the `config-resolution` vendor tables rather than inventing a second required-key list.
|
|
94
|
+
5. **Local-vs-committed locality audit**
|
|
95
|
+
- `WARN` when developer-specific fields appear in committed config. At minimum enforce the
|
|
96
|
+
documented local-only examples: `atlassian.email`, `intake.assignee`, and
|
|
97
|
+
`jira.verified_workflow_hash`.
|
|
98
|
+
- `WARN` when project-wide shared fields exist only in `.lisa.config.local.json` and are absent
|
|
99
|
+
from `.lisa.config.json`, because the current machine may work while the repository remains
|
|
100
|
+
under-configured for teammates and automations. Examples include `tracker`, `source`,
|
|
101
|
+
`github.org`, `github.repo`, `atlassian.cloudId`, `atlassian.site`, `jira.project`,
|
|
102
|
+
`linear.workspace`, `linear.teamKey`, and `deploy.branches`.
|
|
103
|
+
|
|
104
|
+
Locality findings are advisory unless the merged config is unusable. Missing shared keys after the
|
|
105
|
+
merge are `FAIL`; shared keys that exist only locally are `WARN`.
|
|
106
|
+
|
|
72
107
|
## Output contract
|
|
73
108
|
|
|
74
109
|
The final report must:
|