@codyswann/lisa 4.84.9 → 4.84.11
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/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +2 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/nightly-e2e-guard-behavior-certificate.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +8 -2
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/package.json +4 -4
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-code-review/SKILL.md +28 -3
- package/plugins/lisa/skills/lisa-parity-code-review/SKILL.md +28 -3
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-parity-code-review/SKILL.md +28 -3
- 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-cdk-devin/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-devin/.devin-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/skills/lisa-parity-code-review/SKILL.md +28 -3
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/skills/lisa-parity-code-review/SKILL.md +28 -3
- package/plugins/lisa-devin/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-devin/.devin-plugin/plugin.json +1 -1
- package/plugins/lisa-devin/skills/lisa-parity-code-review/SKILL.md +28 -3
- 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-expo-devin/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-devin/.devin-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-harper-fabric-devin/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-devin/.devin-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-nestjs-devin/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-devin/.devin-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-openclaw-devin/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-devin/.devin-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-phaser-devin/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-devin/.devin-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-rails-devin/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-devin/.devin-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-typescript-devin/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-devin/.devin-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/lisa-wiki-devin/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-devin/.devin-plugin/plugin.json +1 -1
- package/plugins/src/base/skills/lisa-parity-code-review/SKILL.md +28 -3
- package/typescript/copy-overwrite/scripts/check-skipped-required-checks.mjs +14 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "4.84.
|
|
3
|
+
"version": "4.84.11",
|
|
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": "4.84.
|
|
3
|
+
"version": "4.84.11",
|
|
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": "4.84.
|
|
3
|
+
"version": "4.84.11",
|
|
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": "4.84.
|
|
3
|
+
"version": "4.84.11",
|
|
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": "4.84.
|
|
3
|
+
"version": "4.84.11",
|
|
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": "4.84.
|
|
3
|
+
"version": "4.84.11",
|
|
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": "4.84.
|
|
3
|
+
"version": "4.84.11",
|
|
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"
|
|
@@ -2,13 +2,16 @@
|
|
|
2
2
|
name: lisa-parity-code-review
|
|
3
3
|
description: "Lisa-native code review of the current git diff. Walks every changed hunk and reports correctness bugs, security issues, and obvious defects as severity-ranked findings with file:line references. Vendor-neutral — the cross-agent equivalent of the upstream code-review command, runnable on Codex, agy, Copilot, Cursor, and Claude."
|
|
4
4
|
allowed-tools: ["Read", "Bash", "Grep", "Glob"]
|
|
5
|
+
synced-from: code-review@claude-plugins-official@1.0.1
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# Parity Code Review
|
|
8
9
|
|
|
9
10
|
Review the code that is *about to ship* — the current uncommitted/branch diff — for defects a reviewer would block on. This is a focused **defect hunt**: correctness, security, and obvious mistakes. It is not a style audit and not a refactor pass (use `parity-code-simplifier` for quality-only cleanup).
|
|
10
11
|
|
|
11
|
-
> **
|
|
12
|
+
> **Drift tracking.** Pinned to `code-review@claude-plugins-official@1.0.1`. Upstream published no semver until 1.0.1, so this skill used to carry no pin and was reviewed by hand; it is now tracked by `scripts/plugin-parity-drift.mjs`, which flags the pin as stale when the plugin cache holds a newer upstream version. This is a Lisa-native reimplementation, **not** a port of upstream code.
|
|
13
|
+
>
|
|
14
|
+
> **Reviewed against 1.0.1, partly diverged.** Adopted from upstream 1.0.1: findings print to the terminal only; every candidate finding is validated before it is reported (Step 4); and a high-signal bar governs what is blocking (relaxed to admit an input-dependent defect once its triggering input is shown to be reachable; see Step 4). Deliberately not reimplemented: upstream's `--comment` mode, which posts inline PR comments through `mcp__github_inline_comment__create_inline_comment` (use `lisa-pull-request-review` to act on a pull request), and its four-reviewer subagent pipeline. This skill is one reviewer over the local diff, because the agents it serves (Codex, agy, Copilot, Cursor, Devin) have no common subagent or inline-comment surface. The `synced-from` scalar cannot record that split, so this note does.
|
|
12
15
|
|
|
13
16
|
## Step 1: Establish the diff
|
|
14
17
|
|
|
@@ -46,7 +49,29 @@ For every changed hunk, evaluate against these lenses:
|
|
|
46
49
|
4. **Obvious defects** — Dead code paths, unreachable branches, swallowed errors, resource leaks (unclosed handles/connections), `TODO`/`FIXME` left in shipping code, debug logging left on, broken or missing tests for the new behavior.
|
|
47
50
|
5. **Contract & API** — Breaking changes to public signatures, changed return shapes, altered error semantics callers depend on.
|
|
48
51
|
|
|
49
|
-
## Step 4:
|
|
52
|
+
## Step 4: Validate every candidate before reporting it
|
|
53
|
+
|
|
54
|
+
Step 3 produces candidates, not findings. Re-check each one against the code on its own, as a skeptic whose job is to disprove it:
|
|
55
|
+
|
|
56
|
+
- If it says something is undefined, unreachable, or mistyped, find the definition, the caller, or the type and confirm it.
|
|
57
|
+
- If it cites a project instruction (`AGENTS.md`, `CLAUDE.md`, a rule file), quote the exact rule and confirm the rule applies to that file's path.
|
|
58
|
+
- If it depends on a specific input or state, name that input and confirm the code can actually receive it.
|
|
59
|
+
|
|
60
|
+
Drop every candidate you cannot confirm. A false positive costs the reader more than a missed nit, so when in doubt, leave it out.
|
|
61
|
+
|
|
62
|
+
**High-signal bar.** Only a validated candidate in one of these classes may be **Critical** or **Warning**:
|
|
63
|
+
|
|
64
|
+
- the code will fail to compile, parse, or resolve (syntax or type errors, missing imports, unresolved references);
|
|
65
|
+
- the code produces a wrong result or an exposure (clear logic or security errors) — either for every input, or for a specific triggering input you have named and confirmed the code can actually receive in practice, as in the example under Step 5;
|
|
66
|
+
- the change breaks a project instruction you can quote.
|
|
67
|
+
|
|
68
|
+
Upstream 1.0.1 drops every input-dependent issue. This skill keeps one that you have validated as reachable, because a reachable null dereference or auth bypass is exactly what a reviewer must block. What it still drops is the hypothetical: an input nobody can show the code receiving.
|
|
69
|
+
|
|
70
|
+
Never report: pre-existing issues on lines the change did not touch; things that look wrong but are correct; lint-only issues a linter will catch anyway (a parse, compile, correctness, or security defect stays reportable even when a linter also flags it); style or general-quality concerns that no project instruction requires; a lint or type finding that the code explicitly silences (for example with a lint-ignore comment).
|
|
71
|
+
|
|
72
|
+
A suppression silences only the lint or type finding it names. It never hides a correctness or security defect in that code. A changed `eval(req.body.code)` under `eslint-disable no-eval` is still remote code execution, so report it as Critical.
|
|
73
|
+
|
|
74
|
+
## Step 5: Output — severity-ranked findings
|
|
50
75
|
|
|
51
76
|
Group findings by severity. Within each group, list the most impactful first. Every finding **must** carry a `file:line` reference.
|
|
52
77
|
|
|
@@ -57,7 +82,7 @@ Bugs that break correctness, leak/expose data, or introduce a security hole.
|
|
|
57
82
|
Likely to cause problems later, or a real defect with limited blast radius.
|
|
58
83
|
|
|
59
84
|
### Suggestion (nice to have)
|
|
60
|
-
Minor correctness nits or defensive improvements.
|
|
85
|
+
Minor validated correctness nits or defensive improvements below the high-signal bar. This tier is a Lisa addition — upstream 1.0.1 reports nothing below its bar — so keep it short and omit it when empty.
|
|
61
86
|
|
|
62
87
|
### Finding format
|
|
63
88
|
|
|
@@ -2366,8 +2366,9 @@ export function reviewGateState(reading, vocabulary = {}) {
|
|
|
2366
2366
|
if (state === "FAILURE" || state === "ERROR") {
|
|
2367
2367
|
return objectedReviewGateState(state, text, reading.description);
|
|
2368
2368
|
}
|
|
2369
|
-
if (state === "SKIPPED") {
|
|
2370
|
-
return
|
|
2369
|
+
if (state === "SKIPPED" || state === "NEUTRAL") {
|
|
2370
|
+
return terminalReviewGateState(
|
|
2371
|
+
state,
|
|
2371
2372
|
text,
|
|
2372
2373
|
reading.description,
|
|
2373
2374
|
vocabulary,
|
|
@@ -2386,16 +2387,23 @@ export function reviewGateState(reading, vocabulary = {}) {
|
|
|
2386
2387
|
}
|
|
2387
2388
|
|
|
2388
2389
|
/**
|
|
2389
|
-
* A terminal
|
|
2390
|
-
* Existing exact waivers retain their policy;
|
|
2390
|
+
* A terminal result alone never proves review, even with a positive title.
|
|
2391
|
+
* Existing exact waivers retain their policy; other terminal results need a trusted
|
|
2391
2392
|
* head-bound substitute and a clean, readable review surface to permit merging.
|
|
2393
|
+
* @param {string} state - Observed terminal check state
|
|
2392
2394
|
* @param {string} text - Normalized description
|
|
2393
2395
|
* @param {string|undefined} description - Original description
|
|
2394
2396
|
* @param {{waive?: readonly string[]}} vocabulary - Per-check waiver extensions
|
|
2395
2397
|
* @param {{read: boolean, present: boolean, objected: boolean}|undefined} activity - Independent review surface
|
|
2396
2398
|
* @returns {{state: string, condition: string, why: string}} Terminal no-review verdict
|
|
2397
2399
|
*/
|
|
2398
|
-
function
|
|
2400
|
+
function terminalReviewGateState(
|
|
2401
|
+
state,
|
|
2402
|
+
text,
|
|
2403
|
+
description,
|
|
2404
|
+
vocabulary,
|
|
2405
|
+
activity
|
|
2406
|
+
) {
|
|
2399
2407
|
const waivers = [...ENTITLEMENT_WAIVERS, ...(vocabulary.waive ?? [])];
|
|
2400
2408
|
if (waivers.some(phrase => text === normalizeDescription(phrase))) {
|
|
2401
2409
|
return waivedReviewGateState(description, activity);
|
|
@@ -2403,7 +2411,7 @@ function skippedReviewGateState(text, description, vocabulary, activity) {
|
|
|
2403
2411
|
return {
|
|
2404
2412
|
state: REVIEW_GATE_STATES.unsatisfied,
|
|
2405
2413
|
condition: REVIEW_GATE_CONDITIONS.notReviewed,
|
|
2406
|
-
why: `reported terminal
|
|
2414
|
+
why: `reported terminal ${state} with the description ${JSON.stringify(description ?? "")}. This result does not establish qualifying completed-review proof; its title cannot supply that proof. An existing exact waiver or a trusted substitute for this head is required, and no substitute covers an objection.`,
|
|
2407
2415
|
};
|
|
2408
2416
|
}
|
|
2409
2417
|
|