@codyswann/lisa 2.332.1 → 2.332.2

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 (60) hide show
  1. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  2. package/dist/core/upstream-evidence-manifest.js +2 -1
  3. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  4. package/package.json +1 -1
  5. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  6. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  7. package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +39 -3
  8. package/plugins/lisa/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +39 -3
  9. package/plugins/lisa-agy/plugin.json +1 -1
  10. package/plugins/lisa-agy/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +39 -3
  11. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  12. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  13. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  14. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  15. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  16. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  17. package/plugins/lisa-copilot/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +39 -3
  18. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  19. package/plugins/lisa-cursor/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +39 -3
  20. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  21. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  22. package/plugins/lisa-expo-agy/plugin.json +1 -1
  23. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  24. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  25. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  26. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  27. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  28. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  29. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  32. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  33. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  37. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  38. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  42. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  43. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  47. package/plugins/lisa-rails-agy/plugin.json +1 -1
  48. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  52. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  53. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  57. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  58. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  60. package/plugins/src/base/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +39 -3
package/package.json CHANGED
@@ -115,7 +115,7 @@
115
115
  "brace-expansion": ">=5.0.9"
116
116
  },
117
117
  "name": "@codyswann/lisa",
118
- "version": "2.332.1",
118
+ "version": "2.332.2",
119
119
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
120
120
  "main": "dist/index.js",
121
121
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -914,9 +914,45 @@ async function main() {
914
914
  "lisa-secrets-access",
915
915
  "materialize-secrets.mjs"
916
916
  );
