@codyswann/lisa 2.203.0 → 2.204.1

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 (235) hide show
  1. package/nestjs/create-only/.github/workflows/deploy.yml +69 -0
  2. package/package.json +1 -1
  3. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  4. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  5. package/plugins/lisa/.codex-plugin/skills/lisa-parity-skill-creator/SKILL.md +8 -6
  6. package/plugins/lisa/skills/lisa-parity-skill-creator/SKILL.md +8 -6
  7. package/plugins/lisa-agy/plugin.json +1 -1
  8. package/plugins/lisa-agy/skills/lisa-parity-skill-creator/SKILL.md +8 -6
  9. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  10. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  11. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  12. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  13. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  14. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  15. package/plugins/lisa-copilot/skills/lisa-parity-skill-creator/SKILL.md +8 -6
  16. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  17. package/plugins/lisa-cursor/skills/lisa-parity-skill-creator/SKILL.md +8 -6
  18. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  19. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  20. package/plugins/lisa-expo-agy/plugin.json +1 -1
  21. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  23. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  24. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  25. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  26. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  27. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  29. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  30. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  31. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  35. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  36. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  40. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  41. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  45. package/plugins/lisa-rails-agy/plugin.json +1 -1
  46. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  50. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  51. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  55. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  56. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  58. package/plugins/src/base/skills/lisa-parity-skill-creator/SKILL.md +8 -6
  59. package/scripts/generate-agy-plugin-artifacts.mjs +7 -0
  60. package/scripts/generate-copilot-plugin-artifacts.mjs +6 -0
  61. package/scripts/generate-cursor-plugin-artifacts.mjs +6 -0
  62. package/scripts/lib/nest-plugin-commands.mjs +32 -0
  63. package/scripts/migrate-skill-command-namespace.mjs +0 -141
  64. package/scripts/update-test-command-paths.mjs +0 -87
  65. /package/plugins/lisa/commands/{lisa/agent-ready.md → agent-ready.md} +0 -0
  66. /package/plugins/lisa/commands/{lisa/analyze-claude-remote.md → analyze-claude-remote.md} +0 -0
  67. /package/plugins/lisa/commands/{lisa/automation-status.md → automation-status.md} +0 -0
  68. /package/plugins/lisa/commands/{lisa/codify-verification.md → codify-verification.md} +0 -0
  69. /package/plugins/lisa/commands/{lisa/cross-pollinate.md → cross-pollinate.md} +0 -0
  70. /package/plugins/lisa/commands/{lisa/debrief → debrief}/apply.md +0 -0
  71. /package/plugins/lisa/commands/{lisa/debrief.md → debrief.md} +0 -0
  72. /package/plugins/lisa/commands/{lisa/doctor.md → doctor.md} +0 -0
  73. /package/plugins/lisa/commands/{lisa/exploratory-qa.md → exploratory-qa.md} +0 -0
  74. /package/plugins/lisa/commands/{lisa/fix → fix}/linter-error.md +0 -0
  75. /package/plugins/lisa/commands/{lisa/generate-claude-remote-build-script.md → generate-claude-remote-build-script.md} +0 -0
  76. /package/plugins/lisa/commands/{lisa/git → git}/commit.md +0 -0
  77. /package/plugins/lisa/commands/{lisa/git → git}/prune.md +0 -0
  78. /package/plugins/lisa/commands/{lisa/git → git}/submit-pr.md +0 -0
  79. /package/plugins/lisa/commands/{lisa/implement.md → implement.md} +0 -0
  80. /package/plugins/lisa/commands/{lisa/improve → improve}/code-complexity.md +0 -0
  81. /package/plugins/lisa/commands/{lisa/improve → improve}/max-lines-per-function.md +0 -0
  82. /package/plugins/lisa/commands/{lisa/improve → improve}/max-lines.md +0 -0
  83. /package/plugins/lisa/commands/{lisa/improve → improve}/test-coverage.md +0 -0
  84. /package/plugins/lisa/commands/{lisa/improve → improve}/tests.md +0 -0
  85. /package/plugins/lisa/commands/{lisa/intake-explain.md → intake-explain.md} +0 -0
  86. /package/plugins/lisa/commands/{lisa/intake.md → intake.md} +0 -0
  87. /package/plugins/lisa/commands/{lisa/monitor.md → monitor.md} +0 -0
  88. /package/plugins/lisa/commands/{lisa/parity-code-review.md → parity-code-review.md} +0 -0
  89. /package/plugins/lisa/commands/{lisa/parity-code-simplifier.md → parity-code-simplifier.md} +0 -0
  90. /package/plugins/lisa/commands/{lisa/parity-coderabbit.md → parity-coderabbit.md} +0 -0
  91. /package/plugins/lisa/commands/{lisa/parity-safety-net-rules.md → parity-safety-net-rules.md} +0 -0
  92. /package/plugins/lisa/commands/{lisa/parity-sentry-sdk-setup.md → parity-sentry-sdk-setup.md} +0 -0
  93. /package/plugins/lisa/commands/{lisa/parity-sentry-seer.md → parity-sentry-seer.md} +0 -0
  94. /package/plugins/lisa/commands/{lisa/parity-skill-creator.md → parity-skill-creator.md} +0 -0
  95. /package/plugins/lisa/commands/{lisa/plan.md → plan.md} +0 -0
  96. /package/plugins/lisa/commands/{lisa/plugin-sync-explain.md → plugin-sync-explain.md} +0 -0
  97. /package/plugins/lisa/commands/{lisa/product-walkthrough.md → product-walkthrough.md} +0 -0
  98. /package/plugins/lisa/commands/{lisa/project-ideation.md → project-ideation.md} +0 -0
  99. /package/plugins/lisa/commands/{lisa/pull-request → pull-request}/review.md +0 -0
  100. /package/plugins/lisa/commands/{lisa/queue-status.md → queue-status.md} +0 -0
  101. /package/plugins/lisa/commands/{lisa/repair-intake.md → repair-intake.md} +0 -0
  102. /package/plugins/lisa/commands/{lisa/research.md → research.md} +0 -0
  103. /package/plugins/lisa/commands/{lisa/review → review}/local.md +0 -0
  104. /package/plugins/lisa/commands/{lisa/security → security}/zap-scan.md +0 -0
  105. /package/plugins/lisa/commands/{lisa/setup → setup}/atlassian.md +0 -0
  106. /package/plugins/lisa/commands/{lisa/setup → setup}/confluence.md +0 -0
  107. /package/plugins/lisa/commands/{lisa/setup → setup}/github-repo.md +0 -0
  108. /package/plugins/lisa/commands/{lisa/setup → setup}/github.md +0 -0
  109. /package/plugins/lisa/commands/{lisa/setup → setup}/jira.md +0 -0
  110. /package/plugins/lisa/commands/{lisa/setup → setup}/linear.md +0 -0
  111. /package/plugins/lisa/commands/{lisa/setup → setup}/notion.md +0 -0
  112. /package/plugins/lisa/commands/{lisa/setup-automations.md → setup-automations.md} +0 -0
  113. /package/plugins/lisa/commands/{lisa/sync-down.md → sync-down.md} +0 -0
  114. /package/plugins/lisa/commands/{lisa/tear-down-automations.md → tear-down-automations.md} +0 -0
  115. /package/plugins/lisa/commands/{lisa/validate-tracker-mapping.md → validate-tracker-mapping.md} +0 -0
  116. /package/plugins/lisa/commands/{lisa/verify-prd.md → verify-prd.md} +0 -0
  117. /package/plugins/lisa/commands/{lisa/verify.md → verify.md} +0 -0
  118. /package/plugins/lisa/commands/{lisa/wiki → wiki}/install.md +0 -0
  119. /package/plugins/lisa-expo-agy/commands/{e2e-coverage-gaps.md → lisa/e2e-coverage-gaps.md} +0 -0
  120. /package/plugins/lisa-expo-copilot/commands/{e2e-coverage-gaps.md → lisa/e2e-coverage-gaps.md} +0 -0
  121. /package/plugins/lisa-expo-cursor/commands/{e2e-coverage-gaps.md → lisa/e2e-coverage-gaps.md} +0 -0
  122. /package/plugins/lisa-harper-fabric-agy/commands/{e2e-coverage-gaps.md → lisa/e2e-coverage-gaps.md} +0 -0
  123. /package/plugins/lisa-harper-fabric-copilot/commands/{e2e-coverage-gaps.md → lisa/e2e-coverage-gaps.md} +0 -0
  124. /package/plugins/lisa-harper-fabric-cursor/commands/{e2e-coverage-gaps.md → lisa/e2e-coverage-gaps.md} +0 -0
  125. /package/plugins/lisa-openclaw-agy/commands/{connect-repo-topic.md → lisa/connect-repo-topic.md} +0 -0
  126. /package/plugins/lisa-openclaw-agy/commands/{connect-staff-slack.md → lisa/connect-staff-slack.md} +0 -0
  127. /package/plugins/lisa-openclaw-agy/commands/{connect-staff-telegram.md → lisa/connect-staff-telegram.md} +0 -0
  128. /package/plugins/lisa-openclaw-agy/commands/{setup-openclaw.md → lisa/setup-openclaw.md} +0 -0
  129. /package/plugins/lisa-openclaw-copilot/commands/{connect-repo-topic.md → lisa/connect-repo-topic.md} +0 -0
  130. /package/plugins/lisa-openclaw-copilot/commands/{connect-staff-slack.md → lisa/connect-staff-slack.md} +0 -0
  131. /package/plugins/lisa-openclaw-copilot/commands/{connect-staff-telegram.md → lisa/connect-staff-telegram.md} +0 -0
  132. /package/plugins/lisa-openclaw-copilot/commands/{setup-openclaw.md → lisa/setup-openclaw.md} +0 -0
  133. /package/plugins/lisa-openclaw-cursor/commands/{connect-repo-topic.md → lisa/connect-repo-topic.md} +0 -0
  134. /package/plugins/lisa-openclaw-cursor/commands/{connect-staff-slack.md → lisa/connect-staff-slack.md} +0 -0
  135. /package/plugins/lisa-openclaw-cursor/commands/{connect-staff-telegram.md → lisa/connect-staff-telegram.md} +0 -0
  136. /package/plugins/lisa-openclaw-cursor/commands/{setup-openclaw.md → lisa/setup-openclaw.md} +0 -0
  137. /package/plugins/lisa-rails-agy/commands/{e2e-coverage-gaps.md → lisa/e2e-coverage-gaps.md} +0 -0
  138. /package/plugins/lisa-rails-agy/commands/{fix → lisa/fix}/linter-error.md +0 -0
  139. /package/plugins/lisa-rails-agy/commands/{improve → lisa/improve}/code-complexity.md +0 -0
  140. /package/plugins/lisa-rails-agy/commands/{improve → lisa/improve}/max-lines-per-function.md +0 -0
  141. /package/plugins/lisa-rails-agy/commands/{improve → lisa/improve}/max-lines.md +0 -0
  142. /package/plugins/lisa-rails-agy/commands/{improve → lisa/improve}/test-coverage.md +0 -0
  143. /package/plugins/lisa-rails-copilot/commands/{e2e-coverage-gaps.md → lisa/e2e-coverage-gaps.md} +0 -0
  144. /package/plugins/lisa-rails-copilot/commands/{fix → lisa/fix}/linter-error.md +0 -0
  145. /package/plugins/lisa-rails-copilot/commands/{improve → lisa/improve}/code-complexity.md +0 -0
  146. /package/plugins/lisa-rails-copilot/commands/{improve → lisa/improve}/max-lines-per-function.md +0 -0
  147. /package/plugins/lisa-rails-copilot/commands/{improve → lisa/improve}/max-lines.md +0 -0
  148. /package/plugins/lisa-rails-copilot/commands/{improve → lisa/improve}/test-coverage.md +0 -0
  149. /package/plugins/lisa-rails-cursor/commands/{e2e-coverage-gaps.md → lisa/e2e-coverage-gaps.md} +0 -0
  150. /package/plugins/lisa-rails-cursor/commands/{fix → lisa/fix}/linter-error.md +0 -0
  151. /package/plugins/lisa-rails-cursor/commands/{improve → lisa/improve}/code-complexity.md +0 -0
  152. /package/plugins/lisa-rails-cursor/commands/{improve → lisa/improve}/max-lines-per-function.md +0 -0
  153. /package/plugins/lisa-rails-cursor/commands/{improve → lisa/improve}/max-lines.md +0 -0
  154. /package/plugins/lisa-rails-cursor/commands/{improve → lisa/improve}/test-coverage.md +0 -0
  155. /package/plugins/lisa-wiki/commands/{lisa/add-ingest.md → add-ingest.md} +0 -0
  156. /package/plugins/lisa-wiki/commands/{lisa/add-role.md → add-role.md} +0 -0
  157. /package/plugins/lisa-wiki/commands/{lisa/doctor.md → doctor.md} +0 -0
  158. /package/plugins/lisa-wiki/commands/{lisa/ingest.md → ingest.md} +0 -0
  159. /package/plugins/lisa-wiki/commands/{lisa/lint.md → lint.md} +0 -0
  160. /package/plugins/lisa-wiki/commands/{lisa/migrate.md → migrate.md} +0 -0
  161. /package/plugins/lisa-wiki/commands/{lisa/onboard-me.md → onboard-me.md} +0 -0
  162. /package/plugins/lisa-wiki/commands/{lisa/query.md → query.md} +0 -0
  163. /package/plugins/lisa-wiki/commands/{lisa/setup-automations.md → setup-automations.md} +0 -0
  164. /package/plugins/lisa-wiki/commands/{lisa/setup.md → setup.md} +0 -0
  165. /package/plugins/lisa-wiki/commands/{lisa/status.md → status.md} +0 -0
  166. /package/plugins/lisa-wiki/commands/{lisa/tear-down-automations.md → tear-down-automations.md} +0 -0
  167. /package/plugins/lisa-wiki-agy/commands/{setup → lisa/setup}/wiki.md +0 -0
  168. /package/plugins/lisa-wiki-copilot/commands/{setup → lisa/setup}/wiki.md +0 -0
  169. /package/plugins/lisa-wiki-cursor/commands/{setup → lisa/setup}/wiki.md +0 -0
  170. /package/plugins/src/base/commands/{lisa/agent-ready.md → agent-ready.md} +0 -0
  171. /package/plugins/src/base/commands/{lisa/analyze-claude-remote.md → analyze-claude-remote.md} +0 -0
  172. /package/plugins/src/base/commands/{lisa/automation-status.md → automation-status.md} +0 -0
  173. /package/plugins/src/base/commands/{lisa/codify-verification.md → codify-verification.md} +0 -0
  174. /package/plugins/src/base/commands/{lisa/cross-pollinate.md → cross-pollinate.md} +0 -0
  175. /package/plugins/src/base/commands/{lisa/debrief → debrief}/apply.md +0 -0
  176. /package/plugins/src/base/commands/{lisa/debrief.md → debrief.md} +0 -0
  177. /package/plugins/src/base/commands/{lisa/doctor.md → doctor.md} +0 -0
  178. /package/plugins/src/base/commands/{lisa/exploratory-qa.md → exploratory-qa.md} +0 -0
  179. /package/plugins/src/base/commands/{lisa/fix → fix}/linter-error.md +0 -0
  180. /package/plugins/src/base/commands/{lisa/generate-claude-remote-build-script.md → generate-claude-remote-build-script.md} +0 -0
  181. /package/plugins/src/base/commands/{lisa/git → git}/commit.md +0 -0
  182. /package/plugins/src/base/commands/{lisa/git → git}/prune.md +0 -0
  183. /package/plugins/src/base/commands/{lisa/git → git}/submit-pr.md +0 -0
  184. /package/plugins/src/base/commands/{lisa/implement.md → implement.md} +0 -0
  185. /package/plugins/src/base/commands/{lisa/improve → improve}/code-complexity.md +0 -0
  186. /package/plugins/src/base/commands/{lisa/improve → improve}/max-lines-per-function.md +0 -0
  187. /package/plugins/src/base/commands/{lisa/improve → improve}/max-lines.md +0 -0
  188. /package/plugins/src/base/commands/{lisa/improve → improve}/test-coverage.md +0 -0
  189. /package/plugins/src/base/commands/{lisa/improve → improve}/tests.md +0 -0
  190. /package/plugins/src/base/commands/{lisa/intake-explain.md → intake-explain.md} +0 -0
  191. /package/plugins/src/base/commands/{lisa/intake.md → intake.md} +0 -0
  192. /package/plugins/src/base/commands/{lisa/monitor.md → monitor.md} +0 -0
  193. /package/plugins/src/base/commands/{lisa/parity-code-review.md → parity-code-review.md} +0 -0
  194. /package/plugins/src/base/commands/{lisa/parity-code-simplifier.md → parity-code-simplifier.md} +0 -0
  195. /package/plugins/src/base/commands/{lisa/parity-coderabbit.md → parity-coderabbit.md} +0 -0
  196. /package/plugins/src/base/commands/{lisa/parity-safety-net-rules.md → parity-safety-net-rules.md} +0 -0
  197. /package/plugins/src/base/commands/{lisa/parity-sentry-sdk-setup.md → parity-sentry-sdk-setup.md} +0 -0
  198. /package/plugins/src/base/commands/{lisa/parity-sentry-seer.md → parity-sentry-seer.md} +0 -0
  199. /package/plugins/src/base/commands/{lisa/parity-skill-creator.md → parity-skill-creator.md} +0 -0
  200. /package/plugins/src/base/commands/{lisa/plan.md → plan.md} +0 -0
  201. /package/plugins/src/base/commands/{lisa/plugin-sync-explain.md → plugin-sync-explain.md} +0 -0
  202. /package/plugins/src/base/commands/{lisa/product-walkthrough.md → product-walkthrough.md} +0 -0
  203. /package/plugins/src/base/commands/{lisa/project-ideation.md → project-ideation.md} +0 -0
  204. /package/plugins/src/base/commands/{lisa/pull-request → pull-request}/review.md +0 -0
  205. /package/plugins/src/base/commands/{lisa/queue-status.md → queue-status.md} +0 -0
  206. /package/plugins/src/base/commands/{lisa/repair-intake.md → repair-intake.md} +0 -0
  207. /package/plugins/src/base/commands/{lisa/research.md → research.md} +0 -0
  208. /package/plugins/src/base/commands/{lisa/review → review}/local.md +0 -0
  209. /package/plugins/src/base/commands/{lisa/security → security}/zap-scan.md +0 -0
  210. /package/plugins/src/base/commands/{lisa/setup → setup}/atlassian.md +0 -0
  211. /package/plugins/src/base/commands/{lisa/setup → setup}/confluence.md +0 -0
  212. /package/plugins/src/base/commands/{lisa/setup → setup}/github-repo.md +0 -0
  213. /package/plugins/src/base/commands/{lisa/setup → setup}/github.md +0 -0
  214. /package/plugins/src/base/commands/{lisa/setup → setup}/jira.md +0 -0
  215. /package/plugins/src/base/commands/{lisa/setup → setup}/linear.md +0 -0
  216. /package/plugins/src/base/commands/{lisa/setup → setup}/notion.md +0 -0
  217. /package/plugins/src/base/commands/{lisa/setup-automations.md → setup-automations.md} +0 -0
  218. /package/plugins/src/base/commands/{lisa/sync-down.md → sync-down.md} +0 -0
  219. /package/plugins/src/base/commands/{lisa/tear-down-automations.md → tear-down-automations.md} +0 -0
  220. /package/plugins/src/base/commands/{lisa/validate-tracker-mapping.md → validate-tracker-mapping.md} +0 -0
  221. /package/plugins/src/base/commands/{lisa/verify-prd.md → verify-prd.md} +0 -0
  222. /package/plugins/src/base/commands/{lisa/verify.md → verify.md} +0 -0
  223. /package/plugins/src/base/commands/{lisa/wiki → wiki}/install.md +0 -0
  224. /package/plugins/src/wiki/commands/{lisa/add-ingest.md → add-ingest.md} +0 -0
  225. /package/plugins/src/wiki/commands/{lisa/add-role.md → add-role.md} +0 -0
  226. /package/plugins/src/wiki/commands/{lisa/doctor.md → doctor.md} +0 -0
  227. /package/plugins/src/wiki/commands/{lisa/ingest.md → ingest.md} +0 -0
  228. /package/plugins/src/wiki/commands/{lisa/lint.md → lint.md} +0 -0
  229. /package/plugins/src/wiki/commands/{lisa/migrate.md → migrate.md} +0 -0
  230. /package/plugins/src/wiki/commands/{lisa/onboard-me.md → onboard-me.md} +0 -0
  231. /package/plugins/src/wiki/commands/{lisa/query.md → query.md} +0 -0
  232. /package/plugins/src/wiki/commands/{lisa/setup-automations.md → setup-automations.md} +0 -0
  233. /package/plugins/src/wiki/commands/{lisa/setup.md → setup.md} +0 -0
  234. /package/plugins/src/wiki/commands/{lisa/status.md → status.md} +0 -0
  235. /package/plugins/src/wiki/commands/{lisa/tear-down-automations.md → tear-down-automations.md} +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.203.0",
