@codyswann/lisa 2.121.0 → 2.122.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 (873) 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/mcp-installer.d.ts +18 -0
  7. package/dist/agy/mcp-installer.d.ts.map +1 -1
  8. package/dist/agy/mcp-installer.js +21 -0
  9. package/dist/agy/mcp-installer.js.map +1 -1
  10. package/dist/agy/plugin-installer.d.ts +6 -4
  11. package/dist/agy/plugin-installer.d.ts.map +1 -1
  12. package/dist/agy/plugin-installer.js +13 -7
  13. package/dist/agy/plugin-installer.js.map +1 -1
  14. package/dist/codex/lisa-plugin-detection.d.ts +18 -19
  15. package/dist/codex/lisa-plugin-detection.d.ts.map +1 -1
  16. package/dist/codex/lisa-plugin-detection.js +26 -22
  17. package/dist/codex/lisa-plugin-detection.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 +14 -7
  21. package/dist/copilot/plugin-installer.js.map +1 -1
  22. package/dist/core/config.d.ts +20 -0
  23. package/dist/core/config.d.ts.map +1 -1
  24. package/dist/core/config.js +20 -0
  25. package/dist/core/config.js.map +1 -1
  26. package/dist/core/lisa.d.ts +16 -0
  27. package/dist/core/lisa.d.ts.map +1 -1
  28. package/dist/core/lisa.js +66 -19
  29. package/dist/core/lisa.js.map +1 -1
  30. package/package.json +1 -1
  31. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa/.codex-plugin/plugin.json +2 -2
  33. package/plugins/lisa/{.codex-plugin → hooks}/hooks.json +7 -7
  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-agy/.mcp.json +8 -0
  45. package/plugins/lisa-expo-agy/THIRD-PARTY-NOTICES.md +57 -0
  46. package/plugins/lisa-expo-agy/agents/ops-specialist.md +124 -0
  47. package/plugins/lisa-expo-agy/commands/e2e-coverage-gaps.md +7 -0
  48. package/plugins/lisa-expo-agy/commands/exploratory-qa.md +7 -0
  49. package/plugins/lisa-expo-agy/plugin.json +11 -0
  50. package/plugins/lisa-expo-agy/skills/add-app-clip/SKILL.md +280 -0
  51. package/plugins/lisa-expo-agy/skills/add-app-clip/references/native-module.md +96 -0
  52. package/plugins/lisa-expo-agy/skills/apollo-client/SKILL.md +238 -0
  53. package/plugins/lisa-expo-agy/skills/apollo-client/references/mutation-patterns.md +360 -0
  54. package/plugins/lisa-expo-agy/skills/atomic-design-gluestack/SKILL.md +360 -0
  55. package/plugins/lisa-expo-agy/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
  56. package/plugins/lisa-expo-agy/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
  57. package/plugins/lisa-expo-agy/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
  58. package/plugins/lisa-expo-agy/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +329 -0
  59. package/plugins/lisa-expo-agy/skills/building-native-ui/SKILL.md +321 -0
  60. package/plugins/lisa-expo-agy/skills/building-native-ui/references/animations.md +220 -0
  61. package/plugins/lisa-expo-agy/skills/building-native-ui/references/controls.md +272 -0
  62. package/plugins/lisa-expo-agy/skills/building-native-ui/references/form-sheet.md +253 -0
  63. package/plugins/lisa-expo-agy/skills/building-native-ui/references/gradients.md +106 -0
  64. package/plugins/lisa-expo-agy/skills/building-native-ui/references/icons.md +213 -0
  65. package/plugins/lisa-expo-agy/skills/building-native-ui/references/media.md +198 -0
  66. package/plugins/lisa-expo-agy/skills/building-native-ui/references/route-structure.md +229 -0
  67. package/plugins/lisa-expo-agy/skills/building-native-ui/references/search.md +248 -0
  68. package/plugins/lisa-expo-agy/skills/building-native-ui/references/storage.md +121 -0
  69. package/plugins/lisa-expo-agy/skills/building-native-ui/references/tabs.md +433 -0
  70. package/plugins/lisa-expo-agy/skills/building-native-ui/references/toolbar-and-headers.md +284 -0
  71. package/plugins/lisa-expo-agy/skills/building-native-ui/references/visual-effects.md +197 -0
  72. package/plugins/lisa-expo-agy/skills/building-native-ui/references/webgpu-three.md +605 -0
  73. package/plugins/lisa-expo-agy/skills/building-native-ui/references/zoom-transitions.md +158 -0
  74. package/plugins/lisa-expo-agy/skills/container-view-pattern/SKILL.md +299 -0
  75. package/plugins/lisa-expo-agy/skills/container-view-pattern/references/examples.md +749 -0
  76. package/plugins/lisa-expo-agy/skills/container-view-pattern/references/patterns.md +318 -0
  77. package/plugins/lisa-expo-agy/skills/container-view-pattern/scripts/create_component.py +200 -0
  78. package/plugins/lisa-expo-agy/skills/container-view-pattern/scripts/validate_component.py +209 -0
  79. package/plugins/lisa-expo-agy/skills/cross-platform-compatibility/SKILL.md +268 -0
  80. package/plugins/lisa-expo-agy/skills/cross-platform-compatibility/references/common-issues.md +619 -0
  81. package/plugins/lisa-expo-agy/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
  82. package/plugins/lisa-expo-agy/skills/cross-platform-compatibility/references/platform-api.md +276 -0
  83. package/plugins/lisa-expo-agy/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +416 -0
  84. package/plugins/lisa-expo-agy/skills/directory-structure/SKILL.md +202 -0
  85. package/plugins/lisa-expo-agy/skills/directory-structure/scripts/validate_structure.py +445 -0
  86. package/plugins/lisa-expo-agy/skills/e2e-coverage-gaps/SKILL.md +105 -0
  87. package/plugins/lisa-expo-agy/skills/eas-update-insights/SKILL.md +228 -0
  88. package/plugins/lisa-expo-agy/skills/eas-update-insights/references/channel-insights-schema.md +47 -0
  89. package/plugins/lisa-expo-agy/skills/eas-update-insights/references/update-insights-schema.md +69 -0
  90. package/plugins/lisa-expo-agy/skills/exploratory-qa/SKILL.md +145 -0
  91. package/plugins/lisa-expo-agy/skills/expo-api-routes/SKILL.md +369 -0
  92. package/plugins/lisa-expo-agy/skills/expo-brownfield/SKILL.md +54 -0
  93. package/plugins/lisa-expo-agy/skills/expo-brownfield/references/brownfield-integrated.md +526 -0
  94. package/plugins/lisa-expo-agy/skills/expo-brownfield/references/brownfield-isolated.md +402 -0
  95. package/plugins/lisa-expo-agy/skills/expo-brownfield/references/comparison.md +63 -0
  96. package/plugins/lisa-expo-agy/skills/expo-brownfield/references/troubleshooting.md +88 -0
  97. package/plugins/lisa-expo-agy/skills/expo-cicd-workflows/SKILL.md +92 -0
  98. package/plugins/lisa-expo-agy/skills/expo-cicd-workflows/scripts/fetch.js +113 -0
  99. package/plugins/lisa-expo-agy/skills/expo-cicd-workflows/scripts/package.json +11 -0
  100. package/plugins/lisa-expo-agy/skills/expo-cicd-workflows/scripts/validate.js +85 -0
  101. package/plugins/lisa-expo-agy/skills/expo-deployment/SKILL.md +190 -0
  102. package/plugins/lisa-expo-agy/skills/expo-deployment/references/app-store-metadata.md +479 -0
  103. package/plugins/lisa-expo-agy/skills/expo-deployment/references/ios-app-store.md +355 -0
  104. package/plugins/lisa-expo-agy/skills/expo-deployment/references/play-store.md +246 -0
  105. package/plugins/lisa-expo-agy/skills/expo-deployment/references/testflight.md +58 -0
  106. package/plugins/lisa-expo-agy/skills/expo-deployment/references/workflows.md +200 -0
  107. package/plugins/lisa-expo-agy/skills/expo-dev-client/SKILL.md +164 -0
  108. package/plugins/lisa-expo-agy/skills/expo-env-config/SKILL.md +309 -0
  109. package/plugins/lisa-expo-agy/skills/expo-env-config/references/validation-patterns.md +417 -0
  110. package/plugins/lisa-expo-agy/skills/expo-module/SKILL.md +141 -0
  111. package/plugins/lisa-expo-agy/skills/expo-module/references/config-plugin.md +90 -0
  112. package/plugins/lisa-expo-agy/skills/expo-module/references/create-expo-module.md +206 -0
  113. package/plugins/lisa-expo-agy/skills/expo-module/references/lifecycle.md +127 -0
  114. package/plugins/lisa-expo-agy/skills/expo-module/references/module-config.md +48 -0
  115. package/plugins/lisa-expo-agy/skills/expo-module/references/native-module.md +286 -0
  116. package/plugins/lisa-expo-agy/skills/expo-module/references/native-view.md +171 -0
  117. package/plugins/lisa-expo-agy/skills/expo-router-best-practices/SKILL.md +431 -0
  118. package/plugins/lisa-expo-agy/skills/expo-router-best-practices/references/official-docs.md +290 -0
  119. package/plugins/lisa-expo-agy/skills/expo-router-best-practices/scripts/generate-route.py +171 -0
  120. package/plugins/lisa-expo-agy/skills/expo-tailwind-setup/SKILL.md +480 -0
  121. package/plugins/lisa-expo-agy/skills/expo-ui-jetpack-compose/SKILL.md +40 -0
  122. package/plugins/lisa-expo-agy/skills/expo-ui-swift-ui/SKILL.md +39 -0
  123. package/plugins/lisa-expo-agy/skills/gluestack-nativewind/SKILL.md +411 -0
  124. package/plugins/lisa-expo-agy/skills/gluestack-nativewind/references/color-tokens.md +343 -0
  125. package/plugins/lisa-expo-agy/skills/gluestack-nativewind/references/component-mapping.md +307 -0
  126. package/plugins/lisa-expo-agy/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
  127. package/plugins/lisa-expo-agy/skills/gluestack-nativewind/scripts/validate_styling.py +315 -0
  128. package/plugins/lisa-expo-agy/skills/jira-add-journey/SKILL.md +126 -0
  129. package/plugins/lisa-expo-agy/skills/jira-create/SKILL.md +161 -0
  130. package/plugins/lisa-expo-agy/skills/jira-evidence/SKILL.md +78 -0
  131. package/plugins/lisa-expo-agy/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  132. package/plugins/lisa-expo-agy/skills/jira-journey/SKILL.md +190 -0
  133. package/plugins/lisa-expo-agy/skills/jira-journey/scripts/generate-templates.py +281 -0
  134. package/plugins/lisa-expo-agy/skills/jira-journey/scripts/parse-plan.py +368 -0
  135. package/plugins/lisa-expo-agy/skills/jira-verify/SKILL.md +27 -0
  136. package/plugins/lisa-expo-agy/skills/local-state/SKILL.md +362 -0
  137. package/plugins/lisa-expo-agy/skills/local-state/references/async-storage.md +505 -0
  138. package/plugins/lisa-expo-agy/skills/local-state/references/persistence-patterns.md +711 -0
  139. package/plugins/lisa-expo-agy/skills/local-state/references/reactive-variables.md +446 -0
  140. package/plugins/lisa-expo-agy/skills/native-data-fetching/SKILL.md +507 -0
  141. package/plugins/lisa-expo-agy/skills/native-data-fetching/references/expo-router-loaders.md +344 -0
  142. package/plugins/lisa-expo-agy/skills/ops-browser-uat/SKILL.md +124 -0
  143. package/plugins/lisa-expo-agy/skills/ops-check-logs/SKILL.md +211 -0
  144. package/plugins/lisa-expo-agy/skills/ops-db-ops/SKILL.md +119 -0
  145. package/plugins/lisa-expo-agy/skills/ops-deploy/SKILL.md +119 -0
  146. package/plugins/lisa-expo-agy/skills/ops-monitor-errors/SKILL.md +99 -0
  147. package/plugins/lisa-expo-agy/skills/ops-performance/SKILL.md +165 -0
  148. package/plugins/lisa-expo-agy/skills/ops-run-local/SKILL.md +166 -0
  149. package/plugins/lisa-expo-agy/skills/ops-verify-health/SKILL.md +101 -0
  150. package/plugins/lisa-expo-agy/skills/owasp-zap/SKILL.md +56 -0
  151. package/plugins/lisa-expo-agy/skills/playwright-ci-debugging/SKILL.md +140 -0
  152. package/plugins/lisa-expo-agy/skills/playwright-selectors/SKILL.md +455 -0
  153. package/plugins/lisa-expo-agy/skills/reduce-complexity/SKILL.md +251 -0
  154. package/plugins/lisa-expo-agy/skills/reduce-complexity/references/extraction-strategies.md +456 -0
  155. package/plugins/lisa-expo-agy/skills/reduce-complexity/references/refactoring-patterns.md +557 -0
  156. package/plugins/lisa-expo-agy/skills/testing-library/SKILL.md +314 -0
  157. package/plugins/lisa-expo-agy/skills/testing-library/references/async-patterns.md +420 -0
  158. package/plugins/lisa-expo-agy/skills/testing-library/references/expo-router-testing.md +556 -0
  159. package/plugins/lisa-expo-agy/skills/testing-library/references/mocking-patterns.md +590 -0
  160. package/plugins/lisa-expo-agy/skills/testing-library/references/query-priority.md +291 -0
  161. package/plugins/lisa-expo-agy/skills/upgrading-expo/SKILL.md +134 -0
  162. package/plugins/lisa-expo-agy/skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
  163. package/plugins/lisa-expo-agy/skills/upgrading-expo/references/expo-av-to-video.md +160 -0
  164. package/plugins/lisa-expo-agy/skills/upgrading-expo/references/native-tabs.md +124 -0
  165. package/plugins/lisa-expo-agy/skills/upgrading-expo/references/new-architecture.md +79 -0
  166. package/plugins/lisa-expo-agy/skills/upgrading-expo/references/react-19.md +79 -0
  167. package/plugins/lisa-expo-agy/skills/upgrading-expo/references/react-compiler.md +59 -0
  168. package/plugins/lisa-expo-agy/skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
  169. package/plugins/lisa-expo-agy/skills/use-dom/SKILL.md +417 -0
  170. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +11 -0
  171. package/plugins/lisa-expo-copilot/.mcp.json +8 -0
  172. package/plugins/lisa-expo-copilot/THIRD-PARTY-NOTICES.md +57 -0
  173. package/plugins/lisa-expo-copilot/agents/ops-specialist.agent.md +124 -0
  174. package/plugins/lisa-expo-copilot/commands/e2e-coverage-gaps.md +7 -0
  175. package/plugins/lisa-expo-copilot/commands/exploratory-qa.md +7 -0
  176. package/plugins/lisa-expo-copilot/skills/add-app-clip/SKILL.md +280 -0
  177. package/plugins/lisa-expo-copilot/skills/add-app-clip/references/native-module.md +96 -0
  178. package/plugins/lisa-expo-copilot/skills/apollo-client/SKILL.md +238 -0
  179. package/plugins/lisa-expo-copilot/skills/apollo-client/references/mutation-patterns.md +360 -0
  180. package/plugins/lisa-expo-copilot/skills/atomic-design-gluestack/SKILL.md +360 -0
  181. package/plugins/lisa-expo-copilot/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
  182. package/plugins/lisa-expo-copilot/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
  183. package/plugins/lisa-expo-copilot/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
  184. package/plugins/lisa-expo-copilot/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +329 -0
  185. package/plugins/lisa-expo-copilot/skills/building-native-ui/SKILL.md +321 -0
  186. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/animations.md +220 -0
  187. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/controls.md +272 -0
  188. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/form-sheet.md +253 -0
  189. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/gradients.md +106 -0
  190. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/icons.md +213 -0
  191. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/media.md +198 -0
  192. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/route-structure.md +229 -0
  193. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/search.md +248 -0
  194. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/storage.md +121 -0
  195. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/tabs.md +433 -0
  196. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/toolbar-and-headers.md +284 -0
  197. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/visual-effects.md +197 -0
  198. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/webgpu-three.md +605 -0
  199. package/plugins/lisa-expo-copilot/skills/building-native-ui/references/zoom-transitions.md +158 -0
  200. package/plugins/lisa-expo-copilot/skills/container-view-pattern/SKILL.md +299 -0
  201. package/plugins/lisa-expo-copilot/skills/container-view-pattern/references/examples.md +749 -0
  202. package/plugins/lisa-expo-copilot/skills/container-view-pattern/references/patterns.md +318 -0
  203. package/plugins/lisa-expo-copilot/skills/container-view-pattern/scripts/create_component.py +200 -0
  204. package/plugins/lisa-expo-copilot/skills/container-view-pattern/scripts/validate_component.py +209 -0
  205. package/plugins/lisa-expo-copilot/skills/cross-platform-compatibility/SKILL.md +268 -0
  206. package/plugins/lisa-expo-copilot/skills/cross-platform-compatibility/references/common-issues.md +619 -0
  207. package/plugins/lisa-expo-copilot/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
  208. package/plugins/lisa-expo-copilot/skills/cross-platform-compatibility/references/platform-api.md +276 -0
  209. package/plugins/lisa-expo-copilot/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +416 -0
  210. package/plugins/lisa-expo-copilot/skills/directory-structure/SKILL.md +202 -0
  211. package/plugins/lisa-expo-copilot/skills/directory-structure/scripts/validate_structure.py +445 -0
  212. package/plugins/lisa-expo-copilot/skills/e2e-coverage-gaps/SKILL.md +105 -0
  213. package/plugins/lisa-expo-copilot/skills/eas-update-insights/SKILL.md +228 -0
  214. package/plugins/lisa-expo-copilot/skills/eas-update-insights/references/channel-insights-schema.md +47 -0
  215. package/plugins/lisa-expo-copilot/skills/eas-update-insights/references/update-insights-schema.md +69 -0
  216. package/plugins/lisa-expo-copilot/skills/exploratory-qa/SKILL.md +145 -0
  217. package/plugins/lisa-expo-copilot/skills/expo-api-routes/SKILL.md +369 -0
  218. package/plugins/lisa-expo-copilot/skills/expo-brownfield/SKILL.md +54 -0
  219. package/plugins/lisa-expo-copilot/skills/expo-brownfield/references/brownfield-integrated.md +526 -0
  220. package/plugins/lisa-expo-copilot/skills/expo-brownfield/references/brownfield-isolated.md +402 -0
  221. package/plugins/lisa-expo-copilot/skills/expo-brownfield/references/comparison.md +63 -0
  222. package/plugins/lisa-expo-copilot/skills/expo-brownfield/references/troubleshooting.md +88 -0
  223. package/plugins/lisa-expo-copilot/skills/expo-cicd-workflows/SKILL.md +92 -0
  224. package/plugins/lisa-expo-copilot/skills/expo-cicd-workflows/scripts/fetch.js +113 -0
  225. package/plugins/lisa-expo-copilot/skills/expo-cicd-workflows/scripts/package.json +11 -0
  226. package/plugins/lisa-expo-copilot/skills/expo-cicd-workflows/scripts/validate.js +85 -0
  227. package/plugins/lisa-expo-copilot/skills/expo-deployment/SKILL.md +190 -0
  228. package/plugins/lisa-expo-copilot/skills/expo-deployment/references/app-store-metadata.md +479 -0
  229. package/plugins/lisa-expo-copilot/skills/expo-deployment/references/ios-app-store.md +355 -0
  230. package/plugins/lisa-expo-copilot/skills/expo-deployment/references/play-store.md +246 -0
  231. package/plugins/lisa-expo-copilot/skills/expo-deployment/references/testflight.md +58 -0
  232. package/plugins/lisa-expo-copilot/skills/expo-deployment/references/workflows.md +200 -0
  233. package/plugins/lisa-expo-copilot/skills/expo-dev-client/SKILL.md +164 -0
  234. package/plugins/lisa-expo-copilot/skills/expo-env-config/SKILL.md +309 -0
  235. package/plugins/lisa-expo-copilot/skills/expo-env-config/references/validation-patterns.md +417 -0
  236. package/plugins/lisa-expo-copilot/skills/expo-module/SKILL.md +141 -0
  237. package/plugins/lisa-expo-copilot/skills/expo-module/references/config-plugin.md +90 -0
  238. package/plugins/lisa-expo-copilot/skills/expo-module/references/create-expo-module.md +206 -0
  239. package/plugins/lisa-expo-copilot/skills/expo-module/references/lifecycle.md +127 -0
  240. package/plugins/lisa-expo-copilot/skills/expo-module/references/module-config.md +48 -0
  241. package/plugins/lisa-expo-copilot/skills/expo-module/references/native-module.md +286 -0
  242. package/plugins/lisa-expo-copilot/skills/expo-module/references/native-view.md +171 -0
  243. package/plugins/lisa-expo-copilot/skills/expo-router-best-practices/SKILL.md +431 -0
  244. package/plugins/lisa-expo-copilot/skills/expo-router-best-practices/references/official-docs.md +290 -0
  245. package/plugins/lisa-expo-copilot/skills/expo-router-best-practices/scripts/generate-route.py +171 -0
  246. package/plugins/lisa-expo-copilot/skills/expo-tailwind-setup/SKILL.md +480 -0
  247. package/plugins/lisa-expo-copilot/skills/expo-ui-jetpack-compose/SKILL.md +40 -0
  248. package/plugins/lisa-expo-copilot/skills/expo-ui-swift-ui/SKILL.md +39 -0
  249. package/plugins/lisa-expo-copilot/skills/gluestack-nativewind/SKILL.md +411 -0
  250. package/plugins/lisa-expo-copilot/skills/gluestack-nativewind/references/color-tokens.md +343 -0
  251. package/plugins/lisa-expo-copilot/skills/gluestack-nativewind/references/component-mapping.md +307 -0
  252. package/plugins/lisa-expo-copilot/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
  253. package/plugins/lisa-expo-copilot/skills/gluestack-nativewind/scripts/validate_styling.py +315 -0
  254. package/plugins/lisa-expo-copilot/skills/jira-add-journey/SKILL.md +126 -0
  255. package/plugins/lisa-expo-copilot/skills/jira-create/SKILL.md +161 -0
  256. package/plugins/lisa-expo-copilot/skills/jira-evidence/SKILL.md +78 -0
  257. package/plugins/lisa-expo-copilot/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  258. package/plugins/lisa-expo-copilot/skills/jira-journey/SKILL.md +190 -0
  259. package/plugins/lisa-expo-copilot/skills/jira-journey/scripts/generate-templates.py +281 -0
  260. package/plugins/lisa-expo-copilot/skills/jira-journey/scripts/parse-plan.py +368 -0
  261. package/plugins/lisa-expo-copilot/skills/jira-verify/SKILL.md +27 -0
  262. package/plugins/lisa-expo-copilot/skills/local-state/SKILL.md +362 -0
  263. package/plugins/lisa-expo-copilot/skills/local-state/references/async-storage.md +505 -0
  264. package/plugins/lisa-expo-copilot/skills/local-state/references/persistence-patterns.md +711 -0
  265. package/plugins/lisa-expo-copilot/skills/local-state/references/reactive-variables.md +446 -0
  266. package/plugins/lisa-expo-copilot/skills/native-data-fetching/SKILL.md +507 -0
  267. package/plugins/lisa-expo-copilot/skills/native-data-fetching/references/expo-router-loaders.md +344 -0
  268. package/plugins/lisa-expo-copilot/skills/ops-browser-uat/SKILL.md +124 -0
  269. package/plugins/lisa-expo-copilot/skills/ops-check-logs/SKILL.md +211 -0
  270. package/plugins/lisa-expo-copilot/skills/ops-db-ops/SKILL.md +119 -0
  271. package/plugins/lisa-expo-copilot/skills/ops-deploy/SKILL.md +119 -0
  272. package/plugins/lisa-expo-copilot/skills/ops-monitor-errors/SKILL.md +99 -0
  273. package/plugins/lisa-expo-copilot/skills/ops-performance/SKILL.md +165 -0
  274. package/plugins/lisa-expo-copilot/skills/ops-run-local/SKILL.md +166 -0
  275. package/plugins/lisa-expo-copilot/skills/ops-verify-health/SKILL.md +101 -0
  276. package/plugins/lisa-expo-copilot/skills/owasp-zap/SKILL.md +56 -0
  277. package/plugins/lisa-expo-copilot/skills/playwright-ci-debugging/SKILL.md +140 -0
  278. package/plugins/lisa-expo-copilot/skills/playwright-selectors/SKILL.md +455 -0
  279. package/plugins/lisa-expo-copilot/skills/reduce-complexity/SKILL.md +251 -0
  280. package/plugins/lisa-expo-copilot/skills/reduce-complexity/references/extraction-strategies.md +456 -0
  281. package/plugins/lisa-expo-copilot/skills/reduce-complexity/references/refactoring-patterns.md +557 -0
  282. package/plugins/lisa-expo-copilot/skills/testing-library/SKILL.md +314 -0
  283. package/plugins/lisa-expo-copilot/skills/testing-library/references/async-patterns.md +420 -0
  284. package/plugins/lisa-expo-copilot/skills/testing-library/references/expo-router-testing.md +556 -0
  285. package/plugins/lisa-expo-copilot/skills/testing-library/references/mocking-patterns.md +590 -0
  286. package/plugins/lisa-expo-copilot/skills/testing-library/references/query-priority.md +291 -0
  287. package/plugins/lisa-expo-copilot/skills/upgrading-expo/SKILL.md +134 -0
  288. package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
  289. package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/expo-av-to-video.md +160 -0
  290. package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/native-tabs.md +124 -0
  291. package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/new-architecture.md +79 -0
  292. package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/react-19.md +79 -0
  293. package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/react-compiler.md +59 -0
  294. package/plugins/lisa-expo-copilot/skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
  295. package/plugins/lisa-expo-copilot/skills/use-dom/SKILL.md +417 -0
  296. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +11 -0
  297. package/plugins/lisa-expo-cursor/.mcp.json +8 -0
  298. package/plugins/lisa-expo-cursor/THIRD-PARTY-NOTICES.md +57 -0
  299. package/plugins/lisa-expo-cursor/agents/ops-specialist.md +124 -0
  300. package/plugins/lisa-expo-cursor/commands/e2e-coverage-gaps.md +7 -0
  301. package/plugins/lisa-expo-cursor/commands/exploratory-qa.md +7 -0
  302. package/plugins/lisa-expo-cursor/skills/add-app-clip/SKILL.md +280 -0
  303. package/plugins/lisa-expo-cursor/skills/add-app-clip/references/native-module.md +96 -0
  304. package/plugins/lisa-expo-cursor/skills/apollo-client/SKILL.md +238 -0
  305. package/plugins/lisa-expo-cursor/skills/apollo-client/references/mutation-patterns.md +360 -0
  306. package/plugins/lisa-expo-cursor/skills/atomic-design-gluestack/SKILL.md +360 -0
  307. package/plugins/lisa-expo-cursor/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
  308. package/plugins/lisa-expo-cursor/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
  309. package/plugins/lisa-expo-cursor/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
  310. package/plugins/lisa-expo-cursor/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +329 -0
  311. package/plugins/lisa-expo-cursor/skills/building-native-ui/SKILL.md +321 -0
  312. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/animations.md +220 -0
  313. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/controls.md +272 -0
  314. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/form-sheet.md +253 -0
  315. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/gradients.md +106 -0
  316. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/icons.md +213 -0
  317. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/media.md +198 -0
  318. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/route-structure.md +229 -0
  319. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/search.md +248 -0
  320. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/storage.md +121 -0
  321. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/tabs.md +433 -0
  322. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/toolbar-and-headers.md +284 -0
  323. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/visual-effects.md +197 -0
  324. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/webgpu-three.md +605 -0
  325. package/plugins/lisa-expo-cursor/skills/building-native-ui/references/zoom-transitions.md +158 -0
  326. package/plugins/lisa-expo-cursor/skills/container-view-pattern/SKILL.md +299 -0
  327. package/plugins/lisa-expo-cursor/skills/container-view-pattern/references/examples.md +749 -0
  328. package/plugins/lisa-expo-cursor/skills/container-view-pattern/references/patterns.md +318 -0
  329. package/plugins/lisa-expo-cursor/skills/container-view-pattern/scripts/create_component.py +200 -0
  330. package/plugins/lisa-expo-cursor/skills/container-view-pattern/scripts/validate_component.py +209 -0
  331. package/plugins/lisa-expo-cursor/skills/cross-platform-compatibility/SKILL.md +268 -0
  332. package/plugins/lisa-expo-cursor/skills/cross-platform-compatibility/references/common-issues.md +619 -0
  333. package/plugins/lisa-expo-cursor/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
  334. package/plugins/lisa-expo-cursor/skills/cross-platform-compatibility/references/platform-api.md +276 -0
  335. package/plugins/lisa-expo-cursor/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +416 -0
  336. package/plugins/lisa-expo-cursor/skills/directory-structure/SKILL.md +202 -0
  337. package/plugins/lisa-expo-cursor/skills/directory-structure/scripts/validate_structure.py +445 -0
  338. package/plugins/lisa-expo-cursor/skills/e2e-coverage-gaps/SKILL.md +105 -0
  339. package/plugins/lisa-expo-cursor/skills/eas-update-insights/SKILL.md +228 -0
  340. package/plugins/lisa-expo-cursor/skills/eas-update-insights/references/channel-insights-schema.md +47 -0
  341. package/plugins/lisa-expo-cursor/skills/eas-update-insights/references/update-insights-schema.md +69 -0
  342. package/plugins/lisa-expo-cursor/skills/exploratory-qa/SKILL.md +145 -0
  343. package/plugins/lisa-expo-cursor/skills/expo-api-routes/SKILL.md +369 -0
  344. package/plugins/lisa-expo-cursor/skills/expo-brownfield/SKILL.md +54 -0
  345. package/plugins/lisa-expo-cursor/skills/expo-brownfield/references/brownfield-integrated.md +526 -0
  346. package/plugins/lisa-expo-cursor/skills/expo-brownfield/references/brownfield-isolated.md +402 -0
  347. package/plugins/lisa-expo-cursor/skills/expo-brownfield/references/comparison.md +63 -0
  348. package/plugins/lisa-expo-cursor/skills/expo-brownfield/references/troubleshooting.md +88 -0
  349. package/plugins/lisa-expo-cursor/skills/expo-cicd-workflows/SKILL.md +92 -0
  350. package/plugins/lisa-expo-cursor/skills/expo-cicd-workflows/scripts/fetch.js +113 -0
  351. package/plugins/lisa-expo-cursor/skills/expo-cicd-workflows/scripts/package.json +11 -0
  352. package/plugins/lisa-expo-cursor/skills/expo-cicd-workflows/scripts/validate.js +85 -0
  353. package/plugins/lisa-expo-cursor/skills/expo-deployment/SKILL.md +190 -0
  354. package/plugins/lisa-expo-cursor/skills/expo-deployment/references/app-store-metadata.md +479 -0
  355. package/plugins/lisa-expo-cursor/skills/expo-deployment/references/ios-app-store.md +355 -0
  356. package/plugins/lisa-expo-cursor/skills/expo-deployment/references/play-store.md +246 -0
  357. package/plugins/lisa-expo-cursor/skills/expo-deployment/references/testflight.md +58 -0
  358. package/plugins/lisa-expo-cursor/skills/expo-deployment/references/workflows.md +200 -0
  359. package/plugins/lisa-expo-cursor/skills/expo-dev-client/SKILL.md +164 -0
  360. package/plugins/lisa-expo-cursor/skills/expo-env-config/SKILL.md +309 -0
  361. package/plugins/lisa-expo-cursor/skills/expo-env-config/references/validation-patterns.md +417 -0
  362. package/plugins/lisa-expo-cursor/skills/expo-module/SKILL.md +141 -0
  363. package/plugins/lisa-expo-cursor/skills/expo-module/references/config-plugin.md +90 -0
  364. package/plugins/lisa-expo-cursor/skills/expo-module/references/create-expo-module.md +206 -0
  365. package/plugins/lisa-expo-cursor/skills/expo-module/references/lifecycle.md +127 -0
  366. package/plugins/lisa-expo-cursor/skills/expo-module/references/module-config.md +48 -0
  367. package/plugins/lisa-expo-cursor/skills/expo-module/references/native-module.md +286 -0
  368. package/plugins/lisa-expo-cursor/skills/expo-module/references/native-view.md +171 -0
  369. package/plugins/lisa-expo-cursor/skills/expo-router-best-practices/SKILL.md +431 -0
  370. package/plugins/lisa-expo-cursor/skills/expo-router-best-practices/references/official-docs.md +290 -0
  371. package/plugins/lisa-expo-cursor/skills/expo-router-best-practices/scripts/generate-route.py +171 -0
  372. package/plugins/lisa-expo-cursor/skills/expo-tailwind-setup/SKILL.md +480 -0
  373. package/plugins/lisa-expo-cursor/skills/expo-ui-jetpack-compose/SKILL.md +40 -0
  374. package/plugins/lisa-expo-cursor/skills/expo-ui-swift-ui/SKILL.md +39 -0
  375. package/plugins/lisa-expo-cursor/skills/gluestack-nativewind/SKILL.md +411 -0
  376. package/plugins/lisa-expo-cursor/skills/gluestack-nativewind/references/color-tokens.md +343 -0
  377. package/plugins/lisa-expo-cursor/skills/gluestack-nativewind/references/component-mapping.md +307 -0
  378. package/plugins/lisa-expo-cursor/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
  379. package/plugins/lisa-expo-cursor/skills/gluestack-nativewind/scripts/validate_styling.py +315 -0
  380. package/plugins/lisa-expo-cursor/skills/jira-add-journey/SKILL.md +126 -0
  381. package/plugins/lisa-expo-cursor/skills/jira-create/SKILL.md +161 -0
  382. package/plugins/lisa-expo-cursor/skills/jira-evidence/SKILL.md +78 -0
  383. package/plugins/lisa-expo-cursor/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  384. package/plugins/lisa-expo-cursor/skills/jira-journey/SKILL.md +190 -0
  385. package/plugins/lisa-expo-cursor/skills/jira-journey/scripts/generate-templates.py +281 -0
  386. package/plugins/lisa-expo-cursor/skills/jira-journey/scripts/parse-plan.py +368 -0
  387. package/plugins/lisa-expo-cursor/skills/jira-verify/SKILL.md +27 -0
  388. package/plugins/lisa-expo-cursor/skills/local-state/SKILL.md +362 -0
  389. package/plugins/lisa-expo-cursor/skills/local-state/references/async-storage.md +505 -0
  390. package/plugins/lisa-expo-cursor/skills/local-state/references/persistence-patterns.md +711 -0
  391. package/plugins/lisa-expo-cursor/skills/local-state/references/reactive-variables.md +446 -0
  392. package/plugins/lisa-expo-cursor/skills/native-data-fetching/SKILL.md +507 -0
  393. package/plugins/lisa-expo-cursor/skills/native-data-fetching/references/expo-router-loaders.md +344 -0
  394. package/plugins/lisa-expo-cursor/skills/ops-browser-uat/SKILL.md +124 -0
  395. package/plugins/lisa-expo-cursor/skills/ops-check-logs/SKILL.md +211 -0
  396. package/plugins/lisa-expo-cursor/skills/ops-db-ops/SKILL.md +119 -0
  397. package/plugins/lisa-expo-cursor/skills/ops-deploy/SKILL.md +119 -0
  398. package/plugins/lisa-expo-cursor/skills/ops-monitor-errors/SKILL.md +99 -0
  399. package/plugins/lisa-expo-cursor/skills/ops-performance/SKILL.md +165 -0
  400. package/plugins/lisa-expo-cursor/skills/ops-run-local/SKILL.md +166 -0
  401. package/plugins/lisa-expo-cursor/skills/ops-verify-health/SKILL.md +101 -0
  402. package/plugins/lisa-expo-cursor/skills/owasp-zap/SKILL.md +56 -0
  403. package/plugins/lisa-expo-cursor/skills/playwright-ci-debugging/SKILL.md +140 -0
  404. package/plugins/lisa-expo-cursor/skills/playwright-selectors/SKILL.md +455 -0
  405. package/plugins/lisa-expo-cursor/skills/reduce-complexity/SKILL.md +251 -0
  406. package/plugins/lisa-expo-cursor/skills/reduce-complexity/references/extraction-strategies.md +456 -0
  407. package/plugins/lisa-expo-cursor/skills/reduce-complexity/references/refactoring-patterns.md +557 -0
  408. package/plugins/lisa-expo-cursor/skills/testing-library/SKILL.md +314 -0
  409. package/plugins/lisa-expo-cursor/skills/testing-library/references/async-patterns.md +420 -0
  410. package/plugins/lisa-expo-cursor/skills/testing-library/references/expo-router-testing.md +556 -0
  411. package/plugins/lisa-expo-cursor/skills/testing-library/references/mocking-patterns.md +590 -0
  412. package/plugins/lisa-expo-cursor/skills/testing-library/references/query-priority.md +291 -0
  413. package/plugins/lisa-expo-cursor/skills/upgrading-expo/SKILL.md +134 -0
  414. package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
  415. package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/expo-av-to-video.md +160 -0
  416. package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/native-tabs.md +124 -0
  417. package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/new-architecture.md +79 -0
  418. package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/react-19.md +79 -0
  419. package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/react-compiler.md +59 -0
  420. package/plugins/lisa-expo-cursor/skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
  421. package/plugins/lisa-expo-cursor/skills/use-dom/SKILL.md +417 -0
  422. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  423. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +2 -2
  424. package/plugins/lisa-harper-fabric/{.codex-plugin → hooks}/hooks.json +2 -2
  425. package/plugins/lisa-harper-fabric-agy/commands/e2e-coverage-gaps.md +7 -0
  426. package/plugins/lisa-harper-fabric-agy/commands/exploratory-qa.md +7 -0
  427. package/plugins/lisa-harper-fabric-agy/plugin.json +11 -0
  428. package/plugins/lisa-harper-fabric-agy/skills/e2e-coverage-gaps/SKILL.md +105 -0
  429. package/plugins/lisa-harper-fabric-agy/skills/exploratory-qa/SKILL.md +145 -0
  430. package/plugins/lisa-harper-fabric-agy/skills/harper-build-and-deploy/SKILL.md +101 -0
  431. package/plugins/lisa-harper-fabric-agy/skills/harper-component-model/SKILL.md +87 -0
  432. package/plugins/lisa-harper-fabric-agy/skills/harper-config-yaml/SKILL.md +107 -0
  433. package/plugins/lisa-harper-fabric-agy/skills/harper-resources/SKILL.md +106 -0
  434. package/plugins/lisa-harper-fabric-agy/skills/harper-schema-graphql/SKILL.md +72 -0
  435. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +35 -0
  436. package/plugins/lisa-harper-fabric-copilot/commands/e2e-coverage-gaps.md +7 -0
  437. package/plugins/lisa-harper-fabric-copilot/commands/exploratory-qa.md +7 -0
  438. package/plugins/lisa-harper-fabric-copilot/rules/harper-fabric.md +51 -0
  439. package/plugins/lisa-harper-fabric-copilot/skills/e2e-coverage-gaps/SKILL.md +105 -0
  440. package/plugins/lisa-harper-fabric-copilot/skills/exploratory-qa/SKILL.md +145 -0
  441. package/plugins/lisa-harper-fabric-copilot/skills/harper-build-and-deploy/SKILL.md +101 -0
  442. package/plugins/lisa-harper-fabric-copilot/skills/harper-component-model/SKILL.md +87 -0
  443. package/plugins/lisa-harper-fabric-copilot/skills/harper-config-yaml/SKILL.md +107 -0
  444. package/plugins/lisa-harper-fabric-copilot/skills/harper-resources/SKILL.md +106 -0
  445. package/plugins/lisa-harper-fabric-copilot/skills/harper-schema-graphql/SKILL.md +72 -0
  446. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +11 -0
  447. package/plugins/lisa-harper-fabric-cursor/commands/e2e-coverage-gaps.md +7 -0
  448. package/plugins/lisa-harper-fabric-cursor/commands/exploratory-qa.md +7 -0
  449. package/plugins/lisa-harper-fabric-cursor/rules/harper-fabric.md +51 -0
  450. package/plugins/lisa-harper-fabric-cursor/skills/e2e-coverage-gaps/SKILL.md +105 -0
  451. package/plugins/lisa-harper-fabric-cursor/skills/exploratory-qa/SKILL.md +145 -0
  452. package/plugins/lisa-harper-fabric-cursor/skills/harper-build-and-deploy/SKILL.md +101 -0
  453. package/plugins/lisa-harper-fabric-cursor/skills/harper-component-model/SKILL.md +87 -0
  454. package/plugins/lisa-harper-fabric-cursor/skills/harper-config-yaml/SKILL.md +107 -0
  455. package/plugins/lisa-harper-fabric-cursor/skills/harper-resources/SKILL.md +106 -0
  456. package/plugins/lisa-harper-fabric-cursor/skills/harper-schema-graphql/SKILL.md +72 -0
  457. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  458. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +2 -2
  459. package/plugins/lisa-nestjs/{.codex-plugin → hooks}/hooks.json +1 -1
  460. package/plugins/lisa-nestjs-agy/plugin.json +11 -0
  461. package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/SKILL.md +176 -0
  462. package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/references/advanced-features.md +527 -0
  463. package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/references/project-patterns.md +531 -0
  464. package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/references/quick-start.md +257 -0
  465. package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
  466. package/plugins/lisa-nestjs-agy/skills/nestjs-graphql/references/types-scalars.md +513 -0
  467. package/plugins/lisa-nestjs-agy/skills/nestjs-rules/SKILL.md +565 -0
  468. package/plugins/lisa-nestjs-agy/skills/typeorm-patterns/SKILL.md +275 -0
  469. package/plugins/lisa-nestjs-agy/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
  470. package/plugins/lisa-nestjs-agy/skills/typeorm-patterns/references/entity-patterns.md +450 -0
  471. package/plugins/lisa-nestjs-agy/skills/typeorm-patterns/references/observability-patterns.md +536 -0
  472. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +24 -0
  473. package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/SKILL.md +176 -0
  474. package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/references/advanced-features.md +527 -0
  475. package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/references/project-patterns.md +531 -0
  476. package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/references/quick-start.md +257 -0
  477. package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
  478. package/plugins/lisa-nestjs-copilot/skills/nestjs-graphql/references/types-scalars.md +513 -0
  479. package/plugins/lisa-nestjs-copilot/skills/nestjs-rules/SKILL.md +565 -0
  480. package/plugins/lisa-nestjs-copilot/skills/typeorm-patterns/SKILL.md +275 -0
  481. package/plugins/lisa-nestjs-copilot/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
  482. package/plugins/lisa-nestjs-copilot/skills/typeorm-patterns/references/entity-patterns.md +450 -0
  483. package/plugins/lisa-nestjs-copilot/skills/typeorm-patterns/references/observability-patterns.md +536 -0
  484. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +24 -0
  485. package/plugins/lisa-nestjs-cursor/hooks/block-migration-edits.sh +60 -0
  486. package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/SKILL.md +176 -0
  487. package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/references/advanced-features.md +527 -0
  488. package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/references/project-patterns.md +531 -0
  489. package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/references/quick-start.md +257 -0
  490. package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
  491. package/plugins/lisa-nestjs-cursor/skills/nestjs-graphql/references/types-scalars.md +513 -0
  492. package/plugins/lisa-nestjs-cursor/skills/nestjs-rules/SKILL.md +565 -0
  493. package/plugins/lisa-nestjs-cursor/skills/typeorm-patterns/SKILL.md +275 -0
  494. package/plugins/lisa-nestjs-cursor/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
  495. package/plugins/lisa-nestjs-cursor/skills/typeorm-patterns/references/entity-patterns.md +450 -0
  496. package/plugins/lisa-nestjs-cursor/skills/typeorm-patterns/references/observability-patterns.md +536 -0
  497. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  498. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  499. package/plugins/lisa-openclaw-agy/commands/connect-repo-topic.md +7 -0
  500. package/plugins/lisa-openclaw-agy/commands/connect-staff-slack.md +7 -0
  501. package/plugins/lisa-openclaw-agy/commands/connect-staff-telegram.md +7 -0
  502. package/plugins/lisa-openclaw-agy/commands/setup-openclaw.md +7 -0
  503. package/plugins/lisa-openclaw-agy/plugin.json +8 -0
  504. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-repo-topic/SKILL.md +137 -0
  505. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +109 -0
  506. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-staff/SKILL.md +175 -0
  507. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-staff/references/platform-routing.md +83 -0
  508. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-connect-staff/references/prompts.md +78 -0
  509. package/plugins/lisa-openclaw-agy/skills/lisa-openclaw-setup/SKILL.md +138 -0
  510. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +8 -0
  511. package/plugins/lisa-openclaw-copilot/commands/connect-repo-topic.md +7 -0
  512. package/plugins/lisa-openclaw-copilot/commands/connect-staff-slack.md +7 -0
  513. package/plugins/lisa-openclaw-copilot/commands/connect-staff-telegram.md +7 -0
  514. package/plugins/lisa-openclaw-copilot/commands/setup-openclaw.md +7 -0
  515. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-repo-topic/SKILL.md +137 -0
  516. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +109 -0
  517. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-staff/SKILL.md +175 -0
  518. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-staff/references/platform-routing.md +83 -0
  519. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-connect-staff/references/prompts.md +78 -0
  520. package/plugins/lisa-openclaw-copilot/skills/lisa-openclaw-setup/SKILL.md +138 -0
  521. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +8 -0
  522. package/plugins/lisa-openclaw-cursor/commands/connect-repo-topic.md +7 -0
  523. package/plugins/lisa-openclaw-cursor/commands/connect-staff-slack.md +7 -0
  524. package/plugins/lisa-openclaw-cursor/commands/connect-staff-telegram.md +7 -0
  525. package/plugins/lisa-openclaw-cursor/commands/setup-openclaw.md +7 -0
  526. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-repo-topic/SKILL.md +137 -0
  527. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +109 -0
  528. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-staff/SKILL.md +175 -0
  529. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-staff/references/platform-routing.md +83 -0
  530. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-connect-staff/references/prompts.md +78 -0
  531. package/plugins/lisa-openclaw-cursor/skills/lisa-openclaw-setup/SKILL.md +138 -0
  532. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  533. package/plugins/lisa-rails/.codex-plugin/plugin.json +2 -2
  534. package/plugins/lisa-rails/{.codex-plugin → hooks}/hooks.json +4 -4
  535. package/plugins/lisa-rails-agy/agents/ops-specialist.md +226 -0
  536. package/plugins/lisa-rails-agy/commands/e2e-coverage-gaps.md +7 -0
  537. package/plugins/lisa-rails-agy/commands/exploratory-qa.md +7 -0
  538. package/plugins/lisa-rails-agy/commands/fix/linter-error.md +7 -0
  539. package/plugins/lisa-rails-agy/commands/improve/code-complexity.md +6 -0
  540. package/plugins/lisa-rails-agy/commands/improve/max-lines-per-function.md +7 -0
  541. package/plugins/lisa-rails-agy/commands/improve/max-lines.md +7 -0
  542. package/plugins/lisa-rails-agy/commands/improve/test-coverage.md +7 -0
  543. package/plugins/lisa-rails-agy/plugin.json +11 -0
  544. package/plugins/lisa-rails-agy/skills/action-controller-best-practices/SKILL.md +374 -0
  545. package/plugins/lisa-rails-agy/skills/action-view-best-practices/SKILL.md +335 -0
  546. package/plugins/lisa-rails-agy/skills/active-record-model-best-practices/SKILL.md +166 -0
  547. package/plugins/lisa-rails-agy/skills/e2e-coverage-gaps/SKILL.md +105 -0
  548. package/plugins/lisa-rails-agy/skills/exploratory-qa/SKILL.md +145 -0
  549. package/plugins/lisa-rails-agy/skills/fix-linter-error/SKILL.md +45 -0
  550. package/plugins/lisa-rails-agy/skills/improve-code-complexity/SKILL.md +48 -0
  551. package/plugins/lisa-rails-agy/skills/improve-max-lines/SKILL.md +46 -0
  552. package/plugins/lisa-rails-agy/skills/improve-max-lines-per-function/SKILL.md +46 -0
  553. package/plugins/lisa-rails-agy/skills/improve-test-coverage/SKILL.md +45 -0
  554. package/plugins/lisa-rails-agy/skills/jira-add-journey/SKILL.md +65 -0
  555. package/plugins/lisa-rails-agy/skills/jira-create/SKILL.md +100 -0
  556. package/plugins/lisa-rails-agy/skills/jira-evidence/SKILL.md +70 -0
  557. package/plugins/lisa-rails-agy/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  558. package/plugins/lisa-rails-agy/skills/jira-journey/SKILL.md +64 -0
  559. package/plugins/lisa-rails-agy/skills/jira-verify/SKILL.md +26 -0
  560. package/plugins/lisa-rails-agy/skills/ops-check-logs/SKILL.md +191 -0
  561. package/plugins/lisa-rails-agy/skills/ops-deploy/SKILL.md +153 -0
  562. package/plugins/lisa-rails-agy/skills/ops-run-local/SKILL.md +169 -0
  563. package/plugins/lisa-rails-agy/skills/ops-verify-jobs/SKILL.md +157 -0
  564. package/plugins/lisa-rails-agy/skills/ops-verify-telemetry/SKILL.md +197 -0
  565. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +50 -0
  566. package/plugins/lisa-rails-copilot/agents/ops-specialist.agent.md +226 -0
  567. package/plugins/lisa-rails-copilot/commands/e2e-coverage-gaps.md +7 -0
  568. package/plugins/lisa-rails-copilot/commands/exploratory-qa.md +7 -0
  569. package/plugins/lisa-rails-copilot/commands/fix/linter-error.md +7 -0
  570. package/plugins/lisa-rails-copilot/commands/improve/code-complexity.md +6 -0
  571. package/plugins/lisa-rails-copilot/commands/improve/max-lines-per-function.md +7 -0
  572. package/plugins/lisa-rails-copilot/commands/improve/max-lines.md +7 -0
  573. package/plugins/lisa-rails-copilot/commands/improve/test-coverage.md +7 -0
  574. package/plugins/lisa-rails-copilot/rules/rails-conventions.md +176 -0
  575. package/plugins/lisa-rails-copilot/skills/action-controller-best-practices/SKILL.md +374 -0
  576. package/plugins/lisa-rails-copilot/skills/action-view-best-practices/SKILL.md +335 -0
  577. package/plugins/lisa-rails-copilot/skills/active-record-model-best-practices/SKILL.md +166 -0
  578. package/plugins/lisa-rails-copilot/skills/e2e-coverage-gaps/SKILL.md +105 -0
  579. package/plugins/lisa-rails-copilot/skills/exploratory-qa/SKILL.md +145 -0
  580. package/plugins/lisa-rails-copilot/skills/fix-linter-error/SKILL.md +45 -0
  581. package/plugins/lisa-rails-copilot/skills/improve-code-complexity/SKILL.md +48 -0
  582. package/plugins/lisa-rails-copilot/skills/improve-max-lines/SKILL.md +46 -0
  583. package/plugins/lisa-rails-copilot/skills/improve-max-lines-per-function/SKILL.md +46 -0
  584. package/plugins/lisa-rails-copilot/skills/improve-test-coverage/SKILL.md +45 -0
  585. package/plugins/lisa-rails-copilot/skills/jira-add-journey/SKILL.md +65 -0
  586. package/plugins/lisa-rails-copilot/skills/jira-create/SKILL.md +100 -0
  587. package/plugins/lisa-rails-copilot/skills/jira-evidence/SKILL.md +70 -0
  588. package/plugins/lisa-rails-copilot/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  589. package/plugins/lisa-rails-copilot/skills/jira-journey/SKILL.md +64 -0
  590. package/plugins/lisa-rails-copilot/skills/jira-verify/SKILL.md +26 -0
  591. package/plugins/lisa-rails-copilot/skills/ops-check-logs/SKILL.md +191 -0
  592. package/plugins/lisa-rails-copilot/skills/ops-deploy/SKILL.md +153 -0
  593. package/plugins/lisa-rails-copilot/skills/ops-run-local/SKILL.md +169 -0
  594. package/plugins/lisa-rails-copilot/skills/ops-verify-jobs/SKILL.md +157 -0
  595. package/plugins/lisa-rails-copilot/skills/ops-verify-telemetry/SKILL.md +197 -0
  596. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +28 -0
  597. package/plugins/lisa-rails-cursor/agents/ops-specialist.md +226 -0
  598. package/plugins/lisa-rails-cursor/commands/e2e-coverage-gaps.md +7 -0
  599. package/plugins/lisa-rails-cursor/commands/exploratory-qa.md +7 -0
  600. package/plugins/lisa-rails-cursor/commands/fix/linter-error.md +7 -0
  601. package/plugins/lisa-rails-cursor/commands/improve/code-complexity.md +6 -0
  602. package/plugins/lisa-rails-cursor/commands/improve/max-lines-per-function.md +7 -0
  603. package/plugins/lisa-rails-cursor/commands/improve/max-lines.md +7 -0
  604. package/plugins/lisa-rails-cursor/commands/improve/test-coverage.md +7 -0
  605. package/plugins/lisa-rails-cursor/hooks/rubocop-on-edit.sh +78 -0
  606. package/plugins/lisa-rails-cursor/hooks/sg-scan-on-edit.sh +74 -0
  607. package/plugins/lisa-rails-cursor/rules/rails-conventions.md +176 -0
  608. package/plugins/lisa-rails-cursor/skills/action-controller-best-practices/SKILL.md +374 -0
  609. package/plugins/lisa-rails-cursor/skills/action-view-best-practices/SKILL.md +335 -0
  610. package/plugins/lisa-rails-cursor/skills/active-record-model-best-practices/SKILL.md +166 -0
  611. package/plugins/lisa-rails-cursor/skills/e2e-coverage-gaps/SKILL.md +105 -0
  612. package/plugins/lisa-rails-cursor/skills/exploratory-qa/SKILL.md +145 -0
  613. package/plugins/lisa-rails-cursor/skills/fix-linter-error/SKILL.md +45 -0
  614. package/plugins/lisa-rails-cursor/skills/improve-code-complexity/SKILL.md +48 -0
  615. package/plugins/lisa-rails-cursor/skills/improve-max-lines/SKILL.md +46 -0
  616. package/plugins/lisa-rails-cursor/skills/improve-max-lines-per-function/SKILL.md +46 -0
  617. package/plugins/lisa-rails-cursor/skills/improve-test-coverage/SKILL.md +45 -0
  618. package/plugins/lisa-rails-cursor/skills/jira-add-journey/SKILL.md +65 -0
  619. package/plugins/lisa-rails-cursor/skills/jira-create/SKILL.md +100 -0
  620. package/plugins/lisa-rails-cursor/skills/jira-evidence/SKILL.md +70 -0
  621. package/plugins/lisa-rails-cursor/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  622. package/plugins/lisa-rails-cursor/skills/jira-journey/SKILL.md +64 -0
  623. package/plugins/lisa-rails-cursor/skills/jira-verify/SKILL.md +26 -0
  624. package/plugins/lisa-rails-cursor/skills/ops-check-logs/SKILL.md +191 -0
  625. package/plugins/lisa-rails-cursor/skills/ops-deploy/SKILL.md +153 -0
  626. package/plugins/lisa-rails-cursor/skills/ops-run-local/SKILL.md +169 -0
  627. package/plugins/lisa-rails-cursor/skills/ops-verify-jobs/SKILL.md +157 -0
  628. package/plugins/lisa-rails-cursor/skills/ops-verify-telemetry/SKILL.md +197 -0
  629. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  630. package/plugins/lisa-typescript/.codex-plugin/plugin.json +2 -2
  631. package/plugins/lisa-typescript/{.codex-plugin → hooks}/hooks.json +4 -4
  632. package/plugins/lisa-typescript-agy/plugin.json +11 -0
  633. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +43 -0
  634. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +43 -0
  635. package/plugins/lisa-typescript-cursor/hooks/block-suppress-directives.sh +73 -0
  636. package/plugins/lisa-typescript-cursor/hooks/format-on-edit.sh +79 -0
  637. package/plugins/lisa-typescript-cursor/hooks/lint-on-edit.sh +134 -0
  638. package/plugins/lisa-typescript-cursor/hooks/sg-scan-on-edit.sh +71 -0
  639. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  640. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  641. package/plugins/lisa-wiki-agy/ci/lisa-wiki-validate.yml +33 -0
  642. package/plugins/lisa-wiki-agy/commands/add-ingest.md +6 -0
  643. package/plugins/lisa-wiki-agy/commands/add-role.md +6 -0
  644. package/plugins/lisa-wiki-agy/commands/doctor.md +6 -0
  645. package/plugins/lisa-wiki-agy/commands/ingest.md +6 -0
  646. package/plugins/lisa-wiki-agy/commands/lint.md +6 -0
  647. package/plugins/lisa-wiki-agy/commands/migrate.md +6 -0
  648. package/plugins/lisa-wiki-agy/commands/onboard-me.md +6 -0
  649. package/plugins/lisa-wiki-agy/commands/query.md +6 -0
  650. package/plugins/lisa-wiki-agy/commands/setup/wiki.md +6 -0
  651. package/plugins/lisa-wiki-agy/commands/setup-automations.md +6 -0
  652. package/plugins/lisa-wiki-agy/commands/setup.md +6 -0
  653. package/plugins/lisa-wiki-agy/commands/status.md +6 -0
  654. package/plugins/lisa-wiki-agy/commands/tear-down-automations.md +6 -0
  655. package/plugins/lisa-wiki-agy/plugin.json +8 -0
  656. package/plugins/lisa-wiki-agy/schema/lisa-wiki-config.schema.json +118 -0
  657. package/plugins/lisa-wiki-agy/schema/wiki-structure.schema.json +51 -0
  658. package/plugins/lisa-wiki-agy/scripts/_wiki-lib.mjs +185 -0
  659. package/plugins/lisa-wiki-agy/scripts/diff-guard.mjs +116 -0
  660. package/plugins/lisa-wiki-agy/scripts/ensure-gitignore.mjs +131 -0
  661. package/plugins/lisa-wiki-agy/scripts/ingest-git.mjs +189 -0
  662. package/plugins/lisa-wiki-agy/scripts/ingest-memory.mjs +130 -0
  663. package/plugins/lisa-wiki-agy/scripts/ingest-roles.mjs +85 -0
  664. package/plugins/lisa-wiki-agy/scripts/ingest_slack_channel.py +329 -0
  665. package/plugins/lisa-wiki-agy/scripts/lint-wiki.mjs +324 -0
  666. package/plugins/lisa-wiki-agy/scripts/mcp-doctor.mjs +72 -0
  667. package/plugins/lisa-wiki-agy/scripts/render-contract.mjs +107 -0
  668. package/plugins/lisa-wiki-agy/scripts/rewrite-refs.mjs +144 -0
  669. package/plugins/lisa-wiki-agy/scripts/slack_oauth_user.py +179 -0
  670. package/plugins/lisa-wiki-agy/scripts/validate-config.mjs +232 -0
  671. package/plugins/lisa-wiki-agy/scripts/verify-migration.mjs +199 -0
  672. package/plugins/lisa-wiki-agy/scripts/wiki-status.mjs +345 -0
  673. package/plugins/lisa-wiki-agy/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
  674. package/plugins/lisa-wiki-agy/skills/lisa-wiki-add-role/SKILL.md +30 -0
  675. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
  676. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
  677. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-git/SKILL.md +25 -0
  678. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
  679. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
  680. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
  681. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
  682. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
  683. package/plugins/lisa-wiki-agy/skills/lisa-wiki-connector-web/SKILL.md +23 -0
  684. package/plugins/lisa-wiki-agy/skills/lisa-wiki-doctor/SKILL.md +47 -0
  685. package/plugins/lisa-wiki-agy/skills/lisa-wiki-ingest/SKILL.md +72 -0
  686. package/plugins/lisa-wiki-agy/skills/lisa-wiki-lint/SKILL.md +32 -0
  687. package/plugins/lisa-wiki-agy/skills/lisa-wiki-migrate/SKILL.md +43 -0
  688. package/plugins/lisa-wiki-agy/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
  689. package/plugins/lisa-wiki-agy/skills/lisa-wiki-query/SKILL.md +30 -0
  690. package/plugins/lisa-wiki-agy/skills/lisa-wiki-setup/SKILL.md +75 -0
  691. package/plugins/lisa-wiki-agy/skills/lisa-wiki-setup-automations/SKILL.md +80 -0
  692. package/plugins/lisa-wiki-agy/skills/lisa-wiki-status/SKILL.md +47 -0
  693. package/plugins/lisa-wiki-agy/skills/lisa-wiki-tear-down-automations/SKILL.md +34 -0
  694. package/plugins/lisa-wiki-agy/skills/lisa-wiki-usage/SKILL.md +50 -0
  695. package/plugins/lisa-wiki-agy/templates/agents/role-agent.claude.md +16 -0
  696. package/plugins/lisa-wiki-agy/templates/agents/role-agent.codex.toml +15 -0
  697. package/plugins/lisa-wiki-agy/templates/index.md +17 -0
  698. package/plugins/lisa-wiki-agy/templates/llm-wiki-contract.md +72 -0
  699. package/plugins/lisa-wiki-agy/templates/log.md +8 -0
  700. package/plugins/lisa-wiki-agy/templates/page-types/architecture.md +18 -0
  701. package/plugins/lisa-wiki-agy/templates/page-types/concept.md +18 -0
  702. package/plugins/lisa-wiki-agy/templates/page-types/decision.md +18 -0
  703. package/plugins/lisa-wiki-agy/templates/page-types/entity.md +19 -0
  704. package/plugins/lisa-wiki-agy/templates/page-types/open-question.md +18 -0
  705. package/plugins/lisa-wiki-agy/templates/page-types/playbook.md +18 -0
  706. package/plugins/lisa-wiki-agy/templates/page-types/project.md +19 -0
  707. package/plugins/lisa-wiki-agy/templates/page-types/requirement.md +19 -0
  708. package/plugins/lisa-wiki-agy/templates/page-types/staff.md +26 -0
  709. package/plugins/lisa-wiki-agy/templates/start-here.md +24 -0
  710. package/plugins/lisa-wiki-agy/templates/state-readme.md +20 -0
  711. package/plugins/lisa-wiki-agy/templates/wrapper-gitignore.txt +19 -0
  712. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +8 -0
  713. package/plugins/lisa-wiki-copilot/ci/lisa-wiki-validate.yml +33 -0
  714. package/plugins/lisa-wiki-copilot/commands/add-ingest.md +6 -0
  715. package/plugins/lisa-wiki-copilot/commands/add-role.md +6 -0
  716. package/plugins/lisa-wiki-copilot/commands/doctor.md +6 -0
  717. package/plugins/lisa-wiki-copilot/commands/ingest.md +6 -0
  718. package/plugins/lisa-wiki-copilot/commands/lint.md +6 -0
  719. package/plugins/lisa-wiki-copilot/commands/migrate.md +6 -0
  720. package/plugins/lisa-wiki-copilot/commands/onboard-me.md +6 -0
  721. package/plugins/lisa-wiki-copilot/commands/query.md +6 -0
  722. package/plugins/lisa-wiki-copilot/commands/setup/wiki.md +6 -0
  723. package/plugins/lisa-wiki-copilot/commands/setup-automations.md +6 -0
  724. package/plugins/lisa-wiki-copilot/commands/setup.md +6 -0
  725. package/plugins/lisa-wiki-copilot/commands/status.md +6 -0
  726. package/plugins/lisa-wiki-copilot/commands/tear-down-automations.md +6 -0
  727. package/plugins/lisa-wiki-copilot/schema/lisa-wiki-config.schema.json +118 -0
  728. package/plugins/lisa-wiki-copilot/schema/wiki-structure.schema.json +51 -0
  729. package/plugins/lisa-wiki-copilot/scripts/_wiki-lib.mjs +185 -0
  730. package/plugins/lisa-wiki-copilot/scripts/diff-guard.mjs +116 -0
  731. package/plugins/lisa-wiki-copilot/scripts/ensure-gitignore.mjs +131 -0
  732. package/plugins/lisa-wiki-copilot/scripts/ingest-git.mjs +189 -0
  733. package/plugins/lisa-wiki-copilot/scripts/ingest-memory.mjs +130 -0
  734. package/plugins/lisa-wiki-copilot/scripts/ingest-roles.mjs +85 -0
  735. package/plugins/lisa-wiki-copilot/scripts/ingest_slack_channel.py +329 -0
  736. package/plugins/lisa-wiki-copilot/scripts/lint-wiki.mjs +324 -0
  737. package/plugins/lisa-wiki-copilot/scripts/mcp-doctor.mjs +72 -0
  738. package/plugins/lisa-wiki-copilot/scripts/render-contract.mjs +107 -0
  739. package/plugins/lisa-wiki-copilot/scripts/rewrite-refs.mjs +144 -0
  740. package/plugins/lisa-wiki-copilot/scripts/slack_oauth_user.py +179 -0
  741. package/plugins/lisa-wiki-copilot/scripts/validate-config.mjs +232 -0
  742. package/plugins/lisa-wiki-copilot/scripts/verify-migration.mjs +199 -0
  743. package/plugins/lisa-wiki-copilot/scripts/wiki-status.mjs +345 -0
  744. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
  745. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-add-role/SKILL.md +30 -0
  746. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
  747. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
  748. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-git/SKILL.md +25 -0
  749. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
  750. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
  751. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
  752. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
  753. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
  754. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-connector-web/SKILL.md +23 -0
  755. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-doctor/SKILL.md +47 -0
  756. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-ingest/SKILL.md +72 -0
  757. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-lint/SKILL.md +32 -0
  758. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-migrate/SKILL.md +43 -0
  759. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
  760. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-query/SKILL.md +30 -0
  761. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-setup/SKILL.md +75 -0
  762. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-setup-automations/SKILL.md +80 -0
  763. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-status/SKILL.md +47 -0
  764. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-tear-down-automations/SKILL.md +34 -0
  765. package/plugins/lisa-wiki-copilot/skills/lisa-wiki-usage/SKILL.md +50 -0
  766. package/plugins/lisa-wiki-copilot/templates/agents/role-agent.claude.md +16 -0
  767. package/plugins/lisa-wiki-copilot/templates/agents/role-agent.codex.toml +15 -0
  768. package/plugins/lisa-wiki-copilot/templates/index.md +17 -0
  769. package/plugins/lisa-wiki-copilot/templates/llm-wiki-contract.md +72 -0
  770. package/plugins/lisa-wiki-copilot/templates/log.md +8 -0
  771. package/plugins/lisa-wiki-copilot/templates/page-types/architecture.md +18 -0
  772. package/plugins/lisa-wiki-copilot/templates/page-types/concept.md +18 -0
  773. package/plugins/lisa-wiki-copilot/templates/page-types/decision.md +18 -0
  774. package/plugins/lisa-wiki-copilot/templates/page-types/entity.md +19 -0
  775. package/plugins/lisa-wiki-copilot/templates/page-types/open-question.md +18 -0
  776. package/plugins/lisa-wiki-copilot/templates/page-types/playbook.md +18 -0
  777. package/plugins/lisa-wiki-copilot/templates/page-types/project.md +19 -0
  778. package/plugins/lisa-wiki-copilot/templates/page-types/requirement.md +19 -0
  779. package/plugins/lisa-wiki-copilot/templates/page-types/staff.md +26 -0
  780. package/plugins/lisa-wiki-copilot/templates/start-here.md +24 -0
  781. package/plugins/lisa-wiki-copilot/templates/state-readme.md +20 -0
  782. package/plugins/lisa-wiki-copilot/templates/wrapper-gitignore.txt +19 -0
  783. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +8 -0
  784. package/plugins/lisa-wiki-cursor/ci/lisa-wiki-validate.yml +33 -0
  785. package/plugins/lisa-wiki-cursor/commands/add-ingest.md +6 -0
  786. package/plugins/lisa-wiki-cursor/commands/add-role.md +6 -0
  787. package/plugins/lisa-wiki-cursor/commands/doctor.md +6 -0
  788. package/plugins/lisa-wiki-cursor/commands/ingest.md +6 -0
  789. package/plugins/lisa-wiki-cursor/commands/lint.md +6 -0
  790. package/plugins/lisa-wiki-cursor/commands/migrate.md +6 -0
  791. package/plugins/lisa-wiki-cursor/commands/onboard-me.md +6 -0
  792. package/plugins/lisa-wiki-cursor/commands/query.md +6 -0
  793. package/plugins/lisa-wiki-cursor/commands/setup/wiki.md +6 -0
  794. package/plugins/lisa-wiki-cursor/commands/setup-automations.md +6 -0
  795. package/plugins/lisa-wiki-cursor/commands/setup.md +6 -0
  796. package/plugins/lisa-wiki-cursor/commands/status.md +6 -0
  797. package/plugins/lisa-wiki-cursor/commands/tear-down-automations.md +6 -0
  798. package/plugins/lisa-wiki-cursor/schema/lisa-wiki-config.schema.json +118 -0
  799. package/plugins/lisa-wiki-cursor/schema/wiki-structure.schema.json +51 -0
  800. package/plugins/lisa-wiki-cursor/scripts/_wiki-lib.mjs +185 -0
  801. package/plugins/lisa-wiki-cursor/scripts/diff-guard.mjs +116 -0
  802. package/plugins/lisa-wiki-cursor/scripts/ensure-gitignore.mjs +131 -0
  803. package/plugins/lisa-wiki-cursor/scripts/ingest-git.mjs +189 -0
  804. package/plugins/lisa-wiki-cursor/scripts/ingest-memory.mjs +130 -0
  805. package/plugins/lisa-wiki-cursor/scripts/ingest-roles.mjs +85 -0
  806. package/plugins/lisa-wiki-cursor/scripts/ingest_slack_channel.py +329 -0
  807. package/plugins/lisa-wiki-cursor/scripts/lint-wiki.mjs +324 -0
  808. package/plugins/lisa-wiki-cursor/scripts/mcp-doctor.mjs +72 -0
  809. package/plugins/lisa-wiki-cursor/scripts/render-contract.mjs +107 -0
  810. package/plugins/lisa-wiki-cursor/scripts/rewrite-refs.mjs +144 -0
  811. package/plugins/lisa-wiki-cursor/scripts/slack_oauth_user.py +179 -0
  812. package/plugins/lisa-wiki-cursor/scripts/validate-config.mjs +232 -0
  813. package/plugins/lisa-wiki-cursor/scripts/verify-migration.mjs +199 -0
  814. package/plugins/lisa-wiki-cursor/scripts/wiki-status.mjs +345 -0
  815. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
  816. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-add-role/SKILL.md +30 -0
  817. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
  818. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
  819. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-git/SKILL.md +25 -0
  820. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
  821. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
  822. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
  823. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
  824. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
  825. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-connector-web/SKILL.md +23 -0
  826. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-doctor/SKILL.md +47 -0
  827. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-ingest/SKILL.md +72 -0
  828. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-lint/SKILL.md +32 -0
  829. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-migrate/SKILL.md +43 -0
  830. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
  831. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-query/SKILL.md +30 -0
  832. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-setup/SKILL.md +75 -0
  833. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-setup-automations/SKILL.md +80 -0
  834. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-status/SKILL.md +47 -0
  835. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-tear-down-automations/SKILL.md +34 -0
  836. package/plugins/lisa-wiki-cursor/skills/lisa-wiki-usage/SKILL.md +50 -0
  837. package/plugins/lisa-wiki-cursor/templates/agents/role-agent.claude.md +16 -0
  838. package/plugins/lisa-wiki-cursor/templates/agents/role-agent.codex.toml +15 -0
  839. package/plugins/lisa-wiki-cursor/templates/index.md +17 -0
  840. package/plugins/lisa-wiki-cursor/templates/llm-wiki-contract.md +72 -0
  841. package/plugins/lisa-wiki-cursor/templates/log.md +8 -0
  842. package/plugins/lisa-wiki-cursor/templates/page-types/architecture.md +18 -0
  843. package/plugins/lisa-wiki-cursor/templates/page-types/concept.md +18 -0
  844. package/plugins/lisa-wiki-cursor/templates/page-types/decision.md +18 -0
  845. package/plugins/lisa-wiki-cursor/templates/page-types/entity.md +19 -0
  846. package/plugins/lisa-wiki-cursor/templates/page-types/open-question.md +18 -0
  847. package/plugins/lisa-wiki-cursor/templates/page-types/playbook.md +18 -0
  848. package/plugins/lisa-wiki-cursor/templates/page-types/project.md +19 -0
  849. package/plugins/lisa-wiki-cursor/templates/page-types/requirement.md +19 -0
  850. package/plugins/lisa-wiki-cursor/templates/page-types/staff.md +26 -0
  851. package/plugins/lisa-wiki-cursor/templates/start-here.md +24 -0
  852. package/plugins/lisa-wiki-cursor/templates/state-readme.md +20 -0
  853. package/plugins/lisa-wiki-cursor/templates/wrapper-gitignore.txt +19 -0
  854. package/scripts/build-plugins.sh +28 -11
  855. package/scripts/generate-codex-plugin-artifacts.mjs +28 -48
  856. package/scripts/generate-copilot-plugin-artifacts.mjs +5 -0
  857. package/scripts/generate-cursor-plugin-artifacts.mjs +4 -0
  858. package/scripts/internal-copilot-runtime-probe.json +10 -4
  859. package/plugins/lisa/.codex-plugin/hooks/block-no-verify.sh +0 -37
  860. package/plugins/lisa/.codex-plugin/hooks/inject-flow-context.sh +0 -12
  861. package/plugins/lisa/.codex-plugin/hooks/inject-rules.sh +0 -33
  862. package/plugins/lisa/.codex-plugin/hooks/install-pkgs.sh +0 -69
  863. package/plugins/lisa/.codex-plugin/hooks/notify-ntfy.sh +0 -183
  864. package/plugins/lisa/.codex-plugin/hooks/setup-jira-cli.sh +0 -51
  865. /package/plugins/{lisa-harper-fabric/.codex-plugin → lisa-harper-fabric-copilot}/hooks/inject-rules.sh +0 -0
  866. /package/plugins/{lisa-nestjs/.codex-plugin → lisa-nestjs-copilot}/hooks/block-migration-edits.sh +0 -0
  867. /package/plugins/{lisa-rails/.codex-plugin → lisa-rails-copilot}/hooks/inject-rules.sh +0 -0
  868. /package/plugins/{lisa-rails/.codex-plugin → lisa-rails-copilot}/hooks/rubocop-on-edit.sh +0 -0
  869. /package/plugins/{lisa-rails/.codex-plugin → lisa-rails-copilot}/hooks/sg-scan-on-edit.sh +0 -0
  870. /package/plugins/{lisa-typescript/.codex-plugin → lisa-typescript-copilot}/hooks/block-suppress-directives.sh +0 -0
  871. /package/plugins/{lisa-typescript/.codex-plugin → lisa-typescript-copilot}/hooks/format-on-edit.sh +0 -0
  872. /package/plugins/{lisa-typescript/.codex-plugin → lisa-typescript-copilot}/hooks/lint-on-edit.sh +0 -0
  873. /package/plugins/{lisa-typescript/.codex-plugin → lisa-typescript-copilot}/hooks/sg-scan-on-edit.sh +0 -0
