@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.
Files changed (106) hide show
  1. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  2. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  3. package/dist/core/upstream-evidence-manifest.js +11 -9
  4. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  5. package/package.json +4 -4
  6. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  7. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  8. package/plugins/lisa/.codex-plugin/skills/lisa-atlassian-access/SKILL.md +2 -0
  9. package/plugins/lisa/.codex-plugin/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
  10. package/plugins/lisa/.codex-plugin/skills/lisa-github-sync/SKILL.md +1 -1
  11. package/plugins/lisa/.codex-plugin/skills/lisa-linear-access/SKILL.md +2 -0
  12. package/plugins/lisa/.codex-plugin/skills/lisa-tracker-evidence/SKILL.md +3 -1
  13. package/plugins/lisa/.codex-plugin/skills/lisa-tracker-sync/SKILL.md +8 -0
  14. package/plugins/lisa/rules/eager/report-actionability.md +6 -3
  15. package/plugins/lisa/skills/lisa-atlassian-access/SKILL.md +2 -0
  16. package/plugins/lisa/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
  17. package/plugins/lisa/skills/lisa-github-sync/SKILL.md +1 -1
  18. package/plugins/lisa/skills/lisa-linear-access/SKILL.md +2 -0
  19. package/plugins/lisa/skills/lisa-tracker-evidence/SKILL.md +3 -1
  20. package/plugins/lisa/skills/lisa-tracker-sync/SKILL.md +8 -0
  21. package/plugins/lisa-agy/plugin.json +1 -1
  22. package/plugins/lisa-agy/skills/lisa-atlassian-access/SKILL.md +2 -0
  23. package/plugins/lisa-agy/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
  24. package/plugins/lisa-agy/skills/lisa-github-sync/SKILL.md +1 -1
  25. package/plugins/lisa-agy/skills/lisa-linear-access/SKILL.md +2 -0
  26. package/plugins/lisa-agy/skills/lisa-tracker-evidence/SKILL.md +3 -1
  27. package/plugins/lisa-agy/skills/lisa-tracker-sync/SKILL.md +8 -0
  28. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  29. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  30. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  31. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-copilot/agents/test-specialist.agent.md +1 -1
  35. package/plugins/lisa-copilot/agents/verification-specialist.agent.md +4 -4
  36. package/plugins/lisa-copilot/rules/eager/report-actionability.md +6 -3
  37. package/plugins/lisa-copilot/skills/lisa-atlassian-access/SKILL.md +2 -0
  38. package/plugins/lisa-copilot/skills/lisa-codify-verification/SKILL.md +2 -2
  39. package/plugins/lisa-copilot/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
  40. package/plugins/lisa-copilot/skills/lisa-github-sync/SKILL.md +1 -1
  41. package/plugins/lisa-copilot/skills/lisa-linear-access/SKILL.md +2 -0
  42. package/plugins/lisa-copilot/skills/lisa-tracker-evidence/SKILL.md +3 -1
  43. package/plugins/lisa-copilot/skills/lisa-tracker-sync/SKILL.md +8 -0
  44. package/plugins/lisa-copilot/skills/lisa-verification-lifecycle/SKILL.md +1 -1
  45. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-cursor/agents/test-specialist.md +1 -1
  47. package/plugins/lisa-cursor/agents/verification-specialist.md +4 -4
  48. package/plugins/lisa-cursor/rules/report-actionability.mdc +6 -3
  49. package/plugins/lisa-cursor/skills/lisa-atlassian-access/SKILL.md +2 -0
  50. package/plugins/lisa-cursor/skills/lisa-codify-verification/SKILL.md +2 -2
  51. package/plugins/lisa-cursor/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
  52. package/plugins/lisa-cursor/skills/lisa-github-sync/SKILL.md +1 -1
  53. package/plugins/lisa-cursor/skills/lisa-linear-access/SKILL.md +2 -0
  54. package/plugins/lisa-cursor/skills/lisa-tracker-evidence/SKILL.md +3 -1
  55. package/plugins/lisa-cursor/skills/lisa-tracker-sync/SKILL.md +8 -0
  56. package/plugins/lisa-cursor/skills/lisa-verification-lifecycle/SKILL.md +1 -1
  57. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  59. package/plugins/lisa-expo-agy/plugin.json +1 -1
  60. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  64. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  65. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  69. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  70. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  73. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  74. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  75. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  79. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  80. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  83. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  84. package/plugins/lisa-rails-agy/plugin.json +1 -1
  85. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  86. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  87. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  88. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  89. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  90. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  92. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  93. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  94. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  95. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  96. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  97. package/plugins/src/base/rules/eager/report-actionability.md +6 -3
  98. package/plugins/src/base/skills/lisa-atlassian-access/SKILL.md +2 -0
  99. package/plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md +7 -0
  100. package/plugins/src/base/skills/lisa-github-sync/SKILL.md +1 -1
  101. package/plugins/src/base/skills/lisa-linear-access/SKILL.md +2 -0
  102. package/plugins/src/base/skills/lisa-tracker-evidence/SKILL.md +3 -1
  103. package/plugins/src/base/skills/lisa-tracker-sync/SKILL.md +8 -0
  104. package/scripts/generate-copilot-plugin-artifacts.mjs +2 -0
  105. package/scripts/generate-cursor-plugin-artifacts.mjs +2 -0
  106. package/scripts/lib/plugin-rule-citations.mjs +49 -0
