@codyswann/lisa 4.38.7 → 4.38.8

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 (67) hide show
  1. package/all/copy-overwrite/scripts/lib/gate-failure-diagnosis.mjs +23 -1
  2. package/all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh +23 -0
  3. package/all/copy-overwrite/scripts/lisa-run-gates.mjs +30 -1
  4. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  5. package/dist/core/lisa-owned-hash-ledger.js +6 -0
  6. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  7. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  8. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  9. package/dist/core/upstream-evidence-manifest.js +6 -4
  10. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  11. package/dist/opencode/plugin-templates/parity-safety-net.sh +23 -0
  12. package/package.json +4 -4
  13. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  14. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  15. package/plugins/lisa/hooks/parity-safety-net.sh +23 -0
  16. package/plugins/lisa-agy/hooks/parity-safety-net.sh +23 -0
  17. package/plugins/lisa-agy/plugin.json +1 -1
  18. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  19. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  20. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  21. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  23. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  24. package/plugins/lisa-copilot/hooks/parity-safety-net.sh +23 -0
  25. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  26. package/plugins/lisa-cursor/hooks/parity-safety-net.sh +23 -0
  27. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  29. package/plugins/lisa-expo-agy/plugin.json +1 -1
  30. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  34. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  35. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  39. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  40. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  44. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  45. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  49. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  50. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  54. package/plugins/lisa-rails-agy/plugin.json +1 -1
  55. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  59. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  60. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  64. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  65. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  67. package/plugins/src/base/hooks/parity-safety-net.sh +23 -0
@@ -901,6 +901,7 @@ follow_scan() {
901
901
  redirected=""
902
902
  heredoc=0
903
903
  stdin_mode=0
904
+ noexec=0
904
905
  j=$((i + 1))
905
906
  while [ "$j" -lt "$n" ]; do
906
907
  follow_unwrap "${toks[j]}"
@@ -931,13 +932,35 @@ follow_scan() {
931
932
  *) j=$((j + 1)) ;;
932
933
  esac
933
934
  ;;
935
+ # `-n` is NOEXEC: the shell reads and parses its operand, then exits
936
+ # without running a line of it. So a syntax check is the one shape
937
+ # that puts a path at a command position while provably executing
938
+ # nothing, and following it reads a file the command never runs.
939
+ #
940
+ # This guard hit that on ITSELF: its pattern list is destructive
941
+ # command literals living inside the guard, so `bash -n` on its own
942
+ # source was refused by its own patterns — and the same held for any
943
+ # file documenting destructive commands. See CodySwannGT/lisa#3803.
944
+ #
945
+ # `bash <file>` still executes and is still followed. Noexec is the
946
+ # distinction, not the program: this is not a read-only exemption.
947
+ --noexec) noexec=1; break ;;
934
948
  --*) j=$((j + 1)) ;;
935
949
  -*c*) inline=1; j=$((j + 1)) ;;
950
+ -*n*) noexec=1; break ;;
936
951
  -s | -[a-zA-Z]*s[a-zA-Z]*) stdin_mode=1; j=$((j + 1)) ;;
937
952
  -*) j=$((j + 1)) ;;
938
953
  *) break ;;
939
954
  esac
940
955
  done
956
+ if [ "$noexec" -eq 1 ]; then
957
+ # Nothing runs, so there is no script to follow and nothing to fail
958
+ # closed about. Checked before the heredoc and dispatcher arms: those
959
+ # decide WHICH text to read, and here there is no execution at all.
960
+ cmd_pos=0
961
+ i=$((j + 1))
962
+ continue
963
+ fi
941
964
  if [ "$heredoc" -eq 1 ] && [ "$inline" -eq 0 ]; then
942
965
  cmd_pos=0
943
966
  i=$((j + 1))
package/package.json CHANGED
@@ -170,7 +170,7 @@
170
170
  "zod-validation-error": "^4.0.0"
171
171
  },
172
172
  "name": "@codyswann/lisa",
173
- "version": "4.38.7",
173
+ "version": "4.38.8",
174
174
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
175
175
  "main": "dist/index.js",
176
176
  "exports": {
@@ -318,7 +318,7 @@
318
318
  "test": "tests"
319
319
  },
320
320
  "types": "./dist/index.d.ts",
