@codyswann/lisa 4.74.9 → 4.75.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 (799) hide show
  1. package/.claude-plugin/marketplace.json +60 -0
  2. package/dist/core/lisa-skill-sources.d.ts +3 -3
  3. package/dist/core/lisa-skill-sources.d.ts.map +1 -1
  4. package/dist/core/lisa-skill-sources.js +3 -2
  5. package/dist/core/lisa-skill-sources.js.map +1 -1
  6. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  7. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  8. package/dist/core/upstream-evidence-manifest.js +730 -5
  9. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  10. package/package.json +4 -4
  11. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  12. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  13. package/plugins/lisa-agy/plugin.json +1 -1
  14. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  15. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  16. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  17. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  18. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  19. package/plugins/lisa-cdk-devin/.claude-plugin/plugin.json +11 -0
  20. package/plugins/lisa-cdk-devin/.devin-plugin/plugin.json +8 -0
  21. package/plugins/lisa-cdk-devin/skills/setup-aws-accounts/SKILL.md +292 -0
  22. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  23. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  24. package/plugins/lisa-devin/.claude-plugin/plugin.json +8 -0
  25. package/plugins/lisa-devin/.devin-plugin/plugin.json +8 -0
  26. package/plugins/lisa-devin/.mcp.json +8 -0
  27. package/plugins/lisa-devin/agents/architecture-specialist.md +32 -0
  28. package/plugins/lisa-devin/agents/bug-fixer.md +43 -0
  29. package/plugins/lisa-devin/agents/builder.md +44 -0
  30. package/plugins/lisa-devin/agents/confluence-prd-intake.md +65 -0
  31. package/plugins/lisa-devin/agents/debug-specialist.md +34 -0
  32. package/plugins/lisa-devin/agents/eval-specialist.md +33 -0
  33. package/plugins/lisa-devin/agents/git-history-analyzer.md +183 -0
  34. package/plugins/lisa-devin/agents/github-agent.md +155 -0
  35. package/plugins/lisa-devin/agents/github-build-intake.md +64 -0
  36. package/plugins/lisa-devin/agents/github-prd-intake.md +66 -0
  37. package/plugins/lisa-devin/agents/jira-agent.md +135 -0
  38. package/plugins/lisa-devin/agents/jira-build-intake.md +64 -0
  39. package/plugins/lisa-devin/agents/learner.md +85 -0
  40. package/plugins/lisa-devin/agents/learning-judge.md +119 -0
  41. package/plugins/lisa-devin/agents/learnings-synthesizer.md +155 -0
  42. package/plugins/lisa-devin/agents/linear-agent.md +138 -0
  43. package/plugins/lisa-devin/agents/linear-build-intake.md +64 -0
  44. package/plugins/lisa-devin/agents/linear-prd-intake.md +66 -0
  45. package/plugins/lisa-devin/agents/notion-prd-intake.md +63 -0
  46. package/plugins/lisa-devin/agents/performance-specialist.md +26 -0
  47. package/plugins/lisa-devin/agents/pr-mining-specialist.md +85 -0
  48. package/plugins/lisa-devin/agents/product-specialist.md +30 -0
  49. package/plugins/lisa-devin/agents/quality-specialist.md +30 -0
  50. package/plugins/lisa-devin/agents/security-specialist.md +43 -0
  51. package/plugins/lisa-devin/agents/skill-evaluator.md +205 -0
  52. package/plugins/lisa-devin/agents/spec-conformance-specialist.md +56 -0
  53. package/plugins/lisa-devin/agents/test-specialist.md +32 -0
  54. package/plugins/lisa-devin/agents/tracker-mining-specialist.md +85 -0
  55. package/plugins/lisa-devin/agents/verification-specialist.md +145 -0
  56. package/plugins/lisa-devin/hooks/auto-update.mjs +824 -0
  57. package/plugins/lisa-devin/hooks/auto-update.sh +31 -0
  58. package/plugins/lisa-devin/hooks/block-blind-automerge.sh +1242 -0
  59. package/plugins/lisa-devin/hooks/block-direct-issue-create.sh +2603 -0
  60. package/plugins/lisa-devin/hooks/block-host-name-leak.mjs +412 -0
  61. package/plugins/lisa-devin/hooks/block-host-name-leak.sh +61 -0
  62. package/plugins/lisa-devin/hooks/block-instruction-file-edits.sh +207 -0
  63. package/plugins/lisa-devin/hooks/block-managed-file-edits.sh +1175 -0
  64. package/plugins/lisa-devin/hooks/block-no-verify.sh +2288 -0
  65. package/plugins/lisa-devin/hooks/block-shell-json-parsing.sh +263 -0
  66. package/plugins/lisa-devin/hooks/cleanup-stale-worktrees.sh +122 -0
  67. package/plugins/lisa-devin/hooks/devin-tool-name-shim.sh +30 -0
  68. package/plugins/lisa-devin/hooks/discharge-work-item-gates.sh +90 -0
  69. package/plugins/lisa-devin/hooks/enforce-verification-gate.sh +506 -0
  70. package/plugins/lisa-devin/hooks/enforcement-vintage-npm.mjs +320 -0
  71. package/plugins/lisa-devin/hooks/enforcement-vintage.mjs +472 -0
  72. package/plugins/lisa-devin/hooks/enforcement-vintage.sh +48 -0
  73. package/plugins/lisa-devin/hooks/failure-signature-index.mjs +717 -0
  74. package/plugins/lisa-devin/hooks/failure-signature-index.sh +26 -0
  75. package/plugins/lisa-devin/hooks/guard-dedupe.bash +374 -0
  76. package/plugins/lisa-devin/hooks/inject-resolved-config.mjs +903 -0
  77. package/plugins/lisa-devin/hooks/inject-resolved-config.sh +107 -0
  78. package/plugins/lisa-devin/hooks/inject-rules.sh +49 -0
  79. package/plugins/lisa-devin/hooks/install-pkgs.sh +84 -0
  80. package/plugins/lisa-devin/hooks/operational-hazards.mjs +736 -0
  81. package/plugins/lisa-devin/hooks/operational-hazards.sh +28 -0
  82. package/plugins/lisa-devin/hooks/parity-safety-net-heredoc.py +1004 -0
  83. package/plugins/lisa-devin/hooks/parity-safety-net.sh +3275 -0
  84. package/plugins/lisa-devin/hooks/secrets-preflight.sh +72 -0
  85. package/plugins/lisa-devin/hooks/setup-jira-cli.sh +205 -0
  86. package/plugins/lisa-devin/hooks/shell-write-nudge.sh +86 -0
  87. package/plugins/lisa-devin/hooks/sonar-secrets.sh +205 -0
  88. package/plugins/lisa-devin/hooks/threshold-ratchet-compare.mjs +518 -0
  89. package/plugins/lisa-devin/hooks/threshold-ratchet-families.mjs +543 -0
  90. package/plugins/lisa-devin/hooks/threshold-ratchet.mjs +568 -0
  91. package/plugins/lisa-devin/hooks/threshold-ratchet.sh +22 -0
  92. package/plugins/lisa-devin/hooks/withdrawn-rulings.mjs +600 -0
  93. package/plugins/lisa-devin/hooks/withdrawn-rulings.sh +24 -0
  94. package/plugins/lisa-devin/hooks/worktree-binding-guard.mjs +1383 -0
  95. package/plugins/lisa-devin/hooks/worktree-binding-guard.sh +79 -0
  96. package/plugins/lisa-devin/hooks.json +247 -0
  97. package/plugins/lisa-devin/rules/eager/00-rule-index.md +82 -0
  98. package/plugins/lisa-devin/rules/eager/base-rules.md +85 -0
  99. package/plugins/lisa-devin/rules/eager/coding-philosophy.md +27 -0
  100. package/plugins/lisa-devin/rules/eager/config-resolution.md +37 -0
  101. package/plugins/lisa-devin/rules/eager/do-it-now.md +11 -0
  102. package/plugins/lisa-devin/rules/eager/empirical-inquiry.md +24 -0
  103. package/plugins/lisa-devin/rules/eager/falsifiable-checks.md +48 -0
  104. package/plugins/lisa-devin/rules/eager/history-audit.md +27 -0
  105. package/plugins/lisa-devin/rules/eager/integration-access-layer.md +19 -0
  106. package/plugins/lisa-devin/rules/eager/intent-routing.md +18 -0
  107. package/plugins/lisa-devin/rules/eager/learnings-ladder.md +18 -0
  108. package/plugins/lisa-devin/rules/eager/local-ci-first.md +15 -0
  109. package/plugins/lisa-devin/rules/eager/measurement-integrity.md +18 -0
  110. package/plugins/lisa-devin/rules/eager/never-name-a-downstream-project.md +9 -0
  111. package/plugins/lisa-devin/rules/eager/not-blocked-just-waiting.md +13 -0
  112. package/plugins/lisa-devin/rules/eager/operational-hazards.md +50 -0
  113. package/plugins/lisa-devin/rules/eager/report-actionability.md +26 -0
  114. package/plugins/lisa-devin/rules/eager/security-audit-handling.md +40 -0
  115. package/plugins/lisa-devin/rules/eager/session-status-updates.md +20 -0
  116. package/plugins/lisa-devin/rules/eager/settled-decisions.md +75 -0
  117. package/plugins/lisa-devin/rules/eager/stale-state-claims.md +26 -0
  118. package/plugins/lisa-devin/rules/eager/tool-access-gate.md +23 -0
  119. package/plugins/lisa-devin/rules/eager/tracked-work.md +9 -0
  120. package/plugins/lisa-devin/rules/eager/upstream-to-lisa.md +14 -0
  121. package/plugins/lisa-devin/rules/eager/verification.md +33 -0
  122. package/plugins/lisa-devin/rules/eager/wiki-knowledge-source.md +13 -0
  123. package/plugins/lisa-devin/rules/eager/withdrawn-rulings.md +102 -0
  124. package/plugins/lisa-devin/rules/reference/automation-runbook-contract.md +355 -0
  125. package/plugins/lisa-devin/rules/reference/base-rules.md +136 -0
  126. package/plugins/lisa-devin/rules/reference/bdd-e2e-coverage.md +301 -0
  127. package/plugins/lisa-devin/rules/reference/blocker-containment.md +165 -0
  128. package/plugins/lisa-devin/rules/reference/claim-archaeology.md +184 -0
  129. package/plugins/lisa-devin/rules/reference/claim-evidence-mapping.md +362 -0
  130. package/plugins/lisa-devin/rules/reference/claim-time-guards.md +135 -0
  131. package/plugins/lisa-devin/rules/reference/coding-philosophy.md +428 -0
  132. package/plugins/lisa-devin/rules/reference/config-resolution.md +1225 -0
  133. package/plugins/lisa-devin/rules/reference/control-reachability.md +166 -0
  134. package/plugins/lisa-devin/rules/reference/convergent-review.md +145 -0
  135. package/plugins/lisa-devin/rules/reference/credential-substrate-precedence.md +249 -0
  136. package/plugins/lisa-devin/rules/reference/dependency-decision-records.md +177 -0
  137. package/plugins/lisa-devin/rules/reference/dependency-internalization-kit.md +244 -0
  138. package/plugins/lisa-devin/rules/reference/dependency-trust-classes.md +291 -0
  139. package/plugins/lisa-devin/rules/reference/deployed-state-readback.md +142 -0
  140. package/plugins/lisa-devin/rules/reference/derived-branch-plan.md +214 -0
  141. package/plugins/lisa-devin/rules/reference/design-source-of-truth.md +260 -0
  142. package/plugins/lisa-devin/rules/reference/design-value-binding.md +311 -0
  143. package/plugins/lisa-devin/rules/reference/do-it-now.md +19 -0
  144. package/plugins/lisa-devin/rules/reference/documentation-source-paths.md +31 -0
  145. package/plugins/lisa-devin/rules/reference/empirical-inquiry.md +28 -0
  146. package/plugins/lisa-devin/rules/reference/factory-model.md +111 -0
  147. package/plugins/lisa-devin/rules/reference/falsifiable-checks.md +275 -0
  148. package/plugins/lisa-devin/rules/reference/history-audit.md +42 -0
  149. package/plugins/lisa-devin/rules/reference/integration-access-layer.md +89 -0
  150. package/plugins/lisa-devin/rules/reference/intent-routing.md +428 -0
  151. package/plugins/lisa-devin/rules/reference/leaf-only-lifecycle.md +227 -0
  152. package/plugins/lisa-devin/rules/reference/learnings-ladder.md +41 -0
  153. package/plugins/lisa-devin/rules/reference/local-ci-first.md +34 -0
  154. package/plugins/lisa-devin/rules/reference/measurement-integrity.md +119 -0
  155. package/plugins/lisa-devin/rules/reference/never-name-a-downstream-project.md +37 -0
  156. package/plugins/lisa-devin/rules/reference/not-blocked-just-waiting.md +41 -0
  157. package/plugins/lisa-devin/rules/reference/observability-audit.md +146 -0
  158. package/plugins/lisa-devin/rules/reference/operational-hazards.md +115 -0
  159. package/plugins/lisa-devin/rules/reference/prd-definition-of-ready.md +118 -0
  160. package/plugins/lisa-devin/rules/reference/prd-lifecycle-rollup.md +192 -0
  161. package/plugins/lisa-devin/rules/reference/pre-flight-autofill.md +250 -0
  162. package/plugins/lisa-devin/rules/reference/project-learnings.md +159 -0
  163. package/plugins/lisa-devin/rules/reference/promotion-contract.md +148 -0
  164. package/plugins/lisa-devin/rules/reference/readiness-rubric.md +242 -0
  165. package/plugins/lisa-devin/rules/reference/ready-role-filing.md +212 -0
  166. package/plugins/lisa-devin/rules/reference/rejection-detection.md +308 -0
  167. package/plugins/lisa-devin/rules/reference/repo-scope-split.md +119 -0
  168. package/plugins/lisa-devin/rules/reference/report-actionability.md +61 -0
  169. package/plugins/lisa-devin/rules/reference/reset-seed-coverage.md +286 -0
  170. package/plugins/lisa-devin/rules/reference/security-audit-handling.md +55 -0
  171. package/plugins/lisa-devin/rules/reference/session-status-updates.md +111 -0
  172. package/plugins/lisa-devin/rules/reference/settled-decisions.md +39 -0
  173. package/plugins/lisa-devin/rules/reference/stale-state-claims.md +88 -0
  174. package/plugins/lisa-devin/rules/reference/tool-access-gate.md +114 -0
  175. package/plugins/lisa-devin/rules/reference/tracked-work.md +49 -0
  176. package/plugins/lisa-devin/rules/reference/upstream-to-lisa.md +26 -0
  177. package/plugins/lisa-devin/rules/reference/usage-accounting.md +261 -0
  178. package/plugins/lisa-devin/rules/reference/verification.md +278 -0
  179. package/plugins/lisa-devin/rules/reference/wiki-knowledge-source.md +37 -0
  180. package/plugins/lisa-devin/rules/reference/withdrawn-rulings.md +148 -0
  181. package/plugins/lisa-devin/rules/reference/work-item-definition-of-ready.md +177 -0
  182. package/plugins/lisa-devin/rules/reference/work-item-trailer-definition.md +129 -0
  183. package/plugins/lisa-devin/scripts/automation-run-record.mjs +678 -0
  184. package/plugins/lisa-devin/scripts/automation-status-claude-adapter.mjs +804 -0
  185. package/plugins/lisa-devin/scripts/automation-status-codex-adapter.mjs +1081 -0
  186. package/plugins/lisa-devin/scripts/automation-status-contract-drift.mjs +392 -0
  187. package/plugins/lisa-devin/scripts/automation-status-expected-fleet.mjs +508 -0
  188. package/plugins/lisa-devin/scripts/automation-status-report.mjs +200 -0
  189. package/plugins/lisa-devin/scripts/automation-status-run-history.mjs +216 -0
  190. package/plugins/lisa-devin/scripts/automation-status-unrecorded-runs.mjs +127 -0
  191. package/plugins/lisa-devin/scripts/blocker-edge-resolution.mjs +150 -0
  192. package/plugins/lisa-devin/scripts/cross-pollinate.mjs +763 -0
  193. package/plugins/lisa-devin/scripts/design-bindings-probe.mjs +713 -0
  194. package/plugins/lisa-devin/scripts/design-intake-gate.mjs +470 -0
  195. package/plugins/lisa-devin/scripts/design-source-gate.mjs +610 -0
  196. package/plugins/lisa-devin/scripts/design-variable-ids.mjs +567 -0
  197. package/plugins/lisa-devin/scripts/doctor-report.mjs +635 -0
  198. package/plugins/lisa-devin/scripts/install-remote-agent-aws.mjs +443 -0
  199. package/plugins/lisa-devin/scripts/intake-blocker-reprobe.mjs +1065 -0
  200. package/plugins/lisa-devin/scripts/intake-prework-denominator.mjs +249 -0
  201. package/plugins/lisa-devin/scripts/lifecycle-label-trust.mjs +593 -0
  202. package/plugins/lisa-devin/scripts/linear-state-write-target.mjs +362 -0
  203. package/plugins/lisa-devin/scripts/plugin-sync-explain.mjs +654 -0
  204. package/plugins/lisa-devin/scripts/pr-arming-sweep.mjs +561 -0
  205. package/plugins/lisa-devin/scripts/project-ideation-idempotency-harness.mjs +338 -0
  206. package/plugins/lisa-devin/scripts/qa-signal-lifecycle.mjs +523 -0
  207. package/plugins/lisa-devin/scripts/queue-contract-resolution.mjs +583 -0
  208. package/plugins/lisa-devin/scripts/queue-health-classification.mjs +157 -0
  209. package/plugins/lisa-devin/scripts/queue-status-build-readers.mjs +561 -0
  210. package/plugins/lisa-devin/scripts/queue-status-prd-readers.mjs +452 -0
  211. package/plugins/lisa-devin/scripts/remote-agent-aws-setup.sh +677 -0
  212. package/plugins/lisa-devin/scripts/repo-scope-vocabulary-audit.mjs +458 -0
  213. package/plugins/lisa-devin/scripts/resolve-lifecycle-role.mjs +347 -0
  214. package/plugins/lisa-devin/scripts/rollup-blocker-classification.mjs +616 -0
  215. package/plugins/lisa-devin/scripts/scoping-label-audit.mjs +474 -0
  216. package/plugins/lisa-devin/skills/lisa-acceptance-criteria/SKILL.md +73 -0
  217. package/plugins/lisa-devin/skills/lisa-agent-design-best-practices/SKILL.md +242 -0
  218. package/plugins/lisa-devin/skills/lisa-agent-ready/SKILL.md +271 -0
  219. package/plugins/lisa-devin/skills/lisa-analyze-claude-remote/SKILL.md +434 -0
  220. package/plugins/lisa-devin/skills/lisa-atlassian-access/SKILL.md +469 -0
  221. package/plugins/lisa-devin/skills/lisa-atlassian-access/scripts/markdown-to-adf.mjs +236 -0
  222. package/plugins/lisa-devin/skills/lisa-attribute-failure/SKILL.md +142 -0
  223. package/plugins/lisa-devin/skills/lisa-automation-status/SKILL.md +149 -0
  224. package/plugins/lisa-devin/skills/lisa-bug-triage/SKILL.md +23 -0
  225. package/plugins/lisa-devin/skills/lisa-capability-drift/SKILL.md +71 -0
  226. package/plugins/lisa-devin/skills/lisa-codebase-research/SKILL.md +87 -0
  227. package/plugins/lisa-devin/skills/lisa-codify-verification/SKILL.md +213 -0
  228. package/plugins/lisa-devin/skills/lisa-confluence-prd-intake/SKILL.md +417 -0
  229. package/plugins/lisa-devin/skills/lisa-confluence-to-tracker/SKILL.md +469 -0
  230. package/plugins/lisa-devin/skills/lisa-confluence-write-prd/SKILL.md +111 -0
  231. package/plugins/lisa-devin/skills/lisa-cross-pollinate/SKILL.md +175 -0
  232. package/plugins/lisa-devin/skills/lisa-debrief/SKILL.md +96 -0
  233. package/plugins/lisa-devin/skills/lisa-debrief-apply/SKILL.md +106 -0
  234. package/plugins/lisa-devin/skills/lisa-delivery-effectiveness/SKILL.md +62 -0
  235. package/plugins/lisa-devin/skills/lisa-design-intake/SKILL.md +198 -0
  236. package/plugins/lisa-devin/skills/lisa-detect-tooling/SKILL.md +110 -0
  237. package/plugins/lisa-devin/skills/lisa-detect-tooling/scripts/commands.mjs +479 -0
  238. package/plugins/lisa-devin/skills/lisa-detect-tooling/scripts/detect-tooling.mjs +658 -0
  239. package/plugins/lisa-devin/skills/lisa-doctor/SKILL.md +743 -0
  240. package/plugins/lisa-devin/skills/lisa-drive-pr-to-merge/SKILL.md +1587 -0
  241. package/plugins/lisa-devin/skills/lisa-epic-triage/SKILL.md +28 -0
  242. package/plugins/lisa-devin/skills/lisa-evaluation-suite/SKILL.md +63 -0
  243. package/plugins/lisa-devin/skills/lisa-exploratory-qa/SKILL.md +185 -0
  244. package/plugins/lisa-devin/skills/lisa-fix-linter-error/SKILL.md +45 -0
  245. package/plugins/lisa-devin/skills/lisa-generate-claude-remote-build-script/SKILL.md +235 -0
  246. package/plugins/lisa-devin/skills/lisa-git-commit/SKILL.md +53 -0
  247. package/plugins/lisa-devin/skills/lisa-git-prune/SKILL.md +35 -0
  248. package/plugins/lisa-devin/skills/lisa-git-submit-pr/SKILL.md +170 -0
  249. package/plugins/lisa-devin/skills/lisa-github-add-journey/SKILL.md +118 -0
  250. package/plugins/lisa-devin/skills/lisa-github-build-intake/SKILL.md +745 -0
  251. package/plugins/lisa-devin/skills/lisa-github-claim/SKILL.md +27 -0
  252. package/plugins/lisa-devin/skills/lisa-github-create/SKILL.md +105 -0
  253. package/plugins/lisa-devin/skills/lisa-github-evidence/SKILL.md +120 -0
  254. package/plugins/lisa-devin/skills/lisa-github-journey/SKILL.md +134 -0
  255. package/plugins/lisa-devin/skills/lisa-github-prd-intake/SKILL.md +424 -0
  256. package/plugins/lisa-devin/skills/lisa-github-project-v2/SKILL.md +227 -0
  257. package/plugins/lisa-devin/skills/lisa-github-read-issue/SKILL.md +305 -0
  258. package/plugins/lisa-devin/skills/lisa-github-sync/SKILL.md +201 -0
  259. package/plugins/lisa-devin/skills/lisa-github-to-tracker/SKILL.md +456 -0
  260. package/plugins/lisa-devin/skills/lisa-github-validate-issue/SKILL.md +598 -0
  261. package/plugins/lisa-devin/skills/lisa-github-verify/SKILL.md +60 -0
  262. package/plugins/lisa-devin/skills/lisa-github-write-issue/SKILL.md +531 -0
  263. package/plugins/lisa-devin/skills/lisa-github-write-prd/SKILL.md +156 -0
  264. package/plugins/lisa-devin/skills/lisa-health/SKILL.md +142 -0
  265. package/plugins/lisa-devin/skills/lisa-health-drift-cron/SKILL.md +80 -0
  266. package/plugins/lisa-devin/skills/lisa-implement/SKILL.md +372 -0
  267. package/plugins/lisa-devin/skills/lisa-improve-code-complexity/SKILL.md +44 -0
  268. package/plugins/lisa-devin/skills/lisa-improve-harness/SKILL.md +487 -0
  269. package/plugins/lisa-devin/skills/lisa-improve-max-lines/SKILL.md +45 -0
  270. package/plugins/lisa-devin/skills/lisa-improve-max-lines-per-function/SKILL.md +46 -0
  271. package/plugins/lisa-devin/skills/lisa-improve-test-coverage/SKILL.md +47 -0
  272. package/plugins/lisa-devin/skills/lisa-improve-tests/SKILL.md +50 -0
  273. package/plugins/lisa-devin/skills/lisa-intake/SKILL.md +208 -0
  274. package/plugins/lisa-devin/skills/lisa-intake-explain/SKILL.md +279 -0
  275. package/plugins/lisa-devin/skills/lisa-jam-access/SKILL.md +128 -0
  276. package/plugins/lisa-devin/skills/lisa-jira-add-journey/SKILL.md +139 -0
  277. package/plugins/lisa-devin/skills/lisa-jira-build-intake/SKILL.md +556 -0
  278. package/plugins/lisa-devin/skills/lisa-jira-claim/SKILL.md +27 -0
  279. package/plugins/lisa-devin/skills/lisa-jira-create/SKILL.md +157 -0
  280. package/plugins/lisa-devin/skills/lisa-jira-evidence/SKILL.md +106 -0
  281. package/plugins/lisa-devin/skills/lisa-jira-evidence/scripts/post-evidence.sh +262 -0
  282. package/plugins/lisa-devin/skills/lisa-jira-journey/SKILL.md +168 -0
  283. package/plugins/lisa-devin/skills/lisa-jira-journey/scripts/generate-templates.py +239 -0
  284. package/plugins/lisa-devin/skills/lisa-jira-journey/scripts/parse-plan.py +570 -0
  285. package/plugins/lisa-devin/skills/lisa-jira-read-ticket/SKILL.md +199 -0
  286. package/plugins/lisa-devin/skills/lisa-jira-read-ticket/scripts/download-attachment.sh +211 -0
  287. package/plugins/lisa-devin/skills/lisa-jira-sync/SKILL.md +117 -0
  288. package/plugins/lisa-devin/skills/lisa-jira-validate-ticket/SKILL.md +525 -0
  289. package/plugins/lisa-devin/skills/lisa-jira-verify/SKILL.md +61 -0
  290. package/plugins/lisa-devin/skills/lisa-jira-write-ticket/SKILL.md +440 -0
  291. package/plugins/lisa-devin/skills/lisa-jsdoc-best-practices/SKILL.md +491 -0
  292. package/plugins/lisa-devin/skills/lisa-kane-browser/SKILL.md +80 -0
  293. package/plugins/lisa-devin/skills/lisa-learnings-audit/SKILL.md +490 -0
  294. package/plugins/lisa-devin/skills/lisa-linear-access/SKILL.md +483 -0
  295. package/plugins/lisa-devin/skills/lisa-linear-add-journey/SKILL.md +109 -0
  296. package/plugins/lisa-devin/skills/lisa-linear-build-intake/SKILL.md +548 -0
  297. package/plugins/lisa-devin/skills/lisa-linear-claim/SKILL.md +28 -0
  298. package/plugins/lisa-devin/skills/lisa-linear-create/SKILL.md +150 -0
  299. package/plugins/lisa-devin/skills/lisa-linear-evidence/SKILL.md +124 -0
  300. package/plugins/lisa-devin/skills/lisa-linear-journey/SKILL.md +147 -0
  301. package/plugins/lisa-devin/skills/lisa-linear-prd-intake/SKILL.md +411 -0
  302. package/plugins/lisa-devin/skills/lisa-linear-read-issue/SKILL.md +201 -0
  303. package/plugins/lisa-devin/skills/lisa-linear-sync/SKILL.md +164 -0
  304. package/plugins/lisa-devin/skills/lisa-linear-to-tracker/SKILL.md +454 -0
  305. package/plugins/lisa-devin/skills/lisa-linear-validate-issue/SKILL.md +504 -0
  306. package/plugins/lisa-devin/skills/lisa-linear-verify/SKILL.md +65 -0
  307. package/plugins/lisa-devin/skills/lisa-linear-write-issue/SKILL.md +448 -0
  308. package/plugins/lisa-devin/skills/lisa-linear-write-prd/SKILL.md +98 -0
  309. package/plugins/lisa-devin/skills/lisa-monitor/SKILL.md +224 -0
  310. package/plugins/lisa-devin/skills/lisa-nightly-add-test-coverage/SKILL.md +40 -0
  311. package/plugins/lisa-devin/skills/lisa-nightly-improve-tests/SKILL.md +29 -0
  312. package/plugins/lisa-devin/skills/lisa-nightly-lower-code-complexity/SKILL.md +42 -0
  313. package/plugins/lisa-devin/skills/lisa-notion-access/SKILL.md +301 -0
  314. package/plugins/lisa-devin/skills/lisa-notion-prd-intake/SKILL.md +360 -0
  315. package/plugins/lisa-devin/skills/lisa-notion-to-tracker/SKILL.md +467 -0
  316. package/plugins/lisa-devin/skills/lisa-notion-write-prd/SKILL.md +111 -0
  317. package/plugins/lisa-devin/skills/lisa-parity-code-review/SKILL.md +83 -0
  318. package/plugins/lisa-devin/skills/lisa-parity-code-simplifier/SKILL.md +76 -0
  319. package/plugins/lisa-devin/skills/lisa-parity-coderabbit/SKILL.md +87 -0
  320. package/plugins/lisa-devin/skills/lisa-parity-sentry-sdk-setup/SKILL.md +375 -0
  321. package/plugins/lisa-devin/skills/lisa-parity-sentry-seer/SKILL.md +168 -0
  322. package/plugins/lisa-devin/skills/lisa-parity-skill-creator/SKILL.md +155 -0
  323. package/plugins/lisa-devin/skills/lisa-performance-review/SKILL.md +94 -0
  324. package/plugins/lisa-devin/skills/lisa-persist-learning/SKILL.md +247 -0
  325. package/plugins/lisa-devin/skills/lisa-plan/SKILL.md +64 -0
  326. package/plugins/lisa-devin/skills/lisa-plugin-sync-explain/SKILL.md +53 -0
  327. package/plugins/lisa-devin/skills/lisa-posthog-access/SKILL.md +140 -0
  328. package/plugins/lisa-devin/skills/lisa-prd-backlink/SKILL.md +274 -0
  329. package/plugins/lisa-devin/skills/lisa-prd-source-write/SKILL.md +104 -0
  330. package/plugins/lisa-devin/skills/lisa-prd-ticket-coverage/SKILL.md +187 -0
  331. package/plugins/lisa-devin/skills/lisa-product-walkthrough/SKILL.md +106 -0
  332. package/plugins/lisa-devin/skills/lisa-project-ideation/SKILL.md +417 -0
  333. package/plugins/lisa-devin/skills/lisa-project-ideation/examples/evidence-card-format.md +21 -0
  334. package/plugins/lisa-devin/skills/lisa-project-ideation/examples/host-project-only.md +22 -0
  335. package/plugins/lisa-devin/skills/lisa-project-ideation/examples/idempotency-verification-harness.md +57 -0
  336. package/plugins/lisa-devin/skills/lisa-project-ideation/examples/public-external-inspiration.md +22 -0
  337. package/plugins/lisa-devin/skills/lisa-project-ideation/examples/unavailable-data-rejection.md +22 -0
  338. package/plugins/lisa-devin/skills/lisa-pull-request-review/SKILL.md +132 -0
  339. package/plugins/lisa-devin/skills/lisa-quality-review/SKILL.md +63 -0
  340. package/plugins/lisa-devin/skills/lisa-queue-status/SKILL.md +215 -0
  341. package/plugins/lisa-devin/skills/lisa-remote-dispatch/SKILL.md +109 -0
  342. package/plugins/lisa-devin/skills/lisa-remote-dispatch/scripts/dispatch.mjs +535 -0
  343. package/plugins/lisa-devin/skills/lisa-repair-intake/SKILL.md +1621 -0
  344. package/plugins/lisa-devin/skills/lisa-reproduce-bug/SKILL.md +75 -0
  345. package/plugins/lisa-devin/skills/lisa-research/SKILL.md +92 -0
  346. package/plugins/lisa-devin/skills/lisa-review-implementation/SKILL.md +209 -0
  347. package/plugins/lisa-devin/skills/lisa-review-local/SKILL.md +141 -0
  348. package/plugins/lisa-devin/skills/lisa-rework-triage/SKILL.md +206 -0
  349. package/plugins/lisa-devin/skills/lisa-root-cause-analysis/SKILL.md +135 -0
  350. package/plugins/lisa-devin/skills/lisa-secrets-access/SKILL.md +430 -0
  351. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/aws-bootstrap.mjs +433 -0
  352. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/bootstrap-store.mjs +288 -0
  353. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/doctor-secrets.mjs +273 -0
  354. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/envfile.mjs +80 -0
  355. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/inspect-vault.mjs +142 -0
  356. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/materialize-secrets.mjs +1085 -0
  357. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/note-format.mjs +179 -0
  358. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/owner.mjs +96 -0
  359. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/preflight-secrets.mjs +342 -0
  360. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/prompt-secret.mjs +79 -0
  361. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/providers.mjs +805 -0
  362. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/publish-aws-bootstrap.mjs +680 -0
  363. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/read-secret-note.mjs +105 -0
  364. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/resolve-expo-token.mjs +90 -0
  365. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/resolve-secret.mjs +285 -0
  366. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/rotate-secret.mjs +297 -0
  367. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/routing-floor.mjs +153 -0
  368. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/surfaces.mjs +480 -0
  369. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/sync-secret-to-ci.mjs +510 -0
  370. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/tools-from-notes.mjs +63 -0
  371. package/plugins/lisa-devin/skills/lisa-secrets-access/scripts/validate-config.mjs +550 -0
  372. package/plugins/lisa-devin/skills/lisa-security-review/SKILL.md +124 -0
  373. package/plugins/lisa-devin/skills/lisa-security-zap-scan/SKILL.md +53 -0
  374. package/plugins/lisa-devin/skills/lisa-sentry-access/SKILL.md +140 -0
  375. package/plugins/lisa-devin/skills/lisa-setup-atlassian/SKILL.md +407 -0
  376. package/plugins/lisa-devin/skills/lisa-setup-automations/SKILL.md +430 -0
  377. package/plugins/lisa-devin/skills/lisa-setup-automations/scripts/generate-workflow.mjs +288 -0
  378. package/plugins/lisa-devin/skills/lisa-setup-confluence/SKILL.md +254 -0
  379. package/plugins/lisa-devin/skills/lisa-setup-github/SKILL.md +319 -0
  380. package/plugins/lisa-devin/skills/lisa-setup-github-repo/SKILL.md +128 -0
  381. package/plugins/lisa-devin/skills/lisa-setup-jira/SKILL.md +198 -0
  382. package/plugins/lisa-devin/skills/lisa-setup-kane/SKILL.md +96 -0
  383. package/plugins/lisa-devin/skills/lisa-setup-linear/SKILL.md +375 -0
  384. package/plugins/lisa-devin/skills/lisa-setup-local-env/SKILL.md +95 -0
  385. package/plugins/lisa-devin/skills/lisa-setup-local-env/scripts/local-env.mjs +196 -0
  386. package/plugins/lisa-devin/skills/lisa-setup-notion/SKILL.md +376 -0
  387. package/plugins/lisa-devin/skills/lisa-setup-remote-aws/SKILL.md +149 -0
  388. package/plugins/lisa-devin/skills/lisa-setup-remote-env/SKILL.md +382 -0
  389. package/plugins/lisa-devin/skills/lisa-setup-remote-env/assets/materialized-env-authority.mjs +262 -0
  390. package/plugins/lisa-devin/skills/lisa-setup-remote-env/assets/session-start.sh +87 -0
  391. package/plugins/lisa-devin/skills/lisa-setup-remote-env/assets/setup.sh +216 -0
  392. package/plugins/lisa-devin/skills/lisa-setup-remote-env/scripts/environment.mjs +227 -0
  393. package/plugins/lisa-devin/skills/lisa-setup-remote-env/scripts/preflight-tools.mjs +378 -0
  394. package/plugins/lisa-devin/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +1632 -0
  395. package/plugins/lisa-devin/skills/lisa-setup-remote-env/scripts/tool-floor.mjs +94 -0
  396. package/plugins/lisa-devin/skills/lisa-setup-remote-env/scripts/toolchain.mjs +448 -0
  397. package/plugins/lisa-devin/skills/lisa-setup-remote-env/scripts/verify-remote-env.mjs +250 -0
  398. package/plugins/lisa-devin/skills/lisa-setup-sonar/SKILL.md +153 -0
  399. package/plugins/lisa-devin/skills/lisa-setup-workstation/SKILL.md +143 -0
  400. package/plugins/lisa-devin/skills/lisa-setup-workstation/scripts/bounded-child.mjs +168 -0
  401. package/plugins/lisa-devin/skills/lisa-setup-workstation/scripts/catalogue.mjs +293 -0
  402. package/plugins/lisa-devin/skills/lisa-setup-workstation/scripts/cli.mjs +333 -0
  403. package/plugins/lisa-devin/skills/lisa-setup-workstation/scripts/workstation.mjs +511 -0
  404. package/plugins/lisa-devin/skills/lisa-sonarcloud-access/SKILL.md +202 -0
  405. package/plugins/lisa-devin/skills/lisa-spec-conformance/SKILL.md +205 -0
  406. package/plugins/lisa-devin/skills/lisa-starter-sync/SKILL.md +35 -0
  407. package/plugins/lisa-devin/skills/lisa-sync-down/SKILL.md +209 -0
  408. package/plugins/lisa-devin/skills/lisa-task-decomposition/SKILL.md +195 -0
  409. package/plugins/lisa-devin/skills/lisa-task-triage/SKILL.md +23 -0
  410. package/plugins/lisa-devin/skills/lisa-tdd-implementation/SKILL.md +91 -0
  411. package/plugins/lisa-devin/skills/lisa-tear-down-automations/SKILL.md +85 -0
  412. package/plugins/lisa-devin/skills/lisa-test-strategy/SKILL.md +66 -0
  413. package/plugins/lisa-devin/skills/lisa-ticket-triage/SKILL.md +214 -0
  414. package/plugins/lisa-devin/skills/lisa-track/SKILL.md +129 -0
  415. package/plugins/lisa-devin/skills/lisa-tracker-add-journey/SKILL.md +28 -0
  416. package/plugins/lisa-devin/skills/lisa-tracker-build-intake/SKILL.md +134 -0
  417. package/plugins/lisa-devin/skills/lisa-tracker-claim/SKILL.md +35 -0
  418. package/plugins/lisa-devin/skills/lisa-tracker-create/SKILL.md +28 -0
  419. package/plugins/lisa-devin/skills/lisa-tracker-evidence/SKILL.md +63 -0
  420. package/plugins/lisa-devin/skills/lisa-tracker-journey/SKILL.md +27 -0
  421. package/plugins/lisa-devin/skills/lisa-tracker-read/SKILL.md +28 -0
  422. package/plugins/lisa-devin/skills/lisa-tracker-source-artifacts/SKILL.md +111 -0
  423. package/plugins/lisa-devin/skills/lisa-tracker-sync/SKILL.md +150 -0
  424. package/plugins/lisa-devin/skills/lisa-tracker-validate/SKILL.md +37 -0
  425. package/plugins/lisa-devin/skills/lisa-tracker-verify/SKILL.md +29 -0
  426. package/plugins/lisa-devin/skills/lisa-tracker-write/SKILL.md +55 -0
  427. package/plugins/lisa-devin/skills/lisa-usage-accounting/SKILL.md +205 -0
  428. package/plugins/lisa-devin/skills/lisa-usage-accounting/references/effectiveness.md +63 -0
  429. package/plugins/lisa-devin/skills/lisa-use-the-product/SKILL.md +86 -0
  430. package/plugins/lisa-devin/skills/lisa-validate-tracker-mapping/SKILL.md +467 -0
  431. package/plugins/lisa-devin/skills/lisa-verification-lifecycle/SKILL.md +384 -0
  432. package/plugins/lisa-devin/skills/lisa-verify/SKILL.md +55 -0
  433. package/plugins/lisa-devin/skills/lisa-verify-prd/SKILL.md +394 -0
  434. package/plugins/lisa-devin/skills/lisa-verify-workflow-change/SKILL.md +154 -0
  435. package/plugins/lisa-devin/skills/lisa-wiki-install/SKILL.md +101 -0
  436. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  437. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  438. package/plugins/lisa-expo-agy/plugin.json +1 -1
  439. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  440. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  441. package/plugins/lisa-expo-devin/.claude-plugin/plugin.json +11 -0
  442. package/plugins/lisa-expo-devin/.devin-plugin/plugin.json +8 -0
  443. package/plugins/lisa-expo-devin/.mcp.json +8 -0
  444. package/plugins/lisa-expo-devin/THIRD-PARTY-NOTICES.md +84 -0
  445. package/plugins/lisa-expo-devin/agents/ops-specialist.md +124 -0
  446. package/plugins/lisa-expo-devin/hooks/devin-tool-name-shim.sh +30 -0
  447. package/plugins/lisa-expo-devin/hooks/register-maestro-mcp.sh +84 -0
  448. package/plugins/lisa-expo-devin/hooks.json +14 -0
  449. package/plugins/lisa-expo-devin/skills/add-app-clip/SKILL.md +280 -0
  450. package/plugins/lisa-expo-devin/skills/add-app-clip/references/native-module.md +96 -0
  451. package/plugins/lisa-expo-devin/skills/apollo-client/SKILL.md +238 -0
  452. package/plugins/lisa-expo-devin/skills/apollo-client/references/mutation-patterns.md +360 -0
  453. package/plugins/lisa-expo-devin/skills/atomic-design-gluestack/SKILL.md +369 -0
  454. package/plugins/lisa-expo-devin/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
  455. package/plugins/lisa-expo-devin/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
  456. package/plugins/lisa-expo-devin/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
  457. package/plugins/lisa-expo-devin/skills/atomic-design-gluestack/scripts/test_validate_atomic_structure.py +240 -0
  458. package/plugins/lisa-expo-devin/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +438 -0
  459. package/plugins/lisa-expo-devin/skills/building-native-ui/SKILL.md +321 -0
  460. package/plugins/lisa-expo-devin/skills/building-native-ui/references/animations.md +220 -0
  461. package/plugins/lisa-expo-devin/skills/building-native-ui/references/controls.md +272 -0
  462. package/plugins/lisa-expo-devin/skills/building-native-ui/references/form-sheet.md +253 -0
  463. package/plugins/lisa-expo-devin/skills/building-native-ui/references/gradients.md +106 -0
  464. package/plugins/lisa-expo-devin/skills/building-native-ui/references/icons.md +213 -0
  465. package/plugins/lisa-expo-devin/skills/building-native-ui/references/media.md +198 -0
  466. package/plugins/lisa-expo-devin/skills/building-native-ui/references/route-structure.md +229 -0
  467. package/plugins/lisa-expo-devin/skills/building-native-ui/references/search.md +248 -0
  468. package/plugins/lisa-expo-devin/skills/building-native-ui/references/storage.md +121 -0
  469. package/plugins/lisa-expo-devin/skills/building-native-ui/references/tabs.md +433 -0
  470. package/plugins/lisa-expo-devin/skills/building-native-ui/references/toolbar-and-headers.md +284 -0
  471. package/plugins/lisa-expo-devin/skills/building-native-ui/references/visual-effects.md +197 -0
  472. package/plugins/lisa-expo-devin/skills/building-native-ui/references/webgpu-three.md +605 -0
  473. package/plugins/lisa-expo-devin/skills/building-native-ui/references/zoom-transitions.md +158 -0
  474. package/plugins/lisa-expo-devin/skills/container-view-pattern/SKILL.md +355 -0
  475. package/plugins/lisa-expo-devin/skills/container-view-pattern/references/examples.md +749 -0
  476. package/plugins/lisa-expo-devin/skills/container-view-pattern/references/patterns.md +318 -0
  477. package/plugins/lisa-expo-devin/skills/container-view-pattern/scripts/create_component.py +200 -0
  478. package/plugins/lisa-expo-devin/skills/container-view-pattern/scripts/validate_component.py +332 -0
  479. package/plugins/lisa-expo-devin/skills/cross-platform-compatibility/SKILL.md +268 -0
  480. package/plugins/lisa-expo-devin/skills/cross-platform-compatibility/references/common-issues.md +619 -0
  481. package/plugins/lisa-expo-devin/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
  482. package/plugins/lisa-expo-devin/skills/cross-platform-compatibility/references/platform-api.md +276 -0
  483. package/plugins/lisa-expo-devin/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +416 -0
  484. package/plugins/lisa-expo-devin/skills/directory-structure/SKILL.md +214 -0
  485. package/plugins/lisa-expo-devin/skills/directory-structure/scripts/validate_structure.py +454 -0
  486. package/plugins/lisa-expo-devin/skills/e2e-coverage-gaps/SKILL.md +117 -0
  487. package/plugins/lisa-expo-devin/skills/eas-update-insights/SKILL.md +228 -0
  488. package/plugins/lisa-expo-devin/skills/eas-update-insights/references/channel-insights-schema.md +47 -0
  489. package/plugins/lisa-expo-devin/skills/eas-update-insights/references/update-insights-schema.md +69 -0
  490. package/plugins/lisa-expo-devin/skills/expo-api-routes/SKILL.md +369 -0
  491. package/plugins/lisa-expo-devin/skills/expo-brownfield/SKILL.md +54 -0
  492. package/plugins/lisa-expo-devin/skills/expo-brownfield/references/brownfield-integrated.md +526 -0
  493. package/plugins/lisa-expo-devin/skills/expo-brownfield/references/brownfield-isolated.md +402 -0
  494. package/plugins/lisa-expo-devin/skills/expo-brownfield/references/comparison.md +63 -0
  495. package/plugins/lisa-expo-devin/skills/expo-brownfield/references/troubleshooting.md +88 -0
  496. package/plugins/lisa-expo-devin/skills/expo-cicd-workflows/SKILL.md +92 -0
  497. package/plugins/lisa-expo-devin/skills/expo-cicd-workflows/scripts/fetch.js +113 -0
  498. package/plugins/lisa-expo-devin/skills/expo-cicd-workflows/scripts/package.json +11 -0
  499. package/plugins/lisa-expo-devin/skills/expo-cicd-workflows/scripts/validate.js +85 -0
  500. package/plugins/lisa-expo-devin/skills/expo-deployment/SKILL.md +193 -0
  501. package/plugins/lisa-expo-devin/skills/expo-deployment/references/app-store-metadata.md +479 -0
  502. package/plugins/lisa-expo-devin/skills/expo-deployment/references/ios-app-store.md +355 -0
  503. package/plugins/lisa-expo-devin/skills/expo-deployment/references/play-store.md +264 -0
  504. package/plugins/lisa-expo-devin/skills/expo-deployment/references/testflight.md +58 -0
  505. package/plugins/lisa-expo-devin/skills/expo-deployment/references/workflows.md +200 -0
  506. package/plugins/lisa-expo-devin/skills/expo-dev-client/SKILL.md +164 -0
  507. package/plugins/lisa-expo-devin/skills/expo-env-config/SKILL.md +309 -0
  508. package/plugins/lisa-expo-devin/skills/expo-env-config/references/validation-patterns.md +417 -0
  509. package/plugins/lisa-expo-devin/skills/expo-module/SKILL.md +141 -0
  510. package/plugins/lisa-expo-devin/skills/expo-module/references/config-plugin.md +90 -0
  511. package/plugins/lisa-expo-devin/skills/expo-module/references/create-expo-module.md +206 -0
  512. package/plugins/lisa-expo-devin/skills/expo-module/references/lifecycle.md +127 -0
  513. package/plugins/lisa-expo-devin/skills/expo-module/references/module-config.md +48 -0
  514. package/plugins/lisa-expo-devin/skills/expo-module/references/native-module.md +286 -0
  515. package/plugins/lisa-expo-devin/skills/expo-module/references/native-view.md +171 -0
  516. package/plugins/lisa-expo-devin/skills/expo-router-best-practices/SKILL.md +432 -0
  517. package/plugins/lisa-expo-devin/skills/expo-router-best-practices/references/official-docs.md +290 -0
  518. package/plugins/lisa-expo-devin/skills/expo-router-best-practices/references/static-export-verification.md +54 -0
  519. package/plugins/lisa-expo-devin/skills/expo-router-best-practices/scripts/generate-route.py +171 -0
  520. package/plugins/lisa-expo-devin/skills/expo-tailwind-setup/SKILL.md +487 -0
  521. package/plugins/lisa-expo-devin/skills/expo-ui-jetpack-compose/SKILL.md +40 -0
  522. package/plugins/lisa-expo-devin/skills/expo-ui-swift-ui/SKILL.md +39 -0
  523. package/plugins/lisa-expo-devin/skills/gluestack-nativewind/SKILL.md +419 -0
  524. package/plugins/lisa-expo-devin/skills/gluestack-nativewind/references/color-tokens.md +343 -0
  525. package/plugins/lisa-expo-devin/skills/gluestack-nativewind/references/component-mapping.md +307 -0
  526. package/plugins/lisa-expo-devin/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
  527. package/plugins/lisa-expo-devin/skills/gluestack-nativewind/scripts/test_validate_styling.py +240 -0
  528. package/plugins/lisa-expo-devin/skills/gluestack-nativewind/scripts/validate_styling.py +424 -0
  529. package/plugins/lisa-expo-devin/skills/jira-add-journey/SKILL.md +140 -0
  530. package/plugins/lisa-expo-devin/skills/jira-create/SKILL.md +161 -0
  531. package/plugins/lisa-expo-devin/skills/jira-evidence/SKILL.md +84 -0
  532. package/plugins/lisa-expo-devin/skills/jira-evidence/scripts/post-evidence.sh +262 -0
  533. package/plugins/lisa-expo-devin/skills/jira-journey/SKILL.md +196 -0
  534. package/plugins/lisa-expo-devin/skills/jira-journey/scripts/generate-templates.py +281 -0
  535. package/plugins/lisa-expo-devin/skills/jira-journey/scripts/parse-plan.py +400 -0
  536. package/plugins/lisa-expo-devin/skills/jira-verify/SKILL.md +27 -0
  537. package/plugins/lisa-expo-devin/skills/local-state/SKILL.md +362 -0
  538. package/plugins/lisa-expo-devin/skills/local-state/references/async-storage.md +505 -0
  539. package/plugins/lisa-expo-devin/skills/local-state/references/persistence-patterns.md +711 -0
  540. package/plugins/lisa-expo-devin/skills/local-state/references/reactive-variables.md +446 -0
  541. package/plugins/lisa-expo-devin/skills/maestro-mcp-setup/SKILL.md +144 -0
  542. package/plugins/lisa-expo-devin/skills/native-data-fetching/SKILL.md +507 -0
  543. package/plugins/lisa-expo-devin/skills/native-data-fetching/references/expo-router-loaders.md +344 -0
  544. package/plugins/lisa-expo-devin/skills/ops-browser-uat/SKILL.md +124 -0
  545. package/plugins/lisa-expo-devin/skills/ops-check-logs/SKILL.md +217 -0
  546. package/plugins/lisa-expo-devin/skills/ops-db-ops/SKILL.md +214 -0
  547. package/plugins/lisa-expo-devin/skills/ops-deploy/SKILL.md +123 -0
  548. package/plugins/lisa-expo-devin/skills/ops-monitor-errors/SKILL.md +99 -0
  549. package/plugins/lisa-expo-devin/skills/ops-performance/SKILL.md +165 -0
  550. package/plugins/lisa-expo-devin/skills/ops-run-local/SKILL.md +169 -0
  551. package/plugins/lisa-expo-devin/skills/ops-verify-health/SKILL.md +101 -0
  552. package/plugins/lisa-expo-devin/skills/owasp-zap/SKILL.md +61 -0
  553. package/plugins/lisa-expo-devin/skills/play-store-access/SKILL.md +226 -0
  554. package/plugins/lisa-expo-devin/skills/playwright-ci-debugging/SKILL.md +140 -0
  555. package/plugins/lisa-expo-devin/skills/playwright-selectors/SKILL.md +496 -0
  556. package/plugins/lisa-expo-devin/skills/reduce-complexity/SKILL.md +251 -0
  557. package/plugins/lisa-expo-devin/skills/reduce-complexity/references/extraction-strategies.md +456 -0
  558. package/plugins/lisa-expo-devin/skills/reduce-complexity/references/refactoring-patterns.md +557 -0
  559. package/plugins/lisa-expo-devin/skills/testing-library/SKILL.md +314 -0
  560. package/plugins/lisa-expo-devin/skills/testing-library/references/async-patterns.md +420 -0
  561. package/plugins/lisa-expo-devin/skills/testing-library/references/expo-router-testing.md +556 -0
  562. package/plugins/lisa-expo-devin/skills/testing-library/references/mocking-patterns.md +612 -0
  563. package/plugins/lisa-expo-devin/skills/testing-library/references/query-priority.md +291 -0
  564. package/plugins/lisa-expo-devin/skills/upgrading-expo/SKILL.md +134 -0
  565. package/plugins/lisa-expo-devin/skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
  566. package/plugins/lisa-expo-devin/skills/upgrading-expo/references/expo-av-to-video.md +160 -0
  567. package/plugins/lisa-expo-devin/skills/upgrading-expo/references/native-tabs.md +124 -0
  568. package/plugins/lisa-expo-devin/skills/upgrading-expo/references/new-architecture.md +79 -0
  569. package/plugins/lisa-expo-devin/skills/upgrading-expo/references/react-19.md +79 -0
  570. package/plugins/lisa-expo-devin/skills/upgrading-expo/references/react-compiler.md +59 -0
  571. package/plugins/lisa-expo-devin/skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
  572. package/plugins/lisa-expo-devin/skills/use-dom/SKILL.md +417 -0
  573. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  574. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  575. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  576. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  577. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  578. package/plugins/lisa-harper-fabric-devin/.claude-plugin/plugin.json +11 -0
  579. package/plugins/lisa-harper-fabric-devin/.devin-plugin/plugin.json +8 -0
  580. package/plugins/lisa-harper-fabric-devin/generated-artifact-globs.txt +5 -0
  581. package/plugins/lisa-harper-fabric-devin/hooks/block-generated-artifact-edits.sh +141 -0
  582. package/plugins/lisa-harper-fabric-devin/hooks/devin-tool-name-shim.sh +30 -0
  583. package/plugins/lisa-harper-fabric-devin/hooks/enforce-config-extensions.mjs +196 -0
  584. package/plugins/lisa-harper-fabric-devin/hooks/enforce-config-extensions.sh +46 -0
  585. package/plugins/lisa-harper-fabric-devin/hooks/inject-rules.sh +27 -0
  586. package/plugins/lisa-harper-fabric-devin/hooks.json +36 -0
  587. package/plugins/lisa-harper-fabric-devin/rules/eager/harper-fabric.md +31 -0
  588. package/plugins/lisa-harper-fabric-devin/rules/reference/harper-fabric.md +52 -0
  589. package/plugins/lisa-harper-fabric-devin/skills/e2e-coverage-gaps/SKILL.md +117 -0
  590. package/plugins/lisa-harper-fabric-devin/skills/harper-auth/SKILL.md +368 -0
  591. package/plugins/lisa-harper-fabric-devin/skills/harper-build-and-deploy/SKILL.md +198 -0
  592. package/plugins/lisa-harper-fabric-devin/skills/harper-caching/SKILL.md +265 -0
  593. package/plugins/lisa-harper-fabric-devin/skills/harper-component-model/SKILL.md +87 -0
  594. package/plugins/lisa-harper-fabric-devin/skills/harper-config-yaml/SKILL.md +283 -0
  595. package/plugins/lisa-harper-fabric-devin/skills/harper-operations/SKILL.md +239 -0
  596. package/plugins/lisa-harper-fabric-devin/skills/harper-realtime/SKILL.md +187 -0
  597. package/plugins/lisa-harper-fabric-devin/skills/harper-resources/SKILL.md +142 -0
  598. package/plugins/lisa-harper-fabric-devin/skills/harper-rest-queries/SKILL.md +403 -0
  599. package/plugins/lisa-harper-fabric-devin/skills/harper-schema-graphql/SKILL.md +123 -0
  600. package/plugins/lisa-harper-fabric-devin/skills/harper-testing/SKILL.md +254 -0
  601. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  602. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  603. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  604. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  605. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  606. package/plugins/lisa-nestjs-devin/.claude-plugin/plugin.json +11 -0
  607. package/plugins/lisa-nestjs-devin/.devin-plugin/plugin.json +8 -0
  608. package/plugins/lisa-nestjs-devin/hooks/block-migration-edits.sh +125 -0
  609. package/plugins/lisa-nestjs-devin/hooks/devin-tool-name-shim.sh +30 -0
  610. package/plugins/lisa-nestjs-devin/hooks/lisa-edit-gate.sh +152 -0
  611. package/plugins/lisa-nestjs-devin/hooks.json +15 -0
  612. package/plugins/lisa-nestjs-devin/skills/nestjs-graphql/SKILL.md +176 -0
  613. package/plugins/lisa-nestjs-devin/skills/nestjs-graphql/references/advanced-features.md +527 -0
  614. package/plugins/lisa-nestjs-devin/skills/nestjs-graphql/references/project-patterns.md +531 -0
  615. package/plugins/lisa-nestjs-devin/skills/nestjs-graphql/references/quick-start.md +257 -0
  616. package/plugins/lisa-nestjs-devin/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
  617. package/plugins/lisa-nestjs-devin/skills/nestjs-graphql/references/types-scalars.md +513 -0
  618. package/plugins/lisa-nestjs-devin/skills/nestjs-rules/SKILL.md +560 -0
  619. package/plugins/lisa-nestjs-devin/skills/typeorm-patterns/SKILL.md +275 -0
  620. package/plugins/lisa-nestjs-devin/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
  621. package/plugins/lisa-nestjs-devin/skills/typeorm-patterns/references/entity-patterns.md +450 -0
  622. package/plugins/lisa-nestjs-devin/skills/typeorm-patterns/references/observability-patterns.md +536 -0
  623. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  624. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  625. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  626. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  627. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  628. package/plugins/lisa-openclaw-devin/.claude-plugin/plugin.json +8 -0
  629. package/plugins/lisa-openclaw-devin/.devin-plugin/plugin.json +8 -0
  630. package/plugins/lisa-openclaw-devin/skills/lisa-openclaw-connect-repo-topic/SKILL.md +163 -0
  631. package/plugins/lisa-openclaw-devin/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +185 -0
  632. package/plugins/lisa-openclaw-devin/skills/lisa-openclaw-connect-staff/SKILL.md +175 -0
  633. package/plugins/lisa-openclaw-devin/skills/lisa-openclaw-connect-staff/references/platform-routing.md +123 -0
  634. package/plugins/lisa-openclaw-devin/skills/lisa-openclaw-connect-staff/references/prompts.md +78 -0
  635. package/plugins/lisa-openclaw-devin/skills/lisa-openclaw-setup/SKILL.md +141 -0
  636. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  637. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  638. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  639. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  640. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  641. package/plugins/lisa-phaser-devin/.claude-plugin/plugin.json +11 -0
  642. package/plugins/lisa-phaser-devin/.devin-plugin/plugin.json +8 -0
  643. package/plugins/lisa-phaser-devin/agents/accessibility-advocate.md +55 -0
  644. package/plugins/lisa-phaser-devin/agents/art-director.md +90 -0
  645. package/plugins/lisa-phaser-devin/agents/audio-director.md +65 -0
  646. package/plugins/lisa-phaser-devin/agents/combat-designer.md +61 -0
  647. package/plugins/lisa-phaser-devin/agents/economy-designer.md +59 -0
  648. package/plugins/lisa-phaser-devin/agents/game-designer.md +62 -0
  649. package/plugins/lisa-phaser-devin/agents/game-feel-specialist.md +56 -0
  650. package/plugins/lisa-phaser-devin/agents/level-designer.md +59 -0
  651. package/plugins/lisa-phaser-devin/agents/localization-manager.md +61 -0
  652. package/plugins/lisa-phaser-devin/agents/marketing-strategist.md +59 -0
  653. package/plugins/lisa-phaser-devin/agents/monetization-designer.md +59 -0
  654. package/plugins/lisa-phaser-devin/agents/narrative-designer.md +56 -0
  655. package/plugins/lisa-phaser-devin/agents/onboarding-advocate.md +59 -0
  656. package/plugins/lisa-phaser-devin/agents/player-advocate.md +57 -0
  657. package/plugins/lisa-phaser-devin/agents/producer.md +61 -0
  658. package/plugins/lisa-phaser-devin/agents/product-analyst.md +62 -0
  659. package/plugins/lisa-phaser-devin/agents/publisher.md +59 -0
  660. package/plugins/lisa-phaser-devin/agents/qa-playtester.md +57 -0
  661. package/plugins/lisa-phaser-devin/agents/target-player.md +52 -0
  662. package/plugins/lisa-phaser-devin/agents/ux-ui-designer.md +60 -0
  663. package/plugins/lisa-phaser-devin/hooks/devin-tool-name-shim.sh +30 -0
  664. package/plugins/lisa-phaser-devin/hooks/inject-rules.sh +27 -0
  665. package/plugins/lisa-phaser-devin/hooks.json +14 -0
  666. package/plugins/lisa-phaser-devin/rules/eager/phaser.md +44 -0
  667. package/plugins/lisa-phaser-devin/rules/reference/phaser.md +184 -0
  668. package/plugins/lisa-phaser-devin/skills/phaser-accessibility/SKILL.md +135 -0
  669. package/plugins/lisa-phaser-devin/skills/phaser-asset-pipeline/SKILL.md +222 -0
  670. package/plugins/lisa-phaser-devin/skills/phaser-asset-sourcing/SKILL.md +151 -0
  671. package/plugins/lisa-phaser-devin/skills/phaser-build-deploy/SKILL.md +153 -0
  672. package/plugins/lisa-phaser-devin/skills/phaser-i18n/SKILL.md +122 -0
  673. package/plugins/lisa-phaser-devin/skills/phaser-project-structure/SKILL.md +89 -0
  674. package/plugins/lisa-phaser-devin/skills/phaser-services/SKILL.md +208 -0
  675. package/plugins/lisa-phaser-devin/skills/phaser-testing/SKILL.md +192 -0
  676. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  677. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  678. package/plugins/lisa-rails-agy/plugin.json +1 -1
  679. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  680. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  681. package/plugins/lisa-rails-devin/.claude-plugin/plugin.json +11 -0
  682. package/plugins/lisa-rails-devin/.devin-plugin/plugin.json +8 -0
  683. package/plugins/lisa-rails-devin/agents/ops-specialist.md +226 -0
  684. package/plugins/lisa-rails-devin/hooks/devin-tool-name-shim.sh +30 -0
  685. package/plugins/lisa-rails-devin/hooks/inject-rules.sh +40 -0
  686. package/plugins/lisa-rails-devin/hooks/lisa-edit-gate.sh +152 -0
  687. package/plugins/lisa-rails-devin/hooks/rubocop-on-edit.sh +101 -0
  688. package/plugins/lisa-rails-devin/hooks/sg-scan-on-edit.sh +97 -0
  689. package/plugins/lisa-rails-devin/hooks.json +29 -0
  690. package/plugins/lisa-rails-devin/rules/eager/rails-conventions.md +23 -0
  691. package/plugins/lisa-rails-devin/rules/reference/rails-conventions.md +176 -0
  692. package/plugins/lisa-rails-devin/skills/action-controller-best-practices/SKILL.md +374 -0
  693. package/plugins/lisa-rails-devin/skills/action-view-best-practices/SKILL.md +335 -0
  694. package/plugins/lisa-rails-devin/skills/active-record-model-best-practices/SKILL.md +166 -0
  695. package/plugins/lisa-rails-devin/skills/e2e-coverage-gaps/SKILL.md +117 -0
  696. package/plugins/lisa-rails-devin/skills/fix-linter-error/SKILL.md +45 -0
  697. package/plugins/lisa-rails-devin/skills/improve-code-complexity/SKILL.md +51 -0
  698. package/plugins/lisa-rails-devin/skills/improve-max-lines/SKILL.md +46 -0
  699. package/plugins/lisa-rails-devin/skills/improve-max-lines-per-function/SKILL.md +46 -0
  700. package/plugins/lisa-rails-devin/skills/improve-test-coverage/SKILL.md +48 -0
  701. package/plugins/lisa-rails-devin/skills/jira-add-journey/SKILL.md +79 -0
  702. package/plugins/lisa-rails-devin/skills/jira-create/SKILL.md +100 -0
  703. package/plugins/lisa-rails-devin/skills/jira-evidence/SKILL.md +76 -0
  704. package/plugins/lisa-rails-devin/skills/jira-evidence/scripts/post-evidence.sh +262 -0
  705. package/plugins/lisa-rails-devin/skills/jira-journey/SKILL.md +65 -0
  706. package/plugins/lisa-rails-devin/skills/jira-verify/SKILL.md +26 -0
  707. package/plugins/lisa-rails-devin/skills/ops-check-logs/SKILL.md +191 -0
  708. package/plugins/lisa-rails-devin/skills/ops-deploy/SKILL.md +153 -0
  709. package/plugins/lisa-rails-devin/skills/ops-run-local/SKILL.md +169 -0
  710. package/plugins/lisa-rails-devin/skills/ops-verify-jobs/SKILL.md +157 -0
  711. package/plugins/lisa-rails-devin/skills/ops-verify-telemetry/SKILL.md +226 -0
  712. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  713. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  714. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  715. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  716. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  717. package/plugins/lisa-typescript-devin/.claude-plugin/plugin.json +11 -0
  718. package/plugins/lisa-typescript-devin/.devin-plugin/plugin.json +8 -0
  719. package/plugins/lisa-typescript-devin/hooks/block-suppress-directives.sh +141 -0
  720. package/plugins/lisa-typescript-devin/hooks/devin-tool-name-shim.sh +30 -0
  721. package/plugins/lisa-typescript-devin/hooks/format-on-edit.sh +102 -0
  722. package/plugins/lisa-typescript-devin/hooks/lint-on-edit.sh +117 -0
  723. package/plugins/lisa-typescript-devin/hooks/lisa-edit-gate.sh +152 -0
  724. package/plugins/lisa-typescript-devin/hooks/sg-scan-on-edit.sh +94 -0
  725. package/plugins/lisa-typescript-devin/hooks.json +34 -0
  726. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  727. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  728. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  729. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  730. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  731. package/plugins/lisa-wiki-devin/.claude-plugin/plugin.json +8 -0
  732. package/plugins/lisa-wiki-devin/.devin-plugin/plugin.json +8 -0
  733. package/plugins/lisa-wiki-devin/ci/lisa-wiki-validate.yml +33 -0
  734. package/plugins/lisa-wiki-devin/schema/lisa-wiki-config.schema.json +162 -0
  735. package/plugins/lisa-wiki-devin/schema/wiki-structure.schema.json +51 -0
  736. package/plugins/lisa-wiki-devin/scripts/_wiki-lib.mjs +204 -0
  737. package/plugins/lisa-wiki-devin/scripts/diff-guard.mjs +117 -0
  738. package/plugins/lisa-wiki-devin/scripts/ensure-gitignore.mjs +131 -0
  739. package/plugins/lisa-wiki-devin/scripts/ensure-wiki.mjs +268 -0
  740. package/plugins/lisa-wiki-devin/scripts/ingest-git.mjs +198 -0
  741. package/plugins/lisa-wiki-devin/scripts/ingest-memory.mjs +135 -0
  742. package/plugins/lisa-wiki-devin/scripts/ingest-roles.mjs +95 -0
  743. package/plugins/lisa-wiki-devin/scripts/ingest_slack_channel.py +361 -0
  744. package/plugins/lisa-wiki-devin/scripts/lib/bounded-child.mjs +159 -0
  745. package/plugins/lisa-wiki-devin/scripts/lint-wiki.mjs +513 -0
  746. package/plugins/lisa-wiki-devin/scripts/mcp-doctor.mjs +72 -0
  747. package/plugins/lisa-wiki-devin/scripts/render-contract.mjs +107 -0
  748. package/plugins/lisa-wiki-devin/scripts/rewrite-refs.mjs +144 -0
  749. package/plugins/lisa-wiki-devin/scripts/slack_oauth_user.py +179 -0
  750. package/plugins/lisa-wiki-devin/scripts/validate-config.mjs +321 -0
  751. package/plugins/lisa-wiki-devin/scripts/verify-migration.mjs +203 -0
  752. package/plugins/lisa-wiki-devin/scripts/verify-wiki-safety.mjs +126 -0
  753. package/plugins/lisa-wiki-devin/scripts/wiki-safety.mjs +378 -0
  754. package/plugins/lisa-wiki-devin/scripts/wiki-status.mjs +345 -0
  755. package/plugins/lisa-wiki-devin/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
  756. package/plugins/lisa-wiki-devin/skills/lisa-wiki-add-role/SKILL.md +35 -0
  757. package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
  758. package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
  759. package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-git/SKILL.md +25 -0
  760. package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
  761. package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
  762. package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
  763. package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
  764. package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
  765. package/plugins/lisa-wiki-devin/skills/lisa-wiki-connector-web/SKILL.md +23 -0
  766. package/plugins/lisa-wiki-devin/skills/lisa-wiki-doctor/SKILL.md +47 -0
  767. package/plugins/lisa-wiki-devin/skills/lisa-wiki-ingest/SKILL.md +106 -0
  768. package/plugins/lisa-wiki-devin/skills/lisa-wiki-lint/SKILL.md +32 -0
  769. package/plugins/lisa-wiki-devin/skills/lisa-wiki-migrate/SKILL.md +43 -0
  770. package/plugins/lisa-wiki-devin/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
  771. package/plugins/lisa-wiki-devin/skills/lisa-wiki-query/SKILL.md +40 -0
  772. package/plugins/lisa-wiki-devin/skills/lisa-wiki-setup/SKILL.md +75 -0
  773. package/plugins/lisa-wiki-devin/skills/lisa-wiki-setup-automations/SKILL.md +83 -0
  774. package/plugins/lisa-wiki-devin/skills/lisa-wiki-status/SKILL.md +47 -0
  775. package/plugins/lisa-wiki-devin/skills/lisa-wiki-tear-down-automations/SKILL.md +34 -0
  776. package/plugins/lisa-wiki-devin/skills/lisa-wiki-usage/SKILL.md +50 -0
  777. package/plugins/lisa-wiki-devin/templates/agents/role-agent.claude.md +16 -0
  778. package/plugins/lisa-wiki-devin/templates/agents/role-agent.codex.toml +15 -0
  779. package/plugins/lisa-wiki-devin/templates/index.md +17 -0
  780. package/plugins/lisa-wiki-devin/templates/llm-wiki-contract.md +72 -0
  781. package/plugins/lisa-wiki-devin/templates/log.md +8 -0
  782. package/plugins/lisa-wiki-devin/templates/page-types/architecture.md +18 -0
  783. package/plugins/lisa-wiki-devin/templates/page-types/concept.md +18 -0
  784. package/plugins/lisa-wiki-devin/templates/page-types/decision.md +18 -0
  785. package/plugins/lisa-wiki-devin/templates/page-types/entity.md +19 -0
  786. package/plugins/lisa-wiki-devin/templates/page-types/open-question.md +18 -0
  787. package/plugins/lisa-wiki-devin/templates/page-types/playbook.md +18 -0
  788. package/plugins/lisa-wiki-devin/templates/page-types/project.md +19 -0
  789. package/plugins/lisa-wiki-devin/templates/page-types/requirement.md +19 -0
  790. package/plugins/lisa-wiki-devin/templates/page-types/staff.md +26 -0
  791. package/plugins/lisa-wiki-devin/templates/start-here.md +24 -0
  792. package/plugins/lisa-wiki-devin/templates/state-readme.md +20 -0
  793. package/plugins/lisa-wiki-devin/templates/wrapper-gitignore.txt +19 -0
  794. package/scripts/build-plugins.sh +2 -2
  795. package/scripts/deployed-guard-advice.mjs +1 -0
  796. package/scripts/generate-devin-plugin-artifacts.mjs +263 -0
  797. package/scripts/lib/hook-registration-audit.mjs +3 -1
  798. package/scripts/lib/per-agent-hook-filter.mjs +174 -5
  799. package/scripts/lib/plugin-rule-citations.mjs +2 -2