3
+ "version": "2.204.1",
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.203.0",
3
+ "version": "2.204.1",
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": "2.203.0",
3
+ "version": "2.204.1",
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": "2.203.0",
3
+ "version": "2.204.1",
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": "2.203.0",
3
+ "version": "2.204.1",
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": "2.203.0",
3
+ "version": "2.204.1",
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": "2.203.0",
3
+ "version": "2.204.1",
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": "2.203.0",
3
+ "version": "2.204.1",
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": "2.203.0",
3
+ "version": "2.204.1",
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": "2.203.0",
3
+ "version": "2.204.1",
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": "2.203.0",
3
+ "version": "2.204.1",
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": "2.203.0",
3
+ "version": "2.204.1",
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"
@@ -58,9 +58,11 @@ first:
58
58
  `name`: `lisa-implement`, `lisa-git-commit`, `lisa-tracker-write`. No spaces,
59
59
  no camelCase, no underscores.
60
60
  - The directory name and the frontmatter `name` must match exactly.
61
- - Commands live under `commands/lisa/` and map to colon-separated slash names:
62
- `commands/lisa/git/commit.md` → `/lisa:git:commit`;
63
- `commands/lisa/implement.md` → `/lisa:implement`.
61
+ - Commands live flat under `commands/` Claude Code prefixes plugin commands
62
+ with the plugin name, so `commands/git/commit.md` → `/lisa:git:commit` and
63
+ `commands/implement.md` → `/lisa:implement`. (Per-agent variant generators
64
+ nest them under `commands/lisa/` for harnesses without plugin-name
65
+ namespacing; never author that nesting in source.)
64
66
  - **Commands** surface as `/lisa:*` (colon). **Skills** surface as `/lisa-*`
65
67
  (hyphen). Never share a bare name like `implement` across both surfaces.
66
68
 
@@ -112,15 +114,15 @@ carries the actual logic. Keep the two descriptions consistent.
112
114
  1. **Decide placement** — downstream (`plugins/src/base`) vs. Lisa-only
113
115
  (`.claude`). For base, both a skill and a command directory entry are needed.
114
116
  2. **Pick the name** — `lisa-<slug>`, hyphenated, unique. Check it does not collide:
115
- `ls plugins/src/base/skills/` and `ls plugins/src/base/commands/lisa/`.
117
+ `ls plugins/src/base/skills/` and `ls plugins/src/base/commands/`.
116
118
  3. **Create the skill** at
117
119
  `plugins/src/base/skills/lisa-<name>/SKILL.md` with the frontmatter above and a
118
120
  body that follows house style — see `plugins/src/base/skills/lisa-quality-review/SKILL.md`
119
121
  for the canonical shape (title, "When to use", numbered checklist/steps,
120
122
  explicit "Rules"/"Output" sections). Write real, actionable guidance, not
121
123
  TODOs.
122
- 4. **Create the command** at `plugins/src/base/commands/lisa/<name>.md` (or a nested
123
- `commands/lisa/<namespace>/<name>.md` for a colon-namespaced command) using the
124
+ 4. **Create the command** at `plugins/src/base/commands/<name>.md` (or a nested
125
+ `commands/<namespace>/<name>.md` for a colon-namespaced command) using the
124
126
  pass-through template.
