@codyswann/lisa 2.119.1 → 2.121.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (766) hide show
  1. package/.claude-plugin/marketplace.json +18 -0
  2. package/dist/agy/agents-md-installer.d.ts +24 -0
  3. package/dist/agy/agents-md-installer.d.ts.map +1 -0
  4. package/dist/agy/agents-md-installer.js +126 -0
  5. package/dist/agy/agents-md-installer.js.map +1 -0
  6. package/dist/agy/mcp-installer.d.ts +102 -0
  7. package/dist/agy/mcp-installer.d.ts.map +1 -0
  8. package/dist/agy/mcp-installer.js +155 -0
  9. package/dist/agy/mcp-installer.js.map +1 -0
  10. package/dist/agy/plugin-installer.d.ts +21 -0
  11. package/dist/agy/plugin-installer.d.ts.map +1 -0
  12. package/dist/agy/plugin-installer.js +88 -0
  13. package/dist/agy/plugin-installer.js.map +1 -0
  14. package/dist/claude/claude-md-installer.d.ts +18 -0
  15. package/dist/claude/claude-md-installer.d.ts.map +1 -0
  16. package/dist/claude/claude-md-installer.js +62 -0
  17. package/dist/claude/claude-md-installer.js.map +1 -0
  18. package/dist/codex/lisa-plugin-detection.d.ts +68 -0
  19. package/dist/codex/lisa-plugin-detection.d.ts.map +1 -0
  20. package/dist/codex/lisa-plugin-detection.js +139 -0
  21. package/dist/codex/lisa-plugin-detection.js.map +1 -0
  22. package/dist/copilot/copilot-instructions-installer.d.ts +18 -0
  23. package/dist/copilot/copilot-instructions-installer.d.ts.map +1 -0
  24. package/dist/copilot/copilot-instructions-installer.js +61 -0
  25. package/dist/copilot/copilot-instructions-installer.js.map +1 -0
  26. package/dist/copilot/plugin-installer.d.ts +29 -0
  27. package/dist/copilot/plugin-installer.d.ts.map +1 -0
  28. package/dist/copilot/plugin-installer.js +144 -0
  29. package/dist/copilot/plugin-installer.js.map +1 -0
  30. package/dist/core/config.d.ts +28 -4
  31. package/dist/core/config.d.ts.map +1 -1
  32. package/dist/core/config.js +24 -0
  33. package/dist/core/config.js.map +1 -1
  34. package/dist/core/lisa.d.ts +35 -0
  35. package/dist/core/lisa.d.ts.map +1 -1
  36. package/dist/core/lisa.js +99 -2
  37. package/dist/core/lisa.js.map +1 -1
  38. package/package.json +1 -1
  39. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa/.codex-plugin/plugin.json +2 -1
  41. package/plugins/lisa/hooks/hooks.json +75 -0
  42. package/plugins/lisa-agy/agents/architecture-specialist.md +47 -0
  43. package/plugins/lisa-agy/agents/bug-fixer.md +39 -0
  44. package/plugins/lisa-agy/agents/builder.md +40 -0
  45. package/plugins/lisa-agy/agents/confluence-prd-intake.md +65 -0
  46. package/plugins/lisa-agy/agents/debug-specialist.md +114 -0
  47. package/plugins/lisa-agy/agents/git-history-analyzer.md +183 -0
  48. package/plugins/lisa-agy/agents/github-agent.md +148 -0
  49. package/plugins/lisa-agy/agents/github-build-intake.md +64 -0
  50. package/plugins/lisa-agy/agents/github-prd-intake.md +66 -0
  51. package/plugins/lisa-agy/agents/jira-agent.md +129 -0
  52. package/plugins/lisa-agy/agents/jira-build-intake.md +64 -0
  53. package/plugins/lisa-agy/agents/learner.md +43 -0
  54. package/plugins/lisa-agy/agents/learnings-synthesizer.md +135 -0
  55. package/plugins/lisa-agy/agents/linear-agent.md +134 -0
  56. package/plugins/lisa-agy/agents/linear-build-intake.md +64 -0
  57. package/plugins/lisa-agy/agents/linear-prd-intake.md +66 -0
  58. package/plugins/lisa-agy/agents/notion-prd-intake.md +63 -0
  59. package/plugins/lisa-agy/agents/performance-specialist.md +85 -0
  60. package/plugins/lisa-agy/agents/pr-mining-specialist.md +85 -0
  61. package/plugins/lisa-agy/agents/product-specialist.md +63 -0
  62. package/plugins/lisa-agy/agents/quality-specialist.md +56 -0
  63. package/plugins/lisa-agy/agents/security-specialist.md +51 -0
  64. package/plugins/lisa-agy/agents/skill-evaluator.md +245 -0
  65. package/plugins/lisa-agy/agents/spec-conformance-specialist.md +49 -0
  66. package/plugins/lisa-agy/agents/test-specialist.md +49 -0
  67. package/plugins/lisa-agy/agents/tracker-mining-specialist.md +85 -0
  68. package/plugins/lisa-agy/agents/verification-specialist.md +135 -0
  69. package/plugins/lisa-agy/commands/automation-status.md +12 -0
  70. package/plugins/lisa-agy/commands/codify-verification.md +6 -0
  71. package/plugins/lisa-agy/commands/debrief/apply.md +6 -0
  72. package/plugins/lisa-agy/commands/debrief.md +6 -0
  73. package/plugins/lisa-agy/commands/doctor.md +6 -0
  74. package/plugins/lisa-agy/commands/fix/linter-error.md +7 -0
  75. package/plugins/lisa-agy/commands/git/commit.md +7 -0
  76. package/plugins/lisa-agy/commands/git/prune.md +6 -0
  77. package/plugins/lisa-agy/commands/git/submit-pr.md +7 -0
  78. package/plugins/lisa-agy/commands/implement.md +6 -0
  79. package/plugins/lisa-agy/commands/improve/code-complexity.md +6 -0
  80. package/plugins/lisa-agy/commands/improve/max-lines-per-function.md +7 -0
  81. package/plugins/lisa-agy/commands/improve/max-lines.md +7 -0
  82. package/plugins/lisa-agy/commands/improve/test-coverage.md +7 -0
  83. package/plugins/lisa-agy/commands/improve/tests.md +7 -0
  84. package/plugins/lisa-agy/commands/intake-explain.md +31 -0
  85. package/plugins/lisa-agy/commands/intake.md +6 -0
  86. package/plugins/lisa-agy/commands/monitor.md +6 -0
  87. package/plugins/lisa-agy/commands/plan.md +6 -0
  88. package/plugins/lisa-agy/commands/plugin-sync-explain.md +8 -0
  89. package/plugins/lisa-agy/commands/product-walkthrough.md +7 -0
  90. package/plugins/lisa-agy/commands/project-ideation.md +6 -0
  91. package/plugins/lisa-agy/commands/pull-request/review.md +7 -0
  92. package/plugins/lisa-agy/commands/queue-status.md +34 -0
  93. package/plugins/lisa-agy/commands/repair-intake.md +6 -0
  94. package/plugins/lisa-agy/commands/research.md +6 -0
  95. package/plugins/lisa-agy/commands/review/local.md +6 -0
  96. package/plugins/lisa-agy/commands/security/zap-scan.md +6 -0
  97. package/plugins/lisa-agy/commands/setup/atlassian.md +7 -0
  98. package/plugins/lisa-agy/commands/setup/confluence.md +7 -0
  99. package/plugins/lisa-agy/commands/setup/github.md +7 -0
  100. package/plugins/lisa-agy/commands/setup/jira.md +7 -0
  101. package/plugins/lisa-agy/commands/setup/linear.md +7 -0
  102. package/plugins/lisa-agy/commands/setup/notion.md +7 -0
  103. package/plugins/lisa-agy/commands/setup-automations.md +6 -0
  104. package/plugins/lisa-agy/commands/tear-down-automations.md +6 -0
  105. package/plugins/lisa-agy/commands/verify-prd.md +6 -0
  106. package/plugins/lisa-agy/commands/verify.md +6 -0
  107. package/plugins/lisa-agy/commands/wiki/install.md +7 -0
  108. package/plugins/lisa-agy/plugin.json +8 -0
  109. package/plugins/lisa-agy/scripts/automation-status-claude-adapter.mjs +672 -0
  110. package/plugins/lisa-agy/scripts/automation-status-codex-adapter.mjs +697 -0
  111. package/plugins/lisa-agy/scripts/automation-status-contract-drift.mjs +392 -0
  112. package/plugins/lisa-agy/scripts/automation-status-expected-fleet.mjs +319 -0
  113. package/plugins/lisa-agy/scripts/automation-status-report.mjs +170 -0
  114. package/plugins/lisa-agy/scripts/doctor-report.mjs +143 -0
  115. package/plugins/lisa-agy/scripts/plugin-sync-explain.mjs +512 -0
  116. package/plugins/lisa-agy/scripts/project-ideation-idempotency-harness.mjs +319 -0
  117. package/plugins/lisa-agy/scripts/queue-contract-resolution.mjs +453 -0
  118. package/plugins/lisa-agy/scripts/queue-health-classification.mjs +157 -0
  119. package/plugins/lisa-agy/scripts/queue-status-build-readers.mjs +509 -0
  120. package/plugins/lisa-agy/scripts/queue-status-prd-readers.mjs +452 -0
  121. package/plugins/lisa-agy/skills/acceptance-criteria/SKILL.md +71 -0
  122. package/plugins/lisa-agy/skills/agent-design-best-practices/SKILL.md +219 -0
  123. package/plugins/lisa-agy/skills/atlassian-access/SKILL.md +293 -0
  124. package/plugins/lisa-agy/skills/automation-status/SKILL.md +111 -0
  125. package/plugins/lisa-agy/skills/bug-triage/SKILL.md +23 -0
  126. package/plugins/lisa-agy/skills/codebase-research/SKILL.md +87 -0
  127. package/plugins/lisa-agy/skills/codify-verification/SKILL.md +152 -0
  128. package/plugins/lisa-agy/skills/confluence-prd-intake/SKILL.md +417 -0
  129. package/plugins/lisa-agy/skills/confluence-to-tracker/SKILL.md +360 -0
  130. package/plugins/lisa-agy/skills/confluence-write-prd/SKILL.md +109 -0
  131. package/plugins/lisa-agy/skills/debrief/SKILL.md +94 -0
  132. package/plugins/lisa-agy/skills/debrief-apply/SKILL.md +63 -0
  133. package/plugins/lisa-agy/skills/doctor/SKILL.md +317 -0
  134. package/plugins/lisa-agy/skills/epic-triage/SKILL.md +28 -0
  135. package/plugins/lisa-agy/skills/fix-linter-error/SKILL.md +45 -0
  136. package/plugins/lisa-agy/skills/git-commit/SKILL.md +48 -0
  137. package/plugins/lisa-agy/skills/git-prune/SKILL.md +35 -0
  138. package/plugins/lisa-agy/skills/git-submit-pr/SKILL.md +105 -0
  139. package/plugins/lisa-agy/skills/github-add-journey/SKILL.md +115 -0
  140. package/plugins/lisa-agy/skills/github-build-intake/SKILL.md +377 -0
  141. package/plugins/lisa-agy/skills/github-create/SKILL.md +101 -0
  142. package/plugins/lisa-agy/skills/github-evidence/SKILL.md +110 -0
  143. package/plugins/lisa-agy/skills/github-journey/SKILL.md +121 -0
  144. package/plugins/lisa-agy/skills/github-prd-intake/SKILL.md +432 -0
  145. package/plugins/lisa-agy/skills/github-project-v2/SKILL.md +227 -0
  146. package/plugins/lisa-agy/skills/github-read-issue/SKILL.md +248 -0
  147. package/plugins/lisa-agy/skills/github-sync/SKILL.md +119 -0
  148. package/plugins/lisa-agy/skills/github-to-tracker/SKILL.md +345 -0
  149. package/plugins/lisa-agy/skills/github-validate-issue/SKILL.md +331 -0
  150. package/plugins/lisa-agy/skills/github-verify/SKILL.md +29 -0
  151. package/plugins/lisa-agy/skills/github-write-issue/SKILL.md +339 -0
  152. package/plugins/lisa-agy/skills/github-write-prd/SKILL.md +157 -0
  153. package/plugins/lisa-agy/skills/implement/SKILL.md +145 -0
  154. package/plugins/lisa-agy/skills/improve-code-complexity/SKILL.md +44 -0
  155. package/plugins/lisa-agy/skills/improve-max-lines/SKILL.md +45 -0
  156. package/plugins/lisa-agy/skills/improve-max-lines-per-function/SKILL.md +46 -0
  157. package/plugins/lisa-agy/skills/improve-test-coverage/SKILL.md +44 -0
  158. package/plugins/lisa-agy/skills/improve-tests/SKILL.md +47 -0
  159. package/plugins/lisa-agy/skills/intake/SKILL.md +132 -0
  160. package/plugins/lisa-agy/skills/intake-explain/SKILL.md +279 -0
  161. package/plugins/lisa-agy/skills/jira-add-journey/SKILL.md +121 -0
  162. package/plugins/lisa-agy/skills/jira-build-intake/SKILL.md +286 -0
  163. package/plugins/lisa-agy/skills/jira-create/SKILL.md +154 -0
  164. package/plugins/lisa-agy/skills/jira-evidence/SKILL.md +90 -0
  165. package/plugins/lisa-agy/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  166. package/plugins/lisa-agy/skills/jira-journey/SKILL.md +127 -0
  167. package/plugins/lisa-agy/skills/jira-journey/scripts/generate-templates.py +233 -0
  168. package/plugins/lisa-agy/skills/jira-journey/scripts/parse-plan.py +368 -0
  169. package/plugins/lisa-agy/skills/jira-read-ticket/SKILL.md +198 -0
  170. package/plugins/lisa-agy/skills/jira-read-ticket/scripts/download-attachment.sh +110 -0
  171. package/plugins/lisa-agy/skills/jira-sync/SKILL.md +95 -0
  172. package/plugins/lisa-agy/skills/jira-validate-ticket/SKILL.md +318 -0
  173. package/plugins/lisa-agy/skills/jira-verify/SKILL.md +30 -0
  174. package/plugins/lisa-agy/skills/jira-write-ticket/SKILL.md +265 -0
  175. package/plugins/lisa-agy/skills/jsdoc-best-practices/SKILL.md +432 -0
  176. package/plugins/lisa-agy/skills/linear-add-journey/SKILL.md +105 -0
  177. package/plugins/lisa-agy/skills/linear-build-intake/SKILL.md +283 -0
  178. package/plugins/lisa-agy/skills/linear-create/SKILL.md +146 -0
  179. package/plugins/lisa-agy/skills/linear-evidence/SKILL.md +103 -0
  180. package/plugins/lisa-agy/skills/linear-journey/SKILL.md +134 -0
  181. package/plugins/lisa-agy/skills/linear-prd-intake/SKILL.md +383 -0
  182. package/plugins/lisa-agy/skills/linear-read-issue/SKILL.md +200 -0
  183. package/plugins/lisa-agy/skills/linear-sync/SKILL.md +114 -0
  184. package/plugins/lisa-agy/skills/linear-to-tracker/SKILL.md +342 -0
  185. package/plugins/lisa-agy/skills/linear-validate-issue/SKILL.md +313 -0
  186. package/plugins/lisa-agy/skills/linear-verify/SKILL.md +51 -0
  187. package/plugins/lisa-agy/skills/linear-write-issue/SKILL.md +292 -0
  188. package/plugins/lisa-agy/skills/linear-write-prd/SKILL.md +96 -0
  189. package/plugins/lisa-agy/skills/lisa-review-implementation/SKILL.md +209 -0
  190. package/plugins/lisa-agy/skills/monitor/SKILL.md +48 -0
  191. package/plugins/lisa-agy/skills/nightly-add-test-coverage/SKILL.md +40 -0
  192. package/plugins/lisa-agy/skills/nightly-improve-tests/SKILL.md +29 -0
  193. package/plugins/lisa-agy/skills/nightly-lower-code-complexity/SKILL.md +28 -0
  194. package/plugins/lisa-agy/skills/notion-access/SKILL.md +226 -0
  195. package/plugins/lisa-agy/skills/notion-prd-intake/SKILL.md +360 -0
  196. package/plugins/lisa-agy/skills/notion-to-tracker/SKILL.md +357 -0
  197. package/plugins/lisa-agy/skills/notion-write-prd/SKILL.md +109 -0
  198. package/plugins/lisa-agy/skills/performance-review/SKILL.md +94 -0
  199. package/plugins/lisa-agy/skills/plan/SKILL.md +60 -0
  200. package/plugins/lisa-agy/skills/plugin-sync-explain/SKILL.md +53 -0
  201. package/plugins/lisa-agy/skills/prd-backlink/SKILL.md +265 -0
  202. package/plugins/lisa-agy/skills/prd-source-write/SKILL.md +101 -0
  203. package/plugins/lisa-agy/skills/prd-ticket-coverage/SKILL.md +170 -0
  204. package/plugins/lisa-agy/skills/product-walkthrough/SKILL.md +129 -0
  205. package/plugins/lisa-agy/skills/project-ideation/SKILL.md +315 -0
  206. package/plugins/lisa-agy/skills/project-ideation/examples/evidence-card-format.md +21 -0
  207. package/plugins/lisa-agy/skills/project-ideation/examples/host-project-only.md +22 -0
  208. package/plugins/lisa-agy/skills/project-ideation/examples/idempotency-verification-harness.md +57 -0
  209. package/plugins/lisa-agy/skills/project-ideation/examples/public-external-inspiration.md +22 -0
  210. package/plugins/lisa-agy/skills/project-ideation/examples/unavailable-data-rejection.md +22 -0
  211. package/plugins/lisa-agy/skills/pull-request-review/SKILL.md +68 -0
  212. package/plugins/lisa-agy/skills/quality-review/SKILL.md +54 -0
  213. package/plugins/lisa-agy/skills/queue-status/SKILL.md +133 -0
  214. package/plugins/lisa-agy/skills/repair-intake/SKILL.md +584 -0
  215. package/plugins/lisa-agy/skills/reproduce-bug/SKILL.md +96 -0
  216. package/plugins/lisa-agy/skills/research/SKILL.md +68 -0
  217. package/plugins/lisa-agy/skills/review-local/SKILL.md +88 -0
  218. package/plugins/lisa-agy/skills/root-cause-analysis/SKILL.md +155 -0
  219. package/plugins/lisa-agy/skills/security-review/SKILL.md +57 -0
  220. package/plugins/lisa-agy/skills/security-zap-scan/SKILL.md +33 -0
  221. package/plugins/lisa-agy/skills/setup-atlassian/SKILL.md +347 -0
  222. package/plugins/lisa-agy/skills/setup-automations/SKILL.md +99 -0
  223. package/plugins/lisa-agy/skills/setup-confluence/SKILL.md +254 -0
  224. package/plugins/lisa-agy/skills/setup-github/SKILL.md +268 -0
  225. package/plugins/lisa-agy/skills/setup-jira/SKILL.md +198 -0
  226. package/plugins/lisa-agy/skills/setup-linear/SKILL.md +251 -0
  227. package/plugins/lisa-agy/skills/setup-notion/SKILL.md +316 -0
  228. package/plugins/lisa-agy/skills/spec-conformance/SKILL.md +159 -0
  229. package/plugins/lisa-agy/skills/task-decomposition/SKILL.md +127 -0
  230. package/plugins/lisa-agy/skills/task-triage/SKILL.md +23 -0
  231. package/plugins/lisa-agy/skills/tdd-implementation/SKILL.md +83 -0
  232. package/plugins/lisa-agy/skills/tear-down-automations/SKILL.md +34 -0
  233. package/plugins/lisa-agy/skills/test-strategy/SKILL.md +63 -0
  234. package/plugins/lisa-agy/skills/ticket-triage/SKILL.md +182 -0
  235. package/plugins/lisa-agy/skills/tracker-add-journey/SKILL.md +26 -0
  236. package/plugins/lisa-agy/skills/tracker-build-intake/SKILL.md +64 -0
  237. package/plugins/lisa-agy/skills/tracker-create/SKILL.md +26 -0
  238. package/plugins/lisa-agy/skills/tracker-evidence/SKILL.md +52 -0
  239. package/plugins/lisa-agy/skills/tracker-journey/SKILL.md +26 -0
  240. package/plugins/lisa-agy/skills/tracker-read/SKILL.md +27 -0
  241. package/plugins/lisa-agy/skills/tracker-source-artifacts/SKILL.md +107 -0
  242. package/plugins/lisa-agy/skills/tracker-sync/SKILL.md +51 -0
  243. package/plugins/lisa-agy/skills/tracker-validate/SKILL.md +36 -0
  244. package/plugins/lisa-agy/skills/tracker-verify/SKILL.md +27 -0
  245. package/plugins/lisa-agy/skills/tracker-write/SKILL.md +53 -0
  246. package/plugins/lisa-agy/skills/usage-accounting/SKILL.md +170 -0
  247. package/plugins/lisa-agy/skills/verification-lifecycle/SKILL.md +339 -0
  248. package/plugins/lisa-agy/skills/verify/SKILL.md +49 -0
  249. package/plugins/lisa-agy/skills/verify-prd/SKILL.md +392 -0
  250. package/plugins/lisa-agy/skills/wiki-install/SKILL.md +101 -0
  251. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  252. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  253. package/plugins/lisa-copilot/.claude-plugin/plugin.json +72 -0
  254. package/plugins/lisa-copilot/agents/architecture-specialist.agent.md +47 -0
  255. package/plugins/lisa-copilot/agents/bug-fixer.agent.md +39 -0
  256. package/plugins/lisa-copilot/agents/builder.agent.md +40 -0
  257. package/plugins/lisa-copilot/agents/confluence-prd-intake.agent.md +65 -0
  258. package/plugins/lisa-copilot/agents/debug-specialist.agent.md +114 -0
  259. package/plugins/lisa-copilot/agents/git-history-analyzer.agent.md +183 -0
  260. package/plugins/lisa-copilot/agents/github-agent.agent.md +148 -0
  261. package/plugins/lisa-copilot/agents/github-build-intake.agent.md +64 -0
  262. package/plugins/lisa-copilot/agents/github-prd-intake.agent.md +66 -0
  263. package/plugins/lisa-copilot/agents/jira-agent.agent.md +129 -0
  264. package/plugins/lisa-copilot/agents/jira-build-intake.agent.md +64 -0
  265. package/plugins/lisa-copilot/agents/learner.agent.md +43 -0
  266. package/plugins/lisa-copilot/agents/learnings-synthesizer.agent.md +135 -0
  267. package/plugins/lisa-copilot/agents/linear-agent.agent.md +134 -0
  268. package/plugins/lisa-copilot/agents/linear-build-intake.agent.md +64 -0
  269. package/plugins/lisa-copilot/agents/linear-prd-intake.agent.md +66 -0
  270. package/plugins/lisa-copilot/agents/notion-prd-intake.agent.md +63 -0
  271. package/plugins/lisa-copilot/agents/performance-specialist.agent.md +85 -0
  272. package/plugins/lisa-copilot/agents/pr-mining-specialist.agent.md +85 -0
  273. package/plugins/lisa-copilot/agents/product-specialist.agent.md +63 -0
  274. package/plugins/lisa-copilot/agents/quality-specialist.agent.md +56 -0
  275. package/plugins/lisa-copilot/agents/security-specialist.agent.md +51 -0
  276. package/plugins/lisa-copilot/agents/skill-evaluator.agent.md +245 -0
  277. package/plugins/lisa-copilot/agents/spec-conformance-specialist.agent.md +49 -0
  278. package/plugins/lisa-copilot/agents/test-specialist.agent.md +49 -0
  279. package/plugins/lisa-copilot/agents/tracker-mining-specialist.agent.md +85 -0
  280. package/plugins/lisa-copilot/agents/verification-specialist.agent.md +135 -0
  281. package/plugins/lisa-copilot/commands/automation-status.md +12 -0
  282. package/plugins/lisa-copilot/commands/codify-verification.md +6 -0
  283. package/plugins/lisa-copilot/commands/debrief/apply.md +6 -0
  284. package/plugins/lisa-copilot/commands/debrief.md +6 -0
  285. package/plugins/lisa-copilot/commands/doctor.md +6 -0
  286. package/plugins/lisa-copilot/commands/fix/linter-error.md +7 -0
  287. package/plugins/lisa-copilot/commands/git/commit.md +7 -0
  288. package/plugins/lisa-copilot/commands/git/prune.md +6 -0
  289. package/plugins/lisa-copilot/commands/git/submit-pr.md +7 -0
  290. package/plugins/lisa-copilot/commands/implement.md +6 -0
  291. package/plugins/lisa-copilot/commands/improve/code-complexity.md +6 -0
  292. package/plugins/lisa-copilot/commands/improve/max-lines-per-function.md +7 -0
  293. package/plugins/lisa-copilot/commands/improve/max-lines.md +7 -0
  294. package/plugins/lisa-copilot/commands/improve/test-coverage.md +7 -0
  295. package/plugins/lisa-copilot/commands/improve/tests.md +7 -0
  296. package/plugins/lisa-copilot/commands/intake-explain.md +31 -0
  297. package/plugins/lisa-copilot/commands/intake.md +6 -0
  298. package/plugins/lisa-copilot/commands/monitor.md +6 -0
  299. package/plugins/lisa-copilot/commands/plan.md +6 -0
  300. package/plugins/lisa-copilot/commands/plugin-sync-explain.md +8 -0
  301. package/plugins/lisa-copilot/commands/product-walkthrough.md +7 -0
  302. package/plugins/lisa-copilot/commands/project-ideation.md +6 -0
  303. package/plugins/lisa-copilot/commands/pull-request/review.md +7 -0
  304. package/plugins/lisa-copilot/commands/queue-status.md +34 -0
  305. package/plugins/lisa-copilot/commands/repair-intake.md +6 -0
  306. package/plugins/lisa-copilot/commands/research.md +6 -0
  307. package/plugins/lisa-copilot/commands/review/local.md +6 -0
  308. package/plugins/lisa-copilot/commands/security/zap-scan.md +6 -0
  309. package/plugins/lisa-copilot/commands/setup/atlassian.md +7 -0
  310. package/plugins/lisa-copilot/commands/setup/confluence.md +7 -0
  311. package/plugins/lisa-copilot/commands/setup/github.md +7 -0
  312. package/plugins/lisa-copilot/commands/setup/jira.md +7 -0
  313. package/plugins/lisa-copilot/commands/setup/linear.md +7 -0
  314. package/plugins/lisa-copilot/commands/setup/notion.md +7 -0
  315. package/plugins/lisa-copilot/commands/setup-automations.md +6 -0
  316. package/plugins/lisa-copilot/commands/tear-down-automations.md +6 -0
  317. package/plugins/lisa-copilot/commands/verify-prd.md +6 -0
  318. package/plugins/lisa-copilot/commands/verify.md +6 -0
  319. package/plugins/lisa-copilot/commands/wiki/install.md +7 -0
  320. package/plugins/lisa-copilot/hooks/block-no-verify.sh +37 -0
  321. package/plugins/lisa-copilot/hooks/inject-rules.sh +33 -0
  322. package/plugins/lisa-copilot/hooks/install-pkgs.sh +69 -0
  323. package/plugins/lisa-copilot/hooks/notify-ntfy.sh +183 -0
  324. package/plugins/lisa-copilot/hooks/setup-jira-cli.sh +51 -0
  325. package/plugins/lisa-copilot/rules/eager/base-rules.md +70 -0
  326. package/plugins/lisa-copilot/rules/eager/coding-philosophy.md +27 -0
  327. package/plugins/lisa-copilot/rules/eager/config-resolution.md +28 -0
  328. package/plugins/lisa-copilot/rules/eager/documentation-source-paths.md +13 -0
  329. package/plugins/lisa-copilot/rules/eager/empirical-inquiry.md +22 -0
  330. package/plugins/lisa-copilot/rules/eager/intent-routing.md +18 -0
  331. package/plugins/lisa-copilot/rules/eager/leaf-only-lifecycle.md +39 -0
  332. package/plugins/lisa-copilot/rules/eager/prd-lifecycle-rollup.md +31 -0
  333. package/plugins/lisa-copilot/rules/eager/repo-scope-split.md +39 -0
  334. package/plugins/lisa-copilot/rules/eager/security-audit-handling.md +29 -0
  335. package/plugins/lisa-copilot/rules/eager/usage-accounting.md +28 -0
  336. package/plugins/lisa-copilot/rules/eager/verification.md +21 -0
  337. package/plugins/lisa-copilot/rules/eager/wiki-knowledge-source.md +16 -0
  338. package/plugins/lisa-copilot/rules/reference/base-rules.md +133 -0
  339. package/plugins/lisa-copilot/rules/reference/coding-philosophy.md +428 -0
  340. package/plugins/lisa-copilot/rules/reference/config-resolution.md +691 -0
  341. package/plugins/lisa-copilot/rules/reference/documentation-source-paths.md +13 -0
  342. package/plugins/lisa-copilot/rules/reference/empirical-inquiry.md +27 -0
  343. package/plugins/lisa-copilot/rules/reference/intent-routing.md +407 -0
  344. package/plugins/lisa-copilot/rules/reference/leaf-only-lifecycle.md +120 -0
  345. package/plugins/lisa-copilot/rules/reference/prd-lifecycle-rollup.md +156 -0
  346. package/plugins/lisa-copilot/rules/reference/repo-scope-split.md +58 -0
  347. package/plugins/lisa-copilot/rules/reference/security-audit-handling.md +30 -0
  348. package/plugins/lisa-copilot/rules/reference/usage-accounting.md +144 -0
  349. package/plugins/lisa-copilot/rules/reference/verification.md +124 -0
  350. package/plugins/lisa-copilot/rules/reference/wiki-knowledge-source.md +14 -0
  351. package/plugins/lisa-copilot/scripts/automation-status-claude-adapter.mjs +672 -0
  352. package/plugins/lisa-copilot/scripts/automation-status-codex-adapter.mjs +697 -0
  353. package/plugins/lisa-copilot/scripts/automation-status-contract-drift.mjs +392 -0
  354. package/plugins/lisa-copilot/scripts/automation-status-expected-fleet.mjs +319 -0
  355. package/plugins/lisa-copilot/scripts/automation-status-report.mjs +170 -0
  356. package/plugins/lisa-copilot/scripts/doctor-report.mjs +143 -0
  357. package/plugins/lisa-copilot/scripts/plugin-sync-explain.mjs +512 -0
  358. package/plugins/lisa-copilot/scripts/project-ideation-idempotency-harness.mjs +319 -0
  359. package/plugins/lisa-copilot/scripts/queue-contract-resolution.mjs +453 -0
  360. package/plugins/lisa-copilot/scripts/queue-health-classification.mjs +157 -0
  361. package/plugins/lisa-copilot/scripts/queue-status-build-readers.mjs +509 -0
  362. package/plugins/lisa-copilot/scripts/queue-status-prd-readers.mjs +452 -0
  363. package/plugins/lisa-copilot/skills/acceptance-criteria/SKILL.md +71 -0
  364. package/plugins/lisa-copilot/skills/agent-design-best-practices/SKILL.md +219 -0
  365. package/plugins/lisa-copilot/skills/atlassian-access/SKILL.md +293 -0
  366. package/plugins/lisa-copilot/skills/automation-status/SKILL.md +111 -0
  367. package/plugins/lisa-copilot/skills/bug-triage/SKILL.md +23 -0
  368. package/plugins/lisa-copilot/skills/codebase-research/SKILL.md +87 -0
  369. package/plugins/lisa-copilot/skills/codify-verification/SKILL.md +152 -0
  370. package/plugins/lisa-copilot/skills/confluence-prd-intake/SKILL.md +417 -0
  371. package/plugins/lisa-copilot/skills/confluence-to-tracker/SKILL.md +360 -0
  372. package/plugins/lisa-copilot/skills/confluence-write-prd/SKILL.md +109 -0
  373. package/plugins/lisa-copilot/skills/debrief/SKILL.md +94 -0
  374. package/plugins/lisa-copilot/skills/debrief-apply/SKILL.md +63 -0
  375. package/plugins/lisa-copilot/skills/doctor/SKILL.md +317 -0
  376. package/plugins/lisa-copilot/skills/epic-triage/SKILL.md +28 -0
  377. package/plugins/lisa-copilot/skills/fix-linter-error/SKILL.md +45 -0
  378. package/plugins/lisa-copilot/skills/git-commit/SKILL.md +48 -0
  379. package/plugins/lisa-copilot/skills/git-prune/SKILL.md +35 -0
  380. package/plugins/lisa-copilot/skills/git-submit-pr/SKILL.md +105 -0
  381. package/plugins/lisa-copilot/skills/github-add-journey/SKILL.md +115 -0
  382. package/plugins/lisa-copilot/skills/github-build-intake/SKILL.md +377 -0
  383. package/plugins/lisa-copilot/skills/github-create/SKILL.md +101 -0
  384. package/plugins/lisa-copilot/skills/github-evidence/SKILL.md +110 -0
  385. package/plugins/lisa-copilot/skills/github-journey/SKILL.md +121 -0
  386. package/plugins/lisa-copilot/skills/github-prd-intake/SKILL.md +432 -0
  387. package/plugins/lisa-copilot/skills/github-project-v2/SKILL.md +227 -0
  388. package/plugins/lisa-copilot/skills/github-read-issue/SKILL.md +248 -0
  389. package/plugins/lisa-copilot/skills/github-sync/SKILL.md +119 -0
  390. package/plugins/lisa-copilot/skills/github-to-tracker/SKILL.md +345 -0
  391. package/plugins/lisa-copilot/skills/github-validate-issue/SKILL.md +331 -0
  392. package/plugins/lisa-copilot/skills/github-verify/SKILL.md +29 -0
  393. package/plugins/lisa-copilot/skills/github-write-issue/SKILL.md +339 -0
  394. package/plugins/lisa-copilot/skills/github-write-prd/SKILL.md +157 -0
  395. package/plugins/lisa-copilot/skills/implement/SKILL.md +145 -0
  396. package/plugins/lisa-copilot/skills/improve-code-complexity/SKILL.md +44 -0
  397. package/plugins/lisa-copilot/skills/improve-max-lines/SKILL.md +45 -0
  398. package/plugins/lisa-copilot/skills/improve-max-lines-per-function/SKILL.md +46 -0
  399. package/plugins/lisa-copilot/skills/improve-test-coverage/SKILL.md +44 -0
  400. package/plugins/lisa-copilot/skills/improve-tests/SKILL.md +47 -0
  401. package/plugins/lisa-copilot/skills/intake/SKILL.md +132 -0
  402. package/plugins/lisa-copilot/skills/intake-explain/SKILL.md +279 -0
  403. package/plugins/lisa-copilot/skills/jira-add-journey/SKILL.md +121 -0
  404. package/plugins/lisa-copilot/skills/jira-build-intake/SKILL.md +286 -0
  405. package/plugins/lisa-copilot/skills/jira-create/SKILL.md +154 -0
  406. package/plugins/lisa-copilot/skills/jira-evidence/SKILL.md +90 -0
  407. package/plugins/lisa-copilot/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  408. package/plugins/lisa-copilot/skills/jira-journey/SKILL.md +127 -0
  409. package/plugins/lisa-copilot/skills/jira-journey/scripts/generate-templates.py +233 -0
  410. package/plugins/lisa-copilot/skills/jira-journey/scripts/parse-plan.py +368 -0
  411. package/plugins/lisa-copilot/skills/jira-read-ticket/SKILL.md +198 -0
  412. package/plugins/lisa-copilot/skills/jira-read-ticket/scripts/download-attachment.sh +110 -0
  413. package/plugins/lisa-copilot/skills/jira-sync/SKILL.md +95 -0
  414. package/plugins/lisa-copilot/skills/jira-validate-ticket/SKILL.md +318 -0
  415. package/plugins/lisa-copilot/skills/jira-verify/SKILL.md +30 -0
  416. package/plugins/lisa-copilot/skills/jira-write-ticket/SKILL.md +265 -0
  417. package/plugins/lisa-copilot/skills/jsdoc-best-practices/SKILL.md +432 -0
  418. package/plugins/lisa-copilot/skills/linear-add-journey/SKILL.md +105 -0
  419. package/plugins/lisa-copilot/skills/linear-build-intake/SKILL.md +283 -0
  420. package/plugins/lisa-copilot/skills/linear-create/SKILL.md +146 -0
  421. package/plugins/lisa-copilot/skills/linear-evidence/SKILL.md +103 -0
  422. package/plugins/lisa-copilot/skills/linear-journey/SKILL.md +134 -0
  423. package/plugins/lisa-copilot/skills/linear-prd-intake/SKILL.md +383 -0
  424. package/plugins/lisa-copilot/skills/linear-read-issue/SKILL.md +200 -0
  425. package/plugins/lisa-copilot/skills/linear-sync/SKILL.md +114 -0
  426. package/plugins/lisa-copilot/skills/linear-to-tracker/SKILL.md +342 -0
  427. package/plugins/lisa-copilot/skills/linear-validate-issue/SKILL.md +313 -0
  428. package/plugins/lisa-copilot/skills/linear-verify/SKILL.md +51 -0
  429. package/plugins/lisa-copilot/skills/linear-write-issue/SKILL.md +292 -0
  430. package/plugins/lisa-copilot/skills/linear-write-prd/SKILL.md +96 -0
  431. package/plugins/lisa-copilot/skills/lisa-review-implementation/SKILL.md +209 -0
  432. package/plugins/lisa-copilot/skills/monitor/SKILL.md +48 -0
  433. package/plugins/lisa-copilot/skills/nightly-add-test-coverage/SKILL.md +40 -0
  434. package/plugins/lisa-copilot/skills/nightly-improve-tests/SKILL.md +29 -0
  435. package/plugins/lisa-copilot/skills/nightly-lower-code-complexity/SKILL.md +28 -0
  436. package/plugins/lisa-copilot/skills/notion-access/SKILL.md +226 -0
  437. package/plugins/lisa-copilot/skills/notion-prd-intake/SKILL.md +360 -0
  438. package/plugins/lisa-copilot/skills/notion-to-tracker/SKILL.md +357 -0
  439. package/plugins/lisa-copilot/skills/notion-write-prd/SKILL.md +109 -0
  440. package/plugins/lisa-copilot/skills/performance-review/SKILL.md +94 -0
  441. package/plugins/lisa-copilot/skills/plan/SKILL.md +60 -0
  442. package/plugins/lisa-copilot/skills/plugin-sync-explain/SKILL.md +53 -0
  443. package/plugins/lisa-copilot/skills/prd-backlink/SKILL.md +265 -0
  444. package/plugins/lisa-copilot/skills/prd-source-write/SKILL.md +101 -0
  445. package/plugins/lisa-copilot/skills/prd-ticket-coverage/SKILL.md +170 -0
  446. package/plugins/lisa-copilot/skills/product-walkthrough/SKILL.md +129 -0
  447. package/plugins/lisa-copilot/skills/project-ideation/SKILL.md +315 -0
  448. package/plugins/lisa-copilot/skills/project-ideation/examples/evidence-card-format.md +21 -0
  449. package/plugins/lisa-copilot/skills/project-ideation/examples/host-project-only.md +22 -0
  450. package/plugins/lisa-copilot/skills/project-ideation/examples/idempotency-verification-harness.md +57 -0
  451. package/plugins/lisa-copilot/skills/project-ideation/examples/public-external-inspiration.md +22 -0
  452. package/plugins/lisa-copilot/skills/project-ideation/examples/unavailable-data-rejection.md +22 -0
  453. package/plugins/lisa-copilot/skills/pull-request-review/SKILL.md +68 -0
  454. package/plugins/lisa-copilot/skills/quality-review/SKILL.md +54 -0
  455. package/plugins/lisa-copilot/skills/queue-status/SKILL.md +133 -0
  456. package/plugins/lisa-copilot/skills/repair-intake/SKILL.md +584 -0
  457. package/plugins/lisa-copilot/skills/reproduce-bug/SKILL.md +96 -0
  458. package/plugins/lisa-copilot/skills/research/SKILL.md +68 -0
  459. package/plugins/lisa-copilot/skills/review-local/SKILL.md +88 -0
  460. package/plugins/lisa-copilot/skills/root-cause-analysis/SKILL.md +155 -0
  461. package/plugins/lisa-copilot/skills/security-review/SKILL.md +57 -0
  462. package/plugins/lisa-copilot/skills/security-zap-scan/SKILL.md +33 -0
  463. package/plugins/lisa-copilot/skills/setup-atlassian/SKILL.md +347 -0
  464. package/plugins/lisa-copilot/skills/setup-automations/SKILL.md +99 -0
  465. package/plugins/lisa-copilot/skills/setup-confluence/SKILL.md +254 -0
  466. package/plugins/lisa-copilot/skills/setup-github/SKILL.md +268 -0
  467. package/plugins/lisa-copilot/skills/setup-jira/SKILL.md +198 -0
  468. package/plugins/lisa-copilot/skills/setup-linear/SKILL.md +251 -0
  469. package/plugins/lisa-copilot/skills/setup-notion/SKILL.md +316 -0
  470. package/plugins/lisa-copilot/skills/spec-conformance/SKILL.md +159 -0
  471. package/plugins/lisa-copilot/skills/task-decomposition/SKILL.md +127 -0
  472. package/plugins/lisa-copilot/skills/task-triage/SKILL.md +23 -0
  473. package/plugins/lisa-copilot/skills/tdd-implementation/SKILL.md +83 -0
  474. package/plugins/lisa-copilot/skills/tear-down-automations/SKILL.md +34 -0
  475. package/plugins/lisa-copilot/skills/test-strategy/SKILL.md +63 -0
  476. package/plugins/lisa-copilot/skills/ticket-triage/SKILL.md +182 -0
  477. package/plugins/lisa-copilot/skills/tracker-add-journey/SKILL.md +26 -0
  478. package/plugins/lisa-copilot/skills/tracker-build-intake/SKILL.md +64 -0
  479. package/plugins/lisa-copilot/skills/tracker-create/SKILL.md +26 -0
  480. package/plugins/lisa-copilot/skills/tracker-evidence/SKILL.md +52 -0
  481. package/plugins/lisa-copilot/skills/tracker-journey/SKILL.md +26 -0
  482. package/plugins/lisa-copilot/skills/tracker-read/SKILL.md +27 -0
  483. package/plugins/lisa-copilot/skills/tracker-source-artifacts/SKILL.md +107 -0
  484. package/plugins/lisa-copilot/skills/tracker-sync/SKILL.md +51 -0
  485. package/plugins/lisa-copilot/skills/tracker-validate/SKILL.md +36 -0
  486. package/plugins/lisa-copilot/skills/tracker-verify/SKILL.md +27 -0
  487. package/plugins/lisa-copilot/skills/tracker-write/SKILL.md +53 -0
  488. package/plugins/lisa-copilot/skills/usage-accounting/SKILL.md +170 -0
  489. package/plugins/lisa-copilot/skills/verification-lifecycle/SKILL.md +339 -0
  490. package/plugins/lisa-copilot/skills/verify/SKILL.md +49 -0
  491. package/plugins/lisa-copilot/skills/verify-prd/SKILL.md +392 -0
  492. package/plugins/lisa-copilot/skills/wiki-install/SKILL.md +101 -0
  493. package/plugins/lisa-cursor/.claude-plugin/plugin.json +52 -0
  494. package/plugins/lisa-cursor/agents/architecture-specialist.md +47 -0
  495. package/plugins/lisa-cursor/agents/bug-fixer.md +39 -0
  496. package/plugins/lisa-cursor/agents/builder.md +40 -0
  497. package/plugins/lisa-cursor/agents/confluence-prd-intake.md +65 -0
  498. package/plugins/lisa-cursor/agents/debug-specialist.md +114 -0
  499. package/plugins/lisa-cursor/agents/git-history-analyzer.md +183 -0
  500. package/plugins/lisa-cursor/agents/github-agent.md +148 -0
  501. package/plugins/lisa-cursor/agents/github-build-intake.md +64 -0
  502. package/plugins/lisa-cursor/agents/github-prd-intake.md +66 -0
  503. package/plugins/lisa-cursor/agents/jira-agent.md +129 -0
  504. package/plugins/lisa-cursor/agents/jira-build-intake.md +64 -0
  505. package/plugins/lisa-cursor/agents/learner.md +43 -0
  506. package/plugins/lisa-cursor/agents/learnings-synthesizer.md +135 -0
  507. package/plugins/lisa-cursor/agents/linear-agent.md +134 -0
  508. package/plugins/lisa-cursor/agents/linear-build-intake.md +64 -0
  509. package/plugins/lisa-cursor/agents/linear-prd-intake.md +66 -0
  510. package/plugins/lisa-cursor/agents/notion-prd-intake.md +63 -0
  511. package/plugins/lisa-cursor/agents/performance-specialist.md +85 -0
  512. package/plugins/lisa-cursor/agents/pr-mining-specialist.md +85 -0
  513. package/plugins/lisa-cursor/agents/product-specialist.md +63 -0
  514. package/plugins/lisa-cursor/agents/quality-specialist.md +56 -0
  515. package/plugins/lisa-cursor/agents/security-specialist.md +51 -0
  516. package/plugins/lisa-cursor/agents/skill-evaluator.md +245 -0
  517. package/plugins/lisa-cursor/agents/spec-conformance-specialist.md +49 -0
  518. package/plugins/lisa-cursor/agents/test-specialist.md +49 -0
  519. package/plugins/lisa-cursor/agents/tracker-mining-specialist.md +85 -0
  520. package/plugins/lisa-cursor/agents/verification-specialist.md +135 -0
  521. package/plugins/lisa-cursor/commands/automation-status.md +12 -0
  522. package/plugins/lisa-cursor/commands/codify-verification.md +6 -0
  523. package/plugins/lisa-cursor/commands/debrief/apply.md +6 -0
  524. package/plugins/lisa-cursor/commands/debrief.md +6 -0
  525. package/plugins/lisa-cursor/commands/doctor.md +6 -0
  526. package/plugins/lisa-cursor/commands/fix/linter-error.md +7 -0
  527. package/plugins/lisa-cursor/commands/git/commit.md +7 -0
  528. package/plugins/lisa-cursor/commands/git/prune.md +6 -0
  529. package/plugins/lisa-cursor/commands/git/submit-pr.md +7 -0
  530. package/plugins/lisa-cursor/commands/implement.md +6 -0
  531. package/plugins/lisa-cursor/commands/improve/code-complexity.md +6 -0
  532. package/plugins/lisa-cursor/commands/improve/max-lines-per-function.md +7 -0
  533. package/plugins/lisa-cursor/commands/improve/max-lines.md +7 -0
  534. package/plugins/lisa-cursor/commands/improve/test-coverage.md +7 -0
  535. package/plugins/lisa-cursor/commands/improve/tests.md +7 -0
  536. package/plugins/lisa-cursor/commands/intake-explain.md +31 -0
  537. package/plugins/lisa-cursor/commands/intake.md +6 -0
  538. package/plugins/lisa-cursor/commands/monitor.md +6 -0
  539. package/plugins/lisa-cursor/commands/plan.md +6 -0
  540. package/plugins/lisa-cursor/commands/plugin-sync-explain.md +8 -0
  541. package/plugins/lisa-cursor/commands/product-walkthrough.md +7 -0
  542. package/plugins/lisa-cursor/commands/project-ideation.md +6 -0
  543. package/plugins/lisa-cursor/commands/pull-request/review.md +7 -0
  544. package/plugins/lisa-cursor/commands/queue-status.md +34 -0
  545. package/plugins/lisa-cursor/commands/repair-intake.md +6 -0
  546. package/plugins/lisa-cursor/commands/research.md +6 -0
  547. package/plugins/lisa-cursor/commands/review/local.md +6 -0
  548. package/plugins/lisa-cursor/commands/security/zap-scan.md +6 -0
  549. package/plugins/lisa-cursor/commands/setup/atlassian.md +7 -0
  550. package/plugins/lisa-cursor/commands/setup/confluence.md +7 -0
  551. package/plugins/lisa-cursor/commands/setup/github.md +7 -0
  552. package/plugins/lisa-cursor/commands/setup/jira.md +7 -0
  553. package/plugins/lisa-cursor/commands/setup/linear.md +7 -0
  554. package/plugins/lisa-cursor/commands/setup/notion.md +7 -0
  555. package/plugins/lisa-cursor/commands/setup-automations.md +6 -0
  556. package/plugins/lisa-cursor/commands/tear-down-automations.md +6 -0
  557. package/plugins/lisa-cursor/commands/verify-prd.md +6 -0
  558. package/plugins/lisa-cursor/commands/verify.md +6 -0
  559. package/plugins/lisa-cursor/commands/wiki/install.md +7 -0
  560. package/plugins/lisa-cursor/hooks/block-no-verify.sh +37 -0
  561. package/plugins/lisa-cursor/hooks/install-pkgs.sh +69 -0
  562. package/plugins/lisa-cursor/hooks/notify-ntfy.sh +183 -0
  563. package/plugins/lisa-cursor/hooks/setup-jira-cli.sh +51 -0
  564. package/plugins/lisa-cursor/rules/eager/base-rules.md +70 -0
  565. package/plugins/lisa-cursor/rules/eager/coding-philosophy.md +27 -0
  566. package/plugins/lisa-cursor/rules/eager/config-resolution.md +28 -0
  567. package/plugins/lisa-cursor/rules/eager/documentation-source-paths.md +13 -0
  568. package/plugins/lisa-cursor/rules/eager/empirical-inquiry.md +22 -0
  569. package/plugins/lisa-cursor/rules/eager/intent-routing.md +18 -0
  570. package/plugins/lisa-cursor/rules/eager/leaf-only-lifecycle.md +39 -0
  571. package/plugins/lisa-cursor/rules/eager/prd-lifecycle-rollup.md +31 -0
  572. package/plugins/lisa-cursor/rules/eager/repo-scope-split.md +39 -0
  573. package/plugins/lisa-cursor/rules/eager/security-audit-handling.md +29 -0
  574. package/plugins/lisa-cursor/rules/eager/usage-accounting.md +28 -0
  575. package/plugins/lisa-cursor/rules/eager/verification.md +21 -0
  576. package/plugins/lisa-cursor/rules/eager/wiki-knowledge-source.md +16 -0
  577. package/plugins/lisa-cursor/rules/reference/base-rules.md +133 -0
  578. package/plugins/lisa-cursor/rules/reference/coding-philosophy.md +428 -0
  579. package/plugins/lisa-cursor/rules/reference/config-resolution.md +691 -0
  580. package/plugins/lisa-cursor/rules/reference/documentation-source-paths.md +13 -0
  581. package/plugins/lisa-cursor/rules/reference/empirical-inquiry.md +27 -0
  582. package/plugins/lisa-cursor/rules/reference/intent-routing.md +407 -0
  583. package/plugins/lisa-cursor/rules/reference/leaf-only-lifecycle.md +120 -0
  584. package/plugins/lisa-cursor/rules/reference/prd-lifecycle-rollup.md +156 -0
  585. package/plugins/lisa-cursor/rules/reference/repo-scope-split.md +58 -0
  586. package/plugins/lisa-cursor/rules/reference/security-audit-handling.md +30 -0
  587. package/plugins/lisa-cursor/rules/reference/usage-accounting.md +144 -0
  588. package/plugins/lisa-cursor/rules/reference/verification.md +124 -0
  589. package/plugins/lisa-cursor/rules/reference/wiki-knowledge-source.md +14 -0
  590. package/plugins/lisa-cursor/scripts/automation-status-claude-adapter.mjs +672 -0
  591. package/plugins/lisa-cursor/scripts/automation-status-codex-adapter.mjs +697 -0
  592. package/plugins/lisa-cursor/scripts/automation-status-contract-drift.mjs +392 -0
  593. package/plugins/lisa-cursor/scripts/automation-status-expected-fleet.mjs +319 -0
  594. package/plugins/lisa-cursor/scripts/automation-status-report.mjs +170 -0
  595. package/plugins/lisa-cursor/scripts/doctor-report.mjs +143 -0
  596. package/plugins/lisa-cursor/scripts/plugin-sync-explain.mjs +512 -0
  597. package/plugins/lisa-cursor/scripts/project-ideation-idempotency-harness.mjs +319 -0
  598. package/plugins/lisa-cursor/scripts/queue-contract-resolution.mjs +453 -0
  599. package/plugins/lisa-cursor/scripts/queue-health-classification.mjs +157 -0
  600. package/plugins/lisa-cursor/scripts/queue-status-build-readers.mjs +509 -0
  601. package/plugins/lisa-cursor/scripts/queue-status-prd-readers.mjs +452 -0
  602. package/plugins/lisa-cursor/skills/acceptance-criteria/SKILL.md +71 -0
  603. package/plugins/lisa-cursor/skills/agent-design-best-practices/SKILL.md +219 -0
  604. package/plugins/lisa-cursor/skills/atlassian-access/SKILL.md +293 -0
  605. package/plugins/lisa-cursor/skills/automation-status/SKILL.md +111 -0
  606. package/plugins/lisa-cursor/skills/bug-triage/SKILL.md +23 -0
  607. package/plugins/lisa-cursor/skills/codebase-research/SKILL.md +87 -0
  608. package/plugins/lisa-cursor/skills/codify-verification/SKILL.md +152 -0
  609. package/plugins/lisa-cursor/skills/confluence-prd-intake/SKILL.md +417 -0
  610. package/plugins/lisa-cursor/skills/confluence-to-tracker/SKILL.md +360 -0
  611. package/plugins/lisa-cursor/skills/confluence-write-prd/SKILL.md +109 -0
  612. package/plugins/lisa-cursor/skills/debrief/SKILL.md +94 -0
  613. package/plugins/lisa-cursor/skills/debrief-apply/SKILL.md +63 -0
  614. package/plugins/lisa-cursor/skills/doctor/SKILL.md +317 -0
  615. package/plugins/lisa-cursor/skills/epic-triage/SKILL.md +28 -0
  616. package/plugins/lisa-cursor/skills/fix-linter-error/SKILL.md +45 -0
  617. package/plugins/lisa-cursor/skills/git-commit/SKILL.md +48 -0
  618. package/plugins/lisa-cursor/skills/git-prune/SKILL.md +35 -0
  619. package/plugins/lisa-cursor/skills/git-submit-pr/SKILL.md +105 -0
  620. package/plugins/lisa-cursor/skills/github-add-journey/SKILL.md +115 -0
  621. package/plugins/lisa-cursor/skills/github-build-intake/SKILL.md +377 -0
  622. package/plugins/lisa-cursor/skills/github-create/SKILL.md +101 -0
  623. package/plugins/lisa-cursor/skills/github-evidence/SKILL.md +110 -0
  624. package/plugins/lisa-cursor/skills/github-journey/SKILL.md +121 -0
  625. package/plugins/lisa-cursor/skills/github-prd-intake/SKILL.md +432 -0
  626. package/plugins/lisa-cursor/skills/github-project-v2/SKILL.md +227 -0
  627. package/plugins/lisa-cursor/skills/github-read-issue/SKILL.md +248 -0
  628. package/plugins/lisa-cursor/skills/github-sync/SKILL.md +119 -0
  629. package/plugins/lisa-cursor/skills/github-to-tracker/SKILL.md +345 -0
  630. package/plugins/lisa-cursor/skills/github-validate-issue/SKILL.md +331 -0
  631. package/plugins/lisa-cursor/skills/github-verify/SKILL.md +29 -0
  632. package/plugins/lisa-cursor/skills/github-write-issue/SKILL.md +339 -0
  633. package/plugins/lisa-cursor/skills/github-write-prd/SKILL.md +157 -0
  634. package/plugins/lisa-cursor/skills/implement/SKILL.md +145 -0
  635. package/plugins/lisa-cursor/skills/improve-code-complexity/SKILL.md +44 -0
  636. package/plugins/lisa-cursor/skills/improve-max-lines/SKILL.md +45 -0
  637. package/plugins/lisa-cursor/skills/improve-max-lines-per-function/SKILL.md +46 -0
  638. package/plugins/lisa-cursor/skills/improve-test-coverage/SKILL.md +44 -0
  639. package/plugins/lisa-cursor/skills/improve-tests/SKILL.md +47 -0
  640. package/plugins/lisa-cursor/skills/intake/SKILL.md +132 -0
  641. package/plugins/lisa-cursor/skills/intake-explain/SKILL.md +279 -0
  642. package/plugins/lisa-cursor/skills/jira-add-journey/SKILL.md +121 -0
  643. package/plugins/lisa-cursor/skills/jira-build-intake/SKILL.md +286 -0
  644. package/plugins/lisa-cursor/skills/jira-create/SKILL.md +154 -0
  645. package/plugins/lisa-cursor/skills/jira-evidence/SKILL.md +90 -0
  646. package/plugins/lisa-cursor/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  647. package/plugins/lisa-cursor/skills/jira-journey/SKILL.md +127 -0
  648. package/plugins/lisa-cursor/skills/jira-journey/scripts/generate-templates.py +233 -0
  649. package/plugins/lisa-cursor/skills/jira-journey/scripts/parse-plan.py +368 -0
  650. package/plugins/lisa-cursor/skills/jira-read-ticket/SKILL.md +198 -0
  651. package/plugins/lisa-cursor/skills/jira-read-ticket/scripts/download-attachment.sh +110 -0
  652. package/plugins/lisa-cursor/skills/jira-sync/SKILL.md +95 -0
  653. package/plugins/lisa-cursor/skills/jira-validate-ticket/SKILL.md +318 -0
  654. package/plugins/lisa-cursor/skills/jira-verify/SKILL.md +30 -0
  655. package/plugins/lisa-cursor/skills/jira-write-ticket/SKILL.md +265 -0
  656. package/plugins/lisa-cursor/skills/jsdoc-best-practices/SKILL.md +432 -0
  657. package/plugins/lisa-cursor/skills/linear-add-journey/SKILL.md +105 -0
  658. package/plugins/lisa-cursor/skills/linear-build-intake/SKILL.md +283 -0
  659. package/plugins/lisa-cursor/skills/linear-create/SKILL.md +146 -0
  660. package/plugins/lisa-cursor/skills/linear-evidence/SKILL.md +103 -0
  661. package/plugins/lisa-cursor/skills/linear-journey/SKILL.md +134 -0
  662. package/plugins/lisa-cursor/skills/linear-prd-intake/SKILL.md +383 -0
  663. package/plugins/lisa-cursor/skills/linear-read-issue/SKILL.md +200 -0
  664. package/plugins/lisa-cursor/skills/linear-sync/SKILL.md +114 -0
  665. package/plugins/lisa-cursor/skills/linear-to-tracker/SKILL.md +342 -0
  666. package/plugins/lisa-cursor/skills/linear-validate-issue/SKILL.md +313 -0
  667. package/plugins/lisa-cursor/skills/linear-verify/SKILL.md +51 -0
  668. package/plugins/lisa-cursor/skills/linear-write-issue/SKILL.md +292 -0
  669. package/plugins/lisa-cursor/skills/linear-write-prd/SKILL.md +96 -0
  670. package/plugins/lisa-cursor/skills/lisa-review-implementation/SKILL.md +209 -0
  671. package/plugins/lisa-cursor/skills/monitor/SKILL.md +48 -0
  672. package/plugins/lisa-cursor/skills/nightly-add-test-coverage/SKILL.md +40 -0
  673. package/plugins/lisa-cursor/skills/nightly-improve-tests/SKILL.md +29 -0
  674. package/plugins/lisa-cursor/skills/nightly-lower-code-complexity/SKILL.md +28 -0
  675. package/plugins/lisa-cursor/skills/notion-access/SKILL.md +226 -0
  676. package/plugins/lisa-cursor/skills/notion-prd-intake/SKILL.md +360 -0
  677. package/plugins/lisa-cursor/skills/notion-to-tracker/SKILL.md +357 -0
  678. package/plugins/lisa-cursor/skills/notion-write-prd/SKILL.md +109 -0
  679. package/plugins/lisa-cursor/skills/performance-review/SKILL.md +94 -0
  680. package/plugins/lisa-cursor/skills/plan/SKILL.md +60 -0
  681. package/plugins/lisa-cursor/skills/plugin-sync-explain/SKILL.md +53 -0
  682. package/plugins/lisa-cursor/skills/prd-backlink/SKILL.md +265 -0
  683. package/plugins/lisa-cursor/skills/prd-source-write/SKILL.md +101 -0
  684. package/plugins/lisa-cursor/skills/prd-ticket-coverage/SKILL.md +170 -0
  685. package/plugins/lisa-cursor/skills/product-walkthrough/SKILL.md +129 -0
  686. package/plugins/lisa-cursor/skills/project-ideation/SKILL.md +315 -0
  687. package/plugins/lisa-cursor/skills/project-ideation/examples/evidence-card-format.md +21 -0
  688. package/plugins/lisa-cursor/skills/project-ideation/examples/host-project-only.md +22 -0
  689. package/plugins/lisa-cursor/skills/project-ideation/examples/idempotency-verification-harness.md +57 -0
  690. package/plugins/lisa-cursor/skills/project-ideation/examples/public-external-inspiration.md +22 -0
  691. package/plugins/lisa-cursor/skills/project-ideation/examples/unavailable-data-rejection.md +22 -0
  692. package/plugins/lisa-cursor/skills/pull-request-review/SKILL.md +68 -0
  693. package/plugins/lisa-cursor/skills/quality-review/SKILL.md +54 -0
  694. package/plugins/lisa-cursor/skills/queue-status/SKILL.md +133 -0
  695. package/plugins/lisa-cursor/skills/repair-intake/SKILL.md +584 -0
  696. package/plugins/lisa-cursor/skills/reproduce-bug/SKILL.md +96 -0
  697. package/plugins/lisa-cursor/skills/research/SKILL.md +68 -0
  698. package/plugins/lisa-cursor/skills/review-local/SKILL.md +88 -0
  699. package/plugins/lisa-cursor/skills/root-cause-analysis/SKILL.md +155 -0
  700. package/plugins/lisa-cursor/skills/security-review/SKILL.md +57 -0
  701. package/plugins/lisa-cursor/skills/security-zap-scan/SKILL.md +33 -0
  702. package/plugins/lisa-cursor/skills/setup-atlassian/SKILL.md +347 -0
  703. package/plugins/lisa-cursor/skills/setup-automations/SKILL.md +99 -0
  704. package/plugins/lisa-cursor/skills/setup-confluence/SKILL.md +254 -0
  705. package/plugins/lisa-cursor/skills/setup-github/SKILL.md +268 -0
  706. package/plugins/lisa-cursor/skills/setup-jira/SKILL.md +198 -0
  707. package/plugins/lisa-cursor/skills/setup-linear/SKILL.md +251 -0
  708. package/plugins/lisa-cursor/skills/setup-notion/SKILL.md +316 -0
  709. package/plugins/lisa-cursor/skills/spec-conformance/SKILL.md +159 -0
  710. package/plugins/lisa-cursor/skills/task-decomposition/SKILL.md +127 -0
  711. package/plugins/lisa-cursor/skills/task-triage/SKILL.md +23 -0
  712. package/plugins/lisa-cursor/skills/tdd-implementation/SKILL.md +83 -0
  713. package/plugins/lisa-cursor/skills/tear-down-automations/SKILL.md +34 -0
  714. package/plugins/lisa-cursor/skills/test-strategy/SKILL.md +63 -0
  715. package/plugins/lisa-cursor/skills/ticket-triage/SKILL.md +182 -0
  716. package/plugins/lisa-cursor/skills/tracker-add-journey/SKILL.md +26 -0
  717. package/plugins/lisa-cursor/skills/tracker-build-intake/SKILL.md +64 -0
  718. package/plugins/lisa-cursor/skills/tracker-create/SKILL.md +26 -0
  719. package/plugins/lisa-cursor/skills/tracker-evidence/SKILL.md +52 -0
  720. package/plugins/lisa-cursor/skills/tracker-journey/SKILL.md +26 -0
  721. package/plugins/lisa-cursor/skills/tracker-read/SKILL.md +27 -0
  722. package/plugins/lisa-cursor/skills/tracker-source-artifacts/SKILL.md +107 -0
  723. package/plugins/lisa-cursor/skills/tracker-sync/SKILL.md +51 -0
  724. package/plugins/lisa-cursor/skills/tracker-validate/SKILL.md +36 -0
  725. package/plugins/lisa-cursor/skills/tracker-verify/SKILL.md +27 -0
  726. package/plugins/lisa-cursor/skills/tracker-write/SKILL.md +53 -0
  727. package/plugins/lisa-cursor/skills/usage-accounting/SKILL.md +170 -0
  728. package/plugins/lisa-cursor/skills/verification-lifecycle/SKILL.md +339 -0
  729. package/plugins/lisa-cursor/skills/verify/SKILL.md +49 -0
  730. package/plugins/lisa-cursor/skills/verify-prd/SKILL.md +392 -0
  731. package/plugins/lisa-cursor/skills/wiki-install/SKILL.md +101 -0
  732. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  733. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  734. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  735. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +2 -1
  736. package/plugins/lisa-harper-fabric/hooks/hooks.json +26 -0
  737. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  738. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +2 -1
  739. package/plugins/lisa-nestjs/hooks/hooks.json +15 -0
  740. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  741. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  742. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  743. package/plugins/lisa-rails/.codex-plugin/plugin.json +2 -1
  744. package/plugins/lisa-rails/hooks/hooks.json +41 -0
  745. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  746. package/plugins/lisa-typescript/.codex-plugin/plugin.json +2 -1
  747. package/plugins/lisa-typescript/hooks/format-on-edit.sh +5 -3
  748. package/plugins/lisa-typescript/hooks/hooks.json +34 -0
  749. package/plugins/lisa-typescript/hooks/lint-on-edit.sh +5 -2
  750. package/plugins/lisa-typescript/hooks/sg-scan-on-edit.sh +5 -2
  751. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  752. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  753. package/plugins/src/typescript/hooks/format-on-edit.sh +5 -3
  754. package/plugins/src/typescript/hooks/lint-on-edit.sh +5 -2
  755. package/plugins/src/typescript/hooks/sg-scan-on-edit.sh +5 -2
  756. package/scripts/build-plugins.sh +24 -0
  757. package/scripts/generate-agy-plugin-artifacts.mjs +168 -0
  758. package/scripts/generate-codex-plugin-artifacts.mjs +150 -12
  759. package/scripts/generate-copilot-plugin-artifacts.mjs +235 -0
  760. package/scripts/generate-cursor-plugin-artifacts.mjs +177 -0
  761. package/scripts/internal-agy-skill-policy.json +3 -0
  762. package/scripts/internal-copilot-runtime-probe.json +13 -0
  763. package/scripts/internal-copilot-skill-policy.json +3 -0
  764. package/scripts/internal-cursor-skill-policy.json +3 -0
  765. package/scripts/lib/per-agent-hook-filter.mjs +249 -0
  766. package/scripts/probes/wave3-verification.sh +106 -0
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Write Lisa's CLAUDE.md template for Claude Code host projects.
3
+ *
4
+ * Claude Code auto-loads `CLAUDE.md` from the project tree at session start
5
+ * as repository-specific guidance. Lisa ships a starter template that:
6
+ *
7
+ * - Advertises that Lisa governance is active in the project.
8
+ * - Points downstream readers at the Lisa plugin (CodySwannGT/lisa).
9
+ * - Reserves space for project-specific guidance the host can edit.
10
+ *
11
+ * Create-only semantics: Lisa never overwrites a host-authored CLAUDE.md.
12
+ * The Claude counterpart to `src/codex/agents-md-installer.ts`.
13
+ * @module claude/claude-md-installer
14
+ */
15
+ import { writeFile } from "node:fs/promises";
16
+ import { existsSync } from "node:fs";
17
+ import * as path from "node:path";
18
+ /** Filename of the Claude project doc at the host project root. */
19
+ export const CLAUDE_MD_FILENAME = "CLAUDE.md";
20
+ const TEMPLATE = `# Claude Instructions
21
+
22
+ This file is auto-loaded by Claude Code at session start as repository-specific
23
+ guidance. Anthropic's Claude Code reads CLAUDE.md from the project root, the
24
+ parent tree, and the user-level home directory; project-level takes precedence.
25
+
26
+ ## Lisa Governance
27
+
28
+ This project uses [Lisa](https://github.com/CodySwannGT/lisa) for AI-assisted
29
+ software development governance. The Lisa Claude Code plugin ships skills,
30
+ agents, slash commands, hooks, rules, and MCP servers via the GitHub plugin
31
+ marketplace.
32
+
33
+ Lisa's eager rules are auto-injected into every Claude Code session via the
34
+ plugin's \`SessionStart\` and \`SubagentStart\` hooks (see
35
+ \`plugins/lisa/hooks/inject-rules.sh\` in the Lisa repository). The rules cover
36
+ coding philosophy, intent routing, leaf-only lifecycle, PRD lifecycle rollup,
37
+ repo-scope splits, security audit handling, documentation-source paths, and
38
+ empirical-inquiry discipline.
39
+
40
+ ## Add Project-Specific Guidance Below
41
+
42
+ The lines above are managed by Lisa; the rest of this file is owned by the host
43
+ project. Add convention notes, terminology, architectural shorthand, or any
44
+ project-specific guidance Claude Code should consume at session start.
45
+
46
+ `;
47
+ /**
48
+ * Write a starter CLAUDE.md at the host project root, but only if the file
49
+ * doesn't already exist.
50
+ *
51
+ * @param destDir - Absolute path to the host project root.
52
+ * @returns Result describing whether a file was created.
53
+ */
54
+ export async function installClaudeMd(destDir) {
55
+ const filePath = path.join(destDir, CLAUDE_MD_FILENAME);
56
+ if (existsSync(filePath)) {
57
+ return { created: false, relativePath: undefined };
58
+ }
59
+ await writeFile(filePath, TEMPLATE, "utf8");
60
+ return { created: true, relativePath: CLAUDE_MD_FILENAME };
61
+ }
62
+ //# sourceMappingURL=claude-md-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-md-installer.js","sourceRoot":"","sources":["../../src/claude/claude-md-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,mEAAmE;AACnE,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAU9C,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BhB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Default Lisa marketplace plugin reference inside `~/.codex/config.toml`.
3
+ *
4
+ * [VERIFIED-BY-RUN 2026-05-28, Codex 0.125.0] `codex plugin marketplace add
5
+ * CodySwannGT/lisa` registers the marketplace under the `name` field of the
6
+ * repo's `.claude-plugin/marketplace.json` (which is `"lisa"`), producing a
7
+ * `[marketplaces.lisa]` table. Codex composes plugin keys as
8
+ * `<plugin-name>@<marketplace-name>`, so the enabled-plugin table is
9
+ * `[plugins."lisa@lisa"]` — NOT the repo-slug form. The older
10
+ * `CodySwannGT-lisa` / `CodySwannGT/lisa` shapes are retained as legacy
11
+ * fallbacks ({@link LEGACY_LISA_PLUGIN_KEYS}) in case an earlier Codex derived
12
+ * the marketplace name from the repo slug.
13
+ */
14
+ export declare const DEFAULT_LISA_PLUGIN_KEY = "lisa@lisa";
15
+ /** Legacy/alternative key shapes tried as fallbacks (pre-0.125.0 guesses). */
16
+ export declare const LEGACY_LISA_PLUGIN_KEYS: readonly ["lisa@CodySwannGT-lisa", "lisa@CodySwannGT/lisa"];
17
+ /** Legacy slash-separator key shape (one of {@link LEGACY_LISA_PLUGIN_KEYS}). */
18
+ export declare const SLASH_LISA_PLUGIN_KEY = "lisa@CodySwannGT/lisa";
19
+ /**
20
+ * Detect whether any known Lisa plugin key shape is enabled.
21
+ *
22
+ * Tries the verified 0.125.0 key (`lisa@lisa`) first, then the legacy shapes.
23
+ * Callers that need a definitive yes/no answer should use this helper rather
24
+ * than the single-key {@link isLisaInstalledAsCodexPlugin}.
25
+ *
26
+ * @returns True when the verified key or any legacy key is enabled.
27
+ */
28
+ export declare function isLisaInstalledUnderAnyCanonicalKey(): Promise<boolean>;
29
+ /**
30
+ * Resolve the path to `~/.codex/config.toml`.
31
+ *
32
+ * Does not consult `$CODEX_HOME` — this detection runs from `lisa apply`
33
+ * (a build-tooling context, not an end-user shell) where the caller's
34
+ * environment may not reflect the user's Codex install location. If
35
+ * downstream Lisa flows need `$CODEX_HOME`-aware resolution, they can
36
+ * pass an absolute path to {@link tomlHasEnabledPlugin} directly after
37
+ * reading the file themselves.
38
+ *
39
+ * @returns Absolute path to `~/.codex/config.toml` (whether it exists or not).
40
+ */
41
+ export declare function codexConfigPath(): string;
42
+ /**
43
+ * Test whether the given config.toml body declares the Lisa plugin as enabled.
44
+ *
45
+ * Looks for a heading of the form `[plugins."<pluginKey>"]` followed by an
46
+ * `enabled = true` line within the section. Implementation is intentionally
47
+ * simple-text rather than a full TOML parse to avoid pulling a TOML dependency
48
+ * into a hot detection path; a stricter parse can replace this if false
49
+ * positives appear in practice.
50
+ *
51
+ * @param tomlBody - Contents of config.toml.
52
+ * @param pluginKey - The plugin key string (e.g. "lisa@CodySwannGT-lisa").
53
+ * @returns True when an enabled-true entry for the plugin key is present.
54
+ */
55
+ export declare function tomlHasEnabledPlugin(tomlBody: string, pluginKey?: string): boolean;
56
+ /**
57
+ * Detect whether Lisa is currently installed and enabled as a Codex plugin.
58
+ *
59
+ * Read-only; safe to call from inside any installer's preflight gate. Returns
60
+ * false on any error (missing file, parse failure, IO error) so the caller
61
+ * defaults to running its per-project install path.
62
+ *
63
+ * @param pluginKey - The plugin key to look for. Defaults to the canonical
64
+ * Lisa marketplace ref.
65
+ * @returns True when the plugin is enabled in `~/.codex/config.toml`.
66
+ */
67
+ export declare function isLisaInstalledAsCodexPlugin(pluginKey?: string): Promise<boolean>;
68
+ //# sourceMappingURL=lisa-plugin-detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lisa-plugin-detection.d.ts","sourceRoot":"","sources":["../../src/codex/lisa-plugin-detection.ts"],"names":[],"mappings":"AAuBA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB,cAAc,CAAC;AAEnD,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,6DAG1B,CAAC;AAEX,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAE7D;;;;;;;;GAQG;AACH,wBAAsB,mCAAmC,IAAI,OAAO,CAAC,OAAO,CAAC,CAM5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAgC,GAC1C,OAAO,CAwBT;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,4BAA4B,CAChD,SAAS,GAAE,MAAgC,GAC1C,OAAO,CAAC,OAAO,CAAC,CASlB"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Detect whether Lisa is installed as a Codex plugin (via marketplace).
3
+ *
4
+ * Per `wiki/decisions/2026-05-28-codex-skills-canonical-path.md` and Wave 2
5
+ * fan-out spec §src/codex/, when Lisa is installed via the Codex plugin
6
+ * marketplace the per-project skills and hooks installers should no-op (the
7
+ * plugin payload delivers the same components). When Lisa is NOT installed
8
+ * as a plugin, the per-project installers continue to run as the fallback
9
+ * delivery path.
10
+ *
11
+ * Detection: read `~/.codex/config.toml` (honoring `$CODEX_HOME` if set) and
12
+ * check for a `[plugins."lisa@lisa"]` table with `enabled = true`.
13
+ *
14
+ * This is a best-effort detection. If the config file is missing, malformed,
15
+ * or unreadable, the function returns `false` (fall through to per-project
16
+ * install).
17
+ * @module codex/lisa-plugin-detection
18
+ */
19
+ import { readFile } from "node:fs/promises";
20
+ import { existsSync } from "node:fs";
21
+ import * as os from "node:os";
22
+ import * as path from "node:path";
23
+ /**
24
+ * Default Lisa marketplace plugin reference inside `~/.codex/config.toml`.
25
+ *
26
+ * [VERIFIED-BY-RUN 2026-05-28, Codex 0.125.0] `codex plugin marketplace add
27
+ * CodySwannGT/lisa` registers the marketplace under the `name` field of the
28
+ * repo's `.claude-plugin/marketplace.json` (which is `"lisa"`), producing a
29
+ * `[marketplaces.lisa]` table. Codex composes plugin keys as
30
+ * `<plugin-name>@<marketplace-name>`, so the enabled-plugin table is
31
+ * `[plugins."lisa@lisa"]` — NOT the repo-slug form. The older
32
+ * `CodySwannGT-lisa` / `CodySwannGT/lisa` shapes are retained as legacy
33
+ * fallbacks ({@link LEGACY_LISA_PLUGIN_KEYS}) in case an earlier Codex derived
34
+ * the marketplace name from the repo slug.
35
+ */
36
+ export const DEFAULT_LISA_PLUGIN_KEY = "lisa@lisa";
37
+ /** Legacy/alternative key shapes tried as fallbacks (pre-0.125.0 guesses). */
38
+ export const LEGACY_LISA_PLUGIN_KEYS = [
39
+ "lisa@CodySwannGT-lisa",
40
+ "lisa@CodySwannGT/lisa",
41
+ ];
42
+ /** Legacy slash-separator key shape (one of {@link LEGACY_LISA_PLUGIN_KEYS}). */
43
+ export const SLASH_LISA_PLUGIN_KEY = "lisa@CodySwannGT/lisa";
44
+ /**
45
+ * Detect whether any known Lisa plugin key shape is enabled.
46
+ *
47
+ * Tries the verified 0.125.0 key (`lisa@lisa`) first, then the legacy shapes.
48
+ * Callers that need a definitive yes/no answer should use this helper rather
49
+ * than the single-key {@link isLisaInstalledAsCodexPlugin}.
50
+ *
51
+ * @returns True when the verified key or any legacy key is enabled.
52
+ */
53
+ export async function isLisaInstalledUnderAnyCanonicalKey() {
54
+ if (await isLisaInstalledAsCodexPlugin(DEFAULT_LISA_PLUGIN_KEY))
55
+ return true;
56
+ for (const key of LEGACY_LISA_PLUGIN_KEYS) {
57
+ if (await isLisaInstalledAsCodexPlugin(key))
58
+ return true;
59
+ }
60
+ return false;
61
+ }
62
+ /**
63
+ * Resolve the path to `~/.codex/config.toml`.
64
+ *
65
+ * Does not consult `$CODEX_HOME` — this detection runs from `lisa apply`
66
+ * (a build-tooling context, not an end-user shell) where the caller's
67
+ * environment may not reflect the user's Codex install location. If
68
+ * downstream Lisa flows need `$CODEX_HOME`-aware resolution, they can
69
+ * pass an absolute path to {@link tomlHasEnabledPlugin} directly after
70
+ * reading the file themselves.
71
+ *
72
+ * @returns Absolute path to `~/.codex/config.toml` (whether it exists or not).
73
+ */
74
+ export function codexConfigPath() {
75
+ return path.join(os.homedir(), ".codex", "config.toml");
76
+ }
77
+ /**
78
+ * Test whether the given config.toml body declares the Lisa plugin as enabled.
79
+ *
80
+ * Looks for a heading of the form `[plugins."<pluginKey>"]` followed by an
81
+ * `enabled = true` line within the section. Implementation is intentionally
82
+ * simple-text rather than a full TOML parse to avoid pulling a TOML dependency
83
+ * into a hot detection path; a stricter parse can replace this if false
84
+ * positives appear in practice.
85
+ *
86
+ * @param tomlBody - Contents of config.toml.
87
+ * @param pluginKey - The plugin key string (e.g. "lisa@CodySwannGT-lisa").
88
+ * @returns True when an enabled-true entry for the plugin key is present.
89
+ */
90
+ export function tomlHasEnabledPlugin(tomlBody, pluginKey = DEFAULT_LISA_PLUGIN_KEY) {
91
+ // Line-by-line scan instead of multiline regex — keeps the matcher trivially
92
+ // linear in input length and avoids sonarjs/slow-regex warnings.
93
+ const expectedHeader = `[plugins."${pluginKey}"]`;
94
+ const lines = tomlBody.split("\n");
95
+ const stripTrailingComment = (line) => {
96
+ const hashIdx = line.indexOf("#");
97
+ return (hashIdx === -1 ? line : line.slice(0, hashIdx)).trim();
98
+ };
99
+ const headerIndex = lines.findIndex(line => stripTrailingComment(line) === expectedHeader);
100
+ if (headerIndex === -1)
101
+ return false;
102
+ // Walk forward until the next section header (a line starting with "[") or EOF.
103
+ // Tolerate whitespace around `enabled = true`, tabs, and trailing comments
104
+ // (canonical Codex emitter uses `enabled = true` but TOML accepts variants).
105
+ const tail = lines.slice(headerIndex + 1);
106
+ const enabledTruePattern = /^enabled\s{0,4}=\s{0,4}true$/;
107
+ for (const raw of tail) {
108
+ const line = stripTrailingComment(raw);
109
+ if (line.startsWith("["))
110
+ return false; // next section reached without enabled
111
+ if (enabledTruePattern.test(line))
112
+ return true;
113
+ }
114
+ return false;
115
+ }
116
+ /**
117
+ * Detect whether Lisa is currently installed and enabled as a Codex plugin.
118
+ *
119
+ * Read-only; safe to call from inside any installer's preflight gate. Returns
120
+ * false on any error (missing file, parse failure, IO error) so the caller
121
+ * defaults to running its per-project install path.
122
+ *
123
+ * @param pluginKey - The plugin key to look for. Defaults to the canonical
124
+ * Lisa marketplace ref.
125
+ * @returns True when the plugin is enabled in `~/.codex/config.toml`.
126
+ */
127
+ export async function isLisaInstalledAsCodexPlugin(pluginKey = DEFAULT_LISA_PLUGIN_KEY) {
128
+ const configPath = codexConfigPath();
129
+ if (!existsSync(configPath))
130
+ return false;
131
+ try {
132
+ const body = await readFile(configPath, "utf8");
133
+ return tomlHasEnabledPlugin(body, pluginKey);
134
+ }
135
+ catch {
136
+ return false;
137
+ }
138
+ }
139
+ //# sourceMappingURL=lisa-plugin-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lisa-plugin-detection.js","sourceRoot":"","sources":["../../src/codex/lisa-plugin-detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /** Relative path of Copilot's instruction file inside a host project. */
2
+ export declare const COPILOT_INSTRUCTIONS_RELATIVE_PATH: string;
3
+ /** Result of the Copilot instructions install pass. */
4
+ export interface CopilotInstructionsInstallResult {
5
+ /** True when Lisa created the file (false when it already existed). */
6
+ readonly created: boolean;
7
+ /** Path written, relative to the host project root (or undefined on no-op). */
8
+ readonly relativePath: string | undefined;
9
+ }
10
+ /**
11
+ * Write a starter `.github/copilot-instructions.md` at the host project root,
12
+ * but only if the file doesn't already exist.
13
+ *
14
+ * @param destDir - Absolute path to the host project root.
15
+ * @returns Result describing whether a file was created.
16
+ */
17
+ export declare function installCopilotInstructions(destDir: string): Promise<CopilotInstructionsInstallResult>;
18
+ //# sourceMappingURL=copilot-instructions-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot-instructions-installer.d.ts","sourceRoot":"","sources":["../../src/copilot/copilot-instructions-installer.ts"],"names":[],"mappings":"AAmBA,yEAAyE;AACzE,eAAO,MAAM,kCAAkC,QAG9C,CAAC;AAEF,uDAAuD;AACvD,MAAM,WAAW,gCAAgC;IAC/C,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AA2BD;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gCAAgC,CAAC,CAQ3C"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Write Lisa's `.github/copilot-instructions.md` template for Copilot host
3
+ * projects.
4
+ *
5
+ * Verified-by-run (2026-05-28): `copilot init` creates a `.github/` directory
6
+ * and is documented to write `.github/copilot-instructions.md` containing
7
+ * project-specific guidance Copilot auto-loads at session start.
8
+ *
9
+ * The installer mirrors `src/codex/agents-md-installer.ts`'s create-only
10
+ * semantics — Lisa never overwrites a host-authored
11
+ * `.github/copilot-instructions.md`. The Lisa template is short and points
12
+ * downstream at the canonical rule sources (Lisa plugin's `rules/eager/`
13
+ * directory, surfaced by the Copilot variant's bundled rules).
14
+ * @module copilot/copilot-instructions-installer
15
+ */
16
+ import { mkdir, writeFile } from "node:fs/promises";
17
+ import { existsSync } from "node:fs";
18
+ import * as path from "node:path";
19
+ /** Relative path of Copilot's instruction file inside a host project. */
20
+ export const COPILOT_INSTRUCTIONS_RELATIVE_PATH = path.join(".github", "copilot-instructions.md");
21
+ const TEMPLATE = `# Copilot Instructions
22
+
23
+ GitHub Copilot CLI auto-loads this file at session start as repository-specific
24
+ guidance.
25
+
26
+ Lisa governance is active in this project. Lisa's eager rules ship via the
27
+ \`lisa-copilot\` plugin (see
28
+ [CodySwannGT/lisa](https://github.com/CodySwannGT/lisa)) and Copilot loads them
29
+ through the plugin's bundled \`rules/\` directory plus the \`SessionStart\` hook
30
+ \`inject-rules.sh\` (the same polyfill Lisa uses on Claude and Codex when the
31
+ agent does not auto-load rules from a plugin).
32
+
33
+ This file is the place to add project-specific guidance that Lisa's universal
34
+ rules do not cover. It is create-only from Lisa's perspective — re-running
35
+ \`lisa apply\` will never overwrite host-authored guidance here.
36
+
37
+ Reference paths Copilot reads natively at session start:
38
+
39
+ - \`.github/copilot-instructions.md\` (this file)
40
+ - \`AGENTS.md\` at project root, when present
41
+ - \`CLAUDE.md\` at project root, when present (Copilot cross-reads)
42
+
43
+ Add custom guidance below this line:
44
+ `;
45
+ /**
46
+ * Write a starter `.github/copilot-instructions.md` at the host project root,
47
+ * but only if the file doesn't already exist.
48
+ *
49
+ * @param destDir - Absolute path to the host project root.
50
+ * @returns Result describing whether a file was created.
51
+ */
52
+ export async function installCopilotInstructions(destDir) {
53
+ const filePath = path.join(destDir, COPILOT_INSTRUCTIONS_RELATIVE_PATH);
54
+ if (existsSync(filePath)) {
55
+ return { created: false, relativePath: undefined };
56
+ }
57
+ await mkdir(path.dirname(filePath), { recursive: true });
58
+ await writeFile(filePath, TEMPLATE, "utf8");
59
+ return { created: true, relativePath: COPILOT_INSTRUCTIONS_RELATIVE_PATH };
60
+ }
61
+ //# sourceMappingURL=copilot-instructions-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot-instructions-installer.js","sourceRoot":"","sources":["../../src/copilot/copilot-instructions-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,yEAAyE;AACzE,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,CAAC,IAAI,CACzD,SAAS,EACT,yBAAyB,CAC1B,CAAC;AAUF,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBhB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,kCAAkC,EAAE,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,29 @@
1
+ /** Result of the Copilot plugin install pass. */
2
+ export interface CopilotPluginInstallResult {
3
+ /** True when copilot was on PATH and an install was attempted. */
4
+ readonly attempted: boolean;
5
+ /** True when the install command exited 0. False on any error. */
6
+ readonly installed: boolean;
7
+ /** Which install path was used: "marketplace" or "local". */
8
+ readonly via: "marketplace" | "local" | undefined;
9
+ /** Resolved source argument passed to `copilot plugin install`. */
10
+ readonly source: string | undefined;
11
+ /** Error message captured on failure, or undefined on success/no-op. */
12
+ readonly error: string | undefined;
13
+ }
14
+ /**
15
+ * Install Lisa's Copilot plugin variant.
16
+ *
17
+ * Tries the marketplace path first (forward-compatible with the
18
+ * marketplace.json `pluginRoot` doubling fix from Wave 2 spec step 8). On
19
+ * marketplace failure (including the "plugin source directory not found"
20
+ * error caused by today's marketplace shape), falls back to local-path
21
+ * install against `plugins/lisa-copilot/` from the Lisa package.
22
+ *
23
+ * @param lisaPluginRoot - Absolute path to Lisa's `plugins/` directory.
24
+ * @param marketplaceRef - Marketplace install ref, defaulting to
25
+ * "lisa@CodySwannGT/lisa".
26
+ * @returns Install result.
27
+ */
28
+ export declare function installCopilotPlugin(lisaPluginRoot: string, marketplaceRef?: string): Promise<CopilotPluginInstallResult>;
29
+ //# sourceMappingURL=plugin-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-installer.d.ts","sourceRoot":"","sources":["../../src/copilot/plugin-installer.ts"],"names":[],"mappings":"AAiCA,iDAAiD;AACjD,MAAM,WAAW,0BAA0B;IACzC,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;IAClD,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AA+ED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,EACtB,cAAc,GAAE,MAAgC,GAC/C,OAAO,CAAC,0BAA0B,CAAC,CAyBrC"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Detect `copilot` (GitHub Copilot CLI) and install Lisa's Copilot plugin
3
+ * variant.
4
+ *
5
+ * Two distribution paths are supported (in priority order):
6
+ *
7
+ * 1. Marketplace install via `copilot plugin install lisa@CodySwannGT/lisa`.
8
+ * This is the documented forward path. As of 2026-05-28 it fails because
9
+ * Lisa's `.claude-plugin/marketplace.json` `pluginRoot: "./plugins"` and
10
+ * each plugin's `source: "./plugins/lisa"` double-up to `plugins/plugins/lisa`
11
+ * under Copilot's marketplace cache. The marketplace.json fix is gated on
12
+ * empirical verification (Wave 2 spec step 8); when the fix lands this
13
+ * installer's marketplace path becomes usable.
14
+ *
15
+ * 2. Local-path install via `copilot plugin install <plugins/lisa-copilot>`.
16
+ * Currently emits a deprecation warning ("only plugin@marketplace installs
17
+ * will be supported in a future release") but works. Lisa uses this as
18
+ * the fallback while the marketplace fix is in-flight.
19
+ *
20
+ * Detection rule: `copilot` must be on `$PATH`. If absent, no-op.
21
+ *
22
+ * Idempotence rule: Copilot's plugin install handles its own state; re-running
23
+ * against the same source updates the installed-plugins entry without erroring.
24
+ * @module copilot/plugin-installer
25
+ */
26
+ import { exec, execFile } from "node:child_process";
27
+ import { promisify } from "node:util";
28
+ import { existsSync } from "node:fs";
29
+ import * as path from "node:path";
30
+ const execAsync = promisify(exec);
31
+ const execFileAsync = promisify(execFile);
32
+ /**
33
+ * Detect whether `copilot` is on PATH.
34
+ *
35
+ * @returns True when copilot is callable.
36
+ */
37
+ async function detectCopilot() {
38
+ try {
39
+ await execAsync("command -v copilot");
40
+ return true;
41
+ }
42
+ catch {
43
+ return false;
44
+ }
45
+ }
46
+ /**
47
+ * Try the marketplace install path. Returns the install result.
48
+ *
49
+ * @param marketplaceRef - e.g. "lisa@CodySwannGT/lisa".
50
+ * @returns Result describing whether the install succeeded.
51
+ */
52
+ async function tryMarketplaceInstall(marketplaceRef) {
53
+ try {
54
+ // execFile (no shell): the ref is passed as an argv entry, so it is never
55
+ // subject to shell quoting/expansion. This also makes Windows paths with
56
+ // backslashes safe in the local-install path below.
57
+ await execFileAsync("copilot", ["plugin", "install", marketplaceRef]);
58
+ return {
59
+ attempted: true,
60
+ installed: true,
61
+ via: "marketplace",
62
+ source: marketplaceRef,
63
+ error: undefined,
64
+ };
65
+ }
66
+ catch (err) {
67
+ const message = err instanceof Error ? err.message : String(err);
68
+ return {
69
+ attempted: true,
70
+ installed: false,
71
+ via: "marketplace",
72
+ source: marketplaceRef,
73
+ error: message,
74
+ };
75
+ }
76
+ }
77
+ /**
78
+ * Try the local-path install path against Lisa's Copilot variant.
79
+ *
80
+ * @param localPath - Absolute path to plugins/lisa-copilot/.
81
+ * @returns Result describing whether the install succeeded.
82
+ */
83
+ async function tryLocalInstall(localPath) {
84
+ try {
85
+ await execFileAsync("copilot", ["plugin", "install", localPath]);
86
+ return {
87
+ attempted: true,
88
+ installed: true,
89
+ via: "local",
90
+ source: localPath,
91
+ error: undefined,
92
+ };
93
+ }
94
+ catch (err) {
95
+ const message = err instanceof Error ? err.message : String(err);
96
+ return {
97
+ attempted: true,
98
+ installed: false,
99
+ via: "local",
100
+ source: localPath,
101
+ error: message,
102
+ };
103
+ }
104
+ }
105
+ /**
106
+ * Install Lisa's Copilot plugin variant.
107
+ *
108
+ * Tries the marketplace path first (forward-compatible with the
109
+ * marketplace.json `pluginRoot` doubling fix from Wave 2 spec step 8). On
110
+ * marketplace failure (including the "plugin source directory not found"
111
+ * error caused by today's marketplace shape), falls back to local-path
112
+ * install against `plugins/lisa-copilot/` from the Lisa package.
113
+ *
114
+ * @param lisaPluginRoot - Absolute path to Lisa's `plugins/` directory.
115
+ * @param marketplaceRef - Marketplace install ref, defaulting to
116
+ * "lisa@CodySwannGT/lisa".
117
+ * @returns Install result.
118
+ */
119
+ export async function installCopilotPlugin(lisaPluginRoot, marketplaceRef = "lisa@CodySwannGT/lisa") {
120
+ if (!(await detectCopilot())) {
121
+ return {
122
+ attempted: false,
123
+ installed: false,
124
+ via: undefined,
125
+ source: undefined,
126
+ error: undefined,
127
+ };
128
+ }
129
+ const marketplaceResult = await tryMarketplaceInstall(marketplaceRef);
130
+ if (marketplaceResult.installed)
131
+ return marketplaceResult;
132
+ const localPath = path.join(lisaPluginRoot, "lisa-copilot");
133
+ if (!existsSync(path.join(localPath, ".claude-plugin", "plugin.json"))) {
134
+ return {
135
+ attempted: true,
136
+ installed: false,
137
+ via: "local",
138
+ source: localPath,
139
+ error: `Lisa Copilot variant not found at ${localPath}/.claude-plugin/plugin.json — run \`bun run build:plugins\` first`,
140
+ };
141
+ }
142
+ return tryLocalInstall(localPath);
143
+ }
144
+ //# sourceMappingURL=plugin-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-installer.js","sourceRoot":"","sources":["../../src/copilot/plugin-installer.ts"],"names":[],"mappings":"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"}
@@ -21,15 +21,39 @@ export declare const COPY_STRATEGIES: readonly CopyStrategy[];
21
21
  /**
22
22
  * Target harness(es) for emitted artifacts.
23
23
  *
24
- * - "claude": emit Claude Code artifacts (.claude/, .claude-plugin/, etc.)
25
- * - "codex": emit OpenAI Codex CLI artifacts (.codex/, .codex-plugin/, .agents/, AGENTS.md)
26
- * - "both": emit both, so a project can use either harness
24
+ * - "claude": emit Claude Code artifacts (.claude/, .claude-plugin/, CLAUDE.md)
25
+ * - "codex": emit OpenAI Codex CLI artifacts (.codex/, .codex-plugin/, .agents/, AGENTS.md)
26
+ * - "cursor": emit Cursor artifacts (Cursor reads .claude-plugin/ natively; no per-project files)
27
+ * - "agy": emit Antigravity artifacts (~/.gemini/config/mcp_config.json + AGENTS.md with baked rules)
28
+ * - "copilot": emit GitHub Copilot artifacts (.github/copilot-instructions.md + plugin install)
29
+ * - "both": emit both Claude and Codex (back-compat — predates the per-agent expansion)
30
+ * - "fleet": emit for every supported agent (Claude + Codex + Cursor + agy + Copilot)
27
31
  */
28
- export type Harness = "claude" | "codex" | "both";
32
+ export type Harness = "claude" | "codex" | "cursor" | "agy" | "copilot" | "both" | "fleet";
29
33
  /**
30
34
  * All valid harness values, in canonical order
31
35
  */
32
36
  export declare const HARNESS_VALUES: readonly Harness[];
37
+ /**
38
+ * Per-project emit agents that have a dispatch path in `lisa apply`.
39
+ * (Cursor is intentionally absent — it needs no per-project writes; it consumes
40
+ * the `lisa-cursor` plugin variant directly via its marketplace/loader.)
41
+ */
42
+ export type EmitAgent = "claude" | "codex" | "agy" | "copilot";
43
+ /**
44
+ * Whether a configured harness should emit artifacts for a given agent.
45
+ *
46
+ * Centralizes the dispatch-inclusion rule so the four `process<Agent>Emit`
47
+ * guards stay consistent: a `"fleet"` harness includes every agent, `"both"`
48
+ * is the Claude+Codex back-compat pair, and any single-agent harness matches
49
+ * only itself. (A prior copy-paste left `"fleet"` out of the Codex guard, so
50
+ * fleet installs silently skipped Codex — this predicate prevents that class
51
+ * of bug.)
52
+ * @param harness - The configured/CLI-resolved harness value.
53
+ * @param agent - The emit agent whose dispatch is being gated.
54
+ * @returns True when the harness should run that agent's emit path.
55
+ */
56
+ export declare function harnessIncludesAgent(harness: Harness, agent: EmitAgent): boolean;
33
57
  /**
34
58
  * Default harness when none is configured (backward compatibility — existing
35
59
  * host projects predate Codex support and have always emitted .claude/ artifacts)
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,gBAAgB,GAChB,eAAe,GACf,aAAa,GACb,OAAO,GACP,cAAc,GACd,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,MAAM,GACN,QAAQ,GACR,KAAK,GACL,eAAe,GACf,aAAa,GACb,OAAO,CAAC;AAEZ;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC,CAS/B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,WAAW,EAQ3C,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,YAAY,EAOzC,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,OAAO,EAInC,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,OAAkB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,4DAA4D;IAC5D,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAE/B,gFAAgF;IAChF,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAE/B,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,UAAU,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,MAAM,EACX,QAAQ,GACR,SAAS,GACT,aAAa,GACb,UAAU,GACV,QAAQ,GACR,SAAS,CAAC;IACd,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,oEAAoE;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,iBAAiB,CAYzD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -39,8 +39,32 @@ export const COPY_STRATEGIES = [
39
39
  export const HARNESS_VALUES = [
40
40
  "claude",
41
41
  "codex",
42
+ "cursor",
43
+ "agy",
44
+ "copilot",
42
45
  "both",
46
+ "fleet",
43
47
  ];
48
+ /**
49
+ * Whether a configured harness should emit artifacts for a given agent.
50
+ *
51
+ * Centralizes the dispatch-inclusion rule so the four `process<Agent>Emit`
52
+ * guards stay consistent: a `"fleet"` harness includes every agent, `"both"`
53
+ * is the Claude+Codex back-compat pair, and any single-agent harness matches
54
+ * only itself. (A prior copy-paste left `"fleet"` out of the Codex guard, so
55
+ * fleet installs silently skipped Codex — this predicate prevents that class
56
+ * of bug.)
57
+ * @param harness - The configured/CLI-resolved harness value.
58
+ * @param agent - The emit agent whose dispatch is being gated.
59
+ * @returns True when the harness should run that agent's emit path.
60
+ */
61
+ export function harnessIncludesAgent(harness, agent) {
62
+ if (harness === "fleet")
63
+ return true;
64
+ if (harness === "both")
65
+ return agent === "claude" || agent === "codex";
66
+ return harness === agent;
67
+ }
44
68
  /**
45
69
  * Default harness when none is configured (backward compatibility — existing
46
70
  * host projects predate Codex support and have always emitted .claude/ artifacts)