@@ -12,7 +12,7 @@ skills:
12
12
 
13
13
  You are a verification specialist. Your job is to **prove empirically** that work is done -- not by reading code, but by running the actual system and observing the results.
14
14
 
15
- Read `.claude/rules/verification.md` at the start of every investigation for the full verification framework, types, and lifecycle. Read `.claude/rules/falsifiable-checks.md` alongside it: every check YOU author — probe, script, codified spec, sweep — is subject to it, and a check that has not been shown capable of failing is reported as *unvalidated*, never as passing. Read `.claude/rules/claim-evidence-mapping.md` too: it binds every claim to the **boundary** it asserts and every boundary to the evidence **kinds** that reach it. The verdict you write is what `spec-conformance-specialist` cross-checks — record each claim's `boundary`, its `required_evidence_kinds`, its `evidence_refs`, and its `not_established` list so a boundary mismatch is catchable rather than invisible.
15
+ Read [`rules/verification-reference.mdc`](../rules/verification-reference.mdc) at the start of every investigation for the full verification framework, types, and lifecycle. Read [`rules/falsifiable-checks-reference.mdc`](../rules/falsifiable-checks-reference.mdc) alongside it: every check YOU author — probe, script, codified spec, sweep — is subject to it, and a check that has not been shown capable of failing is reported as *unvalidated*, never as passing. Read [`rules/claim-evidence-mapping-reference.mdc`](../rules/claim-evidence-mapping-reference.mdc) too: it binds every claim to the **boundary** it asserts and every boundary to the evidence **kinds** that reach it. The verdict you write is what `spec-conformance-specialist` cross-checks — record each claim's `boundary`, its `required_evidence_kinds`, its `evidence_refs`, and its `not_established` list so a boundary mismatch is catchable rather than invisible.
16
16
 
17
17
  ## Core Philosophy
18
18
 
@@ -30,7 +30,7 @@ Confirm that quality gates (tests, typecheck, lint, format) pass. These are prer
30
30
 
31
31
  ### 2. Classify
32
32
 
33
- Read `.claude/rules/verification.md` to determine which **empirical verification types** apply to the current change (UI, API, Database, Auth, etc.). Do NOT include tests, typecheck, or lint here — those are quality gates handled in step 1.
33
+ Read [`rules/verification-reference.mdc`](../rules/verification-reference.mdc) to determine which **empirical verification types** apply to the current change (UI, API, Database, Auth, etc.). Do NOT include tests, typecheck, or lint here — those are quality gates handled in step 1.
34
34
 
35
35
  ### 3. Discover Available Tools
36
36
 