@@ -0,0 +1,169 @@
1
+ ---
2
+ name: ops-run-local
3
+ description: Manage the local development environment for Expo + serverless backend projects. Supports start, stop, restart, and status for the full stack or individual services.
4
+ allowed-tools:
5
+ - Bash
6
+ - Read
7
+ ---
8
+
9
+ # Ops: Run Local
10
+
11
+ Manage the local development environment.
12
+
13
+ **Argument**: `$ARGUMENTS` — `start`, `stop`, `restart`, `status`, `start-frontend`, `start-backend` (default: `start`)
14
+
15
+ ## Path Convention
16
+
17
+ - **Frontend**: Current project directory (`.`)
18
+ - **Backend**: `${BACKEND_DIR:-../backend-v2}` — set `BACKEND_DIR` in `.claude/settings.local.json` if your backend is elsewhere
19
+
20
+ ## Prerequisites (run before any operation)
21
+
22
+ 1. Verify backend directory exists:
23
+ ```bash
24
+ BACKEND_DIR="${BACKEND_DIR:-../backend-v2}"
25
+ test -d "$BACKEND_DIR" && echo "Backend dir OK: $BACKEND_DIR" || echo "ERROR: Backend dir not found at $BACKEND_DIR — set BACKEND_DIR"
26
+ ```
27
+ 2. Check port availability:
28
+ ```bash
29
+ lsof -i :8081 2>/dev/null | grep LISTEN
30
+ lsof -i :3000 2>/dev/null | grep LISTEN
31
+ ```
32
+ 3. Verify bun is installed:
33
+ ```bash
34
+ which bun && bun --version
35
+ ```
36
+
37
+ ## Discovery
38
+
39
+ Read the frontend `package.json` to find available start scripts (e.g., `start:local`, `start:dev`, `start:staging`). Read the backend `package.json` to find backend start scripts (e.g., `start:local`, `start:dev`).
40
+
41
+ ## Operations
42
+
43
+ ### start (full stack)
44
+
45
+ Start both backend and frontend for local development.
46
+
47
+ 1. **Start backend** (background):
48
+ ```bash
49
+ cd "${BACKEND_DIR:-../backend-v2}" && IS_OFFLINE=true bun run start:local
50
+ ```
51
+ Run this in the background using the Bash tool with `run_in_background: true`.
52
+
53
+ 2. **Wait for backend** (up to 30 seconds):
54
+ ```bash
55
+ for i in $(seq 1 30); do
56
+ curl -sf http://localhost:3000/graphql -X POST \
57
+ -H "Content-Type: application/json" \
58
+ -d '{"query":"{ __typename }"}' > /dev/null 2>&1 && echo "Backend ready" && break
59
+ sleep 1
60
+ done
61
+ ```
62
+
63
+ 3. **Start frontend** (background):
64
+ ```bash
65
+ bun run start:local
66
+ ```
67
+ Run this in the background using the Bash tool with `run_in_background: true`.
68
+
69
+ 4. **Verify frontend** (up to 60 seconds — Metro bundler can be slow):
70
+ ```bash
71
+ for i in $(seq 1 60); do
72
+ curl -sf http://localhost:8081 > /dev/null 2>&1 && echo "Frontend ready" && break
73
+ sleep 1
74
+ done
75
+ ```
76
+
77
+ 5. Report status table.
78
+
79
+ ### start-frontend (frontend only, pointing at remote backend)
80
+
81
+ Use when the backend is already deployed and you only need the frontend.
82
+
83
+ 1. ```bash
84
+ bun run start:dev
85
+ ```
86
+ Run in background.
87
+
88
+ 2. Verify:
89
+ ```bash
90
+ for i in $(seq 1 60); do
91
+ curl -sf http://localhost:8081 > /dev/null 2>&1 && echo "Frontend ready" && break
92
+ sleep 1
93
+ done
94
+ ```
95
+
96
+ ### start-backend (backend only)
97
+
98
+ 1. Check AWS credentials (discover profile from backend `package.json` scripts or remote-routine
99
+ `~/.aws/config`):
100
+ ```bash
101
+ aws sts get-caller-identity --profile {aws-profile} 2>/dev/null
102
+ ```
103
+ If this is an interactive local session and credentials are expired, refresh the backend's local
104
+ AWS signin flow. In headless sessions, rely on the configured environment-backed AWS profile and
105
+ do not start an SSO browser/device flow.
106
+
107
+ 2. Start:
108
+ ```bash
109
+ cd "${BACKEND_DIR:-../backend-v2}" && IS_OFFLINE=true bun run start:local
110
+ ```
111
+ Run in background.
112
+
113
+ 3. Verify:
114
+ ```bash
115
+ for i in $(seq 1 30); do
116
+ curl -sf http://localhost:3000/graphql -X POST \
117
+ -H "Content-Type: application/json" \
118
+ -d '{"query":"{ __typename }"}' > /dev/null 2>&1 && echo "Backend ready" && break
119
+ sleep 1
120
+ done
121
+ ```
122
+
123
+ ### stop
124
+
125
+ Kill all local services.
126
+
127
+ ```bash
128
+ # Kill frontend (Metro bundler)
129
+ lsof -ti :8081 | xargs kill -9 2>/dev/null || echo "No frontend process on :8081"
130
+
131
+ # Kill backend (Serverless Offline)
132
+ lsof -ti :3000 | xargs kill -9 2>/dev/null || echo "No backend process on :3000"
133
+
134
+ # Stop Docker if running
135
+ cd "${BACKEND_DIR:-../backend-v2}" && docker compose down 2>/dev/null || true
136
+ ```
137
+
138
+ ### restart
139
+
140
+ 1. Run **stop** (above).
141
+ 2. Wait 2 seconds: `sleep 2`
142
+ 3. Run **start** (above).
143
+ 4. Verify both services respond.
144
+
145
+ ### status
146
+
147
+ Check what is currently running and responsive.
148
+
149
+ ```bash
150
+ echo "=== Port Check ==="
151
+ echo -n "Frontend :8081 — "; lsof -i :8081 2>/dev/null | grep LISTEN > /dev/null && echo "LISTENING" || echo "NOT LISTENING"
152
+ echo -n "Backend :3000 — "; lsof -i :3000 2>/dev/null | grep LISTEN > /dev/null && echo "LISTENING" || echo "NOT LISTENING"
153
+
154
+ echo ""
155
+ echo "=== Health Check ==="
156
+ echo -n "Frontend :8081 — "; curl -sf -o /dev/null -w "%{http_code}" http://localhost:8081 2>/dev/null || echo "UNREACHABLE"
157
+ echo -n "Backend :3000 — "; curl -sf -o /dev/null -w "%{http_code}" http://localhost:3000/graphql -X POST -H "Content-Type: application/json" -d '{"query":"{ __typename }"}' 2>/dev/null || echo "UNREACHABLE"
158
+
159
+ echo ""
160
+ echo "=== Docker ==="
161
+ docker compose -f "${BACKEND_DIR:-../backend-v2}/compose.yaml" ps 2>/dev/null || echo "No Docker services running"
162
+ ```
163
+
164
+ Report results as a table:
165
+
166
+ | Service | Port | Listening | Responsive |
167
+ |---------|------|-----------|------------|
168
+ | Frontend (Metro) | 8081 | YES/NO | YES/NO |
169
+ | Backend (Serverless Offline) | 3000 | YES/NO | YES/NO |
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: ops-verify-health
3
+ description: Health check all services across environments. Checks frontend URLs, backend GraphQL endpoints, and reports response times.
4
+ allowed-tools:
5
+ - Bash
6
+ - Read
7
+ ---
8
+
9
+ # Ops: Verify Health
10
+
11
+ Health check all services across environments.
12
+
13
+ **Argument**: `$ARGUMENTS` — environment(s) to check (default: `all`). Options: `local`, `dev`, `staging`, `production`, `all`
14
+
15
+ ## Discovery
16
+
17
+ Read these files to build the environment URL table:
18
+
19
+ 1. `e2e/constants.ts` — frontend URLs per environment
20
+ 2. `.env.localhost`, `.env.development`, `.env.staging`, `.env.production` — `EXPO_PUBLIC_GRAPHQL_BASE_URL` for backend GraphQL URLs
21
+
22
+ ## Health Checks
23
+
24
+ For each environment, run these checks:
25
+
26
+ ### Frontend Check
27
+
28
+ ```bash
29
+ curl -sf -o /dev/null -w "HTTP %{http_code} in %{time_total}s" {frontend_url}
30
+ ```
31
+
32
+ Verify the response contains Expo/React markers:
33
+ ```bash
34
+ curl -sf {frontend_url} | head -20
35
+ ```
36
+
37
+ ### Backend GraphQL Check
38
+
39
+ ```bash
40
+ curl -sf {graphql_url} -X POST \
41
+ -H "Content-Type: application/json" \
42
+ -d '{"query":"{ __typename }"}' \
43
+ -w "\nHTTP %{http_code} in %{time_total}s\n"
44
+ ```
45
+
46
+ ### GraphQL Introspection (detailed check)
47
+
48
+ ```bash
49
+ curl -sf {graphql_url} -X POST \
50
+ -H "Content-Type: application/json" \
51
+ -d '{"query":"{ __schema { queryType { name } } }"}' \
52
+ -w "\nHTTP %{http_code} in %{time_total}s\n"
53
+ ```
54
+
55
+ ## Full Health Check Script
56
+
57
+ Run all checks for the specified environment(s):
58
+
59
+ ```bash
60
+ check_env() {
61
+ local ENV=$1
62
+ local FE_URL=$2
63
+ local BE_URL=$3
64
+
65
+ echo "=== $ENV ==="
66
+
67
+ # Frontend
68
+ FE_STATUS=$(curl -sf -o /dev/null -w "%{http_code}" --max-time 10 "$FE_URL" 2>/dev/null || echo "000")
69
+ FE_TIME=$(curl -sf -o /dev/null -w "%{time_total}" --max-time 10 "$FE_URL" 2>/dev/null || echo "timeout")
70
+ echo "Frontend: HTTP $FE_STATUS ($FE_TIME s)"
71
+
72
+ # Backend
73
+ BE_RESULT=$(curl -sf --max-time 10 "$BE_URL" -X POST \
74
+ -H "Content-Type: application/json" \
75
+ -d '{"query":"{ __typename }"}' \
76
+ -w "\n%{http_code} %{time_total}" 2>/dev/null || echo -e "\n000 timeout")
77
+ BE_STATUS=$(echo "$BE_RESULT" | tail -1 | awk '{print $1}')
78
+ BE_TIME=$(echo "$BE_RESULT" | tail -1 | awk '{print $2}')
79
+ echo "Backend: HTTP $BE_STATUS ($BE_TIME s)"
80
+ echo ""
81
+ }
82
+ ```
83
+
84
+ ## EAS Update Status
85
+
86
+ Check the latest OTA updates deployed to each branch:
87
+
88
+ ```bash
89
+ eas update:list --branch {env} --limit 3
90
+ ```
91
+
92
+ ## Output Format
93
+
94
+ Report results as a table:
95
+
96
+ | Service | Environment | Status | Response Time | Details |
97
+ |---------|-------------|--------|---------------|---------|
98
+ | Frontend | dev | UP (200) | 0.45s | HTML contains React root |
99
+ | Backend | dev | UP (200) | 0.32s | GraphQL responds `__typename` |
100
+
101
+ Flag any service with status != 200 or response time > 5s as a concern.
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: owasp-zap
3
+ description: This skill should be used when running or interpreting an OWASP ZAP baseline DAST scan of the Expo web export — after changes to HTTP headers, authentication, or security middleware, before deploying to staging or production, or when triaging ZAP findings from CI or pull request checks. Covers running scripts/zap-baseline.sh locally, risk-level triage, common findings and fixes, and .zap/baseline.conf rule configuration.
4
+ ---
5
+
6
+ # OWASP ZAP Baseline Scanning
7
+
8
+ OWASP ZAP (Zed Attack Proxy) performs DAST (Dynamic Application Security Testing) by scanning a running application for common security vulnerabilities from the OWASP Top 10.
9
+
10
+ ## When to Use
11
+
12
+ - After making changes to HTTP headers, authentication, or security middleware
13
+ - Before deploying to staging or production
14
+ - When reviewing security scan results from CI
15
+ - When triaging ZAP findings from pull request checks
16
+
17
+ ## Running Locally
18
+
19
+ ```bash
20
+ # Requires Docker to be installed and running
21
+ bash scripts/zap-baseline.sh
22
+ ```
23
+
24
+ The scan builds the Expo web export, serves it locally, and runs ZAP against it. Reports are saved to `zap-report.html`, `zap-report.json`, and `zap-report.md`.
25
+
26
+ ## Interpreting Results
27
+
28
+ ZAP findings are categorized by risk level:
29
+
30
+ | Risk | Action |
31
+ |------|--------|
32
+ | **High** | Fix immediately — indicates exploitable vulnerability |
33
+ | **Medium** | Fix before deployment — security best practice violation |
34
+ | **Low** | Fix when convenient — minor security improvement |
35
+ | **Informational** | Review — may be false positive or acceptable risk |
36
+
37
+ ## Common Findings and Fixes
38
+
39
+ ### Infrastructure-Level (fix at CDN/hosting, not in code)
40
+
41
+ - **CSP Header Not Set**: Configure Content-Security-Policy at CDN or hosting platform. Expo web exports need `script-src 'self' 'unsafe-inline'` for hydration.
42
+ - **HSTS Not Set**: Configure Strict-Transport-Security at CDN/load balancer.
43
+ - **X-Frame-Options**: Use `frame-ancestors` in CSP at CDN level.
44
+
45
+ ### Application-Level (fix in code)
46
+
47
+ - **Cookie flags missing**: Ensure all cookies set `HttpOnly`, `Secure`, and `SameSite` attributes.
48
+ - **Debug error messages**: Ensure error boundaries don't leak stack traces in production.
49
+ - **Server version disclosure**: Remove or mask the `Server` response header.
50
+
51
+ ## Configuration
52
+
53
+ ZAP scan rules are configured in `.zap/baseline.conf`. Each line controls how ZAP treats a specific rule:
54
+
55
+ - `IGNORE`: Skip the rule entirely
56
+ - `WARN`: Report finding but don't fail the build
57
+ - `FAIL`: Fail the build if this finding is detected
58
+
59
+ ## CI Integration
60
+
61
+ ZAP runs automatically in CI via the `zap-baseline.yml` workflow. Results are uploaded as artifacts and the build fails on medium+ severity findings.
@@ -0,0 +1,226 @@
1
+ ---
2
+ name: play-store-access
3
+ description: "Read-only Google Play Console access layer for Expo projects. Use when an operator or agent needs to set up Play Developer API credentials, resolve the Android package name, or check the production track release state without using the Play Console UI. Reads the androidpublisher v3 API only; track promotion, rollout changes, and submissions are out of scope."
4
+ version: 1.0.0
5
+ license: MIT
6
+ allowed-tools:
7
+ - Bash
8
+ - Read
9
+ ---
10
+
11
+ # Play Store Access: $ARGUMENTS
12
+
13
+ Read-only access layer for Google Play release state in Expo projects. Use it to
14
+ answer whether the Android app is live, halted, draft, or in staged rollout on a
15
+ Play track after EAS submission.
16
+
17
+ This skill MUST NOT promote tracks, change rollout percentages, create releases,
18
+ or submit builds. EAS remains the submission path.
19
+
20
+ ## Invocation Contract
21
+
22
+ ```text
23
+ operation: setup
24
+ operation: production-status [track:production] [package:<android.package>]
25
+ operation: track-status track:<track> [package:<android.package>]
26
+ operation: resolve-package
27
+ ```
28
+
29
+ Return a concise result with the package name, track, release `name` /
30
+ `versionCodes`, `status`, `userFraction` when present, and any `countryTargeting`
31
+ or in-app update priority fields present in the API response.
32
+
33
+ ## Configuration
34
+
35
+ Project-safe config can live in `.lisa.config.json`:
36
+
37
+ ```json
38
+ {
39
+ "playStore": {
40
+ "packageName": "com.example.app",
41
+ "track": "production"
42
+ }
43
+ }
44
+ ```
45
+
46
+ Local credential config belongs in `.lisa.config.local.json`, which must stay
47
+ gitignored:
48
+
49
+ ```json
50
+ {
51
+ "playStore": {
52
+ "serviceAccountKeyPath": "./google-play-service-account.json"
53
+ }
54
+ }
55
+ ```
56
+
57
+ Supported credential locations, in resolution order:
58
+
59
+ 1. `GOOGLE_PLAY_SERVICE_ACCOUNT_JSON` containing the raw service-account JSON.
60
+ 2. `GOOGLE_PLAY_SERVICE_ACCOUNT_KEY_BASE64` containing base64 JSON.
61
+ 3. `.lisa.config.local.json` `playStore.serviceAccountKeyPath`.
62
+ 4. Darwin keychain item `lisa-google-play` account `<packageName>`.
63
+
64
+ Fail closed if no credential is available. Never prompt indefinitely and never
65
+ fall back to Play Console UI scraping.
66
+
67
+ ## One-Time Setup Flow
68
+
69
+ For `operation: setup`:
70
+
71
+ 1. Confirm the project is an Expo app by checking for `app.json`,
72
+ `app.config.json`, `app.config.js`, or `app.config.ts`.
73
+ 2. Resolve or ask the operator to provide the Android package name. Prefer
74
+ `.lisa.config.json` `playStore.packageName`, then `expo.android.package` from
75
+ app config.
76
+ 3. In Google Cloud Console, create a service account dedicated to read-only Play
77
+ release visibility and create a JSON key for it.
78
+ 4. In Play Console, open **Setup -> API access**, link the Google Cloud project if
79
+ needed, then grant the service-account email app access with read-level
80
+ release visibility. Do not grant release-management write permissions for v1.
81
+ 5. Store the key locally using one of the credential locations above. If using a
82
+ path, add the path to `.gitignore` and record only the path in
83
+ `.lisa.config.local.json`.
84
+ 6. Record non-secret defaults in `.lisa.config.json`:
85
+
86
+ ```bash
87
+ jq '.playStore.packageName = "com.example.app" | .playStore.track = "production"' \
88
+ .lisa.config.json > /tmp/lisa-config.json && mv /tmp/lisa-config.json .lisa.config.json
89
+ ```
90
+
91
+ The key material itself must never be committed.
92
+
93
+ ## Resolve Package Name
94
+
95
+ Resolution order:
96
+
97
+ 1. Explicit `package:<value>` argument.
98
+ 2. `.lisa.config.json` `playStore.packageName`.
99
+ 3. `app.json` / `app.config.json` `expo.android.package`.
100
+ 4. `app.config.ts` / `app.config.js` by running Expo config export:
101
+
102
+ ```bash
103
+ npx expo config --json | jq -r '.android.package // empty'
104
+ ```
105
+
106
+ If the package still cannot be resolved, fail with:
107
+
108
+ ```text
109
+ Error: Google Play package name is not configured. Set playStore.packageName in .lisa.config.json or pass package:<name>.
110
+ ```
111
+
112
+ ## Read Track State
113
+
114
+ The androidpublisher API requires an edit even for track reads. Create the edit,
115
+ list the track, then delete the edit. Do not commit the edit.
116
+
117
+ ```bash
118
+ PACKAGE_NAME="${PACKAGE_NAME:-$(jq -r '.playStore.packageName // empty' .lisa.config.json)}"
119
+ TRACK="${TRACK:-$(jq -r '.playStore.track // "production"' .lisa.config.json)}"
120
+ KEY_PATH="$(jq -r '.playStore.serviceAccountKeyPath // empty' .lisa.config.local.json 2>/dev/null)"
121
+
122
+ read_service_account_json() {
123
+ if [ -n "${GOOGLE_PLAY_SERVICE_ACCOUNT_JSON:-}" ]; then
124
+ printf '%s' "$GOOGLE_PLAY_SERVICE_ACCOUNT_JSON"
125
+ return
126
+ fi
127
+ if [ -n "${GOOGLE_PLAY_SERVICE_ACCOUNT_KEY_BASE64:-}" ]; then
128
+ printf '%s' "$GOOGLE_PLAY_SERVICE_ACCOUNT_KEY_BASE64" | base64 --decode 2>/dev/null ||
129
+ printf '%s' "$GOOGLE_PLAY_SERVICE_ACCOUNT_KEY_BASE64" | base64 -D
130
+ return
131
+ fi
132
+ if [ -n "$KEY_PATH" ] && [ -f "$KEY_PATH" ]; then
133
+ cat "$KEY_PATH"
134
+ return
135
+ fi
136
+ if [ "$(uname -s)" = "Darwin" ] && [ -n "$PACKAGE_NAME" ]; then
137
+ security find-generic-password -s lisa-google-play -a "$PACKAGE_NAME" -w 2>/dev/null
138
+ return
139
+ fi
140
+ }
141
+
142
+ SERVICE_ACCOUNT_JSON="$(read_service_account_json)"
143
+ [ -n "$SERVICE_ACCOUNT_JSON" ] || {
144
+ echo "Error: no Google Play service-account key found. Run play-store-access operation: setup." >&2
145
+ exit 1
146
+ }
147
+ [ -n "$PACKAGE_NAME" ] || {
148
+ echo "Error: Google Play package name is not configured. Set playStore.packageName or pass package:<name>." >&2
149
+ exit 1
150
+ }
151
+
152
+ ACCESS_TOKEN="$(
153
+ SERVICE_ACCOUNT_JSON="$SERVICE_ACCOUNT_JSON" node <<'NODE'
154
+ const crypto = require("crypto");
155
+
156
+ const account = JSON.parse(process.env.SERVICE_ACCOUNT_JSON);
157
+ const now = Math.floor(Date.now() / 1000);
158
+ const encode = (value) =>
159
+ Buffer.from(JSON.stringify(value)).toString("base64url");
160
+ const unsigned = `${encode({ alg: "RS256", typ: "JWT" })}.${encode({
161
+ iss: account.client_email,
162
+ scope: "https://www.googleapis.com/auth/androidpublisher",
163
+ aud: "https://oauth2.googleapis.com/token",
164
+ iat: now,
165
+ exp: now + 3600,
166
+ })}`;
167
+ const signature = crypto
168
+ .createSign("RSA-SHA256")
169
+ .update(unsigned)
170
+ .sign(account.private_key, "base64url");
171
+
172
+ fetch("https://oauth2.googleapis.com/token", {
173
+ method: "POST",
174
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
175
+ body: new URLSearchParams({
176
+ grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
177
+ assertion: `${unsigned}.${signature}`,
178
+ }),
179
+ })
180
+ .then(async (response) => {
181
+ const body = await response.json();
182
+ if (!response.ok) {
183
+ throw new Error(JSON.stringify(body));
184
+ }
185
+ process.stdout.write(body.access_token);
186
+ })
187
+ .catch((error) => {
188
+ console.error(`Error: failed to obtain Google Play access token: ${error.message}`);
189
+ process.exit(1);
190
+ });
191
+ NODE
192
+ )"
193
+
194
+ BASE="https://androidpublisher.googleapis.com/androidpublisher/v3/applications/${PACKAGE_NAME}"
195
+ EDIT_ID="$(curl -fsS -X POST "${BASE}/edits" -H "Authorization: Bearer ${ACCESS_TOKEN}" | jq -r '.id')"
196
+ trap 'curl -fsS -X DELETE "${BASE}/edits/${EDIT_ID}" -H "Authorization: Bearer ${ACCESS_TOKEN}" >/dev/null 2>&1 || true' EXIT
197
+
198
+ curl -fsS "${BASE}/edits/${EDIT_ID}/tracks/${TRACK}" \
199
+ -H "Authorization: Bearer ${ACCESS_TOKEN}" |
200
+ jq --arg packageName "$PACKAGE_NAME" \
201
+ '{packageName: $packageName, track: .track, releases: (.releases // [])}'
202
+ ```
203
+
204
+ Interpretation:
205
+
206
+ - `status: completed` means the release is live on that track.
207
+ - `status: inProgress` means staged rollout; inspect `userFraction`.
208
+ - `status: halted` means rollout was stopped.
209
+ - `status: draft` means it is not live.
210
+ - Absence of a production release means the app has no watchable production-track
211
+ release through the API.
212
+
213
+ Known limitation: androidpublisher exposes track/release state well, but
214
+ pre-publication review state is coarse. The reliable watchable signal is whether
215
+ the target version is live on the production track.
216
+
217
+ ## Error Handling
218
+
219
+ - `401` / token exchange failure: service-account key is invalid or expired.
220
+ - `403`: service account is not invited to the Play Console app or lacks read
221
+ access to releases.
222
+ - `404`: package name is wrong, the app is not created in Play Console, or the
223
+ service account has no access to that app.
224
+
225
+ In all cases, report the package name and credential source used, but never print
226
+ private key material or the access token.