@codyswann/lisa 4.55.28 → 4.55.30
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/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +11 -9
- 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-atlassian-access/SKILL.md +2 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-sync/SKILL.md +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-access/SKILL.md +2 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-evidence/SKILL.md +3 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-sync/SKILL.md +8 -0
- package/plugins/lisa/rules/eager/report-actionability.md +6 -3
- package/plugins/lisa/skills/lisa-atlassian-access/SKILL.md +2 -0
- package/plugins/lisa/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
- package/plugins/lisa/skills/lisa-github-sync/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-linear-access/SKILL.md +2 -0
- package/plugins/lisa/skills/lisa-tracker-evidence/SKILL.md +3 -1
- package/plugins/lisa/skills/lisa-tracker-sync/SKILL.md +8 -0
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-atlassian-access/SKILL.md +2 -0
- package/plugins/lisa-agy/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
- package/plugins/lisa-agy/skills/lisa-github-sync/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-linear-access/SKILL.md +2 -0
- package/plugins/lisa-agy/skills/lisa-tracker-evidence/SKILL.md +3 -1
- package/plugins/lisa-agy/skills/lisa-tracker-sync/SKILL.md +8 -0
- 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/agents/test-specialist.agent.md +1 -1
- package/plugins/lisa-copilot/agents/verification-specialist.agent.md +4 -4
- package/plugins/lisa-copilot/rules/eager/report-actionability.md +6 -3
- package/plugins/lisa-copilot/skills/lisa-atlassian-access/SKILL.md +2 -0
- package/plugins/lisa-copilot/skills/lisa-codify-verification/SKILL.md +2 -2
- package/plugins/lisa-copilot/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
- package/plugins/lisa-copilot/skills/lisa-github-sync/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-linear-access/SKILL.md +2 -0
- package/plugins/lisa-copilot/skills/lisa-tracker-evidence/SKILL.md +3 -1
- package/plugins/lisa-copilot/skills/lisa-tracker-sync/SKILL.md +8 -0
- package/plugins/lisa-copilot/skills/lisa-verification-lifecycle/SKILL.md +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/agents/test-specialist.md +1 -1
- package/plugins/lisa-cursor/agents/verification-specialist.md +4 -4
- package/plugins/lisa-cursor/rules/report-actionability.mdc +6 -3
- package/plugins/lisa-cursor/skills/lisa-atlassian-access/SKILL.md +2 -0
- package/plugins/lisa-cursor/skills/lisa-codify-verification/SKILL.md +2 -2
- package/plugins/lisa-cursor/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
- package/plugins/lisa-cursor/skills/lisa-github-sync/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-linear-access/SKILL.md +2 -0
- package/plugins/lisa-cursor/skills/lisa-tracker-evidence/SKILL.md +3 -1
- package/plugins/lisa-cursor/skills/lisa-tracker-sync/SKILL.md +8 -0
- package/plugins/lisa-cursor/skills/lisa-verification-lifecycle/SKILL.md +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-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/report-actionability.md +6 -3
- package/plugins/src/base/skills/lisa-atlassian-access/SKILL.md +2 -0
- package/plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
- package/plugins/src/base/skills/lisa-github-sync/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-linear-access/SKILL.md +2 -0
- package/plugins/src/base/skills/lisa-tracker-evidence/SKILL.md +3 -1
- package/plugins/src/base/skills/lisa-tracker-sync/SKILL.md +8 -0
- package/scripts/generate-copilot-plugin-artifacts.mjs +2 -0
- package/scripts/generate-cursor-plugin-artifacts.mjs +2 -0
- package/scripts/lib/plugin-rule-citations.mjs +49 -0
|
@@ -10,6 +10,8 @@ Thin dispatcher. Resolves the configured destination tracker and delegates to th
|
|
|
10
10
|
|
|
11
11
|
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
|
+
Apply `lisa-tracker-sync` — **Agent attribution** when composing evidence comments; a disclosure already present in the body needs no second trailer.
|
|
14
|
+
|
|
13
15
|
## Workflow
|
|
14
16
|
|
|
15
17
|
1. Resolve tracker config (same logic as `lisa-tracker-write`).
|
|
@@ -40,7 +42,7 @@ Apply this when authoring `evidence/comment.md` (and `evidence/comment.txt` for
|
|
|
40
42
|
|
|
41
43
|
The checklist is tracker-agnostic — the same shape works on JIRA, GitHub Issues, and Linear. Vendor skills only own the post/transition mechanics; the comment body is your responsibility.
|
|
42
44
|
|
|
43
|
-
1. **AI disclosure at the top.** Lead with "Update from
|
|
45
|
+
1. **AI disclosure at the top.** Lead with "Update from <actual runtime name> (AI agent)" and address the reporter / QA / PM by name when known. This satisfies the shared attribution convention without a second trailer.
|
|
44
46
|
2. **Own any prior mistake explicitly.** If an earlier triage or build pass got something wrong, say so up front. Don't bury it.
|
|
45
47
|
3. **Numbered step-by-step walk** of what you actually did in the browser/app, in plain language a non-engineer can follow:
|
|
46
48
|
- Exact env (URL, viewport size — e.g. `402×874` for an iOS-sized mobile flow)
|
|
@@ -10,6 +10,14 @@ Thin dispatcher. Resolves the configured destination tracker and delegates to th
|
|
|
10
10
|
|
|
11
11
|
See the `config-resolution` rule for configuration and dispatch table.
|
|
12
12
|
|
|
13
|
+
## Agent attribution
|
|
14
|
+
|
|
15
|
+
In agent-composed tracker comments and review messages, include one short plain-text attribution, such as `Agent-written by Codex.` Use the actual runtime's name; add a public lane name only when already known. An existing clear disclosure is enough. Do not publish session identifiers, invent a lane, alter supplied human text, or change machine-managed comment formats such as `[lisa-pr-link]`.
|
|
16
|
+
|
|
17
|
+
The account avatar identifies the credential owner, not necessarily the writer. When relaying a human decision, attribute it to the person and its actual source (a linked decision or an instruction in the current conversation). Present your own judgement as agent analysis, never as an owner ruling. Attribution itself grants no authority.
|
|
18
|
+
|
|
19
|
+
This is a writing convention: missing disclosure is not a reason to block work or file a compliance issue. Do not add identity infrastructure or extra audit comments just to supply it. Preserve an existing disclosure when a vendor skill posts or retries the same body.
|
|
20
|
+
|
|
13
21
|
## Workflow
|
|
14
22
|
|
|
15
23
|
1. Resolve tracker config (same logic as `lisa-tracker-write`).
|
|
@@ -32,6 +32,7 @@ import {
|
|
|
32
32
|
} from "./lib/per-agent-hook-filter.mjs";
|
|
33
33
|
import { nestCommandsUnderLisa } from "./lib/nest-plugin-commands.mjs";
|
|
34
34
|
import { invokedAsScript } from "./lib/invoked-as-script.mjs";
|
|
35
|
+
import { rewritePluginRuleCitations } from "./lib/plugin-rule-citations.mjs";
|
|
35
36
|
|
|
36
37
|
const REPO_ROOT = path.resolve(
|
|
37
38
|
path.dirname(fileURLToPath(import.meta.url)),
|
|
@@ -268,6 +269,7 @@ export function generateCopilotVariant(srcDir, outDir, version) {
|
|
|
268
269
|
fs.rmdirSync(hooksDir);
|
|
269
270
|
}
|
|
270
271
|
}
|
|
272
|
+
rewritePluginRuleCitations(outDir, "copilot");
|
|
271
273
|
}
|
|
272
274
|
|
|
273
275
|
// CLI entrypoint.
|
|
@@ -51,6 +51,7 @@ import {
|
|
|
51
51
|
} from "./lib/per-agent-hook-filter.mjs";
|
|
52
52
|
import { nestCommandsUnderLisa } from "./lib/nest-plugin-commands.mjs";
|
|
53
53
|
import { invokedAsScript } from "./lib/invoked-as-script.mjs";
|
|
54
|
+
import { rewritePluginRuleCitations } from "./lib/plugin-rule-citations.mjs";
|
|
54
55
|
|
|
55
56
|
const REPO_ROOT = path.resolve(
|
|
56
57
|
path.dirname(fileURLToPath(import.meta.url)),
|
|
@@ -364,6 +365,7 @@ export function generateCursorVariant(srcDir, outDir, version) {
|
|
|
364
365
|
fs.rmdirSync(hooksDir);
|
|
365
366
|
}
|
|
366
367
|
}
|
|
368
|
+
rewritePluginRuleCitations(outDir, "cursor");
|
|
367
369
|
}
|
|
368
370
|
|
|
369
371
|
// CLI entrypoint.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Link inline citations of bundled rules after variant paths are finalized.
|
|
6
|
+
* Unknown and host-owned paths stay literal. A bare rule name prefers the
|
|
7
|
+
* complete reference rule when the plugin also has an eager summary.
|
|
8
|
+
*
|
|
9
|
+
* Parity limit: Codex and OpenCode copy skills into separate installed trees
|
|
10
|
+
* and still retain these legacy source citations. This variant-local rewrite
|
|
11
|
+
* does not repair those installer paths; it covers Copilot and Cursor only.
|
|
12
|
+
* @param {string} root Generated plugin directory.
|
|
13
|
+
* @param {"copilot" | "cursor"} variant Target rule layout.
|
|
14
|
+
* @returns {void}
|
|
15
|
+
*/
|
|
16
|
+
export function rewritePluginRuleCitations(root, variant) {
|
|
17
|
+
const walk = directory => {
|
|
18
|
+
for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
|
|
19
|
+
const file = path.join(directory, entry.name);
|
|
20
|
+
if (entry.isDirectory()) {
|
|
21
|
+
walk(file);
|
|
22
|
+
} else if (entry.isFile() && /\.mdc?$/.test(entry.name)) {
|
|
23
|
+
const source = fs.readFileSync(file, "utf8");
|
|
24
|
+
const rewritten = source.replace(
|
|
25
|
+
/`\.claude\/rules\/(?:(eager|reference)\/)?([A-Za-z0-9._-]+)\.md(#[^`]+)?`/g,
|
|
26
|
+
(citation, tier, name, fragment = "") => {
|
|
27
|
+
const candidates = (tier ? [tier] : ["reference", "eager", ""]).map(
|
|
28
|
+
candidate =>
|
|
29
|
+
variant === "cursor"
|
|
30
|
+
? `rules/${name}${candidate === "reference" ? "-reference" : ""}.mdc`
|
|
31
|
+
: `rules/${candidate ? `${candidate}/` : ""}${name}.md`
|
|
32
|
+
);
|
|
33
|
+
const target = candidates.find(candidate =>
|
|
34
|
+
fs.existsSync(path.join(root, candidate))
|
|
35
|
+
);
|
|
36
|
+
if (!target) return citation;
|
|
37
|
+
const relative = path
|
|
38
|
+
.relative(path.dirname(file), path.join(root, target))
|
|
39
|
+
.split(path.sep)
|
|
40
|
+
.join("/");
|
|
41
|
+
return `[\`${target}${fragment}\`](${relative}${fragment})`;
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
if (rewritten !== source) fs.writeFileSync(file, rewritten);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
walk(root);
|
|
49
|
+
}
|