@@ -124,11 +124,11 @@ For every empirical verification that produced PASS evidence, invoke the `codify
124
124
 
125
125
  ## Rules
126
126
 
127
- - Always read `.claude/rules/verification.md` first for the project's verification standards and type taxonomy
127
+ - Always read [`rules/verification-reference.mdc`](../rules/verification-reference.mdc) first for the project's verification standards and type taxonomy
128
128
  - Follow the verification lifecycle: confirm quality gates, classify, check tooling, fail fast, plan, execute, codify, spec conformance, loop
129
129
  - Every passing empirical verification must be codified as a regression test via `codify-verification` before declaring done (skip allowed only for PR / Documentation / Deploy / Investigate-Only)
130
130
  - Tests, typecheck, lint, and format are quality gates (prerequisites), NOT verification — never report them as verification evidence
131
- - Falsify every check you author before reporting a clean result: break the guarded property, confirm the check fails and NAMES the right location, restore. Report what you broke alongside the result — see `.claude/rules/falsifiable-checks.md`
131
+ - Falsify every check you author before reporting a clean result: break the guarded property, confirm the check fails and NAMES the right location, restore. Report what you broke alongside the result — see [`rules/falsifiable-checks-reference.mdc`](../rules/falsifiable-checks-reference.mdc)
132
132
  - A zero-hit sweep is meaningless until the detector has found known instances on a ref where the defect still exists; a passing probe needs a deliberate bite control that MUST report a problem
133
133
  - State each clean result's blind spot (presence vs. value, reachability, class completeness) — a negative result describes what the check can perceive, not the code
134
134
  - Discover existing project scripts and tools before creating new ones
@@ -5,9 +5,8 @@ alwaysApply: true
5
5
 
6
6
  # Report Actionability — Every Report Says What the Reader Must Do (load-bearing)
7
7
 
8
- A report that describes real work accurately can still fail, because the reader cannot tell **which items need them and which are already handled**. Prose that mixes fixed and open items reads as a single undifferentiated pile of problems; the reader either acts on something already done, or assumes something open was handled. Both are caused by the report, not by the work.
9
-
10
- The specific failure this rule exists to prevent, observed in a review cycle: six findings were returned, three were fixed, and the report described **two of them in detail without ever stating that six existed**. Every sentence in it was true. The reader still had to ask "did you fix them?" — and the answer was partly yes, partly no, and one finding had not even been read. A subset presented in the shape of a whole is worse than silence, because silence does not create false confidence.
8
+ Reports must distinguish completed work, remaining work, and decisions the reader
9
+ needs to make. Account for the whole reviewed scope and clearly label any subset.
11
10
 
12
11
  ## Mandatory
13
12
 
@@ -25,4 +24,8 @@ The specific failure this rule exists to prevent, observed in a review cycle: si
25
24
 
26
25
  Code-review findings, CI failures, test results, audit output, security scans, deploy status, and any list of problems handed to a human. It applies equally to reports you are proud of and reports that expose your own mistake — the second kind is where the temptation to describe a flattering subset is strongest.
27
26
 
27
+ ## Agent attribution
28
+
29
+ Follow `lisa-tracker-sync` — **Agent attribution** for agent-composed tracker comments and review messages. The short convention lives in that portable skill so agents without a rules surface receive it too.
30
+
28
31
  Detail, worked examples and the failure taxonomy: [reference/report-actionability.md](report-actionability-reference.mdc).
@@ -12,6 +12,8 @@ Single chokepoint for all Atlassian operations. Routes each op to a substrate, e
12
12
 
13
13
  The caller passes one operation plus its arguments. Operations are listed in the dispatch table below. The skill returns either the structured operation result (JSON when the substrate provides it) or a clear error.
14
14
 
15
+ For agent-composed JIRA or Confluence comments, apply `lisa-tracker-sync` — **Agent attribution** before posting. Preserve an existing disclosure and the exact format of machine-managed comments.
16
+
15
17
  ```text
16
18
  operation: read-ticket key: PROJ-123
17
19
  operation: write-ticket payload: {...}
@@ -145,7 +145,7 @@ Confirm:
145
145
  1. The test PASSES against the current code (the change being shipped)
146
146
  2. The test ACTUALLY FAILS without the change — observed, not reasoned about
147
147
 
148
- **Step 2 is mandatory for every codified test, and "mentally reverting" does not satisfy it.** Mental reversion is the exact mechanism by which non-functional guards ship: the author believes the assertion is load-bearing, and it is not. Break the guarded property for real, run the test, and read the failure. See `.claude/rules/falsifiable-checks.md` for the four observed ways a check passes while asserting nothing.
148
+ **Step 2 is mandatory for every codified test, and "mentally reverting" does not satisfy it.** Mental reversion is the exact mechanism by which non-functional guards ship: the author believes the assertion is load-bearing, and it is not. Break the guarded property for real, run the test, and read the failure. See [`rules/falsifiable-checks-reference.mdc`](../../rules/falsifiable-checks-reference.mdc) for the four observed ways a check passes while asserting nothing.
149
149
 
150
150
  Do it one of these ways, in order of preference:
151
151
 
