@codyswann/lisa 2.121.1 → 2.123.0

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 (865) hide show
  1. package/.claude-plugin/marketplace.json +144 -0
  2. package/dist/agy/agents-md-installer.d.ts +6 -3
  3. package/dist/agy/agents-md-installer.d.ts.map +1 -1
  4. package/dist/agy/agents-md-installer.js +9 -4
  5. package/dist/agy/agents-md-installer.js.map +1 -1
  6. package/dist/agy/plugin-installer.d.ts +6 -4
  7. package/dist/agy/plugin-installer.d.ts.map +1 -1
  8. package/dist/agy/plugin-installer.js +7 -5
  9. package/dist/agy/plugin-installer.js.map +1 -1
  10. package/dist/configs/eslint/expo.d.ts +10 -1
  11. package/dist/configs/eslint/expo.d.ts.map +1 -1
  12. package/dist/configs/eslint/expo.js +19 -18
  13. package/dist/configs/eslint/expo.js.map +1 -1
  14. package/dist/configs/jest/expo.d.ts +10 -1
  15. package/dist/configs/jest/expo.d.ts.map +1 -1
  16. package/dist/configs/jest/expo.js +18 -13
  17. package/dist/configs/jest/expo.js.map +1 -1
  18. package/dist/copilot/plugin-installer.d.ts +6 -3
  19. package/dist/copilot/plugin-installer.d.ts.map +1 -1
  20. package/dist/copilot/plugin-installer.js +7 -4
  21. package/dist/copilot/plugin-installer.js.map +1 -1
  22. package/dist/core/lisa.d.ts +16 -0
  23. package/dist/core/lisa.d.ts.map +1 -1
  24. package/dist/core/lisa.js +61 -18
  25. package/dist/core/lisa.js.map +1 -1
  26. package/expo/copy-overwrite/eslint.config.ts +6 -0
  27. package/expo/copy-overwrite/jest.config.ts +10 -0
  28. package/expo/copy-overwrite/knip.json +24 -2
  29. package/expo/create-only/jest.config.react-native-mock.js +22 -0
  30. package/expo/package-lisa/package.lisa.json +37 -36
  31. package/package.json +1 -1
  32. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  34. package/plugins/lisa-agy/plugin.json +1 -1
  35. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  37. package/plugins/lisa-cdk-agy/plugin.json +11 -0
  38. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +11 -0
  39. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +11 -0
  40. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  44. package/plugins/lisa-expo/skills/directory-structure/SKILL.md +32 -20
  45. package/plugins/lisa-expo/skills/directory-structure/scripts/validate_structure.py +15 -6
  46. package/plugins/lisa-expo-agy/.mcp.json +8 -0
  47. package/plugins/lisa-expo-agy/THIRD-PARTY-NOTICES.md +57 -0
  48. package/plugins/lisa-expo-agy/agents/ops-specialist.md +124 -0
  49. package/plugins/lisa-expo-agy/commands/e2e-coverage-gaps.md +7 -0
  50. package/plugins/lisa-expo-agy/commands/exploratory-qa.md +7 -0
  51. package/plugins/lisa-expo-agy/plugin.json +11 -0
  52. package/plugins/lisa-expo-agy/skills/add-app-clip/SKILL.md +280 -0
  53. package/plugins/lisa-expo-agy/skills/add-app-clip/references/native-module.md +96 -0
  54. package/plugins/lisa-expo-agy/skills/apollo-client/SKILL.md +238 -0
  55. package/plugins/lisa-expo-agy/skills/apollo-client/references/mutation-patterns.md +360 -0
  56. package/plugins/lisa-expo-agy/skills/atomic-design-gluestack/SKILL.md +360 -0
  57. package/plugins/lisa-expo-agy/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
  58. package/plugins/lisa-expo-agy/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
  59. package/plugins/lisa-expo-agy/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
  60. package/plugins/lisa-expo-agy/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +329 -0
  61. package/plugins/lisa-expo-agy/skills/building-native-ui/SKILL.md +321 -0
  62. package/plugins/lisa-expo-agy/skills/building-native-ui/references/animations.md +220 -0
  63. package/plugins/lisa-expo-agy/skills/building-native-ui/references/controls.md +272 -0
  64. package/plugins/lisa-expo-agy/skills/building-native-ui/references/form-sheet.md +253 -0
  65. package/plugins/lisa-expo-agy/skills/building-native-ui/references/gradients.md +106 -0
  66. package/plugins/lisa-expo-agy/skills/building-native-ui/references/icons.md +213 -0
  67. package/plugins/lisa-expo-agy/skills/building-native-ui/references/media.md +198 -0
  68. package/plugins/lisa-expo-agy/skills/building-native-ui/references/route-structure.md +229 -0
  69. package/plugins/lisa-expo-agy/skills/building-native-ui/references/search.md +248 -0
  70. package/plugins/lisa-expo-agy/skills/building-native-ui/references/storage.md +121 -0
  71. package/plugins/lisa-expo-agy/skills/building-native-ui/references/tabs.md +433 -0
  72. package/plugins/lisa-expo-agy/skills/building-native-ui/references/toolbar-and-headers.md +284 -0
  73. package/plugins/lisa-expo-agy/skills/building-native-ui/references/visual-effects.md +197 -0
  74. package/plugins/lisa-expo-agy/skills/building-native-ui/references/webgpu-three.md +605 -0
  75. package/plugins/lisa-expo-agy/skills/building-native-ui/references/zoom-transitions.md +158 -0
  76. package/plugins/lisa-expo-agy/skills/container-view-pattern/SKILL.md +299 -0
  77. package/plugins/lisa-expo-agy/skills/container-view-pattern/references/examples.md +749 -0
  78. package/plugins/lisa-expo-agy/skills/container-view-pattern/references/patterns.md +318 -0
  79. package/plugins/lisa-expo-agy/skills/container-view-pattern/scripts/create_component.py +200 -0
  80. package/plugins/lisa-expo-agy/skills/container-view-pattern/scripts/validate_component.py +209 -0
  81. package/plugins/lisa-expo-agy/skills/cross-platform-compatibility/SKILL.md +268 -0
  82. package/plugins/lisa-expo-agy/skills/cross-platform-compatibility/references/common-issues.md +619 -0
  83. package/plugins/lisa-expo-agy/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
  84. package/plugins/lisa-expo-agy/skills/cross-platform-compatibility/references/platform-api.md +276 -0
  85. package/plugins/lisa-expo-agy/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +416 -0
  86. package/plugins/lisa-expo-agy/skills/directory-structure/SKILL.md +214 -0
  87. package/plugins/lisa-expo-agy/skills/directory-structure/scripts/validate_structure.py +454 -0
  88. package/plugins/lisa-expo-agy/skills/e2e-coverage-gaps/SKILL.md +105 -0
  89. package/plugins/lisa-expo-agy/skills/eas-update-insights/SKILL.md +228 -0
  90. package/plugins/lisa-expo-agy/skills/eas-update-insights/references/channel-insights-schema.md +47 -0
  91. package/plugins/lisa-expo-agy/skills/eas-update-insights/references/update-insights-schema.md +69 -0
  92. package/plugins/lisa-expo-agy/skills/exploratory-qa/SKILL.md +145 -0
  93. package/plugins/lisa-expo-agy/skills/expo-api-routes/SKILL.md +369 -0
  94. package/plugins/lisa-expo-agy/skills/expo-brownfield/SKILL.md +54 -0
  95. package/plugins/lisa-expo-agy/skills/expo-brownfield/references/brownfield-integrated.md +526 -0
  96. package/plugins/lisa-expo-agy/skills/expo-brownfield/references/brownfield-isolated.md +402 -0
  97. package/plugins/lisa-expo-agy/skills/expo-brownfield/references/comparison.md +63 -0
  98. package/plugins/lisa-expo-agy/skills/expo-brownfield/references/troubleshooting.md +88 -0
  99. package/plugins/lisa-expo-agy/skills/expo-cicd-workflows/SKILL.md +92 -0
  100. package/plugins/lisa-expo-agy/skills/expo-cicd-workflows/scripts/fetch.js +113 -0
  101. package/plugins/lisa-expo-agy/skills/expo-cicd-workflows/scripts/package.json +11 -0
  102. package/plugins/lisa-expo-agy/skills/expo-cicd-workflows/scripts/validate.js +85 -0
  103. package/plugins/lisa-expo-agy/skills/expo-deployment/SKILL.md +190 -0
  104. package/plugins/lisa-expo-agy/skills/expo-deployment/references/app-store-metadata.md +479 -0
  105. package/plugins/lisa-expo-agy/skills/expo-deployment/references/ios-app-store.md +355 -0
  106. package/plugins/lisa-expo-agy/skills/expo-deployment/references/play-store.md +246 -0
  107. package/plugins/lisa-expo-agy/skills/expo-deployment/references/testflight.md +58 -0
  108. package/plugins/lisa-expo-agy/skills/expo-deployment/references/workflows.md +200 -0
  109. package/plugins/lisa-expo-agy/skills/expo-dev-client/SKILL.md +164 -0
  110. package/plugins/lisa-expo-agy/skills/expo-env-config/SKILL.md +309 -0
  111. package/plugins/lisa-expo-agy/skills/expo-env-config/references/validation-patterns.md +417 -0
  112. package/plugins/lisa-expo-agy/skills/expo-module/SKILL.md +141 -0
  113. package/plugins/lisa-expo-agy/skills/expo-module/references/config-plugin.md +90 -0
  114. package/plugins/lisa-expo-agy/skills/expo-module/references/create-expo-module.md +206 -0
  115. package/plugins/lisa-expo-agy/skills/expo-module/references/lifecycle.md +127 -0
  116. package/plugins/lisa-expo-agy/skills/expo-module/references/module-config.md +48 -0
  117. package/plugins/lisa-expo-agy/skills/expo-module/references/native-module.md +286 -0
  118. package/plugins/lisa-expo-agy/skills/expo-module/references/native-view.md +171 -0
  119. package/plugins/lisa-expo-agy/skills/expo-router-best-practices/SKILL.md +431 -0
  120. package/plugins/lisa-expo-agy/skills/expo-router-best-practices/references/official-docs.md +290 -0
  121. package/plugins/lisa-expo-agy/skills/expo-router-best-practices/scripts/generate-route.py +171 -0
  122. package/plugins/lisa-expo-agy/skills/expo-tailwind-setup/SKILL.md +480 -0
  123. package/plugins/lisa-expo-agy/skills/expo-ui-jetpack-compose/SKILL.md +40 -0
  124. package/plugins/lisa-expo-agy/skills/expo-ui-swift-ui/SKILL.md +39 -0
  125. package/plugins/lisa-expo-agy/skills/gluestack-nativewind/SKILL.md +411 -0
  126. package/plugins/lisa-expo-agy/skills/gluestack-nativewind/references/color-tokens.md +343 -0
  127. package/plugins/lisa-expo-agy/skills/gluestack-nativewind/references/component-mapping.md +307 -0
  128. package/plugins/lisa-expo-agy/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
  129. package/plugins/lisa-expo-agy/skills/gluestack-nativewind/scripts/validate_styling.py +315 -0
  130. package/plugins/lisa-expo-agy/skills/jira-add-journey/SKILL.md +126 -0
  131. package/plugins/lisa-expo-agy/skills/jira-create/SKILL.md +161 -0
  132. package/plugins/lisa-expo-agy/skills/jira-evidence/SKILL.md +78 -0
  133. package/plugins/lisa-expo-agy/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  134. package/plugins/lisa-expo-agy/skills/jira-journey/SKILL.md +190 -0
  135. package/plugins/lisa-expo-agy/skills/jira-journey/scripts/generate-templates.py +281 -0
  136. package/plugins/lisa-expo-agy/skills/jira-journey/scripts/parse-plan.py +368 -0
  137. package/plugins/lisa-expo-agy/skills/jira-verify/SKILL.md +27 -0
  138. package/plugins/lisa-expo-agy/skills/local-state/SKILL.md +362 -0
  139. package/plugins/lisa-expo-agy/skills/local-state/references/async-storage.md +505 -0
  140. package/plugins/lisa-expo-agy/skills/local-state/references/persistence-patterns.md +711 -0
  141. package/plugins/lisa-expo-agy/skills/local-state/references/reactive-variables.md +446 -0
  142. package/plugins/lisa-expo-agy/skills/native-data-fetching/SKILL.md +507 -0
  143. package/plugins/lisa-expo-agy/skills/native-data-fetching/references/expo-router-loaders.md +344 -0
  144. package/plugins/lisa-expo-agy/skills/ops-browser-uat/SKILL.md +124 -0
  145. package/plugins/lisa-expo-agy/skills/ops-check-logs/SKILL.md +211 -0
  146. package/plugins/lisa-expo-agy/skills/ops-db-ops/SKILL.md +119 -0
  147. package/plugins/lisa-expo-agy/skills/ops-deploy/SKILL.md +119 -0
  148. package/plugins/lisa-expo-agy/skills/ops-monitor-errors/SKILL.md +99 -0
  149. package/plugins/lisa-expo-agy/skills/ops-performance/SKILL.md +165 -0
  150. package/plugins/lisa-expo-agy/skills/ops-run-local/SKILL.md +166 -0
  151. package/plugins/lisa-expo-agy/skills/ops-verify-health/SKILL.md +101 -0
  152. package/plugins/lisa-expo-agy/skills/owasp-zap/SKILL.md +56 -0
  153. package/plugins/lisa-expo-agy/skills/playwright-ci-debugging/SKILL.md +140 -0
  154. package/plugins/lisa-expo-agy/skills/playwright-selectors/SKILL.md +455 -0
  155. package/plugins/lisa-expo-agy/skills/reduce-complexity/SKILL.md +251 -0
  156. package/plugins/lisa-expo-agy/skills/reduce-complexity/references/extraction-strategies.md +456 -0
  157. package/plugins/lisa-expo-agy/skills/reduce-complexity/references/refactoring-patterns.md +557 -0
  158. package/plugins/lisa-expo-agy/skills/testing-library/SKILL.md +314 -0
  159. package/plugins/lisa-expo-agy/skills/testing-library/references/async-patterns.md +420 -0
  160. package/plugins/lisa-expo-agy/skills/testing-library/references/expo-router-testing.md +556 -0
  161. package/plugins/lisa-expo-agy/skills/testing-library/references/mocking-patterns.md +590 -0
  162. package/plugins/lisa-expo-agy/skills/testing-library/references/query-priority.md +291 -0
  163. package/plugins/lisa-expo-agy/skills/upgrading-expo/SKILL.md +134 -0
  164. package/plugins/lisa-expo-agy/skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
  165. package/plugins/lisa-expo-agy/skills/upgrading-expo/references/expo-av-to-video.md +160 -0
  166. package/plugins/lisa-expo-agy/skills/upgrading-expo/references/native-tabs.md +124 -0
  167. package/plugins/lisa-expo-agy/skills/upgrading-expo/references/new-architecture.md +79 -0
  168. package/plugins/lisa-expo-agy/skills/upgrading-expo/references/react-19.md +79 -0
  169. package/plugins/lisa-expo-agy/skills/upgrading-expo/references/react-compiler.md +59 -0
  170. package/plugins/lisa-expo-agy/skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
  171. package/plugins/lisa-expo-agy/skills/use-dom/SKILL.md +417 -0
  172. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +11 -0
  173. package/plugins/lisa-expo-copilot/.mcp.json +8 -0
  174. package/plugins/lisa-expo-copilot/THIRD-PARTY-NOTICES.md +57 -0
  175. package/plugins/lisa-expo-copilot/agents/ops-specialist.agent.md +124 -0
  176. package/plugins/lisa-expo-copilot/commands/e2e-coverage-gaps.md +7 -0
  177. package/plugins/lisa-expo-copilot/commands/exploratory-qa.md +7 -0
  178. package/plugins/lisa-expo-copilot/skills/add-app-clip/SKILL.md +280 -0
  179. package/plugins/lisa-expo-copilot/skills/add-app-clip/references/native-module.md +96 -0
  180. package/plugins/lisa-expo-copilot/skills/apollo-client/SKILL.md +238 -0
  181. package/plugins/lisa-expo-copilot/skills/apollo-client/references/mutation-patterns.md +360 -0
  182. package/plugins/lisa-expo-copilot/skills/atomic-design-gluestack/SKILL.md +360 -0
  183. package/plugins/lisa-expo-copilot/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
  184. package/plugins/lisa-expo-copilot/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
  185. package/plugins/lisa-expo-copilot/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
  186. package/plugins/lisa-expo-copilot/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +329 -0
  187. package/plugins/lisa-expo-copilot/skills/building-native-ui/SKILL.md +321 -0
  188. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/animations.md +220 -0
  189. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/controls.md +272 -0
  190. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/form-sheet.md +253 -0
  191. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/gradients.md +106 -0
  192. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/icons.md +213 -0
  193. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/media.md +198 -0
  194. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/route-structure.md +229 -0
  195. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/search.md +248 -0
  196. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/storage.md +121 -0
  197. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/tabs.md +433 -0
  198. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/toolbar-and-headers.md +284 -0
  199. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/visual-effects.md +197 -0
  200. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/webgpu-three.md +605 -0
  201. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/zoom-transitions.md +158 -0
  202. package/plugins/lisa-expo-copilot/skills/container-view-pattern/SKILL.md +299 -0
  203. package/plugins/lisa-expo-copilot/skills/container-view-pattern/references/examples.md +749 -0
  204. package/plugins/lisa-expo-copilot/skills/container-view-pattern/references/patterns.md +318 -0
  205. package/plugins/lisa-expo-copilot/skills/container-view-pattern/scripts/create_component.py +200 -0
  206. package/plugins/lisa-expo-copilot/skills/container-view-pattern/scripts/validate_component.py +209 -0
  207. package/plugins/lisa-expo-copilot/skills/cross-platform-compatibility/SKILL.md +268 -0
  208. package/plugins/lisa-expo-copilot/skills/cross-platform-compatibility/references/common-issues.md +619 -0
  209. package/plugins/lisa-expo-copilot/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
  210. package/plugins/lisa-expo-copilot/skills/cross-platform-compatibility/references/platform-api.md +276 -0
  211. package/plugins/lisa-expo-copilot/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +416 -0
  212. package/plugins/lisa-expo-copilot/skills/directory-structure/SKILL.md +214 -0
  213. package/plugins/lisa-expo-copilot/skills/directory-structure/scripts/validate_structure.py +454 -0
  214. package/plugins/lisa-expo-copilot/skills/e2e-coverage-gaps/SKILL.md +105 -0
  215. package/plugins/lisa-expo-copilot/skills/eas-update-insights/SKILL.md +228 -0
  216. package/plugins/lisa-expo-copilot/skills/eas-update-insights/references/channel-insights-schema.md +47 -0
  217. package/plugins/lisa-expo-copilot/skills/eas-update-insights/references/update-insights-schema.md +69 -0
  218. package/plugins/lisa-expo-copilot/skills/exploratory-qa/SKILL.md +145 -0
  219. package/plugins/lisa-expo-copilot/skills/expo-api-routes/SKILL.md +369 -0
  220. package/plugins/lisa-expo-copilot/skills/expo-brownfield/SKILL.md +54 -0
  221. package/plugins/lisa-expo-copilot/skills/expo-brownfield/references/brownfield-integrated.md +526 -0
  222. package/plugins/lisa-expo-copilot/skills/expo-brownfield/references/brownfield-isolated.md +402 -0
  223. package/plugins/lisa-expo-copilot/skills/expo-brownfield/references/comparison.md +63 -0
  224. package/plugins/lisa-expo-copilot/skills/expo-brownfield/references/troubleshooting.md +88 -0
  225. package/plugins/lisa-expo-copilot/skills/expo-cicd-workflows/SKILL.md +92 -0
  226. package/plugins/lisa-expo-copilot/skills/expo-cicd-workflows/scripts/fetch.js +113 -0
  227. package/plugins/lisa-expo-copilot/skills/expo-cicd-workflows/scripts/package.json +11 -0
  228. package/plugins/lisa-expo-copilot/skills/expo-cicd-workflows/scripts/validate.js +85 -0
  229. package/plugins/lisa-expo-copilot/skills/expo-deployment/SKILL.md +190 -0
  230. package/plugins/lisa-expo-copilot/skills/expo-deployment/references/app-store-metadata.md +479 -0
  231. package/plugins/lisa-expo-copilot/skills/expo-deployment/references/ios-app-store.md +355 -0
  232. package/plugins/lisa-expo-copilot/skills/expo-deployment/references/play-store.md +246 -0
  233. package/plugins/lisa-expo-copilot/skills/expo-deployment/references/testflight.md +58 -0
  234. package/plugins/lisa-expo-copilot/skills/expo-deployment/references/workflows.md +200 -0
  235. package/plugins/lisa-expo-copilot/skills/expo-dev-client/SKILL.md +164 -0
  236. package/plugins/lisa-expo-copilot/skills/expo-env-config/SKILL.md +309 -0
  237. package/plugins/lisa-expo-copilot/skills/expo-env-config/references/validation-patterns.md +417 -0
  238. package/plugins/lisa-expo-copilot/skills/expo-module/SKILL.md +141 -0
  239. package/plugins/lisa-expo-copilot/skills/expo-module/references/config-plugin.md +90 -0
  240. package/plugins/lisa-expo-copilot/skills/expo-module/references/create-expo-module.md +206 -0
  241. package/plugins/lisa-expo-copilot/skills/expo-module/references/lifecycle.md +127 -0
  242. package/plugins/lisa-expo-copilot/skills/expo-module/references/module-config.md +48 -0
  243. package/plugins/lisa-expo-copilot/skills/expo-module/references/native-module.md +286 -0
  244. package/plugins/lisa-expo-copilot/skills/expo-module/references/native-view.md +171 -0
  245. package/plugins/lisa-expo-copilot/skills/expo-router-best-practices/SKILL.md +431 -0
  246. package/plugins/lisa-expo-copilot/skills/expo-router-best-practices/references/official-docs.md +290 -0
  247. package/plugins/lisa-expo-copilot/skills/expo-router-best-practices/scripts/generate-route.py +171 -0
  248. package/plugins/lisa-expo-copilot/skills/expo-tailwind-setup/SKILL.md +480 -0
  249. package/plugins/lisa-expo-copilot/skills/expo-ui-jetpack-compose/SKILL.md +40 -0
  250. package/plugins/lisa-expo-copilot/skills/expo-ui-swift-ui/SKILL.md +39 -0
  251. package/plugins/lisa-expo-copilot/skills/gluestack-nativewind/SKILL.md +411 -0
  252. package/plugins/lisa-expo-copilot/skills/gluestack-nativewind/references/color-tokens.md +343 -0
  253. package/plugins/lisa-expo-copilot/skills/gluestack-nativewind/references/component-mapping.md +307 -0
  254. package/plugins/lisa-expo-copilot/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
  255. package/plugins/lisa-expo-copilot/skills/gluestack-nativewind/scripts/validate_styling.py +315 -0
  256. package/plugins/lisa-expo-copilot/skills/jira-add-journey/SKILL.md +126 -0
  257. package/plugins/lisa-expo-copilot/skills/jira-create/SKILL.md +161 -0
  258. package/plugins/lisa-expo-copilot/skills/jira-evidence/SKILL.md +78 -0
  259. package/plugins/lisa-expo-copilot/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  260. package/plugins/lisa-expo-copilot/skills/jira-journey/SKILL.md +190 -0
  261. package/plugins/lisa-expo-copilot/skills/jira-journey/scripts/generate-templates.py +281 -0
  262. package/plugins/lisa-expo-copilot/skills/jira-journey/scripts/parse-plan.py +368 -0
  263. package/plugins/lisa-expo-copilot/skills/jira-verify/SKILL.md +27 -0
  264. package/plugins/lisa-expo-copilot/skills/local-state/SKILL.md +362 -0
  265. package/plugins/lisa-expo-copilot/skills/local-state/references/async-storage.md +505 -0
  266. package/plugins/lisa-expo-copilot/skills/local-state/references/persistence-patterns.md +711 -0
  267. package/plugins/lisa-expo-copilot/skills/local-state/references/reactive-variables.md +446 -0
  268. package/plugins/lisa-expo-copilot/skills/native-data-fetching/SKILL.md +507 -0
  269. package/plugins/lisa-expo-copilot/skills/native-data-fetching/references/expo-router-loaders.md +344 -0
  270. package/plugins/lisa-expo-copilot/skills/ops-browser-uat/SKILL.md +124 -0
  271. package/plugins/lisa-expo-copilot/skills/ops-check-logs/SKILL.md +211 -0
  272. package/plugins/lisa-expo-copilot/skills/ops-db-ops/SKILL.md +119 -0
  273. package/plugins/lisa-expo-copilot/skills/ops-deploy/SKILL.md +119 -0
  274. package/plugins/lisa-expo-copilot/skills/ops-monitor-errors/SKILL.md +99 -0
  275. package/plugins/lisa-expo-copilot/skills/ops-performance/SKILL.md +165 -0
  276. package/plugins/lisa-expo-copilot/skills/ops-run-local/SKILL.md +166 -0
  277. package/plugins/lisa-expo-copilot/skills/ops-verify-health/SKILL.md +101 -0
  278. package/plugins/lisa-expo-copilot/skills/owasp-zap/SKILL.md +56 -0
  279. package/plugins/lisa-expo-copilot/skills/playwright-ci-debugging/SKILL.md +140 -0
  280. package/plugins/lisa-expo-copilot/skills/playwright-selectors/SKILL.md +455 -0
  281. package/plugins/lisa-expo-copilot/skills/reduce-complexity/SKILL.md +251 -0
  282. package/plugins/lisa-expo-copilot/skills/reduce-complexity/references/extraction-strategies.md +456 -0
  283. package/plugins/lisa-expo-copilot/skills/reduce-complexity/references/refactoring-patterns.md +557 -0
  284. package/plugins/lisa-expo-copilot/skills/testing-library/SKILL.md +314 -0
  285. package/plugins/lisa-expo-copilot/skills/testing-library/references/async-patterns.md +420 -0
  286. package/plugins/lisa-expo-copilot/skills/testing-library/references/expo-router-testing.md +556 -0
  287. package/plugins/lisa-expo-copilot/skills/testing-library/references/mocking-patterns.md +590 -0
  288. package/plugins/lisa-expo-copilot/skills/testing-library/references/query-priority.md +291 -0
  289. package/plugins/lisa-expo-copilot/skills/upgrading-expo/SKILL.md +134 -0
  290. package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
  291. package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/expo-av-to-video.md +160 -0
  292. package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/native-tabs.md +124 -0
  293. package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/new-architecture.md +79 -0
  294. package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/react-19.md +79 -0
  295. package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/react-compiler.md +59 -0
  296. package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
  297. package/plugins/lisa-expo-copilot/skills/use-dom/SKILL.md +417 -0
  298. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +11 -0
  299. package/plugins/lisa-expo-cursor/.mcp.json +8 -0
  300. package/plugins/lisa-expo-cursor/THIRD-PARTY-NOTICES.md +57 -0
  301. package/plugins/lisa-expo-cursor/agents/ops-specialist.md +124 -0
  302. package/plugins/lisa-expo-cursor/commands/e2e-coverage-gaps.md +7 -0
  303. package/plugins/lisa-expo-cursor/commands/exploratory-qa.md +7 -0
  304. package/plugins/lisa-expo-cursor/skills/add-app-clip/SKILL.md +280 -0
  305. package/plugins/lisa-expo-cursor/skills/add-app-clip/references/native-module.md +96 -0
  306. package/plugins/lisa-expo-cursor/skills/apollo-client/SKILL.md +238 -0
  307. package/plugins/lisa-expo-cursor/skills/apollo-client/references/mutation-patterns.md +360 -0
  308. package/plugins/lisa-expo-cursor/skills/atomic-design-gluestack/SKILL.md +360 -0
  309. package/plugins/lisa-expo-cursor/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
  310. package/plugins/lisa-expo-cursor/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
  311. package/plugins/lisa-expo-cursor/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
  312. package/plugins/lisa-expo-cursor/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +329 -0
  313. package/plugins/lisa-expo-cursor/skills/building-native-ui/SKILL.md +321 -0
  314. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/animations.md +220 -0
  315. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/controls.md +272 -0
  316. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/form-sheet.md +253 -0
  317. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/gradients.md +106 -0
  318. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/icons.md +213 -0
  319. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/media.md +198 -0
  320. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/route-structure.md +229 -0
  321. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/search.md +248 -0
  322. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/storage.md +121 -0
  323. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/tabs.md +433 -0
  324. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/toolbar-and-headers.md +284 -0
  325. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/visual-effects.md +197 -0
  326. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/webgpu-three.md +605 -0
  327. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/zoom-transitions.md +158 -0
  328. package/plugins/lisa-expo-cursor/skills/container-view-pattern/SKILL.md +299 -0
  329. package/plugins/lisa-expo-cursor/skills/container-view-pattern/references/examples.md +749 -0
  330. package/plugins/lisa-expo-cursor/skills/container-view-pattern/references/patterns.md +318 -0
  331. package/plugins/lisa-expo-cursor/skills/container-view-pattern/scripts/create_component.py +200 -0
  332. package/plugins/lisa-expo-cursor/skills/container-view-pattern/scripts/validate_component.py +209 -0
  333. package/plugins/lisa-expo-cursor/skills/cross-platform-compatibility/SKILL.md +268 -0
  334. package/plugins/lisa-expo-cursor/skills/cross-platform-compatibility/references/common-issues.md +619 -0
  335. package/plugins/lisa-expo-cursor/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
  336. package/plugins/lisa-expo-cursor/skills/cross-platform-compatibility/references/platform-api.md +276 -0
  337. package/plugins/lisa-expo-cursor/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +416 -0
  338. package/plugins/lisa-expo-cursor/skills/directory-structure/SKILL.md +214 -0
  339. package/plugins/lisa-expo-cursor/skills/directory-structure/scripts/validate_structure.py +454 -0
  340. package/plugins/lisa-expo-cursor/skills/e2e-coverage-gaps/SKILL.md +105 -0
  341. package/plugins/lisa-expo-cursor/skills/eas-update-insights/SKILL.md +228 -0
  342. package/plugins/lisa-expo-cursor/skills/eas-update-insights/references/channel-insights-schema.md +47 -0
  343. package/plugins/lisa-expo-cursor/skills/eas-update-insights/references/update-insights-schema.md +69 -0
  344. package/plugins/lisa-expo-cursor/skills/exploratory-qa/SKILL.md +145 -0
  345. package/plugins/lisa-expo-cursor/skills/expo-api-routes/SKILL.md +369 -0
  346. package/plugins/lisa-expo-cursor/skills/expo-brownfield/SKILL.md +54 -0
  347. package/plugins/lisa-expo-cursor/skills/expo-brownfield/references/brownfield-integrated.md +526 -0
  348. package/plugins/lisa-expo-cursor/skills/expo-brownfield/references/brownfield-isolated.md +402 -0
  349. package/plugins/lisa-expo-cursor/skills/expo-brownfield/references/comparison.md +63 -0
  350. package/plugins/lisa-expo-cursor/skills/expo-brownfield/references/troubleshooting.md +88 -0
  351. package/plugins/lisa-expo-cursor/skills/expo-cicd-workflows/SKILL.md +92 -0
  352. package/plugins/lisa-expo-cursor/skills/expo-cicd-workflows/scripts/fetch.js +113 -0
  353. package/plugins/lisa-expo-cursor/skills/expo-cicd-workflows/scripts/package.json +11 -0
  354. package/plugins/lisa-expo-cursor/skills/expo-cicd-workflows/scripts/validate.js +85 -0
  355. package/plugins/lisa-expo-cursor/skills/expo-deployment/SKILL.md +190 -0
  356. package/plugins/lisa-expo-cursor/skills/expo-deployment/references/app-store-metadata.md +479 -0
  357. package/plugins/lisa-expo-cursor/skills/expo-deployment/references/ios-app-store.md +355 -0
  358. package/plugins/lisa-expo-cursor/skills/expo-deployment/references/play-store.md +246 -0
  359. package/plugins/lisa-expo-cursor/skills/expo-deployment/references/testflight.md +58 -0
  360. package/plugins/lisa-expo-cursor/skills/expo-deployment/references/workflows.md +200 -0
  361. package/plugins/lisa-expo-cursor/skills/expo-dev-client/SKILL.md +164 -0
  362. package/plugins/lisa-expo-cursor/skills/expo-env-config/SKILL.md +309 -0
  363. package/plugins/lisa-expo-cursor/skills/expo-env-config/references/validation-patterns.md +417 -0
  364. package/plugins/lisa-expo-cursor/skills/expo-module/SKILL.md +141 -0
  365. package/plugins/lisa-expo-cursor/skills/expo-module/references/config-plugin.md +90 -0
  366. package/plugins/lisa-expo-cursor/skills/expo-module/references/create-expo-module.md +206 -0
  367. package/plugins/lisa-expo-cursor/skills/expo-module/references/lifecycle.md +127 -0
  368. package/plugins/lisa-expo-cursor/skills/expo-module/references/module-config.md +48 -0
  369. package/plugins/lisa-expo-cursor/skills/expo-module/references/native-module.md +286 -0
  370. package/plugins/lisa-expo-cursor/skills/expo-module/references/native-view.md +171 -0
  371. package/plugins/lisa-expo-cursor/skills/expo-router-best-practices/SKILL.md +431 -0
  372. package/plugins/lisa-expo-cursor/skills/expo-router-best-practices/references/official-docs.md +290 -0
  373. package/plugins/lisa-expo-cursor/skills/expo-router-best-practices/scripts/generate-route.py +171 -0
  374. package/plugins/lisa-expo-cursor/skills/expo-tailwind-setup/SKILL.md +480 -0
  375. package/plugins/lisa-expo-cursor/skills/expo-ui-jetpack-compose/SKILL.md +40 -0
  376. package/plugins/lisa-expo-cursor/skills/expo-ui-swift-ui/SKILL.md +39 -0
  377. package/plugins/lisa-expo-cursor/skills/gluestack-nativewind/SKILL.md +411 -0
  378. package/plugins/lisa-expo-cursor/skills/gluestack-nativewind/references/color-tokens.md +343 -0
  379. package/plugins/lisa-expo-cursor/skills/gluestack-nativewind/references/component-mapping.md +307 -0
  380. package/plugins/lisa-expo-cursor/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
  381. package/plugins/lisa-expo-cursor/skills/gluestack-nativewind/scripts/validate_styling.py +315 -0
  382. package/plugins/lisa-expo-cursor/skills/jira-add-journey/SKILL.md +126 -0
  383. package/plugins/lisa-expo-cursor/skills/jira-create/SKILL.md +161 -0
  384. package/plugins/lisa-expo-cursor/skills/jira-evidence/SKILL.md +78 -0
  385. package/plugins/lisa-expo-cursor/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  386. package/plugins/lisa-expo-cursor/skills/jira-journey/SKILL.md +190 -0
  387. package/plugins/lisa-expo-cursor/skills/jira-journey/scripts/generate-templates.py +281 -0
  388. package/plugins/lisa-expo-cursor/skills/jira-journey/scripts/parse-plan.py +368 -0
  389. package/plugins/lisa-expo-cursor/skills/jira-verify/SKILL.md +27 -0
  390. package/plugins/lisa-expo-cursor/skills/local-state/SKILL.md +362 -0
  391. package/plugins/lisa-expo-cursor/skills/local-state/references/async-storage.md +505 -0
  392. package/plugins/lisa-expo-cursor/skills/local-state/references/persistence-patterns.md +711 -0
  393. package/plugins/lisa-expo-cursor/skills/local-state/references/reactive-variables.md +446 -0
  394. package/plugins/lisa-expo-cursor/skills/native-data-fetching/SKILL.md +507 -0
  395. package/plugins/lisa-expo-cursor/skills/native-data-fetching/references/expo-router-loaders.md +344 -0
  396. package/plugins/lisa-expo-cursor/skills/ops-browser-uat/SKILL.md +124 -0
  397. package/plugins/lisa-expo-cursor/skills/ops-check-logs/SKILL.md +211 -0
  398. package/plugins/lisa-expo-cursor/skills/ops-db-ops/SKILL.md +119 -0
  399. package/plugins/lisa-expo-cursor/skills/ops-deploy/SKILL.md +119 -0
  400. package/plugins/lisa-expo-cursor/skills/ops-monitor-errors/SKILL.md +99 -0
  401. package/plugins/lisa-expo-cursor/skills/ops-performance/SKILL.md +165 -0
  402. package/plugins/lisa-expo-cursor/skills/ops-run-local/SKILL.md +166 -0
  403. package/plugins/lisa-expo-cursor/skills/ops-verify-health/SKILL.md +101 -0
  404. package/plugins/lisa-expo-cursor/skills/owasp-zap/SKILL.md +56 -0
  405. package/plugins/lisa-expo-cursor/skills/playwright-ci-debugging/SKILL.md +140 -0
  406. package/plugins/lisa-expo-cursor/skills/playwright-selectors/SKILL.md +455 -0
  407. package/plugins/lisa-expo-cursor/skills/reduce-complexity/SKILL.md +251 -0
  408. package/plugins/lisa-expo-cursor/skills/reduce-complexity/references/extraction-strategies.md +456 -0
  409. package/plugins/lisa-expo-cursor/skills/reduce-complexity/references/refactoring-patterns.md +557 -0
  410. package/plugins/lisa-expo-cursor/skills/testing-library/SKILL.md +314 -0
  411. package/plugins/lisa-expo-cursor/skills/testing-library/references/async-patterns.md +420 -0
  412. package/plugins/lisa-expo-cursor/skills/testing-library/references/expo-router-testing.md +556 -0
  413. package/plugins/lisa-expo-cursor/skills/testing-library/references/mocking-patterns.md +590 -0
  414. package/plugins/lisa-expo-cursor/skills/testing-library/references/query-priority.md +291 -0
  415. package/plugins/lisa-expo-cursor/skills/upgrading-expo/SKILL.md +134 -0
  416. package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
  417. package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/expo-av-to-video.md +160 -0
  418. package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/native-tabs.md +124 -0
  419. package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/new-architecture.md +79 -0
  420. package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/react-19.md +79 -0
  421. package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/react-compiler.md +59 -0
  422. package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
  423. package/plugins/lisa-expo-cursor/skills/use-dom/SKILL.md +417 -0
  424. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  425. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  426. package/plugins/lisa-harper-fabric-agy/commands/e2e-coverage-gaps.md +7 -0
  427. package/plugins/lisa-harper-fabric-agy/commands/exploratory-qa.md +7 -0
  428. package/plugins/lisa-harper-fabric-agy/plugin.json +11 -0
  429. package/plugins/lisa-harper-fabric-agy/skills/e2e-coverage-gaps/SKILL.md +105 -0
  430. package/plugins/lisa-harper-fabric-agy/skills/exploratory-qa/SKILL.md +145 -0
  431. package/plugins/lisa-harper-fabric-agy/skills/harper-build-and-deploy/SKILL.md +101 -0
  432. package/plugins/lisa-harper-fabric-agy/skills/harper-component-model/SKILL.md +87 -0
  433. package/plugins/lisa-harper-fabric-agy/skills/harper-config-yaml/SKILL.md +107 -0
  434. package/plugins/lisa-harper-fabric-agy/skills/harper-resources/SKILL.md +106 -0
  435. package/plugins/lisa-harper-fabric-agy/skills/harper-schema-graphql/SKILL.md +72 -0
  436. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +35 -0
  437. package/plugins/lisa-harper-fabric-copilot/commands/e2e-coverage-gaps.md +7 -0
  438. package/plugins/lisa-harper-fabric-copilot/commands/exploratory-qa.md +7 -0
  439. package/plugins/lisa-harper-fabric-copilot/hooks/inject-rules.sh +16 -0
  440. package/plugins/lisa-harper-fabric-copilot/rules/harper-fabric.md +51 -0
  441. package/plugins/lisa-harper-fabric-copilot/skills/e2e-coverage-gaps/SKILL.md +105 -0
  442. package/plugins/lisa-harper-fabric-copilot/skills/exploratory-qa/SKILL.md +145 -0
  443. package/plugins/lisa-harper-fabric-copilot/skills/harper-build-and-deploy/SKILL.md +101 -0
  444. package/plugins/lisa-harper-fabric-copilot/skills/harper-component-model/SKILL.md +87 -0
  445. package/plugins/lisa-harper-fabric-copilot/skills/harper-config-yaml/SKILL.md +107 -0
  446. package/plugins/lisa-harper-fabric-copilot/skills/harper-resources/SKILL.md +106 -0
  447. package/plugins/lisa-harper-fabric-copilot/skills/harper-schema-graphql/SKILL.md +72 -0
  448. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +11 -0
  449. package/plugins/lisa-harper-fabric-cursor/commands/e2e-coverage-gaps.md +7 -0
  450. package/plugins/lisa-harper-fabric-cursor/commands/exploratory-qa.md +7 -0
  451. package/plugins/lisa-harper-fabric-cursor/rules/harper-fabric.md +51 -0
  452. package/plugins/lisa-harper-fabric-cursor/skills/e2e-coverage-gaps/SKILL.md +105 -0
  453. package/plugins/lisa-harper-fabric-cursor/skills/exploratory-qa/SKILL.md +145 -0
  454. package/plugins/lisa-harper-fabric-cursor/skills/harper-build-and-deploy/SKILL.md +101 -0
  455. package/plugins/lisa-harper-fabric-cursor/skills/harper-component-model/SKILL.md +87 -0
  456. package/plugins/lisa-harper-fabric-cursor/skills/harper-config-yaml/SKILL.md +107 -0
  457. package/plugins/lisa-harper-fabric-cursor/skills/harper-resources/SKILL.md +106 -0
  458. package/plugins/lisa-harper-fabric-cursor/skills/harper-schema-graphql/SKILL.md +72 -0
  459. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  460. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  461. package/plugins/lisa-nestjs-agy/plugin.json +11 -0
  462. package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/SKILL.md +176 -0
  463. package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/references/advanced-features.md +527 -0
  464. package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/references/project-patterns.md +531 -0
  465. package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/references/quick-start.md +257 -0
  466. package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
  467. package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/references/types-scalars.md +513 -0
  468. package/plugins/lisa-nestjs-agy/skills/nestjs-rules/SKILL.md +565 -0
  469. package/plugins/lisa-nestjs-agy/skills/typeorm-patterns/SKILL.md +275 -0
  470. package/plugins/lisa-nestjs-agy/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
  471. package/plugins/lisa-nestjs-agy/skills/typeorm-patterns/references/entity-patterns.md +450 -0
  472. package/plugins/lisa-nestjs-agy/skills/typeorm-patterns/references/observability-patterns.md +536 -0
  473. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +24 -0
  474. package/plugins/lisa-nestjs-copilot/hooks/block-migration-edits.sh +60 -0
  475. package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/SKILL.md +176 -0
  476. package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/references/advanced-features.md +527 -0
  477. package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/references/project-patterns.md +531 -0
  478. package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/references/quick-start.md +257 -0
  479. package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
  480. package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/references/types-scalars.md +513 -0
  481. package/plugins/lisa-nestjs-copilot/skills/nestjs-rules/SKILL.md +565 -0
  482. package/plugins/lisa-nestjs-copilot/skills/typeorm-patterns/SKILL.md +275 -0
  483. package/plugins/lisa-nestjs-copilot/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
  484. package/plugins/lisa-nestjs-copilot/skills/typeorm-patterns/references/entity-patterns.md +450 -0
  485. package/plugins/lisa-nestjs-copilot/skills/typeorm-patterns/references/observability-patterns.md +536 -0
  486. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +24 -0
  487. package/plugins/lisa-nestjs-cursor/hooks/block-migration-edits.sh +60 -0
  488. package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/SKILL.md +176 -0
  489. package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/references/advanced-features.md +527 -0
  490. package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/references/project-patterns.md +531 -0
  491. package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/references/quick-start.md +257 -0
  492. package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
  493. package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/references/types-scalars.md +513 -0
  494. package/plugins/lisa-nestjs-cursor/skills/nestjs-rules/SKILL.md +565 -0
  495. package/plugins/lisa-nestjs-cursor/skills/typeorm-patterns/SKILL.md +275 -0
  496. package/plugins/lisa-nestjs-cursor/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
  497. package/plugins/lisa-nestjs-cursor/skills/typeorm-patterns/references/entity-patterns.md +450 -0
  498. package/plugins/lisa-nestjs-cursor/skills/typeorm-patterns/references/observability-patterns.md +536 -0
  499. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  500. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  501. package/plugins/lisa-openclaw-agy/commands/connect-repo-topic.md +7 -0
  502. package/plugins/lisa-openclaw-agy/commands/connect-staff-slack.md +7 -0
  503. package/plugins/lisa-openclaw-agy/commands/connect-staff-telegram.md +7 -0
  504. package/plugins/lisa-openclaw-agy/commands/setup-openclaw.md +7 -0
  505. package/plugins/lisa-openclaw-agy/plugin.json +8 -0
  506. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-repo-topic/SKILL.md +137 -0
  507. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +109 -0
  508. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-staff/SKILL.md +175 -0
  509. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-staff/references/platform-routing.md +83 -0
  510. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-staff/references/prompts.md +78 -0
  511. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-setup/SKILL.md +138 -0
  512. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +8 -0
  513. package/plugins/lisa-openclaw-copilot/commands/connect-repo-topic.md +7 -0
  514. package/plugins/lisa-openclaw-copilot/commands/connect-staff-slack.md +7 -0
  515. package/plugins/lisa-openclaw-copilot/commands/connect-staff-telegram.md +7 -0
  516. package/plugins/lisa-openclaw-copilot/commands/setup-openclaw.md +7 -0
  517. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-repo-topic/SKILL.md +137 -0
  518. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +109 -0
  519. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-staff/SKILL.md +175 -0
  520. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-staff/references/platform-routing.md +83 -0
  521. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-staff/references/prompts.md +78 -0
  522. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-setup/SKILL.md +138 -0
  523. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +8 -0
  524. package/plugins/lisa-openclaw-cursor/commands/connect-repo-topic.md +7 -0
  525. package/plugins/lisa-openclaw-cursor/commands/connect-staff-slack.md +7 -0
  526. package/plugins/lisa-openclaw-cursor/commands/connect-staff-telegram.md +7 -0
  527. package/plugins/lisa-openclaw-cursor/commands/setup-openclaw.md +7 -0
  528. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-repo-topic/SKILL.md +137 -0
  529. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +109 -0
  530. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-staff/SKILL.md +175 -0
  531. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-staff/references/platform-routing.md +83 -0
  532. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-staff/references/prompts.md +78 -0
  533. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-setup/SKILL.md +138 -0
  534. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  535. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  536. package/plugins/lisa-rails-agy/agents/ops-specialist.md +226 -0
  537. package/plugins/lisa-rails-agy/commands/e2e-coverage-gaps.md +7 -0
  538. package/plugins/lisa-rails-agy/commands/exploratory-qa.md +7 -0
  539. package/plugins/lisa-rails-agy/commands/fix/linter-error.md +7 -0
  540. package/plugins/lisa-rails-agy/commands/improve/code-complexity.md +6 -0
  541. package/plugins/lisa-rails-agy/commands/improve/max-lines-per-function.md +7 -0
  542. package/plugins/lisa-rails-agy/commands/improve/max-lines.md +7 -0
  543. package/plugins/lisa-rails-agy/commands/improve/test-coverage.md +7 -0
  544. package/plugins/lisa-rails-agy/plugin.json +11 -0
  545. package/plugins/lisa-rails-agy/skills/action-controller-best-practices/SKILL.md +374 -0
  546. package/plugins/lisa-rails-agy/skills/action-view-best-practices/SKILL.md +335 -0
  547. package/plugins/lisa-rails-agy/skills/active-record-model-best-practices/SKILL.md +166 -0
  548. package/plugins/lisa-rails-agy/skills/e2e-coverage-gaps/SKILL.md +105 -0
  549. package/plugins/lisa-rails-agy/skills/exploratory-qa/SKILL.md +145 -0
  550. package/plugins/lisa-rails-agy/skills/fix-linter-error/SKILL.md +45 -0
  551. package/plugins/lisa-rails-agy/skills/improve-code-complexity/SKILL.md +48 -0
  552. package/plugins/lisa-rails-agy/skills/improve-max-lines/SKILL.md +46 -0
  553. package/plugins/lisa-rails-agy/skills/improve-max-lines-per-function/SKILL.md +46 -0
  554. package/plugins/lisa-rails-agy/skills/improve-test-coverage/SKILL.md +45 -0
  555. package/plugins/lisa-rails-agy/skills/jira-add-journey/SKILL.md +65 -0
  556. package/plugins/lisa-rails-agy/skills/jira-create/SKILL.md +100 -0
  557. package/plugins/lisa-rails-agy/skills/jira-evidence/SKILL.md +70 -0
  558. package/plugins/lisa-rails-agy/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  559. package/plugins/lisa-rails-agy/skills/jira-journey/SKILL.md +64 -0
  560. package/plugins/lisa-rails-agy/skills/jira-verify/SKILL.md +26 -0
  561. package/plugins/lisa-rails-agy/skills/ops-check-logs/SKILL.md +191 -0
  562. package/plugins/lisa-rails-agy/skills/ops-deploy/SKILL.md +153 -0
  563. package/plugins/lisa-rails-agy/skills/ops-run-local/SKILL.md +169 -0
  564. package/plugins/lisa-rails-agy/skills/ops-verify-jobs/SKILL.md +157 -0
  565. package/plugins/lisa-rails-agy/skills/ops-verify-telemetry/SKILL.md +197 -0
  566. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +50 -0
  567. package/plugins/lisa-rails-copilot/agents/ops-specialist.agent.md +226 -0
  568. package/plugins/lisa-rails-copilot/commands/e2e-coverage-gaps.md +7 -0
  569. package/plugins/lisa-rails-copilot/commands/exploratory-qa.md +7 -0
  570. package/plugins/lisa-rails-copilot/commands/fix/linter-error.md +7 -0
  571. package/plugins/lisa-rails-copilot/commands/improve/code-complexity.md +6 -0
  572. package/plugins/lisa-rails-copilot/commands/improve/max-lines-per-function.md +7 -0
  573. package/plugins/lisa-rails-copilot/commands/improve/max-lines.md +7 -0
  574. package/plugins/lisa-rails-copilot/commands/improve/test-coverage.md +7 -0
  575. package/plugins/lisa-rails-copilot/hooks/inject-rules.sh +22 -0
  576. package/plugins/lisa-rails-copilot/hooks/rubocop-on-edit.sh +78 -0
  577. package/plugins/lisa-rails-copilot/hooks/sg-scan-on-edit.sh +74 -0
  578. package/plugins/lisa-rails-copilot/rules/rails-conventions.md +176 -0
  579. package/plugins/lisa-rails-copilot/skills/action-controller-best-practices/SKILL.md +374 -0
  580. package/plugins/lisa-rails-copilot/skills/action-view-best-practices/SKILL.md +335 -0
  581. package/plugins/lisa-rails-copilot/skills/active-record-model-best-practices/SKILL.md +166 -0
  582. package/plugins/lisa-rails-copilot/skills/e2e-coverage-gaps/SKILL.md +105 -0
  583. package/plugins/lisa-rails-copilot/skills/exploratory-qa/SKILL.md +145 -0
  584. package/plugins/lisa-rails-copilot/skills/fix-linter-error/SKILL.md +45 -0
  585. package/plugins/lisa-rails-copilot/skills/improve-code-complexity/SKILL.md +48 -0
  586. package/plugins/lisa-rails-copilot/skills/improve-max-lines/SKILL.md +46 -0
  587. package/plugins/lisa-rails-copilot/skills/improve-max-lines-per-function/SKILL.md +46 -0
  588. package/plugins/lisa-rails-copilot/skills/improve-test-coverage/SKILL.md +45 -0
  589. package/plugins/lisa-rails-copilot/skills/jira-add-journey/SKILL.md +65 -0
  590. package/plugins/lisa-rails-copilot/skills/jira-create/SKILL.md +100 -0
  591. package/plugins/lisa-rails-copilot/skills/jira-evidence/SKILL.md +70 -0
  592. package/plugins/lisa-rails-copilot/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  593. package/plugins/lisa-rails-copilot/skills/jira-journey/SKILL.md +64 -0
  594. package/plugins/lisa-rails-copilot/skills/jira-verify/SKILL.md +26 -0
  595. package/plugins/lisa-rails-copilot/skills/ops-check-logs/SKILL.md +191 -0
  596. package/plugins/lisa-rails-copilot/skills/ops-deploy/SKILL.md +153 -0
  597. package/plugins/lisa-rails-copilot/skills/ops-run-local/SKILL.md +169 -0
  598. package/plugins/lisa-rails-copilot/skills/ops-verify-jobs/SKILL.md +157 -0
  599. package/plugins/lisa-rails-copilot/skills/ops-verify-telemetry/SKILL.md +197 -0
  600. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +28 -0
  601. package/plugins/lisa-rails-cursor/agents/ops-specialist.md +226 -0
  602. package/plugins/lisa-rails-cursor/commands/e2e-coverage-gaps.md +7 -0
  603. package/plugins/lisa-rails-cursor/commands/exploratory-qa.md +7 -0
  604. package/plugins/lisa-rails-cursor/commands/fix/linter-error.md +7 -0
  605. package/plugins/lisa-rails-cursor/commands/improve/code-complexity.md +6 -0
  606. package/plugins/lisa-rails-cursor/commands/improve/max-lines-per-function.md +7 -0
  607. package/plugins/lisa-rails-cursor/commands/improve/max-lines.md +7 -0
  608. package/plugins/lisa-rails-cursor/commands/improve/test-coverage.md +7 -0
  609. package/plugins/lisa-rails-cursor/hooks/rubocop-on-edit.sh +78 -0
  610. package/plugins/lisa-rails-cursor/hooks/sg-scan-on-edit.sh +74 -0
  611. package/plugins/lisa-rails-cursor/rules/rails-conventions.md +176 -0
  612. package/plugins/lisa-rails-cursor/skills/action-controller-best-practices/SKILL.md +374 -0
  613. package/plugins/lisa-rails-cursor/skills/action-view-best-practices/SKILL.md +335 -0
  614. package/plugins/lisa-rails-cursor/skills/active-record-model-best-practices/SKILL.md +166 -0
  615. package/plugins/lisa-rails-cursor/skills/e2e-coverage-gaps/SKILL.md +105 -0
  616. package/plugins/lisa-rails-cursor/skills/exploratory-qa/SKILL.md +145 -0
  617. package/plugins/lisa-rails-cursor/skills/fix-linter-error/SKILL.md +45 -0
  618. package/plugins/lisa-rails-cursor/skills/improve-code-complexity/SKILL.md +48 -0
  619. package/plugins/lisa-rails-cursor/skills/improve-max-lines/SKILL.md +46 -0
  620. package/plugins/lisa-rails-cursor/skills/improve-max-lines-per-function/SKILL.md +46 -0
  621. package/plugins/lisa-rails-cursor/skills/improve-test-coverage/SKILL.md +45 -0
  622. package/plugins/lisa-rails-cursor/skills/jira-add-journey/SKILL.md +65 -0
  623. package/plugins/lisa-rails-cursor/skills/jira-create/SKILL.md +100 -0
  624. package/plugins/lisa-rails-cursor/skills/jira-evidence/SKILL.md +70 -0
  625. package/plugins/lisa-rails-cursor/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  626. package/plugins/lisa-rails-cursor/skills/jira-journey/SKILL.md +64 -0
  627. package/plugins/lisa-rails-cursor/skills/jira-verify/SKILL.md +26 -0
  628. package/plugins/lisa-rails-cursor/skills/ops-check-logs/SKILL.md +191 -0
  629. package/plugins/lisa-rails-cursor/skills/ops-deploy/SKILL.md +153 -0
  630. package/plugins/lisa-rails-cursor/skills/ops-run-local/SKILL.md +169 -0
  631. package/plugins/lisa-rails-cursor/skills/ops-verify-jobs/SKILL.md +157 -0
  632. package/plugins/lisa-rails-cursor/skills/ops-verify-telemetry/SKILL.md +197 -0
  633. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  634. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  635. package/plugins/lisa-typescript-agy/plugin.json +11 -0
  636. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +43 -0
  637. package/plugins/lisa-typescript-copilot/hooks/block-suppress-directives.sh +73 -0
  638. package/plugins/lisa-typescript-copilot/hooks/format-on-edit.sh +79 -0
  639. package/plugins/lisa-typescript-copilot/hooks/lint-on-edit.sh +134 -0
  640. package/plugins/lisa-typescript-copilot/hooks/sg-scan-on-edit.sh +71 -0
  641. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +43 -0
  642. package/plugins/lisa-typescript-cursor/hooks/block-suppress-directives.sh +73 -0
  643. package/plugins/lisa-typescript-cursor/hooks/format-on-edit.sh +79 -0
  644. package/plugins/lisa-typescript-cursor/hooks/lint-on-edit.sh +134 -0
  645. package/plugins/lisa-typescript-cursor/hooks/sg-scan-on-edit.sh +71 -0
  646. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  647. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  648. package/plugins/lisa-wiki-agy/ci/lisa-wiki-validate.yml +33 -0
  649. package/plugins/lisa-wiki-agy/commands/add-ingest.md +6 -0
  650. package/plugins/lisa-wiki-agy/commands/add-role.md +6 -0
  651. package/plugins/lisa-wiki-agy/commands/doctor.md +6 -0
  652. package/plugins/lisa-wiki-agy/commands/ingest.md +6 -0
  653. package/plugins/lisa-wiki-agy/commands/lint.md +6 -0
  654. package/plugins/lisa-wiki-agy/commands/migrate.md +6 -0
  655. package/plugins/lisa-wiki-agy/commands/onboard-me.md +6 -0
  656. package/plugins/lisa-wiki-agy/commands/query.md +6 -0
  657. package/plugins/lisa-wiki-agy/commands/setup/wiki.md +6 -0
  658. package/plugins/lisa-wiki-agy/commands/setup-automations.md +6 -0
  659. package/plugins/lisa-wiki-agy/commands/setup.md +6 -0
  660. package/plugins/lisa-wiki-agy/commands/status.md +6 -0
  661. package/plugins/lisa-wiki-agy/commands/tear-down-automations.md +6 -0
  662. package/plugins/lisa-wiki-agy/plugin.json +8 -0
  663. package/plugins/lisa-wiki-agy/schema/lisa-wiki-config.schema.json +118 -0
  664. package/plugins/lisa-wiki-agy/schema/wiki-structure.schema.json +51 -0
  665. package/plugins/lisa-wiki-agy/scripts/_wiki-lib.mjs +185 -0
  666. package/plugins/lisa-wiki-agy/scripts/diff-guard.mjs +116 -0
  667. package/plugins/lisa-wiki-agy/scripts/ensure-gitignore.mjs +131 -0
  668. package/plugins/lisa-wiki-agy/scripts/ingest-git.mjs +189 -0
  669. package/plugins/lisa-wiki-agy/scripts/ingest-memory.mjs +130 -0
  670. package/plugins/lisa-wiki-agy/scripts/ingest-roles.mjs +85 -0
  671. package/plugins/lisa-wiki-agy/scripts/ingest_slack_channel.py +329 -0
  672. package/plugins/lisa-wiki-agy/scripts/lint-wiki.mjs +324 -0
  673. package/plugins/lisa-wiki-agy/scripts/mcp-doctor.mjs +72 -0
  674. package/plugins/lisa-wiki-agy/scripts/render-contract.mjs +107 -0
  675. package/plugins/lisa-wiki-agy/scripts/rewrite-refs.mjs +144 -0
  676. package/plugins/lisa-wiki-agy/scripts/slack_oauth_user.py +179 -0
  677. package/plugins/lisa-wiki-agy/scripts/validate-config.mjs +232 -0
  678. package/plugins/lisa-wiki-agy/scripts/verify-migration.mjs +199 -0
  679. package/plugins/lisa-wiki-agy/scripts/wiki-status.mjs +345 -0
  680. package/plugins/lisa-wiki-agy/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
  681. package/plugins/lisa-wiki-agy/skills/lisa-wiki-add-role/SKILL.md +30 -0
  682. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
  683. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
  684. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-git/SKILL.md +25 -0
  685. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
  686. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
  687. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
  688. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
  689. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
  690. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-web/SKILL.md +23 -0
  691. package/plugins/lisa-wiki-agy/skills/lisa-wiki-doctor/SKILL.md +47 -0
  692. package/plugins/lisa-wiki-agy/skills/lisa-wiki-ingest/SKILL.md +72 -0
  693. package/plugins/lisa-wiki-agy/skills/lisa-wiki-lint/SKILL.md +32 -0
  694. package/plugins/lisa-wiki-agy/skills/lisa-wiki-migrate/SKILL.md +43 -0
  695. package/plugins/lisa-wiki-agy/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
  696. package/plugins/lisa-wiki-agy/skills/lisa-wiki-query/SKILL.md +30 -0
  697. package/plugins/lisa-wiki-agy/skills/lisa-wiki-setup/SKILL.md +75 -0
  698. package/plugins/lisa-wiki-agy/skills/lisa-wiki-setup-automations/SKILL.md +80 -0
  699. package/plugins/lisa-wiki-agy/skills/lisa-wiki-status/SKILL.md +47 -0
  700. package/plugins/lisa-wiki-agy/skills/lisa-wiki-tear-down-automations/SKILL.md +34 -0
  701. package/plugins/lisa-wiki-agy/skills/lisa-wiki-usage/SKILL.md +50 -0
  702. package/plugins/lisa-wiki-agy/templates/agents/role-agent.claude.md +16 -0
  703. package/plugins/lisa-wiki-agy/templates/agents/role-agent.codex.toml +15 -0
  704. package/plugins/lisa-wiki-agy/templates/index.md +17 -0
  705. package/plugins/lisa-wiki-agy/templates/llm-wiki-contract.md +72 -0
  706. package/plugins/lisa-wiki-agy/templates/log.md +8 -0
  707. package/plugins/lisa-wiki-agy/templates/page-types/architecture.md +18 -0
  708. package/plugins/lisa-wiki-agy/templates/page-types/concept.md +18 -0
  709. package/plugins/lisa-wiki-agy/templates/page-types/decision.md +18 -0
  710. package/plugins/lisa-wiki-agy/templates/page-types/entity.md +19 -0
  711. package/plugins/lisa-wiki-agy/templates/page-types/open-question.md +18 -0
  712. package/plugins/lisa-wiki-agy/templates/page-types/playbook.md +18 -0
  713. package/plugins/lisa-wiki-agy/templates/page-types/project.md +19 -0
  714. package/plugins/lisa-wiki-agy/templates/page-types/requirement.md +19 -0
  715. package/plugins/lisa-wiki-agy/templates/page-types/staff.md +26 -0
  716. package/plugins/lisa-wiki-agy/templates/start-here.md +24 -0
  717. package/plugins/lisa-wiki-agy/templates/state-readme.md +20 -0
  718. package/plugins/lisa-wiki-agy/templates/wrapper-gitignore.txt +19 -0
  719. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +8 -0
  720. package/plugins/lisa-wiki-copilot/ci/lisa-wiki-validate.yml +33 -0
  721. package/plugins/lisa-wiki-copilot/commands/add-ingest.md +6 -0
  722. package/plugins/lisa-wiki-copilot/commands/add-role.md +6 -0
  723. package/plugins/lisa-wiki-copilot/commands/doctor.md +6 -0
  724. package/plugins/lisa-wiki-copilot/commands/ingest.md +6 -0
  725. package/plugins/lisa-wiki-copilot/commands/lint.md +6 -0
  726. package/plugins/lisa-wiki-copilot/commands/migrate.md +6 -0
  727. package/plugins/lisa-wiki-copilot/commands/onboard-me.md +6 -0
  728. package/plugins/lisa-wiki-copilot/commands/query.md +6 -0
  729. package/plugins/lisa-wiki-copilot/commands/setup/wiki.md +6 -0
  730. package/plugins/lisa-wiki-copilot/commands/setup-automations.md +6 -0
  731. package/plugins/lisa-wiki-copilot/commands/setup.md +6 -0
  732. package/plugins/lisa-wiki-copilot/commands/status.md +6 -0
  733. package/plugins/lisa-wiki-copilot/commands/tear-down-automations.md +6 -0
  734. package/plugins/lisa-wiki-copilot/schema/lisa-wiki-config.schema.json +118 -0
  735. package/plugins/lisa-wiki-copilot/schema/wiki-structure.schema.json +51 -0
  736. package/plugins/lisa-wiki-copilot/scripts/_wiki-lib.mjs +185 -0
  737. package/plugins/lisa-wiki-copilot/scripts/diff-guard.mjs +116 -0
  738. package/plugins/lisa-wiki-copilot/scripts/ensure-gitignore.mjs +131 -0
  739. package/plugins/lisa-wiki-copilot/scripts/ingest-git.mjs +189 -0
  740. package/plugins/lisa-wiki-copilot/scripts/ingest-memory.mjs +130 -0
  741. package/plugins/lisa-wiki-copilot/scripts/ingest-roles.mjs +85 -0
  742. package/plugins/lisa-wiki-copilot/scripts/ingest_slack_channel.py +329 -0
  743. package/plugins/lisa-wiki-copilot/scripts/lint-wiki.mjs +324 -0
  744. package/plugins/lisa-wiki-copilot/scripts/mcp-doctor.mjs +72 -0
  745. package/plugins/lisa-wiki-copilot/scripts/render-contract.mjs +107 -0
  746. package/plugins/lisa-wiki-copilot/scripts/rewrite-refs.mjs +144 -0
  747. package/plugins/lisa-wiki-copilot/scripts/slack_oauth_user.py +179 -0
  748. package/plugins/lisa-wiki-copilot/scripts/validate-config.mjs +232 -0
  749. package/plugins/lisa-wiki-copilot/scripts/verify-migration.mjs +199 -0
  750. package/plugins/lisa-wiki-copilot/scripts/wiki-status.mjs +345 -0
  751. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
  752. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-add-role/SKILL.md +30 -0
  753. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
  754. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
  755. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-git/SKILL.md +25 -0
  756. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
  757. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
  758. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
  759. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
  760. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
  761. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-web/SKILL.md +23 -0
  762. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-doctor/SKILL.md +47 -0
  763. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-ingest/SKILL.md +72 -0
  764. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-lint/SKILL.md +32 -0
  765. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-migrate/SKILL.md +43 -0
  766. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
  767. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-query/SKILL.md +30 -0
  768. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-setup/SKILL.md +75 -0
  769. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-setup-automations/SKILL.md +80 -0
  770. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-status/SKILL.md +47 -0
  771. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-tear-down-automations/SKILL.md +34 -0
  772. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-usage/SKILL.md +50 -0
  773. package/plugins/lisa-wiki-copilot/templates/agents/role-agent.claude.md +16 -0
  774. package/plugins/lisa-wiki-copilot/templates/agents/role-agent.codex.toml +15 -0
  775. package/plugins/lisa-wiki-copilot/templates/index.md +17 -0
  776. package/plugins/lisa-wiki-copilot/templates/llm-wiki-contract.md +72 -0
  777. package/plugins/lisa-wiki-copilot/templates/log.md +8 -0
  778. package/plugins/lisa-wiki-copilot/templates/page-types/architecture.md +18 -0
  779. package/plugins/lisa-wiki-copilot/templates/page-types/concept.md +18 -0
  780. package/plugins/lisa-wiki-copilot/templates/page-types/decision.md +18 -0
  781. package/plugins/lisa-wiki-copilot/templates/page-types/entity.md +19 -0
  782. package/plugins/lisa-wiki-copilot/templates/page-types/open-question.md +18 -0
  783. package/plugins/lisa-wiki-copilot/templates/page-types/playbook.md +18 -0
  784. package/plugins/lisa-wiki-copilot/templates/page-types/project.md +19 -0
  785. package/plugins/lisa-wiki-copilot/templates/page-types/requirement.md +19 -0
  786. package/plugins/lisa-wiki-copilot/templates/page-types/staff.md +26 -0
  787. package/plugins/lisa-wiki-copilot/templates/start-here.md +24 -0
  788. package/plugins/lisa-wiki-copilot/templates/state-readme.md +20 -0
  789. package/plugins/lisa-wiki-copilot/templates/wrapper-gitignore.txt +19 -0
  790. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +8 -0
  791. package/plugins/lisa-wiki-cursor/ci/lisa-wiki-validate.yml +33 -0
  792. package/plugins/lisa-wiki-cursor/commands/add-ingest.md +6 -0
  793. package/plugins/lisa-wiki-cursor/commands/add-role.md +6 -0
  794. package/plugins/lisa-wiki-cursor/commands/doctor.md +6 -0
  795. package/plugins/lisa-wiki-cursor/commands/ingest.md +6 -0
  796. package/plugins/lisa-wiki-cursor/commands/lint.md +6 -0
  797. package/plugins/lisa-wiki-cursor/commands/migrate.md +6 -0
  798. package/plugins/lisa-wiki-cursor/commands/onboard-me.md +6 -0
  799. package/plugins/lisa-wiki-cursor/commands/query.md +6 -0
  800. package/plugins/lisa-wiki-cursor/commands/setup/wiki.md +6 -0
  801. package/plugins/lisa-wiki-cursor/commands/setup-automations.md +6 -0
  802. package/plugins/lisa-wiki-cursor/commands/setup.md +6 -0
  803. package/plugins/lisa-wiki-cursor/commands/status.md +6 -0
  804. package/plugins/lisa-wiki-cursor/commands/tear-down-automations.md +6 -0
  805. package/plugins/lisa-wiki-cursor/schema/lisa-wiki-config.schema.json +118 -0
  806. package/plugins/lisa-wiki-cursor/schema/wiki-structure.schema.json +51 -0
  807. package/plugins/lisa-wiki-cursor/scripts/_wiki-lib.mjs +185 -0
  808. package/plugins/lisa-wiki-cursor/scripts/diff-guard.mjs +116 -0
  809. package/plugins/lisa-wiki-cursor/scripts/ensure-gitignore.mjs +131 -0
  810. package/plugins/lisa-wiki-cursor/scripts/ingest-git.mjs +189 -0
  811. package/plugins/lisa-wiki-cursor/scripts/ingest-memory.mjs +130 -0
  812. package/plugins/lisa-wiki-cursor/scripts/ingest-roles.mjs +85 -0
  813. package/plugins/lisa-wiki-cursor/scripts/ingest_slack_channel.py +329 -0
  814. package/plugins/lisa-wiki-cursor/scripts/lint-wiki.mjs +324 -0
  815. package/plugins/lisa-wiki-cursor/scripts/mcp-doctor.mjs +72 -0
  816. package/plugins/lisa-wiki-cursor/scripts/render-contract.mjs +107 -0
  817. package/plugins/lisa-wiki-cursor/scripts/rewrite-refs.mjs +144 -0
  818. package/plugins/lisa-wiki-cursor/scripts/slack_oauth_user.py +179 -0
  819. package/plugins/lisa-wiki-cursor/scripts/validate-config.mjs +232 -0
  820. package/plugins/lisa-wiki-cursor/scripts/verify-migration.mjs +199 -0
  821. package/plugins/lisa-wiki-cursor/scripts/wiki-status.mjs +345 -0
  822. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
  823. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-add-role/SKILL.md +30 -0
  824. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
  825. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
  826. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-git/SKILL.md +25 -0
  827. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
  828. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
  829. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
  830. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
  831. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
  832. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-web/SKILL.md +23 -0
  833. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-doctor/SKILL.md +47 -0
  834. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-ingest/SKILL.md +72 -0
  835. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-lint/SKILL.md +32 -0
  836. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-migrate/SKILL.md +43 -0
  837. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
  838. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-query/SKILL.md +30 -0
  839. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-setup/SKILL.md +75 -0
  840. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-setup-automations/SKILL.md +80 -0
  841. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-status/SKILL.md +47 -0
  842. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-tear-down-automations/SKILL.md +34 -0
  843. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-usage/SKILL.md +50 -0
  844. package/plugins/lisa-wiki-cursor/templates/agents/role-agent.claude.md +16 -0
  845. package/plugins/lisa-wiki-cursor/templates/agents/role-agent.codex.toml +15 -0
  846. package/plugins/lisa-wiki-cursor/templates/index.md +17 -0
  847. package/plugins/lisa-wiki-cursor/templates/llm-wiki-contract.md +72 -0
  848. package/plugins/lisa-wiki-cursor/templates/log.md +8 -0
  849. package/plugins/lisa-wiki-cursor/templates/page-types/architecture.md +18 -0
  850. package/plugins/lisa-wiki-cursor/templates/page-types/concept.md +18 -0
  851. package/plugins/lisa-wiki-cursor/templates/page-types/decision.md +18 -0
  852. package/plugins/lisa-wiki-cursor/templates/page-types/entity.md +19 -0
  853. package/plugins/lisa-wiki-cursor/templates/page-types/open-question.md +18 -0
  854. package/plugins/lisa-wiki-cursor/templates/page-types/playbook.md +18 -0
  855. package/plugins/lisa-wiki-cursor/templates/page-types/project.md +19 -0
  856. package/plugins/lisa-wiki-cursor/templates/page-types/requirement.md +19 -0
  857. package/plugins/lisa-wiki-cursor/templates/page-types/staff.md +26 -0
  858. package/plugins/lisa-wiki-cursor/templates/start-here.md +24 -0
  859. package/plugins/lisa-wiki-cursor/templates/state-readme.md +20 -0
  860. package/plugins/lisa-wiki-cursor/templates/wrapper-gitignore.txt +19 -0
  861. package/plugins/src/expo/skills/directory-structure/SKILL.md +32 -20
  862. package/plugins/src/expo/skills/directory-structure/scripts/validate_structure.py +15 -6
  863. package/scripts/build-plugins.sh +28 -11
  864. package/typescript/copy-overwrite/.prettierignore +1 -0
  865. package/typescript/copy-overwrite/eslint.ignore.config.json +2 -0
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "lisa-typescript",
3
+ "version": "2.123.0",
4
+ "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
+ "author": {
6
+ "name": "Cody Swann"
7
+ },
8
+ "dependencies": [
9
+ "lisa"
10
+ ],
11
+ "hooks": {
12
+ "preToolUse": [
13
+ {
14
+ "matcher": "Write|Edit",
15
+ "hooks": [
16
+ {
17
+ "type": "command",
18
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/block-suppress-directives.sh"
19
+ }
20
+ ]
21
+ }
22
+ ],
23
+ "postToolUse": [
24
+ {
25
+ "matcher": "Write|Edit",
26
+ "hooks": [
27
+ {
28
+ "type": "command",
29
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/format-on-edit.sh"
30
+ },
31
+ {
32
+ "type": "command",
33
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/sg-scan-on-edit.sh"
34
+ },
35
+ {
36
+ "type": "command",
37
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/lint-on-edit.sh"
38
+ }
39
+ ]
40
+ }
41
+ ]
42
+ }
43
+ }
@@ -0,0 +1,73 @@
1
+ #!/bin/bash
2
+ # This file is managed by Lisa.
3
+ # Do not edit directly — changes will be overwritten on the next `lisa` run.
4
+ #
5
+ # PreToolUse hook (Write|Edit): block adding error-suppression directives to
6
+ # JS/TS source. Suppressing the type checker, linter, or formatter hides real
7
+ # defects instead of fixing them, so it is a documented last resort (see the
8
+ # base "ASK FIRST" governance rule). The agent should stop and get the user's
9
+ # approval rather than slip a suppression past silently.
10
+ #
11
+ # Inspects only the NEW text the tool introduces, scoped to JS/TS files, and
12
+ # matches the directive only in comment syntax (// or /*) so prose, strings,
13
+ # and identifiers that merely mention these tokens are not flagged.
14
+ # Exit code 2 blocks the tool call and surfaces stderr to Claude.
15
+ # Reference: https://docs.claude.com/en/docs/claude-code/hooks
16
+
17
+ JSON_INPUT=$(cat)
18
+
19
+ # Project rule (.claude/rules/PROJECT_RULES.md): never parse JSON in shell with
20
+ # grep/sed/cut/awk — always use jq. Fail open without jq so we never hard-block
21
+ # the agent on missing tooling.
22
+ command -v jq >/dev/null 2>&1 || exit 0
23
+
24
+ FILE_PATH=$(printf '%s' "$JSON_INPUT" | jq -r '.tool_input.file_path // empty')
25
+ [ -n "$FILE_PATH" ] || exit 0
26
+
27
+ # Only guard JS/TS source. Directives in other file types (docs, configs that
28
+ # document the rules, this script) are not suppressions.
29
+ case "${FILE_PATH##*.}" in
30
+ ts | tsx | js | jsx | mjs | cjs) ;;
31
+ *) exit 0 ;;
32
+ esac
33
+
34
+ # Resolve the new text per tool shape:
35
+ # Write -> tool_input.content
36
+ # MultiEdit -> tool_input.edits[].new_string
37
+ # Edit -> tool_input.new_string
38
+ NEW_TEXT=$(printf '%s' "$JSON_INPUT" | jq -r '
39
+ .tool_input as $i
40
+ | if ($i.content // null) != null then $i.content
41
+ elif ($i.edits // null) != null then ([$i.edits[].new_string] | join("\n"))
42
+ elif ($i.new_string // null) != null then $i.new_string
43
+ else "" end')
44
+
45
+ # Comment-syntax-only match: a // or /* opener, optional whitespace, then the
46
+ # suppression directive. @ts-expect-error is intentionally NOT matched — it is
47
+ # the safer alternative this hook steers toward.
48
+ DIRECTIVE_RE='(//|/\*)[[:space:]]*(@ts-(ignore|nocheck)|eslint-disable|biome-ignore|prettier-ignore)'
49
+
50
+ if printf '%s' "$NEW_TEXT" | grep -Eq "$DIRECTIVE_RE"; then
51
+ cat >&2 <<MSG
52
+ ❌ Blocked: error-suppression directive in $FILE_PATH
53
+
54
+ You are adding a @ts-ignore / @ts-nocheck / eslint-disable / biome-ignore /
55
+ prettier-ignore comment. These silence the type checker, linter, or formatter
56
+ instead of fixing the underlying problem. They are a last resort, not a default.
57
+
58
+ Fix it properly first:
59
+ - Resolve the actual type/lint error rather than suppressing it.
60
+ - Add the missing annotation, narrow the type, or restructure the code so the
61
+ rule passes legitimately.
62
+ - For a faulty dependency type, prefer a typed wrapper or module augmentation.
63
+
64
+ If — and only if — there is genuinely no other way (e.g. a known upstream bug):
65
+ - STOP and get the user's approval before suppressing (base "ASK FIRST" rule).
66
+ - Prefer @ts-expect-error over @ts-ignore (it fails once the error is gone).
67
+ - Scope the disable to one line and one rule, never a whole file.
68
+ - Include a "-- <reason>" description (eslint-comments/require-description).
69
+ MSG
70
+ exit 2
71
+ fi
72
+
73
+ exit 0
@@ -0,0 +1,79 @@
1
+ #!/bin/bash
2
+ # This file is managed by Lisa.
3
+ # Do not edit directly — changes will be overwritten on the next `lisa` run.
4
+
5
+ # Hook script to format files with Prettier after Claude edits them
6
+ # This script receives JSON input via stdin with tool information
7
+ # Reference: https://docs.claude.com/en/docs/claude-code/hooks
8
+
9
+ # Read the JSON input from stdin
10
+ JSON_INPUT=$(cat)
11
+
12
+ # Extract the file path from the tool_input. Use jq for robust JSON parsing
13
+ # (never grep/sed/cut — a JSON shape change silently skips formatting). Fail
14
+ # open without jq so we never hard-block an edit.
15
+ command -v jq >/dev/null 2>&1 || exit 0
16
+ FILE_PATH=$(printf '%s' "$JSON_INPUT" | jq -r '.tool_input.file_path // empty')
17
+
18
+ # Check if we successfully extracted a file path
19
+ if [ -z "$FILE_PATH" ]; then
20
+ echo "⚠ Skipping Prettier: Could not extract file path from Edit tool input" >&2
21
+ exit 0 # Exit gracefully to not interrupt Claude's workflow
22
+ fi
23
+
24
+ # Check if the file exists
25
+ if [ ! -f "$FILE_PATH" ]; then
26
+ echo "⚠ Skipping Prettier: File does not exist: $FILE_PATH" >&2
27
+ exit 0 # Exit gracefully
28
+ fi
29
+
30
+ # Get the file extension
31
+ FILE_EXT="${FILE_PATH##*.}"
32
+
33
+ # Check if this is a TypeScript or JavaScript file that should be formatted
34
+ # Based on package.json format command: "prettier --write \"src/**/*.ts\" \"test/**/*.ts\""
35
+ case "$FILE_EXT" in
36
+ ts|tsx|js|jsx|json)
37
+ # File type is supported for formatting
38
+ ;;
39
+ *)
40
+ echo "ℹ Skipping Prettier: File type .$FILE_EXT is not configured for auto-formatting"
41
+ exit 0
42
+ ;;
43
+ esac
44
+
45
+ # Change to the project directory to ensure package manager commands work
46
+ cd "$CLAUDE_PROJECT_DIR" || exit 0
47
+
48
+ # Resolve Prettier binary — prefer local node_modules/.bin, then package-manager exec
49
+ if [ -x "./node_modules/.bin/prettier" ]; then
50
+ PRETTIER_CMD="./node_modules/.bin/prettier"
51
+ PKG_MANAGER="npm"
52
+ elif [ -f "bun.lockb" ] || [ -f "bun.lock" ]; then
53
+ PRETTIER_CMD="bunx prettier"
54
+ PKG_MANAGER="bun"
55
+ elif [ -f "pnpm-lock.yaml" ]; then
56
+ PRETTIER_CMD="pnpm exec prettier"
57
+ PKG_MANAGER="pnpm"
58
+ elif [ -f "yarn.lock" ]; then
59
+ PRETTIER_CMD="yarn exec prettier"
60
+ PKG_MANAGER="yarn"
61
+ else
62
+ PRETTIER_CMD="npx prettier"
63
+ PKG_MANAGER="npm"
64
+ fi
65
+
66
+ # Run Prettier on the specific file
67
+ echo "🎨 Running Prettier on: $FILE_PATH"
68
+ $PRETTIER_CMD --write "$FILE_PATH" 2>&1 | grep -v "run v" | grep -v "Done in"
69
+
70
+ # Check the exit status
71
+ if [ ${PIPESTATUS[0]} -eq 0 ]; then
72
+ echo "✓ Successfully formatted: $(basename "$FILE_PATH")"
73
+ else
74
+ echo "⚠ Prettier formatting failed for: $FILE_PATH" >&2
75
+ echo " You may need to run '$PKG_MANAGER run format' manually to fix formatting issues." >&2
76
+ fi
77
+
78
+ # Always exit successfully to not interrupt Claude's workflow
79
+ exit 0
@@ -0,0 +1,134 @@
1
+ #!/bin/bash
2
+ # This file is managed by Lisa.
3
+ # Do not edit directly — changes will be overwritten on the next `lisa` run.
4
+ # =============================================================================
5
+ # Lint-on-Edit Hook (PostToolUse - Write|Edit)
6
+ # =============================================================================
7
+ # Runs oxlint --fix, then ESLint --fix --quiet --cache on each edited
8
+ # TypeScript file. Part of the inline self-correction pipeline:
9
+ # prettier → ast-grep → oxlint --fix → eslint --fix
10
+ #
11
+ # oxlint runs first because it's a Rust-native linter (~1000x faster) that
12
+ # covers the majority of rules, leaving only the slow / type-aware / plugin
13
+ # rules for ESLint to handle.
14
+ #
15
+ # Behavior:
16
+ # - Exit 0: lint passes or auto-fix resolved all errors
17
+ # - Exit 2: unfixable errors remain — blocks Claude so it fixes them immediately
18
+ #
19
+ # @see .claude/rules/verfication.md "Self-Correction Loop" section
20
+ # =============================================================================
21
+
22
+ # Extract file path from JSON input. Use jq for robust JSON parsing (never
23
+ # grep/sed/cut — a shape change would silently skip the blocking lint gate).
24
+ # Fail open without jq so we never hard-block an edit.
25
+ command -v jq >/dev/null 2>&1 || exit 0
26
+ FILE_PATH=$(cat | jq -r '.tool_input.file_path // empty')
27
+
28
+ if [ -z "$FILE_PATH" ] || [ ! -f "$FILE_PATH" ]; then
29
+ exit 0
30
+ fi
31
+
32
+ # Check if file type is supported (TypeScript only)
33
+ case "${FILE_PATH##*.}" in
34
+ ts|tsx) ;;
35
+ *) exit 0 ;;
36
+ esac
37
+
38
+ # Validate project directory
39
+ if [ -z "${CLAUDE_PROJECT_DIR:-}" ]; then
40
+ exit 0
41
+ fi
42
+
43
+ # Check if file is in a source directory
44
+ RELATIVE_PATH="${FILE_PATH#$CLAUDE_PROJECT_DIR/}"
45
+ case "$RELATIVE_PATH" in
46
+ src/*|apps/*|libs/*|test/*|tests/*|features/*|components/*|hooks/*|screens/*|app/*|constants/*|utils/*|providers/*|stores/*) ;;
47
+ *) exit 0 ;;
48
+ esac
49
+
50
+ cd "$CLAUDE_PROJECT_DIR" || exit 0
51
+
52
+ # Resolve oxlint and ESLint binaries — prefer local node_modules/.bin
53
+ if [ -x "./node_modules/.bin/oxlint" ]; then
54
+ OXLINT_CMD="./node_modules/.bin/oxlint"
55
+ elif [ -f "bun.lockb" ] || [ -f "bun.lock" ]; then
56
+ OXLINT_CMD="bunx oxlint"
57
+ elif [ -f "pnpm-lock.yaml" ]; then
58
+ OXLINT_CMD="pnpm exec oxlint"
59
+ elif [ -f "yarn.lock" ]; then
60
+ OXLINT_CMD="yarn exec oxlint"
61
+ else
62
+ OXLINT_CMD="npx oxlint"
63
+ fi
64
+
65
+ if [ -x "./node_modules/.bin/eslint" ]; then
66
+ ESLINT_CMD="./node_modules/.bin/eslint"
67
+ elif [ -f "bun.lockb" ] || [ -f "bun.lock" ]; then
68
+ ESLINT_CMD="bunx eslint"
69
+ elif [ -f "pnpm-lock.yaml" ]; then
70
+ ESLINT_CMD="pnpm exec eslint"
71
+ elif [ -f "yarn.lock" ]; then
72
+ ESLINT_CMD="yarn exec eslint"
73
+ else
74
+ ESLINT_CMD="npx eslint"
75
+ fi
76
+
77
+ # 1) oxlint --fix (REQUIRED in the Phase 2 hybrid pipeline)
78
+ # If oxlint is missing the project is out of sync with the current Lisa
79
+ # governance — fail loudly rather than silently skipping. ESLint alone is
80
+ # no longer a complete lint pass.
81
+ if [ ! -x "./node_modules/.bin/oxlint" ] && ! command -v "${OXLINT_CMD%% *}" >/dev/null 2>&1; then
82
+ echo "oxlint is required but not installed in this project." >&2
83
+ echo "Add 'oxlint' as a devDependency (Lisa governance pins it via package.lisa.json) and run install." >&2
84
+ exit 2
85
+ fi
86
+
87
+ if [ ! -f ".oxlintrc.json" ] && [ ! -f ".oxlintrc.jsonc" ] && [ ! -f "oxlint.config.ts" ]; then
88
+ echo "oxlint is installed but no .oxlintrc.json found. Run 'lisa update' to install the stack template." >&2
89
+ exit 2
90
+ fi
91
+
92
+ echo "Running oxlint --fix on: $FILE_PATH"
93
+ OX_OUTPUT=$($OXLINT_CMD --fix --quiet "$FILE_PATH" 2>&1)
94
+ OX_EXIT=$?
95
+ if [ $OX_EXIT -ne 0 ]; then
96
+ # Re-run without --fix to capture remaining errors
97
+ OX_OUTPUT=$($OXLINT_CMD --quiet "$FILE_PATH" 2>&1)
98
+ OX_EXIT=$?
99
+ if [ $OX_EXIT -ne 0 ]; then
100
+ echo "oxlint found unfixable errors in: $FILE_PATH" >&2
101
+ echo "$OX_OUTPUT" >&2
102
+ exit 2
103
+ fi
104
+ fi
105
+
106
+ # 2) ESLint --fix --quiet --cache
107
+ # --quiet: suppress warnings, only show errors
108
+ # --cache: use ESLint cache for performance
109
+ # --rule: disable no-unused-vars auto-fix to prevent removing imports that Claude
110
+ # plans to use in a subsequent edit (pre-commit hook still catches them)
111
+ echo "Running ESLint --fix on: $FILE_PATH"
112
+
113
+ # First pass: attempt auto-fix
114
+ OUTPUT=$($ESLINT_CMD --fix --quiet --cache --rule '@typescript-eslint/no-unused-vars: off' "$FILE_PATH" 2>&1)
115
+ FIX_EXIT=$?
116
+
117
+ if [ $FIX_EXIT -eq 0 ]; then
118
+ echo "ESLint: No errors in $(basename "$FILE_PATH")"
119
+ exit 0
120
+ fi
121
+
122
+ # Auto-fix resolved some issues but errors remain — re-run to get remaining errors
123
+ OUTPUT=$($ESLINT_CMD --quiet --cache "$FILE_PATH" 2>&1)
124
+ LINT_EXIT=$?
125
+
126
+ if [ $LINT_EXIT -eq 0 ]; then
127
+ echo "ESLint: Auto-fixed all errors in $(basename "$FILE_PATH")"
128
+ exit 0
129
+ fi
130
+
131
+ # Unfixable errors remain — block with feedback
132
+ echo "ESLint found unfixable errors in: $FILE_PATH" >&2
133
+ echo "$OUTPUT" >&2
134
+ exit 2
@@ -0,0 +1,71 @@
1
+ #!/bin/bash
2
+ # This file is managed by Lisa.
3
+ # Do not edit directly — changes will be overwritten on the next `lisa` run.
4
+
5
+ # Hook script to run ast-grep scan after Claude edits files
6
+ # This script receives JSON input via stdin with tool information
7
+ # Reference: https://docs.claude.com/en/docs/claude-code/hooks
8
+ # Note: This hook is BLOCKING - it returns non-zero exit codes so Claude must fix issues
9
+
10
+ # Extract file path from JSON input. Use jq for robust JSON parsing (never
11
+ # grep/sed/cut — a shape change would turn this blocking scan into a silent
12
+ # no-op). Fail open without jq so we never hard-block an edit.
13
+ command -v jq >/dev/null 2>&1 || exit 0
14
+ FILE_PATH=$(cat | jq -r '.tool_input.file_path // empty')
15
+
16
+ if [ -z "$FILE_PATH" ] || [ ! -f "$FILE_PATH" ]; then
17
+ exit 0
18
+ fi
19
+
20
+ # Check if file type is supported (TypeScript, JavaScript)
21
+ case "${FILE_PATH##*.}" in
22
+ ts|tsx|js|jsx|mjs|cjs) ;;
23
+ *) exit 0 ;;
24
+ esac
25
+
26
+ # Validate project directory
27
+ if [ -z "${CLAUDE_PROJECT_DIR:-}" ]; then
28
+ exit 0
29
+ fi
30
+
31
+ # Check if file is in a source directory
32
+ RELATIVE_PATH="${FILE_PATH#$CLAUDE_PROJECT_DIR/}"
33
+ case "$RELATIVE_PATH" in
34
+ src/*|apps/*|libs/*|test/*|tests/*|features/*|components/*|hooks/*|screens/*|app/*|constants/*|utils/*|providers/*|stores/*) ;;
35
+ *) exit 0 ;;
36
+ esac
37
+
38
+ cd "$CLAUDE_PROJECT_DIR" || exit 0
39
+
40
+ # Verify ast-grep configuration exists
41
+ if [ ! -f "sgconfig.yml" ]; then
42
+ exit 0
43
+ fi
44
+
45
+ # Verify rules are defined
46
+ RULE_COUNT=$(find ast-grep/rules -name "*.yml" -o -name "*.yaml" 2>/dev/null | grep -v ".gitkeep" | wc -l | tr -d ' ')
47
+ if [ "$RULE_COUNT" -eq 0 ]; then
48
+ exit 0
49
+ fi
50
+
51
+ # Detect package manager
52
+ if [ -f "bun.lockb" ] || [ -f "bun.lock" ]; then
53
+ PKG_MANAGER="bun"
54
+ elif [ -f "pnpm-lock.yaml" ]; then
55
+ PKG_MANAGER="pnpm"
56
+ elif [ -f "yarn.lock" ]; then
57
+ PKG_MANAGER="yarn"
58
+ else
59
+ PKG_MANAGER="npm"
60
+ fi
61
+
62
+ # Run ast-grep scan
63
+ echo "Running ast-grep scan on: $FILE_PATH"
64
+ if OUTPUT=$($PKG_MANAGER run sg:scan "$FILE_PATH" 2>&1); then
65
+ echo "ast-grep: No issues found in $(basename "$FILE_PATH")"
66
+ exit 0
67
+ else
68
+ echo "ast-grep found issues in: $FILE_PATH" >&2
69
+ echo "$OUTPUT" >&2
70
+ exit 1
71
+ fi
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "lisa-typescript",
3
+ "version": "2.123.0",
4
+ "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
+ "author": {
6
+ "name": "Cody Swann"
7
+ },
8
+ "dependencies": [
9
+ "lisa"
10
+ ],
11
+ "hooks": {
12
+ "PreToolUse": [
13
+ {
14
+ "matcher": "Write|Edit",
15
+ "hooks": [
16
+ {
17
+ "type": "command",
18
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/block-suppress-directives.sh"
19
+ }
20
+ ]
21
+ }
22
+ ],
23
+ "PostToolUse": [
24
+ {
25
+ "matcher": "Write|Edit",
26
+ "hooks": [
27
+ {
28
+ "type": "command",
29
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/format-on-edit.sh"
30
+ },
31
+ {
32
+ "type": "command",
33
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/sg-scan-on-edit.sh"
34
+ },
35
+ {
36
+ "type": "command",
37
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/lint-on-edit.sh"
38
+ }
39
+ ]
40
+ }
41
+ ]
42
+ }
43
+ }
@@ -0,0 +1,73 @@
1
+ #!/bin/bash
2
+ # This file is managed by Lisa.
3
+ # Do not edit directly — changes will be overwritten on the next `lisa` run.
4
+ #
5
+ # PreToolUse hook (Write|Edit): block adding error-suppression directives to
6
+ # JS/TS source. Suppressing the type checker, linter, or formatter hides real
7
+ # defects instead of fixing them, so it is a documented last resort (see the
8
+ # base "ASK FIRST" governance rule). The agent should stop and get the user's
9
+ # approval rather than slip a suppression past silently.
10
+ #
11
+ # Inspects only the NEW text the tool introduces, scoped to JS/TS files, and
12
+ # matches the directive only in comment syntax (// or /*) so prose, strings,
13
+ # and identifiers that merely mention these tokens are not flagged.
14
+ # Exit code 2 blocks the tool call and surfaces stderr to Claude.
15
+ # Reference: https://docs.claude.com/en/docs/claude-code/hooks
16
+
17
+ JSON_INPUT=$(cat)
18
+
19
+ # Project rule (.claude/rules/PROJECT_RULES.md): never parse JSON in shell with
20
+ # grep/sed/cut/awk — always use jq. Fail open without jq so we never hard-block
21
+ # the agent on missing tooling.
22
+ command -v jq >/dev/null 2>&1 || exit 0
23
+
24
+ FILE_PATH=$(printf '%s' "$JSON_INPUT" | jq -r '.tool_input.file_path // empty')
25
+ [ -n "$FILE_PATH" ] || exit 0
26
+
27
+ # Only guard JS/TS source. Directives in other file types (docs, configs that
28
+ # document the rules, this script) are not suppressions.
29
+ case "${FILE_PATH##*.}" in
30
+ ts | tsx | js | jsx | mjs | cjs) ;;
31
+ *) exit 0 ;;
32
+ esac
33
+
34
+ # Resolve the new text per tool shape:
35
+ # Write -> tool_input.content
36
+ # MultiEdit -> tool_input.edits[].new_string
37
+ # Edit -> tool_input.new_string
38
+ NEW_TEXT=$(printf '%s' "$JSON_INPUT" | jq -r '
39
+ .tool_input as $i
40
+ | if ($i.content // null) != null then $i.content
41
+ elif ($i.edits // null) != null then ([$i.edits[].new_string] | join("\n"))
42
+ elif ($i.new_string // null) != null then $i.new_string
43
+ else "" end')
44
+
45
+ # Comment-syntax-only match: a // or /* opener, optional whitespace, then the
46
+ # suppression directive. @ts-expect-error is intentionally NOT matched — it is
47
+ # the safer alternative this hook steers toward.
48
+ DIRECTIVE_RE='(//|/\*)[[:space:]]*(@ts-(ignore|nocheck)|eslint-disable|biome-ignore|prettier-ignore)'
49
+
50
+ if printf '%s' "$NEW_TEXT" | grep -Eq "$DIRECTIVE_RE"; then
51
+ cat >&2 <<MSG
52
+ ❌ Blocked: error-suppression directive in $FILE_PATH
53
+
54
+ You are adding a @ts-ignore / @ts-nocheck / eslint-disable / biome-ignore /
55
+ prettier-ignore comment. These silence the type checker, linter, or formatter
56
+ instead of fixing the underlying problem. They are a last resort, not a default.
57
+
58
+ Fix it properly first:
59
+ - Resolve the actual type/lint error rather than suppressing it.
60
+ - Add the missing annotation, narrow the type, or restructure the code so the
61
+ rule passes legitimately.
62
+ - For a faulty dependency type, prefer a typed wrapper or module augmentation.
63
+
64
+ If — and only if — there is genuinely no other way (e.g. a known upstream bug):
65
+ - STOP and get the user's approval before suppressing (base "ASK FIRST" rule).
66
+ - Prefer @ts-expect-error over @ts-ignore (it fails once the error is gone).
67
+ - Scope the disable to one line and one rule, never a whole file.
68
+ - Include a "-- <reason>" description (eslint-comments/require-description).
69
+ MSG
70
+ exit 2
71
+ fi
72
+
73
+ exit 0
@@ -0,0 +1,79 @@
1
+ #!/bin/bash
2
+ # This file is managed by Lisa.
3
+ # Do not edit directly — changes will be overwritten on the next `lisa` run.
4
+
5
+ # Hook script to format files with Prettier after Claude edits them
6
+ # This script receives JSON input via stdin with tool information
7
+ # Reference: https://docs.claude.com/en/docs/claude-code/hooks
8
+
9
+ # Read the JSON input from stdin
10
+ JSON_INPUT=$(cat)
11
+
12
+ # Extract the file path from the tool_input. Use jq for robust JSON parsing
13
+ # (never grep/sed/cut — a JSON shape change silently skips formatting). Fail
14
+ # open without jq so we never hard-block an edit.
15
+ command -v jq >/dev/null 2>&1 || exit 0
16
+ FILE_PATH=$(printf '%s' "$JSON_INPUT" | jq -r '.tool_input.file_path // empty')
17
+
18
+ # Check if we successfully extracted a file path
19
+ if [ -z "$FILE_PATH" ]; then
20
+ echo "⚠ Skipping Prettier: Could not extract file path from Edit tool input" >&2
21
+ exit 0 # Exit gracefully to not interrupt Claude's workflow
22
+ fi
23
+
24
+ # Check if the file exists
25
+ if [ ! -f "$FILE_PATH" ]; then
26
+ echo "⚠ Skipping Prettier: File does not exist: $FILE_PATH" >&2
27
+ exit 0 # Exit gracefully
28
+ fi
29
+
30
+ # Get the file extension
31
+ FILE_EXT="${FILE_PATH##*.}"
32
+
33
+ # Check if this is a TypeScript or JavaScript file that should be formatted
34
+ # Based on package.json format command: "prettier --write \"src/**/*.ts\" \"test/**/*.ts\""
35
+ case "$FILE_EXT" in
36
+ ts|tsx|js|jsx|json)
37
+ # File type is supported for formatting
38
+ ;;
39
+ *)
40
+ echo "ℹ Skipping Prettier: File type .$FILE_EXT is not configured for auto-formatting"
41
+ exit 0
42
+ ;;
43
+ esac
44
+
45
+ # Change to the project directory to ensure package manager commands work
46
+ cd "$CLAUDE_PROJECT_DIR" || exit 0
47
+
48
+ # Resolve Prettier binary — prefer local node_modules/.bin, then package-manager exec
49
+ if [ -x "./node_modules/.bin/prettier" ]; then
50
+ PRETTIER_CMD="./node_modules/.bin/prettier"
51
+ PKG_MANAGER="npm"
52
+ elif [ -f "bun.lockb" ] || [ -f "bun.lock" ]; then
53
+ PRETTIER_CMD="bunx prettier"
54
+ PKG_MANAGER="bun"
55
+ elif [ -f "pnpm-lock.yaml" ]; then
56
+ PRETTIER_CMD="pnpm exec prettier"
57
+ PKG_MANAGER="pnpm"
58
+ elif [ -f "yarn.lock" ]; then
59
+ PRETTIER_CMD="yarn exec prettier"
60
+ PKG_MANAGER="yarn"
61
+ else
62
+ PRETTIER_CMD="npx prettier"
63
+ PKG_MANAGER="npm"
64
+ fi
65
+
66
+ # Run Prettier on the specific file
67
+ echo "🎨 Running Prettier on: $FILE_PATH"
68
+ $PRETTIER_CMD --write "$FILE_PATH" 2>&1 | grep -v "run v" | grep -v "Done in"
69
+
70
+ # Check the exit status
71
+ if [ ${PIPESTATUS[0]} -eq 0 ]; then
72
+ echo "✓ Successfully formatted: $(basename "$FILE_PATH")"
73
+ else
74
+ echo "⚠ Prettier formatting failed for: $FILE_PATH" >&2
75
+ echo " You may need to run '$PKG_MANAGER run format' manually to fix formatting issues." >&2
76
+ fi
77
+
78
+ # Always exit successfully to not interrupt Claude's workflow
79
+ exit 0