125
127
  5. **Rebuild the artifacts** so the generated plugins match source:
126
128
  ```bash
@@ -40,6 +40,8 @@ import fs from "node:fs";
40
40
  import path from "node:path";
41
41
  import { fileURLToPath } from "node:url";
42
42
 
43
+ import { nestCommandsUnderLisa } from "./lib/nest-plugin-commands.mjs";
44
+
43
45
  const REPO_ROOT = path.resolve(
44
46
  path.dirname(fileURLToPath(import.meta.url)),
45
47
  ".."
@@ -163,6 +165,11 @@ export function generateAgyVariant(srcDir, outDir, version) {
163
165
  }
164
166
  }
165
167
 
168
+ // 1b. Nest commands under commands/lisa/ — agy does not prefix plugin
169
+ // commands with the plugin name, so the directory manufactures the /lisa:*
170
+ // namespace that Claude gets from the plugin name alone.
171
+ nestCommandsUnderLisa(outDir);
172
+
166
173
  // 2. Read the Claude manifest, drop hooks + mcpServers, write bare plugin.json.
167
174
  // agy reads hooks from a root hooks.json (emitted below), not the manifest;
168
175
  // MCP is user-global. So the bare manifest carries neither field.
@@ -30,6 +30,7 @@ import {
30
30
  filterHooksForAgent,
31
31
  filterScriptsForAgent,
32
32
  } from "./lib/per-agent-hook-filter.mjs";
33
+ import { nestCommandsUnderLisa } from "./lib/nest-plugin-commands.mjs";
33
34
 
34
35
  const REPO_ROOT = path.resolve(
35
36
  path.dirname(fileURLToPath(import.meta.url)),
@@ -166,6 +167,11 @@ export function generateCopilotVariant(srcDir, outDir, version) {
166
167
  }
167
168
  }
168
169
 
170
+ // 1b. Nest commands under commands/lisa/ — Copilot does not prefix plugin
171
+ // commands with the plugin name, so the directory manufactures the /lisa:*
172
+ // namespace that Claude gets from the plugin name alone.
173
+ nestCommandsUnderLisa(outDir);
174
+
169
175
  // 2. Rename agents/<n>.md to agents/<n>.agent.md (per Copilot's default convention).
170
176
  // This is the safe-default path; if the manifest agents-path override probe
171
177
  // returns positive, this rename is unnecessary but harmless.
@@ -49,6 +49,7 @@ import {
49
49
  buildCursorHooksJson,
50
50
  filterScriptsForAgent,
51
51
  } from "./lib/per-agent-hook-filter.mjs";
52
+ import { nestCommandsUnderLisa } from "./lib/nest-plugin-commands.mjs";
52
53
 
53
54
  const REPO_ROOT = path.resolve(
54
55
  path.dirname(fileURLToPath(import.meta.url)),
@@ -322,6 +323,11 @@ export function generateCursorVariant(srcDir, outDir, version) {
322
323
  // 1c. Rename .mcp.json → mcp.json (Cursor auto-discovers the un-dotted name).
323
324
  renameMcpFile(outDir);
324
325
 
326
+ // 1d. Nest commands under commands/lisa/ — Cursor does not prefix plugin
327
+ // commands with the plugin name, so the directory manufactures the /lisa:*
328
+ // namespace that Claude gets from the plugin name alone.
329
+ nestCommandsUnderLisa(outDir);
330
+
325
331
  // 2. Read the manifest, stamp the version, and strip the inline hook block.
326
332
  // Cursor reads hooks from hooks/hooks.json (emitted in 2a), never inline.
327
333
  const manifestPath = path.join(outDir, ".claude-plugin", "plugin.json");
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Relocate a built plugin variant's `commands/` tree under `commands/lisa/`.
3
+ *
4
+ * Claude Code prefixes plugin commands with the plugin name, so the Claude
5
+ * artifact ships flat commands (`commands/implement.md` → `/lisa:implement`);
6
+ * a nested `commands/lisa/` there double-namespaces every command
7
+ * (`/lisa:lisa:implement`). Cursor, Agy, and Copilot surface plugin commands
8
+ * WITHOUT a plugin-name prefix, so a flat layout would expose bare colliding
9
+ * names like `/implement` — the collision e0856eddd originally fixed. The
10
+ * per-agent variants therefore manufacture the namespace with a directory:
11
+ * `commands/lisa/implement.md` → `/lisa:implement`.
12
+ * @module scripts/lib/nest-plugin-commands
13
+ */
14
+ import fs from "node:fs";
15
+ import path from "node:path";
16
+
17
+ /**
18
+ * Move every entry of `<pluginDir>/commands/` into `<pluginDir>/commands/lisa/`.
19
+ * No-op when the variant ships no commands. Idempotent: a tree that is already
20
+ * a lone `lisa/` directory is left untouched.
21
+ * @param {string} pluginDir Built per-agent variant directory.
22
+ */
23
+ export function nestCommandsUnderLisa(pluginDir) {
24
+ const commandsDir = path.join(pluginDir, "commands");
25
+ if (!fs.existsSync(commandsDir)) return;
26
+ const entries = fs.readdirSync(commandsDir);
27
+ if (entries.length === 1 && entries[0] === "lisa") return;
28
+ const stagingDir = path.join(pluginDir, "commands.nest-staging");
29
+ fs.renameSync(commandsDir, stagingDir);
30
+ fs.mkdirSync(commandsDir, { recursive: true });
31
+ fs.renameSync(stagingDir, path.join(commandsDir, "lisa"));
32
+ }
@@ -1,141 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * One-shot migration: namespace Lisa base-plugin skills and commands.
4
- *
5
- * - Skills: `implement` → `lisa-implement` (directory + frontmatter `name`)
6
- * - Commands: nest under `commands/lisa/` for colon-scoped slash surfaces
7
- * - Skill references: `lisa:foo-bar` → `lisa-foo-bar` (Skill tool / prose)
8
- * - Command pass-throughs: `/lisa:foo-bar` → `/lisa-foo-bar` in delegator bodies
9
- *
10
- * @module scripts/migrate-skill-command-namespace
11
- */
12
- import fs from "node:fs";
13
- import path from "node:path";
14
- import { fileURLToPath } from "node:url";
15
-
16
- const REPO_ROOT = path.resolve(
17
- path.dirname(fileURLToPath(import.meta.url)),
18
- ".."
19
- );
20
- const BASE_SRC = path.join(REPO_ROOT, "plugins", "src", "base");
21
- const SKILLS_DIR = path.join(BASE_SRC, "skills");
22
- const COMMANDS_DIR = path.join(BASE_SRC, "commands");
23
- const LISA_COMMANDS_DIR = path.join(COMMANDS_DIR, "lisa");
24
-
25
- /** @param {string} name */
26
- function prefixedSkillName(name) {
27
- return name.startsWith("lisa-") ? name : `lisa-${name}`;
28
- }
29
-
30
- /** Rename skill directories and frontmatter `name` fields. */
31
- function migrateSkills() {
32
- const entries = fs
33
- .readdirSync(SKILLS_DIR, { withFileTypes: true })
34
- .filter(e => e.isDirectory())
35
- .map(e => e.name)
36
- .sort();
37
-
38
- for (const oldName of entries) {
39
- const newName = prefixedSkillName(oldName);
40
- const oldDir = path.join(SKILLS_DIR, oldName);
41
- const newDir = path.join(SKILLS_DIR, newName);
42
- if (oldName !== newName) {
43
- fs.renameSync(oldDir, newDir);
44
- }
45
- const skillMd = path.join(newDir, "SKILL.md");
46
- if (!fs.existsSync(skillMd)) continue;
47
- let content = fs.readFileSync(skillMd, "utf8");
48
- content = content.replace(/^name:\s*.+$/m, `name: ${newName}`);
49
- fs.writeFileSync(skillMd, content);
50
- }
51
- }
52
-
53
- /** Move every command file under `commands/lisa/`, preserving subdirs. */
54
- function migrateCommands() {
55
- if (!fs.existsSync(COMMANDS_DIR)) return;
56
- fs.mkdirSync(LISA_COMMANDS_DIR, { recursive: true });
57
-
58
- /** @param {string} dir @param {string} rel */
59
- function walk(dir, rel = "") {
60
- for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
61
- const entryRel = rel ? `${rel}/${entry.name}` : entry.name;
62
- const src = path.join(dir, entry.name);
63
- if (
64
- entry.name === "lisa" &&
65
- entry.isDirectory() &&
66
- dir === COMMANDS_DIR
67
- ) {
68
- continue;
69
- }
70
- if (entry.isDirectory()) {
71
- walk(src, entryRel);
72
- continue;
73
- }
74
- if (!entry.name.endsWith(".md")) continue;
75
- const dest = path.join(LISA_COMMANDS_DIR, entryRel);
76
- fs.mkdirSync(path.dirname(dest), { recursive: true });
77
- fs.renameSync(src, dest);
78
- }
79
- }
80
-
81
- walk(COMMANDS_DIR);
82
-
83
- // Remove empty directories left behind (except commands/ and commands/lisa/).
84
- /** @param {string} dir */
85
- function pruneEmpty(dir) {
86
- if (dir === COMMANDS_DIR || dir === LISA_COMMANDS_DIR) return;
87
- if (!fs.existsSync(dir)) return;
88
- for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
89
- if (entry.isDirectory()) pruneEmpty(path.join(dir, entry.name));
90
- }
91
- if (fs.readdirSync(dir).length === 0) fs.rmdirSync(dir);
92
- }
93
- pruneEmpty(COMMANDS_DIR);
94
- }
95
-
96
- /**
97
- * @param {string} content
98
- * @returns {string}
99
- */
100
- function rewriteSkillReferences(content) {
101
- let out = content;
102
-
103
- // Command pass-through delegators: `/lisa:foo` skill → `/lisa-foo` skill
104
- out = out.replace(
105
- /Use the \/lisa:([a-z][a-z0-9-]*) skill/g,
106
- (_m, skill) => `Use the /${prefixedSkillName(skill)} skill`
107
- );
108
-
109
- // Inline skill refs without leading slash: `lisa:foo-bar` → `lisa-foo-bar`
110
- // Skip slash commands like `/lisa:setup:jira` (multi-colon) and `/lisa:debrief:apply`.
111
- out = out.replace(
112
- /(?<![/:])lisa:([a-z][a-z0-9-]*)(?![a-z0-9-:])/g,
113
- (_m, skill) => prefixedSkillName(skill)
114
- );
115
-
116
- return out;
117
- }
118
-
119
- /** Rewrite skill references across plugins/src/base. */
120
- function rewriteBaseReferences() {
121
- /** @param {string} dir */
122
- function walk(dir) {
123
- for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
124
- const p = path.join(dir, entry.name);
125
- if (entry.isDirectory()) {
126
- walk(p);
127
- continue;
128
- }
129
- if (!/\.(md|mdc|sh|json|agent\.md)$/i.test(entry.name)) continue;
130
- const original = fs.readFileSync(p, "utf8");
131
- const updated = rewriteSkillReferences(original);
132
- if (updated !== original) fs.writeFileSync(p, updated);
133
- }
134
- }
135
- walk(BASE_SRC);
136
- }
137
-
138
- migrateSkills();
139
- migrateCommands();
140
- rewriteBaseReferences();
141
- console.log("Migrated base plugin skill/command namespace.");
@@ -1,87 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Update test command paths after base-plugin command namespace migration.
4
- */
5
- import fs from "node:fs";
6
- import path from "node:path";
7
- import { fileURLToPath } from "node:url";
8
-
9
- const REPO_ROOT = path.resolve(
10
- path.dirname(fileURLToPath(import.meta.url)),
11
- ".."
12
- );
13
-
14
- /** @param {string} content */
15
- function rewrite(content) {
16
- let out = content;
17
-
18
- // Base command paths: commands/<file> -> commands/lisa/<file>
19
- out = out.replace(/commands\/((?!lisa\/)[^"'`\s]+\.md)/g, "commands/lisa/$1");
20
-
21
- // Lifecycle skill folder reads: skills/<lifecycle>/SKILL.md in test arrays
22
- for (const skill of [
23
- "debrief",
24
- "implement",
25
- "intake",
26
- "monitor",
27
- "plan",
28
- "research",
29
- "verify",
30
- ]) {
31
- out = out.replace(
32
- new RegExp(`(["\`])${skill}(["\`])`, "g"),
33
- `$1lisa-${skill}$2`
34
- );
35
- out = out.replace(new RegExp(`/%s/${skill}"`, "g"), `/%s/lisa-${skill}"`);
36
- out = out.replace(
37
- new RegExp(`skills/${skill}/`, "g"),
38
- `skills/lisa-${skill}/`
39
- );
40
- }
41
-
42
- // Build-intake skills in orchestration tests
43
- for (const skill of [
44
- "github-build-intake",
45
- "jira-build-intake",
46
- "linear-build-intake",
47
- "github-prd-intake",
48
- "prd-backlink",
49
- "tracker-write",
50
- "usage-accounting",
51
- ]) {
52
- out = out.replace(
53
- new RegExp(`skills/${skill}/`, "g"),
54
- `skills/lisa-${skill}/`
55
- );
56
- }
57
-
58
- // Command delegator expectations
59
- out = out.replace(
60
- /delegates to\s+\n?\s*`\/lisa:doctor`/g,
61
- "delegates to `/lisa:doctor`"
62
- );
63
- out = out.replace(
64
- /Use the \/lisa:doctor skill/g,
65
- "Use the /lisa-doctor skill"
66
- );
67
-
68
- return out;
69
- }
70
-
71
- /** @param {string} dir */
72
- function walk(dir) {
73
- for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
74
- const p = path.join(dir, entry.name);
75
- if (entry.isDirectory()) {
76
- walk(p);
77
- continue;
78
- }
79
- if (!/\.(ts|md)$/.test(entry.name)) continue;
80
- const original = fs.readFileSync(p, "utf8");
81
- const updated = rewrite(original);
82
- if (updated !== original) fs.writeFileSync(p, updated);
83
- }
84
- }
85
-
86
- walk(path.join(REPO_ROOT, "tests"));
87
- console.log("Updated test command paths.");
File without changes