@codyswann/lisa 3.23.0 → 3.23.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 (102) hide show
  1. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  2. package/dist/core/upstream-evidence-manifest.js +20 -69
  3. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  4. package/dist/migrations/ensure-quality-caller-scopes.d.ts.map +1 -1
  5. package/dist/migrations/ensure-quality-caller-scopes.js +1 -2
  6. package/dist/migrations/ensure-quality-caller-scopes.js.map +1 -1
  7. package/package.json +1 -1
  8. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  9. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  10. package/plugins/lisa/.codex-plugin/skills/lisa-doctor/SKILL.md +3 -5
  11. package/plugins/lisa/.codex-plugin/skills/lisa-drive-pr-to-merge/SKILL.md +3 -3
  12. package/plugins/lisa/.codex-plugin/skills/lisa-sync-down/SKILL.md +9 -16
  13. package/plugins/lisa/rules/reference/config-resolution.md +2 -2
  14. package/plugins/lisa/skills/lisa-doctor/SKILL.md +3 -5
  15. package/plugins/lisa/skills/lisa-drive-pr-to-merge/SKILL.md +3 -3
  16. package/plugins/lisa/skills/lisa-sync-down/SKILL.md +10 -17
  17. package/plugins/lisa-agy/plugin.json +1 -1
  18. package/plugins/lisa-agy/skills/lisa-doctor/SKILL.md +3 -5
  19. package/plugins/lisa-agy/skills/lisa-drive-pr-to-merge/SKILL.md +3 -3
  20. package/plugins/lisa-agy/skills/lisa-sync-down/SKILL.md +10 -17
  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/rules/reference/config-resolution.md +2 -2
  28. package/plugins/lisa-copilot/skills/lisa-doctor/SKILL.md +3 -5
  29. package/plugins/lisa-copilot/skills/lisa-drive-pr-to-merge/SKILL.md +3 -3
  30. package/plugins/lisa-copilot/skills/lisa-sync-down/SKILL.md +10 -17
  31. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +2 -2
  33. package/plugins/lisa-cursor/skills/lisa-doctor/SKILL.md +3 -5
  34. package/plugins/lisa-cursor/skills/lisa-drive-pr-to-merge/SKILL.md +3 -3
  35. package/plugins/lisa-cursor/skills/lisa-sync-down/SKILL.md +10 -17
  36. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  38. package/plugins/lisa-expo-agy/plugin.json +1 -1
  39. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  43. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  44. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  48. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  49. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  53. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  54. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  58. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  59. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  63. package/plugins/lisa-rails-agy/plugin.json +1 -1
  64. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  68. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  69. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  73. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  74. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  76. package/plugins/src/base/rules/reference/config-resolution.md +2 -2
  77. package/plugins/src/base/skills/lisa-doctor/SKILL.md +3 -5
  78. package/plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md +3 -3
  79. package/plugins/src/base/skills/lisa-sync-down/SKILL.md +10 -17
  80. package/rails/deletions.json +6 -1
  81. package/scripts/detect-stale-workflow-inputs.mjs +7 -7
  82. package/scripts/generate-upstream-evidence-manifest.mjs +1 -0
  83. package/scripts/verify-health-deterministic-built.mjs +1 -1
  84. package/typescript/copy-contents/.husky/commit-msg +4 -1
  85. package/typescript/copy-contents/.husky/pre-commit +4 -1
  86. package/typescript/copy-contents/.husky/pre-push +8 -2
  87. package/typescript/copy-contents/.husky/prepare-commit-msg +4 -1
  88. package/typescript/deletions.json +14 -1
  89. package/rails/create-only/.github/workflows/claude-code-review-response.yml +0 -31
  90. package/rails/create-only/.github/workflows/claude-nightly-code-complexity.yml +0 -22
  91. package/rails/create-only/.github/workflows/claude-nightly-test-coverage.yml +0 -30
  92. package/rails/create-only/.github/workflows/claude-nightly-test-improvement.yml +0 -33
  93. package/rails/create-only/.github/workflows/claude-sync-down-branches.yml +0 -46
  94. package/scripts/migrate-deploy-order.sh +0 -161
  95. package/typescript/create-only/.github/workflows/claude-ci-auto-fix.yml +0 -42
  96. package/typescript/create-only/.github/workflows/claude-code-review-response.yml +0 -31
  97. package/typescript/create-only/.github/workflows/claude-deploy-auto-fix.yml +0 -39
  98. package/typescript/create-only/.github/workflows/claude-nightly-code-complexity.yml +0 -24
  99. package/typescript/create-only/.github/workflows/claude-nightly-test-coverage.yml +0 -31
  100. package/typescript/create-only/.github/workflows/claude-nightly-test-improvement.yml +0 -34
  101. package/typescript/create-only/.github/workflows/claude-sync-down-branches.yml +0 -46
  102. package/typescript/create-only/.github/workflows/claude.yml +0 -37
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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": "3.23.0",
3
+ "version": "3.23.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-typescript",
3
- "version": "3.23.0",
3
+ "version": "3.23.2",
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": "3.23.0",
3
+ "version": "3.23.2",
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": "3.23.0",
3
+ "version": "3.23.2",
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": "3.23.0",
3
+ "version": "3.23.2",
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": "3.23.0",
3
+ "version": "3.23.2",
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": "3.23.0",
3
+ "version": "3.23.2",
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": "3.23.0",
3
+ "version": "3.23.2",
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": "3.23.0",
3
+ "version": "3.23.2",
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": "3.23.0",
3
+ "version": "3.23.2",
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": "3.23.0",
3
+ "version": "3.23.2",
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"
@@ -611,8 +611,8 @@ cannot: the relative rank of environments. `deploy.branches` is an unordered map
611
611
  so without `deploy.order` the rank of a custom env name (`preprod`, `qa`, …) is