@@ -0,0 +1,402 @@
1
+ # Brownfield: Isolated Approach
2
+
3
+ Build the React Native + Expo code as a prebuilt native library, **AAR** on Android and **XCFramework** on iOS, and consume it from the existing native app like any other dependency.
4
+
5
+ ## When to use
6
+
7
+ - Native and React Native are owned by different teams or release on different cadences.
8
+ - The native team must not be required to install Node.js, Yarn, or React Native tooling.
9
+ - React Native code lives in a separate repo or monorepo from the native app.
10
+ - You want the smallest possible footprint on the existing native build pipeline.
11
+
12
+ If a single team owns both layers, is comfortable with React Native tooling and needs deep integration, see [./brownfield-integrated.md](./brownfield-integrated.md).
13
+
14
+ ## What you produce
15
+
16
+ | Platform | Artifact | Default location |
17
+ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
18
+ | Android | `{group}:{libraryName}:{version}` AAR | Local Maven (`~/.m2`) by default; remote Maven also supported |
19
+ | iOS | Set of `.xcframework`s — see [the iOS section below](#ios) for how `ios.buildReactNativeFromSource` (default `false` on SDK 56+) controls whether you get 5 frameworks or 2 — or a single Swift Package via `--package` | `./artifacts` |
20
+
21
+ The JavaScript bundle is **embedded inside the artifact** in release builds, so the native app does not need Metro at runtime in production.
22
+
23
+ ## Prerequisites
24
+
25
+ - **Expo SDK 55 or later** — brownfield support, `expo-brownfield`, and the required runtime classes are only available on SDK 55+. Earlier SDKs will not work.
26
+ - **Node.js (LTS)** — runs JavaScript and the Expo CLI.
27
+ - **Yarn** — manages JavaScript dependencies.
28
+
29
+ Node and Yarn are only needed in the environment that _builds_ the artifact. The consuming native app does not need them.
30
+
31
+ ---
32
+
33
+ ## 1) Set up the Expo project
34
+
35
+ ### Create a new Expo project
36
+
37
+ ```sh
38
+ npx create-expo-app@latest my-project --template default@sdk-55
39
+ ```
40
+
41
+ **Pin to SDK 55 or later — earlier SDKs do not support brownfield.** The project can live in a separate repo or alongside the native app in a monorepo; it does not need to be inside the native project.
42
+
43
+ ### Install expo-brownfield
44
+
45
+ ```sh
46
+ cd my-project
47
+ npx expo install expo-brownfield
48
+ ```
49
+
50
+ The plugin self-registers in `app.json` with defaults derived from your app config.
51
+
52
+ ### Configure the plugin (optional)
53
+
54
+ To override the auto-generated names, expand the plugin entry in `app.json`:
55
+
56
+ ```json
57
+ {
58
+ "expo": {
59
+ "plugins": [
60
+ [
61
+ "expo-brownfield",
62
+ {
63
+ "ios": {
64
+ "targetName": "MyBrownfield",
65
+ "bundleIdentifier": "com.example.mybrownfield"
66
+ },
67
+ "android": {
68
+ "libraryName": "mybrownfield",
69
+ "group": "com.example",
70
+ "package": "com.example.mybrownfield",
71
+ "version": "1.0.0"
72
+ }
73
+ }
74
+ ]
75
+ ]
76
+ }
77
+ }
78
+ ```
79
+
80
+ **iOS options** — `targetName` (XCFramework target name), `bundleIdentifier` (framework bundle ID).
81
+
82
+ **Android options** — `libraryName` (AAR name), `group` (Maven group ID), `package` (Android package), `version` (library version), `publishing` (Maven publication targets — see [Publishing the Android AAR](#publishing-the-android-aar)).
83
+
84
+ ### Speed up iOS builds with prebuilt Expo modules
85
+
86
+ Enable `expo-build-properties`'s `ios.usePrecompiledModules` so `pod install` downloads each Expo module as a prebuilt `.xcframework` instead of compiling it from source. `build:ios` detects those xcframeworks under `ios/Pods/` and bundles them into the Swift Package output alongside the brownfield framework, React, Hermes, and `ReactNativeDependencies`.
87
+
88
+ ```json
89
+ {
90
+ "expo": {
91
+ "plugins": [
92
+ ["expo-build-properties", { "ios": { "usePrecompiledModules": true } }],
93
+ "expo-brownfield"
94
+ ]
95
+ }
96
+ }
97
+ ```
98
+
99
+ When precompiled modules are detected, `build:ios` is pinned to a single flavor (`--debug` or `--release`) per package — Swift Package Manager has no per-configuration overload for `.binaryTarget(path:)`. Build once per flavor and distribute the two packages side by side.
100
+
101
+ ---
102
+
103
+ ## 2) Build the native libraries
104
+
105
+ ### Android
106
+
107
+ ```sh
108
+ npx expo-brownfield build:android
109
+ ```
110
+
111
+ Produces an AAR and publishes it to the local Maven repository at `~/.m2`. The Maven coordinates come from the plugin config — e.g. `com.example:mybrownfield:1.0.0`.
112
+
113
+ #### Publishing the Android AAR
114
+
115
+ The plugin's `publishing` option controls where the AAR is published. When unset, it defaults to local Maven. To push to other targets (e.g. a shared CI Maven, an internal Artifactory/Nexus, or a folder pulled into another build), declare the publications explicitly:
116
+
117
+ ```json
118
+ {
119
+ "expo": {
120
+ "plugins": [
121
+ [
122
+ "expo-brownfield",
123
+ {
124
+ "android": {
125
+ "libraryName": "mybrownfield",
126
+ "group": "com.example",
127
+ "version": "1.0.0",
128
+ "publishing": [
129
+ { "type": "localMaven" },
130
+ {
131
+ "type": "localDirectory",
132
+ "name": "build",
133
+ "path": "./out/maven"
134
+ },
135
+ {
136
+ "type": "remotePublic",
137
+ "name": "company",
138
+ "url": "https://maven.example.com/releases"
139
+ },
140
+ {
141
+ "type": "remotePrivate",
142
+ "name": "artifactory",
143
+ "url": { "variable": "ARTIFACTORY_URL" },
144
+ "username": { "variable": "ARTIFACTORY_USER" },
145
+ "password": { "variable": "ARTIFACTORY_TOKEN" }
146
+ }
147
+ ]
148
+ }
149
+ }
150
+ ]
151
+ ]
152
+ }
153
+ }
154
+ ```
155
+
156
+ Supported `type` values: `localMaven`, `localDirectory`, `remotePublic`, `remotePrivate`. For private repos, credentials and URL accept either inline strings or `{ "variable": "ENV_VAR_NAME" }` to read from the environment at publish time.
157
+
158
+ By default, `build:android` runs every declared publication. To pick specific publications or repositories from the command line, use the CLI flags:
159
+
160
+ ```sh
161
+ npx expo-brownfield build:android --task publishReleasePublicationToCompanyRepository
162
+ npx expo-brownfield tasks:android # list available publish tasks and repositories
163
+ ```
164
+
165
+ ### iOS
166
+
167
+ ```sh
168
+ npx expo-brownfield build:ios
169
+ ```
170
+
171
+ Outputs to `./artifacts`. The set depends on the `ios.buildReactNativeFromSource` flag (set via `expo-build-properties`):
172
+
173
+ - **`buildReactNativeFromSource: false`** (default on SDK 56+) — React Native is consumed as a prebuilt binary, so `build:ios` emits five xcframeworks side-by-side: `{TargetName}.xcframework`, `React.xcframework`, `ReactNativeDependencies.xcframework`, `ExpoModulesJSI.xcframework`, and `hermesvm.xcframework`.
174
+ - **`buildReactNativeFromSource: true`** (default on SDK 55, opt-in on SDK 56+) — React Native is compiled from source and statically linked into the brownfield framework, leaving two xcframeworks: `{TargetName}.xcframework` and `hermesvm.xcframework`.
175
+
176
+ To force source builds on SDK 56+, add `expo-build-properties` to `app.json`:
177
+
178
+ ```json
179
+ {
180
+ "expo": {
181
+ "plugins": [
182
+ ["expo-build-properties", { "ios": { "buildReactNativeFromSource": true } }],
183
+ "expo-brownfield"
184
+ ]
185
+ }
186
+ }
187
+ ```
188
+
189
+ **Every xcframework in the produced set must be embedded in the consuming app** (Embed & Sign). The Swift Package output below (`--package`) wires this for you automatically.
190
+
191
+ > **iOS deployment target:** the brownfield artifact inherits the Expo project's iOS deployment target (16.4 on SDK 56+). The consuming app's deployment target must be set to 16.4 or higher; otherwise Xcode will refuse to link the embedded frameworks. If the host app is on an older floor (e.g. iOS 14.0), bump its `IPHONEOS_DEPLOYMENT_TARGET` before adding the artifact.
192
+
193
+ #### Ship as a Swift Package (recommended)
194
+
195
+ Pass `--package [name]` to bundle the output as a self-contained Swift Package instead of separate `.xcframework` directories. The host iOS app then consumes it via **Add Package Dependencies → Add Local** in Xcode and links every bundled framework automatically — no manual drag-and-drop, no per-framework "Embed & Sign" toggles.
196
+
197
+ ```sh
198
+ npx expo-brownfield build:ios --release --package MyAppPackage
199
+ ```
200
+
201
+ The flag accepts an optional name. If omitted, the package is named `{TargetName}Artifacts`. The resulting directory is a complete Swift Package:
202
+
203
+ ```
204
+ artifacts/MyAppPackage/
205
+ ├── Package.swift
206
+ └── xcframeworks/
207
+ ├── MyAppPackage.xcframework
208
+ ├── hermesvm.xcframework
209
+ ├── React.xcframework
210
+ └── ReactNativeDependencies.xcframework
211
+ ```
212
+
213
+ When `usePrecompiledModules` is enabled, the package directory is suffixed with the build flavor (e.g. `MyAppPackage-release/`) and includes every prebuilt Expo module xcframework. Run `build:ios --debug --package …` and `build:ios --release --package …` separately, and point your host app at the matching package for each build configuration.
214
+
215
+ ### Generate native projects for debugging
216
+
217
+ To inspect or debug the generated native code, run prebuild:
218
+
219
+ ```sh
220
+ npx expo prebuild
221
+ ```
222
+
223
+ This creates `android/` and `ios/` directories containing the brownfield wrappers:
224
+
225
+ **Android (Kotlin):** `ReactNativeHostManager`, `BrownfieldActivity`, `ReactNativeFragment`, `ReactNativeViewFactory`, `BrownfieldMessaging`.
226
+
227
+ **iOS (Swift):** `ReactNativeHostManager`, `ReactNativeViewController`, `ReactNativeView` (SwiftUI), `BrownfieldMessaging`, `ReactNativeDelegate`.
228
+
229
+ ---
230
+
231
+ ## 3) Consume from the native app
232
+
233
+ ### Android
234
+
235
+ #### Add the Maven dependency
236
+
237
+ In `app/build.gradle.kts`:
238
+
239
+ ```kotlin
240
+ dependencies {
241
+ implementation("com.example:mybrownfield:1.0.0")
242
+ }
243
+ ```
244
+
245
+ If consuming from the local Maven repo, register `mavenLocal()` in `settings.gradle.kts`:
246
+
247
+ ```kotlin
248
+ dependencyResolutionManagement {
249
+ repositories {
250
+ google()
251
+ mavenCentral()
252
+ mavenLocal()
253
+ }
254
+ }
255
+ ```
256
+
257
+ > **Note:** `mavenLocal()` must be added under `dependencyResolutionManagement`, not the deprecated top-level `allprojects { repositories { ... } }` block.
258
+
259
+ If the artifact is published to a remote Maven, declare that repository in the same `dependencyResolutionManagement` block instead — credentials follow Gradle's standard `maven { url = uri(...); credentials { username = ...; password = ... } }` form.
260
+
261
+ #### Show a React Native screen
262
+
263
+ Extend `BrownfieldActivity` and call `showReactNativeFragment()`:
264
+
265
+ ```kotlin
266
+ import android.os.Bundle
267
+ import com.example.mybrownfield.BrownfieldActivity
268
+ import com.example.mybrownfield.showReactNativeFragment
269
+
270
+ class ExpoActivity : BrownfieldActivity() {
271
+ override fun onCreate(savedInstanceState: Bundle?) {
272
+ super.onCreate(savedInstanceState)
273
+ showReactNativeFragment()
274
+ }
275
+ }
276
+ ```
277
+
278
+ `BrownfieldActivity` extends `AppCompatActivity` and forwards configuration changes. `showReactNativeFragment()` registers the React Native root fragment and wires native back-button handling automatically.
279
+
280
+ Register the activity in `AndroidManifest.xml`:
281
+
282
+ ```xml
283
+ <activity
284
+ android:name=".ExpoActivity"
285
+ android:theme="@style/Theme.AppCompat.Light.NoActionBar"
286
+ android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
287
+ />
288
+ ```
289
+
290
+ Launch it from native code:
291
+
292
+ ```kotlin
293
+ startActivity(Intent(this, ExpoActivity::class.java))
294
+ ```
295
+
296
+ ### iOS
297
+
298
+ #### Add the artifacts to the Xcode project
299
+
300
+ If you built a **Swift Package** (`build:ios --package …`):
301
+
302
+ - In Xcode, **File → Add Package Dependencies… → Add Local…**, then select the generated package directory (e.g. `artifacts/MyAppPackage/`).
303
+ - Add the package's product to your app target. Xcode links every bundled XCFramework through the aggregate library product — no manual "Embed & Sign" step.
304
+ - If you produced both debug and release packages (because `usePrecompiledModules` is enabled), point the host app at the matching package per build configuration.
305
+
306
+ If you built **standalone XCFrameworks** (default output):
307
+
308
+ - Drag **every** `.xcframework` produced under `./artifacts` into the Xcode project navigator.
309
+ - In the import dialog, check **Copy items if needed** and add them to your app target.
310
+ - Under the app target's **General** tab → **Frameworks, Libraries, and Embedded Content**, set **every** framework to **Embed & Sign**. Forgetting one (commonly `hermesvm.xcframework`) is a leading cause of runtime "Library not loaded" crashes — see [./troubleshooting.md](./troubleshooting.md#ios-xcframework-signing-isolated-approach).
311
+
312
+ #### Initialize React Native at app launch
313
+
314
+ Call `ReactNativeHostManager.shared.initialize()` from `AppDelegate` **before any React Native view is created**. Initialization is asynchronous-friendly but must precede the first `ReactNativeViewController`/`ReactNativeView` instantiation.
315
+
316
+ ```swift
317
+ import UIKit
318
+ import MyAppBrownfield // Replace with your target name
319
+
320
+ @main
321
+ class AppDelegate: UIResponder, UIApplicationDelegate {
322
+ func application(
323
+ _ application: UIApplication,
324
+ didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
325
+ ) -> Bool {
326
+ ReactNativeHostManager.shared.initialize()
327
+ return true
328
+ }
329
+ }
330
+ ```
331
+
332
+ #### Present a React Native view (UIKit)
333
+
334
+ ```swift
335
+ import UIKit
336
+ import MyAppBrownfield
337
+
338
+ class ViewController: UIViewController {
339
+ @IBAction func openReactNative(_ sender: Any) {
340
+ let rnViewController = ReactNativeViewController(moduleName: "main")
341
+ navigationController?.pushViewController(rnViewController, animated: true)
342
+ }
343
+ }
344
+ ```
345
+
346
+ Pass props and launch options if needed:
347
+
348
+ ```swift
349
+ let rnViewController = ReactNativeViewController(
350
+ moduleName: "main",
351
+ initialProps: ["userId": "123"],
352
+ launchOptions: [:]
353
+ )
354
+ ```
355
+
356
+ > **Note:** `moduleName` must match the name registered via `AppRegistry.registerComponent(...)` in the Expo project's JS entry point. The default Expo template registers `"main"`.
357
+
358
+ #### Present a React Native view (SwiftUI)
359
+
360
+ ```swift
361
+ import SwiftUI
362
+ import MyAppBrownfield
363
+
364
+ struct ContentView: View {
365
+ @State private var showReactNative = false
366
+
367
+ var body: some View {
368
+ Button("Open React Native") {
369
+ showReactNative = true
370
+ }
371
+ .fullScreenCover(isPresented: $showReactNative) {
372
+ ReactNativeView(moduleName: "main")
373
+ }
374
+ }
375
+ }
376
+ ```
377
+
378
+ ---
379
+
380
+ ## Development vs. production
381
+
382
+ ### Development (debug builds)
383
+
384
+ Start Metro in the Expo project:
385
+
386
+ ```sh
387
+ npx expo start
388
+ ```
389
+
390
+ Build and run the native app in debug. React Native screens load JS from the Metro dev server over HTTP with full hot reloading. The device or emulator must be able to reach the dev machine — see [./troubleshooting.md](./troubleshooting.md) if Metro connections fail.
391
+
392
+ ### Production (release builds)
393
+
394
+ The JS bundle is embedded inside the AAR/XCFramework. Metro is not used. Build the native app in Release configuration and confirm the React Native screen loads.
395
+
396
+ ---
397
+
398
+ ## Related references
399
+
400
+ - [./brownfield-integrated.md](./brownfield-integrated.md) — Alternative: add RN directly to the native build.
401
+ - [./comparison.md](./comparison.md) — Decide between isolated and integrated.
402
+ - [./troubleshooting.md](./troubleshooting.md) — Common Metro, build, and integration issues.
@@ -0,0 +1,63 @@
1
+ # Brownfield: Isolated vs. Integrated
2
+
3
+ Use this reference to choose between the two ways of adding React Native + Expo to an existing native app. If the team and constraints are already known, jump to one of:
4
+
5
+ - [./brownfield-isolated.md](./brownfield-isolated.md) — RN as a prebuilt AAR / XCFramework.
6
+ - [./brownfield-integrated.md](./brownfield-integrated.md) — RN added directly to existing Gradle / CocoaPods.
7
+
8
+ ## Quick decision rules
9
+
10
+ - **Choose isolated** if the native team must consume React Native as a regular library (AAR or XCFramework) without installing Node, Yarn, or RN tooling.
11
+ - **Choose isolated** if React Native and the native app live in **separate repositories**, or release on **different cadences**.
12
+ - **Choose isolated** if the existing native build is heavily customized (Tuist, Bazel, Buck, custom Gradle plugins) and adding the React Native Gradle plugin or CocoaPods autolinking would be disruptive.
13
+ - **Choose integrated** if a **single team** owns the native and React Native code and is willing to maintain the RN build chain inside the native project.
14
+ - **Choose integrated** if you want **hot reload, JS source maps, and devtools** to "just work" inside the existing native build with no extra orchestration.
15
+ - **Choose integrated** if you expect to add many Expo modules and want them autolinked by the standard Expo tooling rather than rebuilt into a fresh artifact each time.
16
+
17
+ When in doubt — and especially when the question is "can the native team avoid React Native tooling?" — pick **isolated**.
18
+
19
+ ## Comparison
20
+
21
+ | Dimension | Isolated | Integrated |
22
+ | ---------------------------------------------------- | ----------------------------------------------------------------------- | --------------------------------------------------------------------- |
23
+ | What ships to the native app | Prebuilt AAR + XCFramework | React Native + Expo sources, autolinked into the existing build |
24
+ | Native team needs Node / Yarn / RN CLI | **No** | **Yes** |
25
+ | Build-system footprint | Minimal — one Maven dependency, two embedded XCFrameworks | Pervasive — React Native Gradle plugin, Podfile, autolinking, codegen |
26
+ | Iteration speed for RN devs | Fast in isolation; native rebuild needed to pick up new artifact | Fast end-to-end; one combined build |
27
+ | Dev-time hot reload | Yes (via Metro, when running the consumer app in debug) | Yes (native build embeds Metro detection) |
28
+ | Production JS bundle location | Embedded in the AAR/XCFramework | Embedded in the APK/IPA by the RN Gradle plugin / Xcode build phase |
29
+ | Maintenance ownership | RN team owns the artifact pipeline; native team owns the consumer build | One team owns the unified build |
30
+ | Suitability for incremental adoption | High — easy to slot into one screen of an existing app | High, but with more setup before the first screen renders |
31
+ | Suitability for multi-repo / multi-team setups | High | Low — tends to require a monorepo |
32
+ | Risk of build-system conflicts with existing tooling | Low | Higher (RN Gradle plugin, codegen, Podfile assumptions) |
33
+ | Re-publish workflow for RN changes | `npx expo-brownfield build:*` then bump the dependency | Rebuild the native app |
34
+
35
+ ## Common scenarios
36
+
37
+ **"React Native code is in `xyz-react` and the native apps are in `xyz-ios` and `xyz-android`. Each ships independently."**
38
+ → **Isolated.** Build versioned artifacts (`com.xyz:onboarding:1.4.0`, `Onboarding.xcframework`). Native apps pin a version like any other dependency.
39
+
40
+ **"Our app uses a heavily customized Gradle setup with multiple variants and flavors."**
41
+ → **Isolated.** The RN Gradle plugin is opinionated about variant naming and bundle output paths; integrating cleanly with non-standard variants is non-trivial.
42
+
43
+ **"We don't know yet whether RN will stay — we want to be able to remove it cheaply."**
44
+ → **Isolated.** Removing the dependency removes the framework; the native build is barely touched.
45
+
46
+ **"Our iOS team uses Tuist and refuses to add Node to the iOS build."**
47
+ → **Isolated.** Ship an XCFramework. The iOS team adds two `.xcframework` files and one call to `ReactNativeHostManager.shared.initialize()` in `AppDelegate`. No Node, no CocoaPods changes to Expo.
48
+
49
+ **"We have one repo, one team, and we want to deeply integrate React Native with the onboarding flow to an existing Android app."**
50
+ → **Integrated.** Move the existing `android-project` into `my-project/android/`, add the React Native Gradle plugin to `settings.gradle`, register `MainApplication`, and host the flow in a `ReactActivity`. One build pipeline.
51
+
52
+ **"We want to use CNG on the RN code and not worry about manual RN upgrades."**
53
+ → **Isolated.** The AAR/XCFramework approach decouples the Expo RN version from the native app's build, so you can upgrade Expo and React Native independently of the native app's release cycle. The integrated approach requires more coordination between the RN version and the native app's build.
54
+
55
+ ## What is identical between the approaches
56
+
57
+ - The React Native + Expo source code itself — the same Expo project, the same `app.json`, the same modules — only differs in **how** it is shipped.
58
+ - The JavaScript module registered with `AppRegistry.registerComponent("main", () => App)` is the same; the native side passes the same `moduleName` string in both flows.
59
+
60
+ ## What is different at runtime
61
+
62
+ - **Isolated** uses Expo's brownfield runtime wrappers — `ReactNativeHostManager`, `BrownfieldActivity`, `ReactNativeViewController`, `ReactNativeView`. These are generated by `npx expo-brownfield build:*` and bundled into the artifact.
63
+ - **Integrated** uses the standard React Native runtime — `ReactActivity`, `ReactActivityDelegate`, `RCTReactNativeFactory`, `ExpoReactNativeFactory` — exposed by `react-native` and `expo` directly.
@@ -0,0 +1,88 @@
1
+ # Brownfield Troubleshooting
2
+
3
+ Cross-cutting issues that apply to both the isolated and integrated approaches. For approach-specific setup, see [./brownfield-isolated.md](./brownfield-isolated.md) or [./brownfield-integrated.md](./brownfield-integrated.md).
4
+
5
+ ## Build failures
6
+
7
+ **Symptom:** Gradle or Xcode build fails after a config change, dependency upgrade, or Expo SDK bump.
8
+
9
+ - **Integrated approach** — regenerate native projects from scratch:
10
+ ```sh
11
+ npx expo prebuild --clean
12
+ ```
13
+ Then `cd ios && pod install` and re-open the `.xcworkspace`.
14
+ - **Isolated approach** — clear the local Maven cache and rebuild the artifact:
15
+ ```sh
16
+ rm -rf ~/.m2/repository/<group>/<libraryName>
17
+ npx expo-brownfield build:android
18
+ npx expo-brownfield build:ios
19
+ ```
20
+ - For stubborn iOS issues, also delete `ios/build/`, `ios/Pods/`, and `ios/Podfile.lock`, then re-run `pod install`.
21
+ - For stubborn Android issues, `./gradlew clean` and delete the project's `.gradle/` and `build/` directories.
22
+
23
+ ## Missing autolinked Expo modules
24
+
25
+ **Symptom:** Compilation succeeds but a module throws "Native module cannot be null" / "Cannot find native module 'X'" at runtime.
26
+
27
+ - Install with `npx expo install <package>` rather than plain `yarn add` — `expo install` picks the version compatible with the current SDK.
28
+ - After installing a new module, rebuild the native app. Autolinking runs at native build time, not at JS bundle time.
29
+ - For the **isolated approach**, you must re-run `npx expo-brownfield build:android|ios` after adding a module, and republish/re-embed the new artifact.
30
+
31
+ ## Metro connection
32
+
33
+ **Symptom:** "Could not connect to development server" / red screen on launch in debug.
34
+
35
+ - Ensure the device or emulator can reach the dev machine. The Android emulator can talk to the host via `10.0.2.2`; physical devices need a reachable LAN IP.
36
+ - For physical Android devices on USB: `adb reverse tcp:8081 tcp:8081`.
37
+ - Confirm Metro is actually running: `npx expo start` from the Expo project (or `yarn start` from the workspace root).
38
+ - Verify the debug `AndroidManifest.xml` enables cleartext traffic — Android 9+ blocks HTTP by default. The debug variant should include `android:usesCleartextTraffic="true"` on `<application>`, or a `network_security_config` allowing the dev server.
39
+ - iOS simulator: Metro should be reachable at `localhost:8081`. If it is not, check that ATS exceptions are still in place in `Info.plist` for `localhost` (the Expo template ships this by default).
40
+
41
+ ## iOS XCFramework signing (isolated approach)
42
+
43
+ **Symptom:** App launches but immediately crashes with "Library not loaded" or codesign errors during archive.
44
+
45
+ - **Every** xcframework produced by `build:ios` must be set to **Embed & Sign** in the app target's **Frameworks, Libraries, and Embedded Content** section. On SDK 56+ this is five frameworks: `{TargetName}.xcframework`, `React.xcframework`, `ReactNativeDependencies.xcframework`, `ExpoModulesJSI.xcframework`, and `hermesvm.xcframework`. On SDK 55 it's two: `{TargetName}.xcframework` and `hermesvm.xcframework`. Missing any of them is a common cause of runtime crashes.
46
+ - The frameworks must be added to the _app target_, not a framework or extension target.
47
+ - Prefer the Swift Package output (`build:ios --package`) — it links every bundled xcframework through one aggregate product, so you cannot forget one.
48
+
49
+ ## iOS architecture / simulator mismatch
50
+
51
+ **Symptom:** "Building for iOS Simulator, but the linked library was built for iOS" or "Undefined symbols for architecture arm64".
52
+
53
+ - The XCFramework includes both device and simulator slices. If a slice is missing, rebuild on the missing platform. The `expo-brownfield build:ios` command produces both by default.
54
+ - On Apple Silicon simulators, do **not** set `EXCLUDED_ARCHS = arm64` for the simulator configuration — Apple Silicon simulators require `arm64`. The classic Rosetta-only exclusion is no longer correct.
55
+
56
+ ## Android `mavenLocal()` not found (isolated approach)
57
+
58
+ **Symptom:** Gradle reports "Could not find com.example:mybrownfield:1.0.0" even after a successful `expo-brownfield build:android`.
59
+
60
+ - `mavenLocal()` must be declared under `dependencyResolutionManagement { repositories { ... } }` in `settings.gradle.kts`, not the deprecated top-level `allprojects { repositories { ... } }` block. The deprecated form is silently ignored when `dependencyResolutionManagement` is present.
61
+ - Confirm the artifact actually landed in `~/.m2`:
62
+ ```sh
63
+ find ~/.m2/repository -name "mybrownfield*"
64
+ ```
65
+ - Verify the `group` and `libraryName` in the consumer's dependency line match what the plugin config emitted.
66
+
67
+ ## Module name mismatch
68
+
69
+ **Symptom:** The native view loads but renders a blank screen, with "Application 'X' has not been registered" in the JS logs.
70
+
71
+ - The `moduleName` passed to `ReactNativeViewController(moduleName: "main")` (iOS) or returned from `getMainComponentName()` (Android) must equal the name passed to `AppRegistry.registerComponent("main", () => App)` in the JS entry point.
72
+ - The default Expo template registers `"main"`. If you changed the registration, update every native call site.
73
+
74
+ ## Monorepo: autolinking can't find the Expo project
75
+
76
+ **Symptom:** Gradle or CocoaPods fails resolving Expo modules even though they are installed.
77
+
78
+ - **Android (integrated):** set `root = file("../../my-project")` (or the correct relative path) inside the `react { ... }` block in `app/build.gradle`, and explicitly set the project root in `settings.gradle` before `expoAutolinking.useExpoModules()`.
79
+ - **iOS (integrated):** set `:app_path` in `use_react_native!` to the absolute path of the Expo project root. Optionally pass `EXPO_PROJECT_ROOT=/abs/path` to `pod install`.
80
+ - Confirm `node_modules/` is installed at the workspace root (`yarn install` from the monorepo root, not from the Expo project subdirectory).
81
+
82
+ ## After upgrading Expo SDK
83
+
84
+ If the brownfield setup stops building after an SDK upgrade:
85
+
86
+ - Re-run `npx expo install --fix` in the Expo project to align native module versions.
87
+ - Rebuild the artifact (isolated) or run `npx expo prebuild --clean` (integrated).
88
+ - Compare the new `templates/expo-template-bare-minimum` for the target SDK against your customized native files — Expo occasionally changes Gradle plugin names, Podfile helpers, or AppDelegate entry points across SDKs.
@@ -0,0 +1,92 @@
1
+ ---
2
+ name: expo-cicd-workflows
3
+ description: Helps understand and write EAS workflow YAML files for Expo projects. Use this skill when the user asks about CI/CD or workflows in an Expo or EAS context, mentions .eas/workflows/, or wants help with EAS build pipelines or deployment automation.
4
+ allowed-tools: "Read,Write,Bash(node:*)"
5
+ version: 1.0.0
6
+ license: MIT License
7
+ ---
8
+
9
+ # EAS Workflows Skill
10
+
11
+ Help developers write and edit EAS CI/CD workflow YAML files.
12
+
13
+ ## Reference Documentation
14
+
15
+ Fetch these resources before generating or validating workflow files. Use the fetch script (implemented using Node.js) in this skill's `scripts/` directory; it caches responses using ETags for efficiency:
16
+
17
+ ```bash
18
+ # Fetch resources
19
+ node {baseDir}/scripts/fetch.js <url>
20
+ ```
21
+
22
+ 1. **JSON Schema** — https://api.expo.dev/v2/workflows/schema
23
+ - It is NECESSARY to fetch this schema
24
+ - Source of truth for validation
25
+ - All job types and their required/optional parameters
26
+ - Trigger types and configurations
27
+ - Runner types, VM images, and all enums
28
+
29
+ 2. **Syntax Documentation** — https://raw.githubusercontent.com/expo/expo/refs/heads/main/docs/pages/eas/workflows/syntax.mdx
30
+ - Overview of workflow YAML syntax
31
+ - Examples and English explanations
32
+ - Expression syntax and contexts
33
+
34
+ 3. **Pre-packaged Jobs** — https://raw.githubusercontent.com/expo/expo/refs/heads/main/docs/pages/eas/workflows/pre-packaged-jobs.mdx
35
+ - Documentation for supported pre-packaged job types
36
+ - Job-specific parameters and outputs
37
+
38
+ Do not rely on memorized values; these resources evolve as new features are added.
39
+
40
+ ## Workflow File Location
41
+
42
+ Workflows live in `.eas/workflows/*.yml` (or `.yaml`).
43
+
44
+ ## Top-Level Structure
45
+
46
+ A workflow file has these top-level keys:
47
+
48
+ - `name` — Display name for the workflow
49
+ - `on` — Triggers that start the workflow (at least one required)
50
+ - `jobs` — Job definitions (required)
51
+ - `defaults` — Shared defaults for all jobs
52
+ - `concurrency` — Control parallel workflow runs
53
+
54
+ Consult the schema for the full specification of each section.
55
+
56
+ ## Expressions
57
+
58
+ Use `${{ }}` syntax for dynamic values. The schema defines available contexts:
59
+
60
+ - `github.*` — GitHub repository and event information
61
+ - `inputs.*` — Values from `workflow_dispatch` inputs
62
+ - `needs.*` — Outputs and status from dependent jobs
63
+ - `jobs.*` — Job outputs (alternative syntax)
64
+ - `steps.*` — Step outputs within custom jobs
65
+ - `workflow.*` — Workflow metadata
66
+
67
+ ## Generating Workflows
68
+
69
+ When generating or editing workflows:
70
+
71
+ 1. Fetch the schema to get current job types, parameters, and allowed values
72
+ 2. Validate that required fields are present for each job type
73
+ 3. Verify job references in `needs` and `after` exist in the workflow
74
+ 4. Check that expressions reference valid contexts and outputs
75
+ 5. Ensure `if` conditions respect the schema's length constraints
76
+
77
+ ## Validation
78
+
79
+ After generating or editing a workflow file, validate it against the schema:
80
+
81
+ ```sh
82
+ # Install dependencies if missing
83
+ [ -d "{baseDir}/scripts/node_modules" ] || npm install --prefix {baseDir}/scripts
84
+
85
+ node {baseDir}/scripts/validate.js <workflow.yml> [workflow2.yml ...]
86
+ ```
87
+
88
+ The validator fetches the latest schema and checks the YAML structure. Fix any reported errors before considering the workflow complete.
89
+
90
+ ## Answering Questions
91
+
92
+ When users ask about available options (job types, triggers, runner types, etc.), fetch the schema and derive the answer from it rather than relying on potentially outdated information.