@@ -204,7 +204,7 @@ If codification was skipped, an explicit reason recorded in the report (one of t
204
204
  ## Rules
205
205
 
206
206
  - Never claim a verification is codified without running the new test and observing it pass
207
- - Never claim it is codified without observing it **FAIL** on a real break — mental reversion is not observation, and a test whose failure was never seen is unvalidated, not a gate (`.claude/rules/falsifiable-checks.md`)
207
+ - Never claim it is codified without observing it **FAIL** on a real break — mental reversion is not observation, and a test whose failure was never seen is unvalidated, not a gate ([`rules/falsifiable-checks-reference.mdc`](../../rules/falsifiable-checks-reference.mdc))
208
208
  - Never let the assertion be satisfiable by the test's own fixture instead of the artifact under test — bind it to the real document/config/output
209
209
  - Never trust a revert-to-verify on generated, schema-validated, or cached input without confirming the input actually changed; a failed generator silently leaves the old artifact and the test "passes" on stale bytes
210
210
  - Never disable, skip, or `.skip()` the new test "temporarily" to make CI green — fix the test or fix the underlying change
@@ -63,6 +63,13 @@ merges" loop. Other skills delegate here instead of re-implementing it. Runs
63
63
  build-intake skills use to diagnose-and-route without fixing in place.
64
64
 
65
65
  Resolve `<owner>/<repo>` from `gh repo view --json nameWithOwner` (or the PR URL).
66
+
67
+ For agent-written review submissions, dismissal reasons, merge-message text and
68
+ existing PR updates, follow `lisa-tracker-sync` — **Agent attribution**.
69
+ Use the same short disclosure already present; a public lane name is optional.
70
+ Do not create an extra comment solely to attribute a label or auto-merge change,
71
+ or turn missing attribution into a merge gate. Attribute any relayed human
72
+ decision to its actual source; an agent's analysis is not an owner ruling.
66
73
  Use plain `gh` + `git` so Claude and Codex execute identically.
67
74
 
68
75
  ## 0. Take the babysitter lease
@@ -44,7 +44,7 @@ Optional arguments include `pr_url=<url>` for the live pull request and `merge_s
44
44
  For `--rollup`, skip this milestone path and use Step 5's classifier decision.
45
45
 
46
46
  1. **Idempotency check** — read the issue's recent comments. If the most recent comment with the prefix `[claude-sync] <milestone>` matches the current milestone AND the body content is unchanged, skip the post (no duplicate).
47
- 2. **Add the comment**:
47
+ 2. **Add the comment** using `lisa-tracker-sync` — **Agent attribution** for the agent-composed body; keep any existing disclosure:
48
48
 
49
49
  ```bash
50
50
  gh issue comment <number> --repo <org>/<repo> --body-file /tmp/sync-comment.md
@@ -298,6 +298,8 @@ the same way.
298
298
  Both comment operations take **either** `issue_id:` or `project_id:`. Exactly one
299
299
  is required; passing both, or neither, is refused naming the operation.
300
300
 
301
+ For agent-composed `save-comment` bodies, apply `lisa-tracker-sync` — **Agent attribution** before posting. Preserve an existing disclosure and the exact format of machine-managed comments.
302
+
301
303
  Linear treats a comment's target as one field on the same input type, so the
302
304
  project form is not a second mechanism — it is the same mutation with a
303
305
  different anchor. Direct introspection of `https://api.linear.app/graphql`:
@@ -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 Claude (AI agent, not a human)" and address the reporter / QA / PM by name.
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`).
@@ -27,7 +27,7 @@ Confirm that quality gates (tests, typecheck, lint, format) pass. These are prer
27
27
 
28
28
  ### 2. Classify
29
29
 
30
- Determine which **empirical verification types** apply based on the change. Check each type in the Verification Types table in `.claude/rules/verification.md` against the change scope. Every applicable type requires running the actual system and observing results — not just running tests.
30
+ Determine which **empirical verification types** apply based on the change. Check each type in the Verification Types table in [`rules/verification-reference.mdc`](../../rules/verification-reference.mdc) against the change scope. Every applicable type requires running the actual system and observing results — not just running tests.
31
31
 
32
32
  ### 3. Check Tooling
33
33
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Expo and React Native-specific skills, agents, rules, and MCP servers.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Harper/Fabric-specific Lisa rules for TypeScript component apps.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "NestJS-specific skills and migration write-protection hooks.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
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.55.28",
3
+ "version": "4.55.30",
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.55.28",
3
+ "version": "4.55.30",
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.55.28",
3
+ "version": "4.55.30",
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.55.28",
3
+ "version": "4.55.30",
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-phaser",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Ruby on Rails-specific skills and hooks for RuboCop and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "TypeScript-specific hooks for formatting, linting, and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "Distributable LLM Wiki kernel — ingest, query, lint, and maintain a git-native markdown knowledge base across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.55.28",
3
+ "version": "4.55.30",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,8 +1,7 @@
1
1
  # Report Actionability — Every Report Says What the Reader Must Do (load-bearing)
2
2
 
3
- A report that describes real work accurately can still fail, because the reader cannot tell **which items need them and which are already handled**. Prose that mixes fixed and open items reads as a single undifferentiated pile of problems; the reader either acts on something already done, or assumes something open was handled. Both are caused by the report, not by the work.
4
-
5
- The specific failure this rule exists to prevent, observed in a review cycle: six findings were returned, three were fixed, and the report described **two of them in detail without ever stating that six existed**. Every sentence in it was true. The reader still had to ask "did you fix them?" — and the answer was partly yes, partly no, and one finding had not even been read. A subset presented in the shape of a whole is worse than silence, because silence does not create false confidence.
3
+ Reports must distinguish completed work, remaining work, and decisions the reader
4
+ needs to make. Account for the whole reviewed scope and clearly label any subset.
6
5
 
7
6
  ## Mandatory
8
7
 
@@ -20,4 +19,8 @@ The specific failure this rule exists to prevent, observed in a review cycle: si
20
19
 
21
20
  Code-review findings, CI failures, test results, audit output, security scans, deploy status, and any list of problems handed to a human. It applies equally to reports you are proud of and reports that expose your own mistake — the second kind is where the temptation to describe a flattering subset is strongest.
22
21
 
22
+ ## Agent attribution
23
+
24
+ Follow `lisa-tracker-sync` — **Agent attribution** for agent-composed tracker comments and review messages. The short convention lives in that portable skill so agents without a rules surface receive it too.
25
+
23
26
  Detail, worked examples and the failure taxonomy: [reference/report-actionability.md](../reference/report-actionability.md).
@@ -12,6 +12,8 @@ Single chokepoint for all Atlassian operations. Routes each op to a substrate, e
12
12
 
13
13
  The caller passes one operation plus its arguments. Operations are listed in the dispatch table below. The skill returns either the structured operation result (JSON when the substrate provides it) or a clear error.
14
14
 
15
+ For agent-composed JIRA or Confluence comments, apply `lisa-tracker-sync` — **Agent attribution** before posting. Preserve an existing disclosure and the exact format of machine-managed comments.
16
+
15
17
  ```text
16
18
  operation: read-ticket key: PROJ-123
17
19
  operation: write-ticket payload: {...}
@@ -63,6 +63,13 @@ merges" loop. Other skills delegate here instead of re-implementing it. Runs
63
63
  build-intake skills use to diagnose-and-route without fixing in place.
64
64
 
65
65
  Resolve `<owner>/<repo>` from `gh repo view --json nameWithOwner` (or the PR URL).
66
+
67
+ For agent-written review submissions, dismissal reasons, merge-message text and
68
+ existing PR updates, follow `lisa-tracker-sync` — **Agent attribution**.
69
+ Use the same short disclosure already present; a public lane name is optional.
70
+ Do not create an extra comment solely to attribute a label or auto-merge change,
71
+ or turn missing attribution into a merge gate. Attribute any relayed human
72
+ decision to its actual source; an agent's analysis is not an owner ruling.
66
73
  Use plain `gh` + `git` so Claude and Codex execute identically.
67
74
 
68
75
  ## 0. Take the babysitter lease
@@ -44,7 +44,7 @@ Optional arguments include `pr_url=<url>` for the live pull request and `merge_s
44
44
  For `--rollup`, skip this milestone path and use Step 5's classifier decision.
45
45
 
46
46
  1. **Idempotency check** — read the issue's recent comments. If the most recent comment with the prefix `[claude-sync] <milestone>` matches the current milestone AND the body content is unchanged, skip the post (no duplicate).
47
- 2. **Add the comment**:
47
+ 2. **Add the comment** using `lisa-tracker-sync` — **Agent attribution** for the agent-composed body; keep any existing disclosure:
48
48
 
49
49
  ```bash
50
50
  gh issue comment <number> --repo <org>/<repo> --body-file /tmp/sync-comment.md
@@ -298,6 +298,8 @@ the same way.
298
298
  Both comment operations take **either** `issue_id:` or `project_id:`. Exactly one
299
299
  is required; passing both, or neither, is refused naming the operation.
300
300
 
301
+ For agent-composed `save-comment` bodies, apply `lisa-tracker-sync` — **Agent attribution** before posting. Preserve an existing disclosure and the exact format of machine-managed comments.
302
+
301
303
  Linear treats a comment's target as one field on the same input type, so the
302
304
  project form is not a second mechanism — it is the same mutation with a
303
305
  different anchor. Direct introspection of `https://api.linear.app/graphql`: