@codyswann/lisa 3.45.1 → 3.45.4

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 (73) hide show
  1. package/all/copy-overwrite/scripts/lisa-gates.mjs +18 -9
  2. package/dist/codex/scripts/setup-jira-cli.sh +7 -0
  3. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  4. package/dist/core/lisa-owned-hash-ledger.js +1 -0
  5. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  6. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  7. package/dist/core/upstream-evidence-manifest.js +5 -3
  8. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  9. package/dist/opencode/plugin-templates/lisa-session-bootstrap.ts +7 -1
  10. package/dist/utils/ignore-patterns.d.ts.map +1 -1
  11. package/dist/utils/ignore-patterns.js +49 -12
  12. package/dist/utils/ignore-patterns.js.map +1 -1
  13. package/package.json +1 -1
  14. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  15. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  16. package/plugins/lisa/.codex-plugin/skills/lisa-analyze-claude-remote/SKILL.md +5 -3
  17. package/plugins/lisa/hooks/setup-jira-cli.sh +12 -0
  18. package/plugins/lisa/skills/lisa-analyze-claude-remote/SKILL.md +5 -3
  19. package/plugins/lisa-agy/plugin.json +1 -1
  20. package/plugins/lisa-agy/skills/lisa-analyze-claude-remote/SKILL.md +5 -3
  21. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  23. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  24. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  25. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  26. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  27. package/plugins/lisa-copilot/hooks/setup-jira-cli.sh +12 -0
  28. package/plugins/lisa-copilot/skills/lisa-analyze-claude-remote/SKILL.md +5 -3
  29. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa-cursor/hooks/setup-jira-cli.sh +12 -0
  31. package/plugins/lisa-cursor/skills/lisa-analyze-claude-remote/SKILL.md +5 -3
  32. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  34. package/plugins/lisa-expo-agy/plugin.json +1 -1
  35. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  39. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  40. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  44. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  45. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  49. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  50. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  54. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  55. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  59. package/plugins/lisa-rails-agy/plugin.json +1 -1
  60. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  64. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  65. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  69. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  70. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  72. package/plugins/src/base/hooks/setup-jira-cli.sh +12 -0
  73. package/plugins/src/base/skills/lisa-analyze-claude-remote/SKILL.md +5 -3
@@ -4,7 +4,8 @@
4
4
  * OpenCode runs a plugin's factory function once when it loads the plugin at
5
5
  * session start, which is the natural home for Lisa's Codex SessionStart hooks:
6
6
  * - install-pkgs.sh → install dependencies when node_modules is missing
7
- * - setup-jira-cli.sh → write jira-cli config from environment variables
7
+ * - setup-jira-cli.sh → write jira-cli config from environment variables, only
8
+ * when the project's configured tracker is jira
8
9
  *
9
10
  * Both are fully fail-open (wrapped in try/catch) so a package-manager or
10
11
  * filesystem hiccup never bricks OpenCode startup, mirroring the Codex scripts.
@@ -61,6 +62,10 @@ export const LisaSessionBootstrap = async ({
61
62
  }
62
63
 
63
64
  // setup-jira-cli: write jira-cli config from environment variables and non-secret Lisa config.
65
+ // Gated on `tracker: "jira"` — a project on Linear or GitHub Issues has no use
66
+ // for a jira-cli config, and writing one made a false implicit claim about the
67
+ // project's tracker. Fails closed: an absent tracker writes nothing, because
68
+ // Lisa treats a missing `tracker` as unconfigured, not as a jira default.
64
69
  try {
65
70
  const readLisaConfig = (path: string[]) => {
66
71
  for (const file of [".lisa.config.local.json", ".lisa.config.json"]) {
@@ -82,6 +87,7 @@ export const LisaSessionBootstrap = async ({
82
87
  }
83
88
  return undefined;
84
89
  };
90
+ if (readLisaConfig(["tracker"]) !== "jira") return {};
85
91
  const atlassianSite = readLisaConfig(["atlassian", "site"]);
86
92
  const server =
87
93
  process.env.JIRA_SERVER ??
@@ -1 +1 @@
1
- {"version":3,"file":"ignore-patterns.d.ts","sourceRoot":"","sources":["../../src/utils/ignore-patterns.ts"],"names":[],"mappings":"AAoCA;;GAEG;AACH,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,iDAAiD;IACjD,QAAQ,CAAC,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAKtE;AAkDD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,OAAO,CAgBT;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC,CAkBzB"}
1
+ {"version":3,"file":"ignore-patterns.d.ts","sourceRoot":"","sources":["../../src/utils/ignore-patterns.ts"],"names":[],"mappings":"AA2EA;;GAEG;AACH,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,iDAAiD;IACjD,QAAQ,CAAC,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAKtE;AAkDD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,OAAO,CAgBT;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC,CAkBzB"}
@@ -1,23 +1,60 @@
1
1
  import { readFile } from "node:fs/promises";
2
+ import { createRequire } from "node:module";
2
3
  import * as path from "node:path";
3
- // minimatch v9+ exposes the matcher as a named ESM export. Keep the legacy
4
- // default fallback so Lisa still runs in projects whose package manager hoists
5
- // an older CJS minimatch for another tool.
6
- import * as minimatchModule from "minimatch";
7
4
  import { pathExists } from "./file-operations.js";
5
+ const requireFromHere = createRequire(import.meta.url);
8
6
  /**
9
- * Resolve the minimatch predicate across v9+ named exports and legacy CJS
10
- * default exports. Throws if neither is available so callers see a clear error
11
- * instead of "undefined is not a function" at match time.
7
+ * Resolve the minimatch predicate, via CJS, on first use.
8
+ *
9
+ * Three deliberate choices, each fixing something the previous shape got wrong.
10
+ *
11
+ * **CJS, not ESM.** `minimatch@10`'s ESM entry opens with
12
+ * `import { expand } from 'brace-expansion'`, which throws at MODULE LOAD in any
13
+ * project whose tree resolves `brace-expansion` to the 2.x line — a very common
14
+ * CVE remediation (`">=2.1.4 <3"`), since 2.x is CJS and exports no named
15
+ * `expand`. Its CJS entry has no such problem. Measured on a real consumer:
16
+ * `import('minimatch')` threw while `require('minimatch')` returned a working
17
+ * function, same package, same version, same tree.
18
+ *
19
+ * **Lazily, not at module load.** The previous version resolved this eagerly
20
+ * behind a static `import`, and that is what made the failure fatal: Lisa's own
21
+ * CLI could not boot, so `lisa apply` could not run — and `lisa apply` is what
22
+ * writes the `brace-expansion` override that fixes the tree. The remedy shipped
23
+ * inside the thing that could not start. Resolving on first use breaks that
24
+ * deadlock: the CLI boots, `doctor` reports, and apply repairs the override.
25
+ *
26
+ * **The old compatibility shim was unreachable.** Its comment said it existed
27
+ * so "Lisa still runs in projects whose package manager hoists an older CJS
28
+ * minimatch" — but a static ESM import fails before any fallback can be
29
+ * consulted. A guard that cannot fire is not a guard.
30
+ * @returns The matcher.
12
31
  */
13
- const minimatchFn = (() => {
14
- const mod = minimatchModule;
15
- const candidate = typeof mod.default === "function" ? mod.default : mod.minimatch;
32
+ const loadMinimatch = () => {
33
+ const mod = requireFromHere("minimatch");
34
+ const candidate = typeof mod.minimatch === "function"
35
+ ? mod.minimatch
36
+ : typeof mod.default === "function"
37
+ ? mod.default
38
+ : mod;
16
39
  if (typeof candidate !== "function") {
17
- throw new TypeError("minimatch module did not expose a callable export; expected v9+ named export or legacy default");
40
+ throw new TypeError("minimatch did not expose a callable export; expected a named `minimatch`, a default, or a callable module");
18
41
  }
19
42
  return candidate;
20
- })();
43
+ };
44
+ /**
45
+ * The matcher, resolved on each call.
46
+ *
47
+ * No memoisation, and that is not an oversight. Node's `require` cache already
48
+ * makes every call after the first a map lookup, so a hand-rolled cache would
49
+ * duplicate the module system's own work — and every shape it could take here
50
+ * (a reassignable binding, a mutated holder) is forbidden by this codebase's
51
+ * immutability rules for reasons that are worth more than the nanoseconds.
52
+ * @param p Path to test.
53
+ * @param pattern Glob pattern.
54
+ * @param options Match options.
55
+ * @returns Whether the path matches.
56
+ */
57
+ const minimatchFn = (p, pattern, options) => loadMinimatch()(p, pattern, options);
21
58
  /**
22
59
  * Name of the ignore file that projects can use to skip Lisa files
23
60
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ignore-patterns.js","sourceRoot":"","sources":["../../src/utils/ignore-patterns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ignore-patterns.js","sourceRoot":"","sources":["../../src/utils/ignore-patterns.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -132,7 +132,7 @@
132
132
  "ws": ">=8.21.0"
133
133
  },
134
134
  "name": "@codyswann/lisa",
135
- "version": "3.45.1",
135
+ "version": "3.45.4",
136
136
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
137
137
  "main": "dist/index.js",
138
138
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "3.45.1",
3
+ "version": "3.45.4",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "3.45.1",
3
+ "version": "3.45.4",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -28,7 +28,7 @@ This skill ships in the base Lisa plugin and is distributed to every host projec
28
28
  discover requirements **dynamically from the repo** rather than assuming Lisa-repo specifics. It
29
29
  audits two layers together:
30
30
 
31
- - **Lisa's needs** — startup hooks (`install-pkgs.sh`, `setup-jira-cli.sh`, rule injection),
31
+ - **Lisa's needs** — startup hooks (`install-pkgs.sh`, `setup-jira-cli.sh` — tracker-gated, rule injection),
32
32
  the configured `tracker`/`source`, and the CLIs/MCP/env those imply.
33
33
  - **The host project's needs** — its own package manager, build/test tooling, app runtime
34
34
  dependencies, CI-assumed binaries, and project-scoped MCP servers.
@@ -71,7 +71,9 @@ Group the findings as:
71
71
  runs, whether it is headless-safe, whether it needs network or write access to system paths,
72
72
  and whether it fits the cloud setup-script time budget (~5 minutes for environment caching;
73
73
  `SessionStart` hooks re-run every session and must be fast). Lisa's `install-pkgs.sh` and
74
- `setup-jira-cli.sh` are the usual headline items.
74
+ `setup-jira-cli.sh` are the usual headline items. Note that `setup-jira-cli.sh` is gated on
75
+ `tracker: "jira"` — on a project using another tracker it exits immediately and needs no
76
+ environment at all, so do not report its JIRA env vars as required there.
75
77
 
76
78
  3. **External CLIs / binaries** — scan hooks, `scripts/`, committed skills/commands, and
77
79
  `.github/workflows/` for invoked binaries that a base cloud image likely lacks. Assume node,
@@ -256,7 +258,7 @@ unsuffixed `…_TOKEN`/`…_KEY` is the simplest to set in a single-account rout
256
258
 
257
259
  ### JIRA — `tracker: jira`
258
260
  - Headless substrate: `jira-cli` + curl (Basic auth). The acli and Atlassian-MCP tiers need prior interactive/OAuth auth → not viable headless.
259
- - Env: `JIRA_API_TOKEN`, `JIRA_SERVER` (e.g. `https://acme.atlassian.net`), `JIRA_LOGIN` (account email), `JIRA_PROJECT` (default project key); optional `JIRA_INSTALLATION` (default `cloud`), `JIRA_BOARD`. (`setup-jira-cli.sh` writes the jira-cli config from these on SessionStart.)
261
+ - Env: `JIRA_API_TOKEN`, `JIRA_SERVER` (e.g. `https://acme.atlassian.net`), `JIRA_LOGIN` (account email), `JIRA_PROJECT` (default project key); optional `JIRA_INSTALLATION` (default `cloud`), `JIRA_BOARD`. (`setup-jira-cli.sh` writes the jira-cli config from these on SessionStart — but only when `.lisa.config*.json` sets `tracker: "jira"`; on any other tracker the hook is a no-op.)
260
262
  - Acquire: `https://id.atlassian.com/manage-profile/security/api-tokens`.
261
263
  - Access: the API token inherits the Atlassian user's permissions — the user must have Browse/Create/Edit/Transition on the target project. An unscoped token suffices for jira-cli; a scoped token must cover the JIRA project read/write operations.
262
264
 
@@ -3,6 +3,13 @@
3
3
  # Writes the JIRA CLI config file from environment variables.
4
4
  # Runs on SessionStart so the config is available for every session.
5
5
  #
6
+ # Gated on the project's configured tracker: this only writes anything when
7
+ # `.lisa.config*.json` declares `tracker: "jira"`. A project on Linear or GitHub
8
+ # Issues has no use for a jira-cli config, and writing one made a false implicit
9
+ # claim about which tracker the project runs on. The gate fails closed — an
10
+ # unreadable or absent tracker writes nothing — because Lisa treats a missing
11
+ # `tracker` as unconfigured rather than as a jira default (see lisa-tracker-read).
12
+ #
6
13
  # Required env vars (must be created in your Claude Code Web environment):
7
14
  # JIRA_INSTALLATION - cloud or local
8
15
  # JIRA_SERVER - Atlassian instance URL (falls back to .lisa.config*.json atlassian.site)
@@ -42,6 +49,11 @@ read_lisa_config() {
42
49
  printf '%s' "${value}"
43
50
  }
44
51
 
52
+ # Tracker gate: do nothing unless this project actually runs on JIRA.
53
+ if [[ "$(read_lisa_config '.tracker')" != "jira" ]]; then
54
+ exit 0
55
+ fi
56
+
45
57
  if [[ -z "${JIRA_SERVER:-}" ]]; then
46
58
  ATLASSIAN_SITE="$(read_lisa_config '.atlassian.site')"
47
59
  if [[ -n "${ATLASSIAN_SITE}" ]]; then
@@ -28,7 +28,7 @@ This skill ships in the base Lisa plugin and is distributed to every host projec
28
28
  discover requirements **dynamically from the repo** rather than assuming Lisa-repo specifics. It
29
29
  audits two layers together:
30
30
 
31
- - **Lisa's needs** — startup hooks (`install-pkgs.sh`, `setup-jira-cli.sh`, rule injection),
31
+ - **Lisa's needs** — startup hooks (`install-pkgs.sh`, `setup-jira-cli.sh` — tracker-gated, rule injection),
32
32
  the configured `tracker`/`source`, and the CLIs/MCP/env those imply.
33
33
  - **The host project's needs** — its own package manager, build/test tooling, app runtime
34
34
  dependencies, CI-assumed binaries, and project-scoped MCP servers.
@@ -71,7 +71,9 @@ Group the findings as:
71
71
  runs, whether it is headless-safe, whether it needs network or write access to system paths,
72
72
  and whether it fits the cloud setup-script time budget (~5 minutes for environment caching;
73
73
  `SessionStart` hooks re-run every session and must be fast). Lisa's `install-pkgs.sh` and
74
- `setup-jira-cli.sh` are the usual headline items.
74
+ `setup-jira-cli.sh` are the usual headline items. Note that `setup-jira-cli.sh` is gated on
75
+ `tracker: "jira"` — on a project using another tracker it exits immediately and needs no
76
+ environment at all, so do not report its JIRA env vars as required there.
75
77
 
76
78
  3. **External CLIs / binaries** — scan hooks, `scripts/`, committed skills/commands, and
77
79
  `.github/workflows/` for invoked binaries that a base cloud image likely lacks. Assume node,
@@ -256,7 +258,7 @@ unsuffixed `…_TOKEN`/`…_KEY` is the simplest to set in a single-account rout
256
258
 
257
259
  ### JIRA — `tracker: jira`
258
260
  - Headless substrate: `jira-cli` + curl (Basic auth). The acli and Atlassian-MCP tiers need prior interactive/OAuth auth → not viable headless.
259
- - Env: `JIRA_API_TOKEN`, `JIRA_SERVER` (e.g. `https://acme.atlassian.net`), `JIRA_LOGIN` (account email), `JIRA_PROJECT` (default project key); optional `JIRA_INSTALLATION` (default `cloud`), `JIRA_BOARD`. (`setup-jira-cli.sh` writes the jira-cli config from these on SessionStart.)
261
+ - Env: `JIRA_API_TOKEN`, `JIRA_SERVER` (e.g. `https://acme.atlassian.net`), `JIRA_LOGIN` (account email), `JIRA_PROJECT` (default project key); optional `JIRA_INSTALLATION` (default `cloud`), `JIRA_BOARD`. (`setup-jira-cli.sh` writes the jira-cli config from these on SessionStart — but only when `.lisa.config*.json` sets `tracker: "jira"`; on any other tracker the hook is a no-op.)
260
262
  - Acquire: `https://id.atlassian.com/manage-profile/security/api-tokens`.
261
263
  - Access: the API token inherits the Atlassian user's permissions — the user must have Browse/Create/Edit/Transition on the target project. An unscoped token suffices for jira-cli; a scoped token must cover the JIRA project read/write operations.
262
264
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "3.45.1",
3
+ "version": "3.45.4",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -28,7 +28,7 @@ This skill ships in the base Lisa plugin and is distributed to every host projec
28
28
  discover requirements **dynamically from the repo** rather than assuming Lisa-repo specifics. It
29
29
  audits two layers together:
30
30
 
31
- - **Lisa's needs** — startup hooks (`install-pkgs.sh`, `setup-jira-cli.sh`, rule injection),
31
+ - **Lisa's needs** — startup hooks (`install-pkgs.sh`, `setup-jira-cli.sh` — tracker-gated, rule injection),
32
32
  the configured `tracker`/`source`, and the CLIs/MCP/env those imply.
33
33
  - **The host project's needs** — its own package manager, build/test tooling, app runtime
34
34
  dependencies, CI-assumed binaries, and project-scoped MCP servers.
@@ -71,7 +71,9 @@ Group the findings as:
71
71
  runs, whether it is headless-safe, whether it needs network or write access to system paths,
72
72
  and whether it fits the cloud setup-script time budget (~5 minutes for environment caching;
73
73
  `SessionStart` hooks re-run every session and must be fast). Lisa's `install-pkgs.sh` and
74
- `setup-jira-cli.sh` are the usual headline items.
74
+ `setup-jira-cli.sh` are the usual headline items. Note that `setup-jira-cli.sh` is gated on
75
+ `tracker: "jira"` — on a project using another tracker it exits immediately and needs no
76
+ environment at all, so do not report its JIRA env vars as required there.
75
77
 
76
78
  3. **External CLIs / binaries** — scan hooks, `scripts/`, committed skills/commands, and
77
79
  `.github/workflows/` for invoked binaries that a base cloud image likely lacks. Assume node,
@@ -256,7 +258,7 @@ unsuffixed `…_TOKEN`/`…_KEY` is the simplest to set in a single-account rout
256
258
 
257
259
  ### JIRA — `tracker: jira`
258
260
  - Headless substrate: `jira-cli` + curl (Basic auth). The acli and Atlassian-MCP tiers need prior interactive/OAuth auth → not viable headless.
259
- - Env: `JIRA_API_TOKEN`, `JIRA_SERVER` (e.g. `https://acme.atlassian.net`), `JIRA_LOGIN` (account email), `JIRA_PROJECT` (default project key); optional `JIRA_INSTALLATION` (default `cloud`), `JIRA_BOARD`. (`setup-jira-cli.sh` writes the jira-cli config from these on SessionStart.)
261
+ - Env: `JIRA_API_TOKEN`, `JIRA_SERVER` (e.g. `https://acme.atlassian.net`), `JIRA_LOGIN` (account email), `JIRA_PROJECT` (default project key); optional `JIRA_INSTALLATION` (default `cloud`), `JIRA_BOARD`. (`setup-jira-cli.sh` writes the jira-cli config from these on SessionStart — but only when `.lisa.config*.json` sets `tracker: "jira"`; on any other tracker the hook is a no-op.)
260
262
  - Acquire: `https://id.atlassian.com/manage-profile/security/api-tokens`.
261
263
  - Access: the API token inherits the Atlassian user's permissions — the user must have Browse/Create/Edit/Transition on the target project. An unscoped token suffices for jira-cli; a scoped token must cover the JIRA project read/write operations.
262
264
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "3.45.1",
3
+ "version": "3.45.4",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "3.45.1",
3
+ "version": "3.45.4",
4
4
  "description": "AWS CDK-specific Lisa plugin.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "3.45.1",
3
+ "version": "3.45.4",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "3.45.1",
3
+ "version": "3.45.4",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "3.45.1",
3
+ "version": "3.45.4",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "3.45.1",
3
+ "version": "3.45.4",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -3,6 +3,13 @@
3
3
  # Writes the JIRA CLI config file from environment variables.
4
4
  # Runs on SessionStart so the config is available for every session.
5
5
  #
6
+ # Gated on the project's configured tracker: this only writes anything when
7
+ # `.lisa.config*.json` declares `tracker: "jira"`. A project on Linear or GitHub
8
+ # Issues has no use for a jira-cli config, and writing one made a false implicit
9
+ # claim about which tracker the project runs on. The gate fails closed — an
10
+ # unreadable or absent tracker writes nothing — because Lisa treats a missing
11
+ # `tracker` as unconfigured rather than as a jira default (see lisa-tracker-read).
12
+ #
6
13
  # Required env vars (must be created in your Claude Code Web environment):
7
14
  # JIRA_INSTALLATION - cloud or local
8
15
  # JIRA_SERVER - Atlassian instance URL (falls back to .lisa.config*.json atlassian.site)
@@ -42,6 +49,11 @@ read_lisa_config() {
42
49
  printf '%s' "${value}"
43
50
  }
44
51
 
52
+ # Tracker gate: do nothing unless this project actually runs on JIRA.
53
+ if [[ "$(read_lisa_config '.tracker')" != "jira" ]]; then
54
+ exit 0
55
+ fi
56
+
45
57
  if [[ -z "${JIRA_SERVER:-}" ]]; then
46
58
  ATLASSIAN_SITE="$(read_lisa_config '.atlassian.site')"
47
59
  if [[ -n "${ATLASSIAN_SITE}" ]]; then
@@ -28,7 +28,7 @@ This skill ships in the base Lisa plugin and is distributed to every host projec
28
28
  discover requirements **dynamically from the repo** rather than assuming Lisa-repo specifics. It
29
29
  audits two layers together:
30
30
 
31
- - **Lisa's needs** — startup hooks (`install-pkgs.sh`, `setup-jira-cli.sh`, rule injection),
31
+ - **Lisa's needs** — startup hooks (`install-pkgs.sh`, `setup-jira-cli.sh` — tracker-gated, rule injection),
32
32
  the configured `tracker`/`source`, and the CLIs/MCP/env those imply.
33
33
  - **The host project's needs** — its own package manager, build/test tooling, app runtime
34
34
  dependencies, CI-assumed binaries, and project-scoped MCP servers.
@@ -71,7 +71,9 @@ Group the findings as:
71
71
  runs, whether it is headless-safe, whether it needs network or write access to system paths,
72
72
  and whether it fits the cloud setup-script time budget (~5 minutes for environment caching;
73
73
  `SessionStart` hooks re-run every session and must be fast). Lisa's `install-pkgs.sh` and
74
- `setup-jira-cli.sh` are the usual headline items.
74
+ `setup-jira-cli.sh` are the usual headline items. Note that `setup-jira-cli.sh` is gated on
75
+ `tracker: "jira"` — on a project using another tracker it exits immediately and needs no
76
+ environment at all, so do not report its JIRA env vars as required there.
75
77
 
76
78
  3. **External CLIs / binaries** — scan hooks, `scripts/`, committed skills/commands, and
77
79
  `.github/workflows/` for invoked binaries that a base cloud image likely lacks. Assume node,
@@ -256,7 +258,7 @@ unsuffixed `…_TOKEN`/`…_KEY` is the simplest to set in a single-account rout
256
258
 
257
259
  ### JIRA — `tracker: jira`
258
260
  - Headless substrate: `jira-cli` + curl (Basic auth). The acli and Atlassian-MCP tiers need prior interactive/OAuth auth → not viable headless.
259
- - Env: `JIRA_API_TOKEN`, `JIRA_SERVER` (e.g. `https://acme.atlassian.net`), `JIRA_LOGIN` (account email), `JIRA_PROJECT` (default project key); optional `JIRA_INSTALLATION` (default `cloud`), `JIRA_BOARD`. (`setup-jira-cli.sh` writes the jira-cli config from these on SessionStart.)
261
+ - Env: `JIRA_API_TOKEN`, `JIRA_SERVER` (e.g. `https://acme.atlassian.net`), `JIRA_LOGIN` (account email), `JIRA_PROJECT` (default project key); optional `JIRA_INSTALLATION` (default `cloud`), `JIRA_BOARD`. (`setup-jira-cli.sh` writes the jira-cli config from these on SessionStart — but only when `.lisa.config*.json` sets `tracker: "jira"`; on any other tracker the hook is a no-op.)
260
262
  - Acquire: `https://id.atlassian.com/manage-profile/security/api-tokens`.
261
263
  - Access: the API token inherits the Atlassian user's permissions — the user must have Browse/Create/Edit/Transition on the target project. An unscoped token suffices for jira-cli; a scoped token must cover the JIRA project read/write operations.
262
264
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "3.45.1",
3
+ "version": "3.45.4",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -3,6 +3,13 @@
3
3
  # Writes the JIRA CLI config file from environment variables.
4
4
  # Runs on SessionStart so the config is available for every session.
5
5
  #
6
+ # Gated on the project's configured tracker: this only writes anything when
7
+ # `.lisa.config*.json` declares `tracker: "jira"`. A project on Linear or GitHub
8
+ # Issues has no use for a jira-cli config, and writing one made a false implicit
9
+ # claim about which tracker the project runs on. The gate fails closed — an
10
+ # unreadable or absent tracker writes nothing — because Lisa treats a missing
11
+ # `tracker` as unconfigured rather than as a jira default (see lisa-tracker-read).
12
+ #
6
13
  # Required env vars (must be created in your Claude Code Web environment):
7
14
  # JIRA_INSTALLATION - cloud or local
8
15
  # JIRA_SERVER - Atlassian instance URL (falls back to .lisa.config*.json atlassian.site)
@@ -42,6 +49,11 @@ read_lisa_config() {
42
49
  printf '%s' "${value}"
43
50
  }
44
51
 
52
+ # Tracker gate: do nothing unless this project actually runs on JIRA.
53
+ if [[ "$(read_lisa_config '.tracker')" != "jira" ]]; then
54
+ exit 0
55
+ fi
56
+
45
57
  if [[ -z "${JIRA_SERVER:-}" ]]; then
46
58
  ATLASSIAN_SITE="$(read_lisa_config '.atlassian.site')"
47
59
  if [[ -n "${ATLASSIAN_SITE}" ]]; then
@@ -28,7 +28,7 @@ This skill ships in the base Lisa plugin and is distributed to every host projec
28
28
  discover requirements **dynamically from the repo** rather than assuming Lisa-repo specifics. It
29
29
  audits two layers together:
30
30
 
31
- - **Lisa's needs** — startup hooks (`install-pkgs.sh`, `setup-jira-cli.sh`, rule injection),
31
+ - **Lisa's needs** — startup hooks (`install-pkgs.sh`, `setup-jira-cli.sh` — tracker-gated, rule injection),
32
32
  the configured `tracker`/`source`, and the CLIs/MCP/env those imply.
33
33
  - **The host project's needs** — its own package manager, build/test tooling, app runtime
34
34
  dependencies, CI-assumed binaries, and project-scoped MCP servers.
@@ -71,7 +71,9 @@ Group the findings as:
71
71
  runs, whether it is headless-safe, whether it needs network or write access to system paths,
72
72
  and whether it fits the cloud setup-script time budget (~5 minutes for environment caching;
73
73
  `SessionStart` hooks re-run every session and must be fast). Lisa's `install-pkgs.sh` and
74
- `setup-jira-cli.sh` are the usual headline items.
74
+ `setup-jira-cli.sh` are the usual headline items. Note that `setup-jira-cli.sh` is gated on
75
+ `tracker: "jira"` — on a project using another tracker it exits immediately and needs no
76
+ environment at all, so do not report its JIRA env vars as required there.
75
77
 
76
78
  3. **External CLIs / binaries** — scan hooks, `scripts/`, committed skills/commands, and
77
79
  `.github/workflows/` for invoked binaries that a base cloud image likely lacks. Assume node,
@@ -256,7 +258,7 @@ unsuffixed `…_TOKEN`/`…_KEY` is the simplest to set in a single-account rout
256
258
 
257
259
  ### JIRA — `tracker: jira`
258
260
  - Headless substrate: `jira-cli` + curl (Basic auth). The acli and Atlassian-MCP tiers need prior interactive/OAuth auth → not viable headless.
259
- - Env: `JIRA_API_TOKEN`, `JIRA_SERVER` (e.g. `https://acme.atlassian.net`), `JIRA_LOGIN` (account email), `JIRA_PROJECT` (default project key); optional `JIRA_INSTALLATION` (default `cloud`), `JIRA_BOARD`. (`setup-jira-cli.sh` writes the jira-cli config from these on SessionStart.)
261
+ - Env: `JIRA_API_TOKEN`, `JIRA_SERVER` (e.g. `https://acme.atlassian.net`), `JIRA_LOGIN` (account email), `JIRA_PROJECT` (default project key); optional `JIRA_INSTALLATION` (default `cloud`), `JIRA_BOARD`. (`setup-jira-cli.sh` writes the jira-cli config from these on SessionStart — but only when `.lisa.config*.json` sets `tracker: "jira"`; on any other tracker the hook is a no-op.)
260
262
  - Acquire: `https://id.atlassian.com/manage-profile/security/api-tokens`.
261
263
  - Access: the API token inherits the Atlassian user's permissions — the user must have Browse/Create/Edit/Transition on the target project. An unscoped token suffices for jira-cli; a scoped token must cover the JIRA project read/write operations.
262
264
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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": "3.45.1",
3
+ "version": "3.45.4",
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"