612
612
  unknowable.
613
613
 
614
- The back-sync GitHub Action (`reusable-claude-sync-down-branches.yml`) consumes
615
- `deploy.order` to derive its source → target chain. It walks the order from the
614
+ The Lisa back-sync flow consumes `deploy.order` to derive its source → target
615
+ chain. It walks the order from the
616
616
  **highest** environment **down**, mapping each env's branch to the next-lower
617
617
  env's branch:
618
618
 
@@ -119,11 +119,9 @@ this order:
119
119
  single distinct branch, so there is nothing to back-sync, the chain is the empty no-op, and
120
120
  `deploy.order` is not required. Do not WARN.
121
121
  - `WARN` when `deploy.branches` resolves to **more than one distinct** branch but `deploy.order`
122
- is absent. Config-driven back-sync (`reusable-claude-sync-down-branches.yml`) cannot derive a
123
- source→target chain without the env ranking; the repo must either add `deploy.order`
124
- (low→high, e.g. `["dev","staging","production"]`) or pass an explicit `chain` in its
125
- `claude-sync-down-branches.yml` wrapper. WARN not FAIL because the explicit-chain override is
126
- a valid configuration.
122
+ is absent. Config-driven back-sync cannot derive a source→target chain without the env
123
+ ranking; the repo must add `deploy.order` (low→high, e.g.
124
+ `["dev","staging","production"]`).
127
125
  - `FAIL` when `deploy.order` is present but its env-name set does not exactly match the keys of
128
126
  `deploy.branches` (every env in one must appear in the other). A mismatch silently breaks the
129
127
  derived chain.
@@ -58,9 +58,9 @@ Use plain `gh` + `git` so Claude and Codex execute identically.
58
58
 
59
59
  ## 0. Take the babysitter lease
60
60
 
61
- This skill is the branch's owner while it runs. Declare that ownership so the
62
- CI auto-fix workflow (`reusable-claude-ci-auto-fix.yml`) stands down instead of
63
- pushing competing fixes to the same branch (the single-writer rule):
61
+ This skill is the branch's owner while it runs. Declare that ownership so any CI
62
+ repair automation stands down instead of pushing competing fixes to the same
63
+ branch (the single-writer rule):
64
64
 