321
- "lisaReleaseCommit": "6361b6d7c337a566353660c0acebff2b5a615868",
322
- "gitHead": "6361b6d7c337a566353660c0acebff2b5a615868",
323
- "lisaReleaseTag": "v4.38.7"
321
+ "lisaReleaseCommit": "6ed792c6cd569a5be1503102dec9c867d020c003",
322
+ "gitHead": "6ed792c6cd569a5be1503102dec9c867d020c003",
323
+ "lisaReleaseTag": "v4.38.8"
324
324
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.38.7",
3
+ "version": "4.38.8",
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": "4.38.7",
3
+ "version": "4.38.8",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -901,6 +901,7 @@ follow_scan() {
901
901
  redirected=""
902
902
  heredoc=0
903
903
  stdin_mode=0
904
+ noexec=0
904
905
  j=$((i + 1))
905
906
  while [ "$j" -lt "$n" ]; do
906
907
  follow_unwrap "${toks[j]}"
@@ -931,13 +932,35 @@ follow_scan() {
931
932
  *) j=$((j + 1)) ;;
932
933
  esac
933
934
  ;;
935
+ # `-n` is NOEXEC: the shell reads and parses its operand, then exits
936
+ # without running a line of it. So a syntax check is the one shape
937
+ # that puts a path at a command position while provably executing
938
+ # nothing, and following it reads a file the command never runs.
939
+ #
940
+ # This guard hit that on ITSELF: its pattern list is destructive
941
+ # command literals living inside the guard, so `bash -n` on its own
942
+ # source was refused by its own patterns — and the same held for any
943
+ # file documenting destructive commands. See CodySwannGT/lisa#3803.
944
+ #
945
+ # `bash <file>` still executes and is still followed. Noexec is the
946
+ # distinction, not the program: this is not a read-only exemption.
947
+ --noexec) noexec=1; break ;;
934
948
  --*) j=$((j + 1)) ;;
935
949
  -*c*) inline=1; j=$((j + 1)) ;;
950
+ -*n*) noexec=1; break ;;
936
951
  -s | -[a-zA-Z]*s[a-zA-Z]*) stdin_mode=1; j=$((j + 1)) ;;
937
952
  -*) j=$((j + 1)) ;;
938
953
  *) break ;;
939
954
  esac
940
955
  done
956
+ if [ "$noexec" -eq 1 ]; then
957
+ # Nothing runs, so there is no script to follow and nothing to fail
958
+ # closed about. Checked before the heredoc and dispatcher arms: those
959
+ # decide WHICH text to read, and here there is no execution at all.
960
+ cmd_pos=0
961
+ i=$((j + 1))
962
+ continue
963
+ fi
941
964
  if [ "$heredoc" -eq 1 ] && [ "$inline" -eq 0 ]; then
942
965
  cmd_pos=0
943
966
  i=$((j + 1))
@@ -901,6 +901,7 @@ follow_scan() {
901
901
  redirected=""
902
902
  heredoc=0
903
903
  stdin_mode=0
904
+ noexec=0
904
905
  j=$((i + 1))
905
906
  while [ "$j" -lt "$n" ]; do
906
907
  follow_unwrap "${toks[j]}"
@@ -931,13 +932,35 @@ follow_scan() {
931
932
  *) j=$((j + 1)) ;;
932
933
  esac
933
934
  ;;
935
+ # `-n` is NOEXEC: the shell reads and parses its operand, then exits
936
+ # without running a line of it. So a syntax check is the one shape
937
+ # that puts a path at a command position while provably executing
938
+ # nothing, and following it reads a file the command never runs.
939
+ #
940
+ # This guard hit that on ITSELF: its pattern list is destructive
941
+ # command literals living inside the guard, so `bash -n` on its own
942
+ # source was refused by its own patterns — and the same held for any
943
+ # file documenting destructive commands. See CodySwannGT/lisa#3803.
944
+ #
945
+ # `bash <file>` still executes and is still followed. Noexec is the
946
+ # distinction, not the program: this is not a read-only exemption.
947
+ --noexec) noexec=1; break ;;
934
948
  --*) j=$((j + 1)) ;;
935
949
  -*c*) inline=1; j=$((j + 1)) ;;
950
+ -*n*) noexec=1; break ;;
936
951
  -s | -[a-zA-Z]*s[a-zA-Z]*) stdin_mode=1; j=$((j + 1)) ;;
937
952
  -*) j=$((j + 1)) ;;
938
953
  *) break ;;
939
954
  esac
940
955
  done
956
+ if [ "$noexec" -eq 1 ]; then
957
+ # Nothing runs, so there is no script to follow and nothing to fail
958
+ # closed about. Checked before the heredoc and dispatcher arms: those
959
+ # decide WHICH text to read, and here there is no execution at all.
960
+ cmd_pos=0
961
+ i=$((j + 1))
962
+ continue
963
+ fi
941
964
  if [ "$heredoc" -eq 1 ] && [ "$inline" -eq 0 ]; then
942
965
  cmd_pos=0