917
- execFileSync("node", dryRun ? [materialize, "--dry-run"] : [materialize], {
918
- stdio: "inherit",
919
- });
917
+ // A failure here is fatal only when nothing else will try again.
918
+ //
919
+ // On a surface that materializes at BOTH setup and session start, this run
920
+ // is the floor and the hook is the authority. The two run in different
921
+ // environments: a cloud vendor can expose its configured variables to the
922
+ // agent session while the setup phase — which runs earlier, during image
923
+ // construction — never sees them. That is not an error state, it is the
924
+ // normal shape of `materializeAt: "both"`, and the hook materializes
925
+ // correctly moments later.
926
+ //
927
+ // Treating it as fatal cost an entire environment: setup.sh `exec`s this
928
+ // script, so a non-zero exit fails the vendor's setup step and Claude Code
929
+ // never starts at all. Trading "secrets arrive one phase later" for "the
930
+ // container will not boot" is a bad trade, and it regressed a case that
931
+ // used to work — before this surface materialized at setup, setup simply
932
+ // never attempted it.
933
+ //
934
+ // Every other case keeps the hard failure: an explicit `--phase=secrets`
935
+ // (the hook's own authoritative run) and a setup-only surface such as
936
+ // codex-cloud both have no second chance, so a silent pass there would
937
+ // hand back a session with no credentials and call it ready.
938
+ const retried = !requested && materializesAtSessionStart(materializeAt);
939
+ try {
940
+ execFileSync(
941
+ "node",
942
+ dryRun ? [materialize, "--dry-run"] : [materialize],
943
+ { stdio: "inherit" }
944
+ );
945
+ } catch (err) {
946
+ if (!retried) throw err;
947
+ console.log(
948
+ `\n Secrets were not materialized during setup, and that is not fatal ` +
949
+ `here.\n This surface also materializes at session start, which runs ` +
950
+ `with the\n session's own environment — the usual reason setup cannot ` +
951
+ `see the\n bootstrap credential. The session-start hook will retry.\n` +
952
+ ` If secrets are still missing INSIDE a session, that run is the one ` +
953
+ `to debug.`
954
+ );
955
+ }
920
956
  } else if (!requested) {
921
957
  console.log(
922
958
  `\nSecrets: materialized from a session-start hook on "${surface}", ` +
@@ -914,9 +914,45 @@ async function main() {
914
914
  "lisa-secrets-access",
915
915
  "materialize-secrets.mjs"
916
916
  );
917
- execFileSync("node", dryRun ? [materialize, "--dry-run"] : [materialize], {
918
- stdio: "inherit",
919
- });
917
+ // A failure here is fatal only when nothing else will try again.
918
+ //
919
+ // On a surface that materializes at BOTH setup and session start, this run
920
+ // is the floor and the hook is the authority. The two run in different
921
+ // environments: a cloud vendor can expose its configured variables to the
922
+ // agent session while the setup phase — which runs earlier, during image
923
+ // construction — never sees them. That is not an error state, it is the
924
+ // normal shape of `materializeAt: "both"`, and the hook materializes
925
+ // correctly moments later.
926
+ //
927
+ // Treating it as fatal cost an entire environment: setup.sh `exec`s this
928
+ // script, so a non-zero exit fails the vendor's setup step and Claude Code
929
+ // never starts at all. Trading "secrets arrive one phase later" for "the
930
+ // container will not boot" is a bad trade, and it regressed a case that
931
+ // used to work — before this surface materialized at setup, setup simply
932
+ // never attempted it.
933
+ //
934
+ // Every other case keeps the hard failure: an explicit `--phase=secrets`
935
+ // (the hook's own authoritative run) and a setup-only surface such as
936
+ // codex-cloud both have no second chance, so a silent pass there would
937
+ // hand back a session with no credentials and call it ready.
938
+ const retried = !requested && materializesAtSessionStart(materializeAt);
939
+ try {
940
+ execFileSync(
941
+ "node",
942
+ dryRun ? [materialize, "--dry-run"] : [materialize],
943
+ { stdio: "inherit" }
944
+ );
945
+ } catch (err) {
946
+ if (!retried) throw err;
947
+ console.log(
948
+ `\n Secrets were not materialized during setup, and that is not fatal ` +
949
+ `here.\n This surface also materializes at session start, which runs ` +
950
+ `with the\n session's own environment — the usual reason setup cannot ` +
951
+ `see the\n bootstrap credential. The session-start hook will retry.\n` +
952
+ ` If secrets are still missing INSIDE a session, that run is the one ` +
953
+ `to debug.`
954
+ );
955
+ }
920
956
  } else if (!requested) {
921
957
  console.log(
922
958
  `\nSecrets: materialized from a session-start hook on "${surface}", ` +
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.332.1",
3
+ "version": "2.332.2",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -914,9 +914,45 @@ async function main() {
914
914
  "lisa-secrets-access",
915
915
  "materialize-secrets.mjs"
916
916
  );
917
- execFileSync("node", dryRun ? [materialize, "--dry-run"] : [materialize], {
918
- stdio: "inherit",
919
- });
917
+ // A failure here is fatal only when nothing else will try again.
918
+ //
919
+ // On a surface that materializes at BOTH setup and session start, this run
920
+ // is the floor and the hook is the authority. The two run in different
921
+ // environments: a cloud vendor can expose its configured variables to the
922
+ // agent session while the setup phase — which runs earlier, during image
923
+ // construction — never sees them. That is not an error state, it is the
924
+ // normal shape of `materializeAt: "both"`, and the hook materializes
925
+ // correctly moments later.
926
+ //
927
+ // Treating it as fatal cost an entire environment: setup.sh `exec`s this
928
+ // script, so a non-zero exit fails the vendor's setup step and Claude Code
929
+ // never starts at all. Trading "secrets arrive one phase later" for "the
930
+ // container will not boot" is a bad trade, and it regressed a case that
931
+ // used to work — before this surface materialized at setup, setup simply
932
+ // never attempted it.
933
+ //
934
+ // Every other case keeps the hard failure: an explicit `--phase=secrets`
935
+ // (the hook's own authoritative run) and a setup-only surface such as
936
+ // codex-cloud both have no second chance, so a silent pass there would
937
+ // hand back a session with no credentials and call it ready.
938
+ const retried = !requested && materializesAtSessionStart(materializeAt);
939
+ try {
940
+ execFileSync(
941
+ "node",
942
+ dryRun ? [materialize, "--dry-run"] : [materialize],
943
+ { stdio: "inherit" }
944
+ );
945
+ } catch (err) {
946
+ if (!retried) throw err;
947
+ console.log(
948
+ `\n Secrets were not materialized during setup, and that is not fatal ` +
949
+ `here.\n This surface also materializes at session start, which runs ` +
950
+ `with the\n session's own environment — the usual reason setup cannot ` +
951
+ `see the\n bootstrap credential. The session-start hook will retry.\n` +
952
+ ` If secrets are still missing INSIDE a session, that run is the one ` +
953
+ `to debug.`
954
+ );
955
+ }
920
956
  } else if (!requested) {
921
957
  console.log(
922
958
  `\nSecrets: materialized from a session-start hook on "${surface}", ` +
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -914,9 +914,45 @@ async function main() {
914
914
  "lisa-secrets-access",
915
915
  "materialize-secrets.mjs"
916
916
  );
917
- execFileSync("node", dryRun ? [materialize, "--dry-run"] : [materialize], {
918
- stdio: "inherit",
919
- });
917
+ // A failure here is fatal only when nothing else will try again.
918
+ //
919
+ // On a surface that materializes at BOTH setup and session start, this run
920
+ // is the floor and the hook is the authority. The two run in different
921
+ // environments: a cloud vendor can expose its configured variables to the
922
+ // agent session while the setup phase — which runs earlier, during image
923
+ // construction — never sees them. That is not an error state, it is the
924
+ // normal shape of `materializeAt: "both"`, and the hook materializes
925
+ // correctly moments later.
926
+ //
927
+ // Treating it as fatal cost an entire environment: setup.sh `exec`s this
928
+ // script, so a non-zero exit fails the vendor's setup step and Claude Code
929
+ // never starts at all. Trading "secrets arrive one phase later" for "the
930
+ // container will not boot" is a bad trade, and it regressed a case that
931
+ // used to work — before this surface materialized at setup, setup simply
932
+ // never attempted it.
933
+ //
934
+ // Every other case keeps the hard failure: an explicit `--phase=secrets`
935
+ // (the hook's own authoritative run) and a setup-only surface such as
936
+ // codex-cloud both have no second chance, so a silent pass there would
937
+ // hand back a session with no credentials and call it ready.
938
+ const retried = !requested && materializesAtSessionStart(materializeAt);
939
+ try {
940
+ execFileSync(
941
+ "node",
942
+ dryRun ? [materialize, "--dry-run"] : [materialize],
943
+ { stdio: "inherit" }
944
+ );
945
+ } catch (err) {
946
+ if (!retried) throw err;
947
+ console.log(
948
+ `\n Secrets were not materialized during setup, and that is not fatal ` +
949
+ `here.\n This surface also materializes at session start, which runs ` +
950
+ `with the\n session's own environment — the usual reason setup cannot ` +
951
+ `see the\n bootstrap credential. The session-start hook will retry.\n` +
952
+ ` If secrets are still missing INSIDE a session, that run is the one ` +
953
+ `to debug.`
954
+ );
955
+ }
920
956
  } else if (!requested) {
921
957
  console.log(
922
958
  `\nSecrets: materialized from a session-start hook on "${surface}", ` +
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.332.1",
3
+ "version": "2.332.2",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -914,9 +914,45 @@ async function main() {
914
914
  "lisa-secrets-access",
915
915
  "materialize-secrets.mjs"
916
916
  );
917
- execFileSync("node", dryRun ? [materialize, "--dry-run"] : [materialize], {
918
- stdio: "inherit",
919
- });
917
+ // A failure here is fatal only when nothing else will try again.
918
+ //
919
+ // On a surface that materializes at BOTH setup and session start, this run
920
+ // is the floor and the hook is the authority. The two run in different
921
+ // environments: a cloud vendor can expose its configured variables to the
922
+ // agent session while the setup phase — which runs earlier, during image
923
+ // construction — never sees them. That is not an error state, it is the
924
+ // normal shape of `materializeAt: "both"`, and the hook materializes
925
+ // correctly moments later.
926
+ //
927
+ // Treating it as fatal cost an entire environment: setup.sh `exec`s this
928
+ // script, so a non-zero exit fails the vendor's setup step and Claude Code
929
+ // never starts at all. Trading "secrets arrive one phase later" for "the
930
+ // container will not boot" is a bad trade, and it regressed a case that
931
+ // used to work — before this surface materialized at setup, setup simply
932
+ // never attempted it.
933
+ //
934
+ // Every other case keeps the hard failure: an explicit `--phase=secrets`
935
+ // (the hook's own authoritative run) and a setup-only surface such as
936
+ // codex-cloud both have no second chance, so a silent pass there would
937
+ // hand back a session with no credentials and call it ready.
938
+ const retried = !requested && materializesAtSessionStart(materializeAt);
939
+ try {
940
+ execFileSync(
941
+ "node",
942
+ dryRun ? [materialize, "--dry-run"] : [materialize],
943
+ { stdio: "inherit" }
944
+ );
945
+ } catch (err) {
946
+ if (!retried) throw err;
947
+ console.log(
948
+ `\n Secrets were not materialized during setup, and that is not fatal ` +
949
+ `here.\n This surface also materializes at session start, which runs ` +
950
+ `with the\n session's own environment — the usual reason setup cannot ` +
951
+ `see the\n bootstrap credential. The session-start hook will retry.\n` +
952
+ ` If secrets are still missing INSIDE a session, that run is the one ` +
953
+ `to debug.`
954
+ );
955
+ }
920
956
  } else if (!requested) {
921
957
  console.log(
922
958
  `\nSecrets: materialized from a session-start hook on "${surface}", ` +
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.332.1",
3
+ "version": "2.332.2",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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": "2.332.1",
3
+ "version": "2.332.2",
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"