65
65
  ```bash
66
66
  gh label create "lisa:babysitter-on-duty" \
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: lisa-sync-down
3
- description: This skill should be used to run a back-sync of an environment branch DOWN the deploy chain on demand — propagating merges (e.g. hotfixes) from a higher environment to every lower one. Given a source environment name or branch (e.g. `production`), it derives the source→target chain from `.lisa.config.json` `deploy.order` + `deploy.branches` (the same chain the `claude-sync-down-branches.yml` GitHub Action uses on PR merge), then for each downward hop creates a sync branch, merges, resolves conflicts, opens or updates a PR, and enables auto-merge. Runnable by a developer locally or by GitHub Actions.
3
+ description: This skill should be used to run a back-sync of an environment branch DOWN the deploy chain on demand — propagating merges (e.g. hotfixes) from a higher environment to every lower one. Given a source environment name or branch (e.g. `production`), it derives the source→target chain from `.lisa.config.json` `deploy.order` + `deploy.branches`, then for each downward hop creates a sync branch, merges, resolves conflicts, opens or updates a PR, and enables auto-merge. Runnable by a developer locally or by CI.
4
4
  allowed-tools: ["Bash", "Read", "Edit", "Write", "Grep", "Glob"]
5
5
  ---
6
6
 
@@ -8,9 +8,7 @@ allowed-tools: ["Bash", "Read", "Edit", "Write", "Grep", "Glob"]
8
8
 
9
9
  Back-sync a source environment branch DOWN the deploy chain, one hop at a time,
10
10
  all the way to the lowest environment. This is the on-demand, manual-or-CI
11
- counterpart to the `claude-sync-down-branches.yml` GitHub Action, which runs the
12
- same logic automatically when a PR is merged. Both derive their chain from the
13
- same config, so a manual run and an automatic run behave identically.
11
+ entrypoint for applying the config-derived sync chain.
14
12
 
15
13
  Argument (`$ARGUMENTS`): the **source** to start syncing from. Accepts:
16
14
 
@@ -156,16 +154,11 @@ needs human conflict resolution.
156
154
  ## Invocation
157
155
 
158
156
  - **Developer:** `/lisa:sync-down production` (or a branch: `/lisa:sync-down main`).
159
- - **GitHub Actions:** the PR-merge path is already covered by
160
- `claude-sync-down-branches.yml`. For an on-demand CI run, invoke this skill from a
161
- `workflow_dispatch` job via `anthropics/claude-code-action` with the prompt
162
- `/lisa:sync-down <env>` and `CLAUDE_CODE_OAUTH_TOKEN` — the same identity the
163
- Action uses so the resulting PRs trigger downstream CI.
164
-
165
- ## Relationship to the GitHub Action
166
-
167
- This skill and `reusable-claude-sync-down-branches.yml` are deliberately
168
- equivalent: same config-derived chain, same merge/conflict strategy, same
169
- deterministic sync-branch naming, same auto-merge behavior. The Action is the
170
- automatic (PR-merged) trigger; this skill is the manual/dispatch trigger. Keep
171
- their chain-derivation and conflict-resolution rules in sync when either changes.
157
+ - **CI:** invoke this skill from the runtime-native automation surface with
158
+ `/lisa:sync-down <env>` when an automatic sync is required.
159
+
160
+ ## Contract
161
+
162
+ This skill is the source of truth for back-sync behavior: config-derived chain,
163
+ merge/conflict strategy, deterministic sync-branch naming, and auto-merge
164
+ behavior all live here.
@@ -9,6 +9,11 @@
9
9
  ".claude/skills/plan-lower-code-complexity",
10
10
  ".claude/skills/plan-reduce-max-lines",
11
11
  ".claude/skills/plan-reduce-max-lines-per-function",
12
- ".claude/rules/rails-conventions.md"
12
+ ".claude/rules/rails-conventions.md",
13
+ ".github/workflows/claude-code-review-response.yml",
14
+ ".github/workflows/claude-nightly-code-complexity.yml",
15
+ ".github/workflows/claude-nightly-test-coverage.yml",
16
+ ".github/workflows/claude-nightly-test-improvement.yml",
17
+ ".github/workflows/claude-sync-down-branches.yml"
13
18
  ]
14
19
  }
@@ -2,14 +2,14 @@
2
2
  /**
3
3
  * Deterministic detector for stale reusable-workflow inputs (issue #1423).
4
4
  *
5
- * Context: a caller workflow (e.g. a consumer repo's `.github/workflows/claude.yml`)
5
+ * Context: a caller workflow (e.g. a consumer repo's `.github/workflows/example-agent.yml`)
6
6
  * invokes one of Lisa's reusable workflows via `uses: <owner>/<repo>/.github/workflows/