943
966
  i=$((j + 1))
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.38.7",
3
+ "version": "4.38.8",
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-cdk",
3
- "version": "4.38.7",
3
+ "version": "4.38.8",
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": "4.38.7",
3
+ "version": "4.38.8",
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": "4.38.7",
3
+ "version": "4.38.8",
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": "4.38.7",
3
+ "version": "4.38.8",
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": "4.38.7",
3
+ "version": "4.38.8",
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": "4.38.7",
3
+ "version": "4.38.8",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -901,6 +901,7 @@ follow_scan() {
901
901
  redirected=""
902
902
  heredoc=0
903
903
  stdin_mode=0
904
+ noexec=0
904
905
  j=$((i + 1))
905
906
  while [ "$j" -lt "$n" ]; do
906
907
  follow_unwrap "${toks[j]}"
@@ -931,13 +932,35 @@ follow_scan() {
931
932
  *) j=$((j + 1)) ;;
932
933
  esac
933
934
  ;;
935
+ # `-n` is NOEXEC: the shell reads and parses its operand, then exits
936
+ # without running a line of it. So a syntax check is the one shape
937
+ # that puts a path at a command position while provably executing
938
+ # nothing, and following it reads a file the command never runs.
939
+ #
940
+ # This guard hit that on ITSELF: its pattern list is destructive
941
+ # command literals living inside the guard, so `bash -n` on its own
942
+ # source was refused by its own patterns — and the same held for any
943
+ # file documenting destructive commands. See CodySwannGT/lisa#3803.
944
+ #
945
+ # `bash <file>` still executes and is still followed. Noexec is the
946
+ # distinction, not the program: this is not a read-only exemption.
947
+ --noexec) noexec=1; break ;;
934
948
  --*) j=$((j + 1)) ;;
935
949
  -*c*) inline=1; j=$((j + 1)) ;;
950
+ -*n*) noexec=1; break ;;
936
951
  -s | -[a-zA-Z]*s[a-zA-Z]*) stdin_mode=1; j=$((j + 1)) ;;
937
952
  -*) j=$((j + 1)) ;;
938
953
  *) break ;;
939
954
  esac
940
955
  done
956
+ if [ "$noexec" -eq 1 ]; then
957
+ # Nothing runs, so there is no script to follow and nothing to fail
958
+ # closed about. Checked before the heredoc and dispatcher arms: those
959
+ # decide WHICH text to read, and here there is no execution at all.
960
+ cmd_pos=0
961
+ i=$((j + 1))
962
+ continue
963
+ fi
941
964
  if [ "$heredoc" -eq 1 ] && [ "$inline" -eq 0 ]; then
942
965
  cmd_pos=0
943
966
  i=$((j + 1))
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.38.7",
3
+ "version": "4.38.8",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -901,6 +901,7 @@ follow_scan() {
901
901
  redirected=""
902
902
  heredoc=0
903
903
  stdin_mode=0
904
+ noexec=0
904
905
  j=$((i + 1))
905
906
  while [ "$j" -lt "$n" ]; do
906
907
  follow_unwrap "${toks[j]}"
@@ -931,13 +932,35 @@ follow_scan() {
931
932
  *) j=$((j + 1)) ;;
932
933
  esac
933
934
  ;;
935
+ # `-n` is NOEXEC: the shell reads and parses its operand, then exits
936
+ # without running a line of it. So a syntax check is the one shape
937
+ # that puts a path at a command position while provably executing
938
+ # nothing, and following it reads a file the command never runs.
939
+ #
940
+ # This guard hit that on ITSELF: its pattern list is destructive
941
+ # command literals living inside the guard, so `bash -n` on its own
942
+ # source was refused by its own patterns — and the same held for any
943
+ # file documenting destructive commands. See CodySwannGT/lisa#3803.
944
+ #
945
+ # `bash <file>` still executes and is still followed. Noexec is the
946
+ # distinction, not the program: this is not a read-only exemption.
947
+ --noexec) noexec=1; break ;;
934
948
  --*) j=$((j + 1)) ;;
935
949
  -*c*) inline=1; j=$((j + 1)) ;;
950
+ -*n*) noexec=1; break ;;
936
951
  -s | -[a-zA-Z]*s[a-zA-Z]*) stdin_mode=1; j=$((j + 1)) ;;
937
952
  -*) j=$((j + 1)) ;;
938
953
  *) break ;;
939
954
  esac
940
955
  done
956
+ if [ "$noexec" -eq 1 ]; then
957
+ # Nothing runs, so there is no script to follow and nothing to fail
958
+ # closed about. Checked before the heredoc and dispatcher arms: those
959
+ # decide WHICH text to read, and here there is no execution at all.
960
+ cmd_pos=0
961
+ i=$((j + 1))
962
+ continue
963
+ fi
941
964
  if [ "$heredoc" -eq 1 ] && [ "$inline" -eq 0 ]; then
942
965
  cmd_pos=0
943
966
  i=$((j + 1))
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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.38.7",
3
+ "version": "4.38.8",
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"