7
7
  * reusable-*.yml@<ref>` and passes a `with:` block. GitHub hard-fails the run at
8
8
  * startup if that `with:` block names an input the reusable workflow's
9
9
  * `workflow_call.inputs` no longer declares (e.g. an early-generation caller still
10
- * passing `package_manager`, which `reusable-claude.yml` never declared). Because
11
- * `claude.yml` is a create-only file Lisa never overwrites, an affected repo can
12
- * never self-heal — the drift has to be found and reported (or migrated) instead.
10
+ * passing `package_manager`, which `reusable-example.yml` never declared). Because
11
+ * create-only workflow callers are never overwritten, an affected repo cannot
12
+ * self-heal — the drift has to be found and reported (or migrated) instead.
13
13
  *
14
14
  * This script scans every workflow file directly under a project's
15
15
  * `.github/workflows/` for such callers, resolves each referenced reusable
@@ -17,8 +17,8 @@
17
17
  * `.github/workflows/`, the source of truth for the current contract), and reports
18
18
  * any caller `with:` key absent from the declared set as `stale`.
19
19
  *
20
- * It is intentionally NOT a general YAML parser like `migrate-deploy-order.sh`,
21
- * it does targeted, indentation-aware line scanning of the two shapes it cares
20
+ * It is intentionally NOT a general YAML parser. It does targeted,
21
+ * indentation-aware line scanning of the two shapes it cares
22
22
  * about (`uses:` + sibling `with:`, and `workflow_call: inputs:`). That is
23
23
  * sufficient for Lisa-authored workflow files, which have a stable, predictable
24
24
  * structure, and keeps the detector dependency-free (Node built-ins only, no
@@ -91,7 +91,7 @@ function isDirectory(target) {
91
91
  * @param {string} contractsRoot - directory holding the current reusable
92
92
  * workflow files (basename-addressed).
93
93
  * @param {string} reusableFile - basename of the referenced reusable
94
- * workflow file (e.g. `reusable-claude.yml`).
94
+ * workflow file (e.g. `reusable-example.yml`).
95
95
  * @returns {string[] | null} declared inputs, or `null` if the contract file
96
96
  * isn't present under `contractsRoot` (unresolvable, not necessarily stale).
97
97
  */
@@ -104,6 +104,7 @@ const tracked = execFileSync("git", ["ls-files", "-z"], {
104
104
  const explicitlyIncluded = ["scripts/generate-upstream-evidence-manifest.mjs"];
105
105
  const publicSurfaceMembers = [...new Set([...tracked, ...explicitlyIncluded])]
106
106
  .filter(file => file !== "src/core/upstream-evidence-manifest.ts")
107
+ .filter(file => existsSync(path.join(repoRoot, file)))
107
108
  .filter(file => {
108
109
  const segments = file.split("/");
109
110
  const basename = segments.at(-1) ?? "";
@@ -278,7 +278,7 @@ try {
278
278
  "offline starter inspection remains an explicit warning"
279
279
  );
280
280
 
281
- const callerPath = path.join(project, ".github", "workflows", "claude.yml");
281
+ const callerPath = path.join(project, ".github", "workflows", "ci.yml");
282
282
  const callerOriginal = await readFile(callerPath, "utf8");
283
283
  await writeFile(
284
284
  callerPath,
@@ -20,7 +20,10 @@ fi
20
20
  # Get the commit message file path
21
21
  COMMIT_MSG_FILE=$1
22
22
 
23
- WORK_ITEM_SCRIPT="scripts/lisa-work-item.mjs"
23
+ WORK_ITEM_SCRIPT="node_modules/@codyswann/lisa/all/copy-overwrite/scripts/lisa-work-item.mjs"
24
+ if [ ! -f "$WORK_ITEM_SCRIPT" ]; then
25
+ WORK_ITEM_SCRIPT="scripts/lisa-work-item.mjs"
26
+ fi
24
27
  if [ ! -f "$WORK_ITEM_SCRIPT" ]; then
25
28
  WORK_ITEM_SCRIPT="all/copy-overwrite/scripts/lisa-work-item.mjs"
26
29
  fi
@@ -76,7 +76,10 @@ fi
76
76
  # Fail-safe by construction: no coverage file, an empty one, a runner that
77
77
  # could not run, or no exact match, all mean the built-in step runs.
78
78
  # ---------------------------------------------------------------------------
79
- GATE_RUNNER="scripts/lisa-run-gates.mjs"
79
+ GATE_RUNNER="node_modules/@codyswann/lisa/all/copy-overwrite/scripts/lisa-run-gates.mjs"
80
+ if [ ! -f "$GATE_RUNNER" ]; then
81
+ GATE_RUNNER="scripts/lisa-run-gates.mjs"
82
+ fi
80
83
  if [ ! -f "$GATE_RUNNER" ]; then
81
84
  GATE_RUNNER="all/copy-overwrite/scripts/lisa-run-gates.mjs"
82
85
  fi
@@ -1,6 +1,9 @@
1
1
  # BEGIN: AI GUARDRAILS
2
2
 
3
- WORK_ITEM_SCRIPT="scripts/lisa-work-item.mjs"
3
+ WORK_ITEM_SCRIPT="node_modules/@codyswann/lisa/all/copy-overwrite/scripts/lisa-work-item.mjs"
4
+ if [ ! -f "$WORK_ITEM_SCRIPT" ]; then
5
+ WORK_ITEM_SCRIPT="scripts/lisa-work-item.mjs"
6
+ fi
4
7
  if [ ! -f "$WORK_ITEM_SCRIPT" ]; then
5
8
  WORK_ITEM_SCRIPT="all/copy-overwrite/scripts/lisa-work-item.mjs"
6
9
  fi
@@ -58,7 +61,10 @@ echo "📦 Using package manager: $PACKAGE_MANAGER"
58
61
  # The project-specific extension slots at the bottom of this file run either
59
62
  # way — they are project behaviour, not registry gates.
60
63
  # ---------------------------------------------------------------------------
61
- GATE_RUNNER="scripts/lisa-run-gates.mjs"
64
+ GATE_RUNNER="node_modules/@codyswann/lisa/all/copy-overwrite/scripts/lisa-run-gates.mjs"
65
+ if [ ! -f "$GATE_RUNNER" ]; then
66
+ GATE_RUNNER="scripts/lisa-run-gates.mjs"
67
+ fi
62
68
  if [ ! -f "$GATE_RUNNER" ]; then
63
69
  GATE_RUNNER="all/copy-overwrite/scripts/lisa-run-gates.mjs"
64
70
  fi
@@ -1,6 +1,9 @@
1
1
  # BEGIN: AI GUARDRAILS
2
2
 
3
- WORK_ITEM_SCRIPT="scripts/lisa-work-item.mjs"
3
+ WORK_ITEM_SCRIPT="node_modules/@codyswann/lisa/all/copy-overwrite/scripts/lisa-work-item.mjs"
4
+ if [ ! -f "$WORK_ITEM_SCRIPT" ]; then
5
+ WORK_ITEM_SCRIPT="scripts/lisa-work-item.mjs"
6
+ fi
4
7
  if [ ! -f "$WORK_ITEM_SCRIPT" ]; then
5
8
  WORK_ITEM_SCRIPT="all/copy-overwrite/scripts/lisa-work-item.mjs"
6
9
  fi
@@ -33,7 +33,20 @@
33
33
  ".github/workflows/reusable-claude-nightly-code-complexity.yml",
34
34
  ".github/workflows/reusable-claude-nightly-test-coverage.yml",
35
35
  ".github/workflows/reusable-claude-nightly-test-improvement.yml",
36
- ".github/workflows/load-test.yml"
36
+ ".github/workflows/load-test.yml",
37
+ ".github/workflows/claude-ci-auto-fix.yml",
38
+ ".github/workflows/claude-code-review-response.yml",
39
+ ".github/workflows/claude-deploy-auto-fix.yml",
40
+ ".github/workflows/claude-nightly-code-complexity.yml",
41
+ ".github/workflows/claude-nightly-test-coverage.yml",
42
+ ".github/workflows/claude-nightly-test-improvement.yml",
43
+ ".github/workflows/claude-sync-down-branches.yml",
44
+ ".github/workflows/claude.yml",
45
+ ".github/workflows/reusable-claude-sync-down-branches.yml",
46
+ ".github/workflows/reusable-claude-nightly-code-complexity-rails.yml",
47
+ ".github/workflows/reusable-claude-nightly-jira-triage.yml",
48
+ ".github/workflows/reusable-claude-nightly-test-coverage-rails.yml",
49
+ ".github/workflows/reusable-claude-nightly-test-improvement-rails.yml"
37
50
  ],
38
51
  "keep": []
39
52
  }
@@ -1,31 +0,0 @@
1
- # Seeded by Lisa on first setup — this file is YOURS.
2
- # Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
3
- # You can customize this file — Lisa will not overwrite it.
4
-
5
- name: Claude Code Review Response
6
-
7
- on:
8
- pull_request_review:
9
- types: [submitted]
10
-
11
- permissions:
12
- actions: write
13
- checks: write
14
- contents: write
15
- issues: write
16
- pull-requests: write
17
- id-token: write
18
-
19
- jobs:
20
- respond-to-review:
21
- uses: CodySwannGT/lisa/.github/workflows/reusable-claude-code-review-response.yml@main
22
- with:
23
- review_user_login: ${{ github.event.review.user.login }}
24
- pr_user_login: ${{ github.event.pull_request.user.login }}
25
- pr_head_ref: ${{ github.event.pull_request.head.ref }}
26
- pr_number: ${{ github.event.pull_request.number }}
27
- repo_owner: ${{ github.repository_owner }}
28
- repo_name: ${{ github.event.repository.name }}
29
- package_manager: 'none'
30
- secrets:
31
- CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}