@codyswann/lisa 2.119.0 → 2.121.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 (781) 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 +84 -0
  7. package/dist/agy/mcp-installer.d.ts.map +1 -0
  8. package/dist/agy/mcp-installer.js +134 -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 +84 -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 +69 -0
  19. package/dist/codex/lisa-plugin-detection.d.ts.map +1 -0
  20. package/dist/codex/lisa-plugin-detection.js +135 -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 +140 -0
  29. package/dist/copilot/plugin-installer.js.map +1 -0
  30. package/dist/core/config.d.ts +8 -4
  31. package/dist/core/config.d.ts.map +1 -1
  32. package/dist/core/config.js +4 -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 +93 -0
  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/hooks/block-no-verify.sh +37 -0
  41. package/plugins/lisa/.codex-plugin/hooks/inject-flow-context.sh +12 -0
  42. package/plugins/lisa/.codex-plugin/hooks/inject-rules.sh +33 -0
  43. package/plugins/lisa/.codex-plugin/hooks/install-pkgs.sh +69 -0
  44. package/plugins/lisa/.codex-plugin/hooks/notify-ntfy.sh +183 -0
  45. package/plugins/lisa/.codex-plugin/hooks/setup-jira-cli.sh +51 -0
  46. package/plugins/lisa/.codex-plugin/hooks.json +75 -0
  47. package/plugins/lisa/.codex-plugin/plugin.json +2 -1
  48. package/plugins/lisa-agy/agents/architecture-specialist.md +47 -0
  49. package/plugins/lisa-agy/agents/bug-fixer.md +39 -0
  50. package/plugins/lisa-agy/agents/builder.md +40 -0
  51. package/plugins/lisa-agy/agents/confluence-prd-intake.md +65 -0
  52. package/plugins/lisa-agy/agents/debug-specialist.md +114 -0
  53. package/plugins/lisa-agy/agents/git-history-analyzer.md +183 -0
  54. package/plugins/lisa-agy/agents/github-agent.md +148 -0
  55. package/plugins/lisa-agy/agents/github-build-intake.md +64 -0
  56. package/plugins/lisa-agy/agents/github-prd-intake.md +66 -0
  57. package/plugins/lisa-agy/agents/jira-agent.md +129 -0
  58. package/plugins/lisa-agy/agents/jira-build-intake.md +64 -0
  59. package/plugins/lisa-agy/agents/learner.md +43 -0
  60. package/plugins/lisa-agy/agents/learnings-synthesizer.md +135 -0
  61. package/plugins/lisa-agy/agents/linear-agent.md +134 -0
  62. package/plugins/lisa-agy/agents/linear-build-intake.md +64 -0
  63. package/plugins/lisa-agy/agents/linear-prd-intake.md +66 -0
  64. package/plugins/lisa-agy/agents/notion-prd-intake.md +63 -0
  65. package/plugins/lisa-agy/agents/performance-specialist.md +85 -0
  66. package/plugins/lisa-agy/agents/pr-mining-specialist.md +85 -0
  67. package/plugins/lisa-agy/agents/product-specialist.md +63 -0
  68. package/plugins/lisa-agy/agents/quality-specialist.md +56 -0
  69. package/plugins/lisa-agy/agents/security-specialist.md +51 -0
  70. package/plugins/lisa-agy/agents/skill-evaluator.md +245 -0
  71. package/plugins/lisa-agy/agents/spec-conformance-specialist.md +49 -0
  72. package/plugins/lisa-agy/agents/test-specialist.md +49 -0
  73. package/plugins/lisa-agy/agents/tracker-mining-specialist.md +85 -0
  74. package/plugins/lisa-agy/agents/verification-specialist.md +135 -0
  75. package/plugins/lisa-agy/commands/automation-status.md +12 -0
  76. package/plugins/lisa-agy/commands/codify-verification.md +6 -0
  77. package/plugins/lisa-agy/commands/debrief/apply.md +6 -0
  78. package/plugins/lisa-agy/commands/debrief.md +6 -0
  79. package/plugins/lisa-agy/commands/doctor.md +6 -0
  80. package/plugins/lisa-agy/commands/fix/linter-error.md +7 -0
  81. package/plugins/lisa-agy/commands/git/commit.md +7 -0
  82. package/plugins/lisa-agy/commands/git/prune.md +6 -0
  83. package/plugins/lisa-agy/commands/git/submit-pr.md +7 -0
  84. package/plugins/lisa-agy/commands/implement.md +6 -0
  85. package/plugins/lisa-agy/commands/improve/code-complexity.md +6 -0
  86. package/plugins/lisa-agy/commands/improve/max-lines-per-function.md +7 -0
  87. package/plugins/lisa-agy/commands/improve/max-lines.md +7 -0
  88. package/plugins/lisa-agy/commands/improve/test-coverage.md +7 -0
  89. package/plugins/lisa-agy/commands/improve/tests.md +7 -0
  90. package/plugins/lisa-agy/commands/intake-explain.md +31 -0
  91. package/plugins/lisa-agy/commands/intake.md +6 -0
  92. package/plugins/lisa-agy/commands/monitor.md +6 -0
  93. package/plugins/lisa-agy/commands/plan.md +6 -0
  94. package/plugins/lisa-agy/commands/plugin-sync-explain.md +8 -0
  95. package/plugins/lisa-agy/commands/product-walkthrough.md +7 -0
  96. package/plugins/lisa-agy/commands/project-ideation.md +6 -0
  97. package/plugins/lisa-agy/commands/pull-request/review.md +7 -0
  98. package/plugins/lisa-agy/commands/queue-status.md +34 -0
  99. package/plugins/lisa-agy/commands/repair-intake.md +6 -0
  100. package/plugins/lisa-agy/commands/research.md +6 -0
  101. package/plugins/lisa-agy/commands/review/local.md +6 -0
  102. package/plugins/lisa-agy/commands/security/zap-scan.md +6 -0
  103. package/plugins/lisa-agy/commands/setup/atlassian.md +7 -0
  104. package/plugins/lisa-agy/commands/setup/confluence.md +7 -0
  105. package/plugins/lisa-agy/commands/setup/github.md +7 -0
  106. package/plugins/lisa-agy/commands/setup/jira.md +7 -0
  107. package/plugins/lisa-agy/commands/setup/linear.md +7 -0
  108. package/plugins/lisa-agy/commands/setup/notion.md +7 -0
  109. package/plugins/lisa-agy/commands/setup-automations.md +6 -0
  110. package/plugins/lisa-agy/commands/tear-down-automations.md +6 -0
  111. package/plugins/lisa-agy/commands/verify-prd.md +6 -0
  112. package/plugins/lisa-agy/commands/verify.md +6 -0
  113. package/plugins/lisa-agy/commands/wiki/install.md +7 -0
  114. package/plugins/lisa-agy/plugin.json +8 -0
  115. package/plugins/lisa-agy/scripts/automation-status-claude-adapter.mjs +672 -0
  116. package/plugins/lisa-agy/scripts/automation-status-codex-adapter.mjs +697 -0
  117. package/plugins/lisa-agy/scripts/automation-status-contract-drift.mjs +392 -0
  118. package/plugins/lisa-agy/scripts/automation-status-expected-fleet.mjs +319 -0
  119. package/plugins/lisa-agy/scripts/automation-status-report.mjs +170 -0
  120. package/plugins/lisa-agy/scripts/doctor-report.mjs +143 -0
  121. package/plugins/lisa-agy/scripts/plugin-sync-explain.mjs +512 -0
  122. package/plugins/lisa-agy/scripts/project-ideation-idempotency-harness.mjs +319 -0
  123. package/plugins/lisa-agy/scripts/queue-contract-resolution.mjs +453 -0
  124. package/plugins/lisa-agy/scripts/queue-health-classification.mjs +157 -0
  125. package/plugins/lisa-agy/scripts/queue-status-build-readers.mjs +509 -0
  126. package/plugins/lisa-agy/scripts/queue-status-prd-readers.mjs +452 -0
  127. package/plugins/lisa-agy/skills/acceptance-criteria/SKILL.md +71 -0
  128. package/plugins/lisa-agy/skills/agent-design-best-practices/SKILL.md +219 -0
  129. package/plugins/lisa-agy/skills/atlassian-access/SKILL.md +293 -0
  130. package/plugins/lisa-agy/skills/automation-status/SKILL.md +111 -0
  131. package/plugins/lisa-agy/skills/bug-triage/SKILL.md +23 -0
  132. package/plugins/lisa-agy/skills/codebase-research/SKILL.md +87 -0
  133. package/plugins/lisa-agy/skills/codify-verification/SKILL.md +152 -0
  134. package/plugins/lisa-agy/skills/confluence-prd-intake/SKILL.md +417 -0
  135. package/plugins/lisa-agy/skills/confluence-to-tracker/SKILL.md +360 -0
  136. package/plugins/lisa-agy/skills/confluence-write-prd/SKILL.md +109 -0
  137. package/plugins/lisa-agy/skills/debrief/SKILL.md +94 -0
  138. package/plugins/lisa-agy/skills/debrief-apply/SKILL.md +63 -0
  139. package/plugins/lisa-agy/skills/doctor/SKILL.md +317 -0
  140. package/plugins/lisa-agy/skills/epic-triage/SKILL.md +28 -0
  141. package/plugins/lisa-agy/skills/fix-linter-error/SKILL.md +45 -0
  142. package/plugins/lisa-agy/skills/git-commit/SKILL.md +48 -0
  143. package/plugins/lisa-agy/skills/git-prune/SKILL.md +35 -0
  144. package/plugins/lisa-agy/skills/git-submit-pr/SKILL.md +105 -0
  145. package/plugins/lisa-agy/skills/github-add-journey/SKILL.md +115 -0
  146. package/plugins/lisa-agy/skills/github-build-intake/SKILL.md +377 -0
  147. package/plugins/lisa-agy/skills/github-create/SKILL.md +101 -0
  148. package/plugins/lisa-agy/skills/github-evidence/SKILL.md +110 -0
  149. package/plugins/lisa-agy/skills/github-journey/SKILL.md +121 -0
  150. package/plugins/lisa-agy/skills/github-prd-intake/SKILL.md +432 -0
  151. package/plugins/lisa-agy/skills/github-project-v2/SKILL.md +227 -0
  152. package/plugins/lisa-agy/skills/github-read-issue/SKILL.md +248 -0
  153. package/plugins/lisa-agy/skills/github-sync/SKILL.md +119 -0
  154. package/plugins/lisa-agy/skills/github-to-tracker/SKILL.md +345 -0
  155. package/plugins/lisa-agy/skills/github-validate-issue/SKILL.md +331 -0
  156. package/plugins/lisa-agy/skills/github-verify/SKILL.md +29 -0
  157. package/plugins/lisa-agy/skills/github-write-issue/SKILL.md +339 -0
  158. package/plugins/lisa-agy/skills/github-write-prd/SKILL.md +157 -0
  159. package/plugins/lisa-agy/skills/implement/SKILL.md +145 -0
  160. package/plugins/lisa-agy/skills/improve-code-complexity/SKILL.md +44 -0
  161. package/plugins/lisa-agy/skills/improve-max-lines/SKILL.md +45 -0
  162. package/plugins/lisa-agy/skills/improve-max-lines-per-function/SKILL.md +46 -0
  163. package/plugins/lisa-agy/skills/improve-test-coverage/SKILL.md +44 -0
  164. package/plugins/lisa-agy/skills/improve-tests/SKILL.md +47 -0
  165. package/plugins/lisa-agy/skills/intake/SKILL.md +132 -0
  166. package/plugins/lisa-agy/skills/intake-explain/SKILL.md +279 -0
  167. package/plugins/lisa-agy/skills/jira-add-journey/SKILL.md +121 -0
  168. package/plugins/lisa-agy/skills/jira-build-intake/SKILL.md +286 -0
  169. package/plugins/lisa-agy/skills/jira-create/SKILL.md +154 -0
  170. package/plugins/lisa-agy/skills/jira-evidence/SKILL.md +90 -0
  171. package/plugins/lisa-agy/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  172. package/plugins/lisa-agy/skills/jira-journey/SKILL.md +127 -0
  173. package/plugins/lisa-agy/skills/jira-journey/scripts/generate-templates.py +233 -0
  174. package/plugins/lisa-agy/skills/jira-journey/scripts/parse-plan.py +368 -0
  175. package/plugins/lisa-agy/skills/jira-read-ticket/SKILL.md +198 -0
  176. package/plugins/lisa-agy/skills/jira-read-ticket/scripts/download-attachment.sh +110 -0
  177. package/plugins/lisa-agy/skills/jira-sync/SKILL.md +95 -0
  178. package/plugins/lisa-agy/skills/jira-validate-ticket/SKILL.md +318 -0
  179. package/plugins/lisa-agy/skills/jira-verify/SKILL.md +30 -0
  180. package/plugins/lisa-agy/skills/jira-write-ticket/SKILL.md +265 -0
  181. package/plugins/lisa-agy/skills/jsdoc-best-practices/SKILL.md +432 -0
  182. package/plugins/lisa-agy/skills/linear-add-journey/SKILL.md +105 -0
  183. package/plugins/lisa-agy/skills/linear-build-intake/SKILL.md +283 -0
  184. package/plugins/lisa-agy/skills/linear-create/SKILL.md +146 -0
  185. package/plugins/lisa-agy/skills/linear-evidence/SKILL.md +103 -0
  186. package/plugins/lisa-agy/skills/linear-journey/SKILL.md +134 -0
  187. package/plugins/lisa-agy/skills/linear-prd-intake/SKILL.md +383 -0
  188. package/plugins/lisa-agy/skills/linear-read-issue/SKILL.md +200 -0
  189. package/plugins/lisa-agy/skills/linear-sync/SKILL.md +114 -0
  190. package/plugins/lisa-agy/skills/linear-to-tracker/SKILL.md +342 -0
  191. package/plugins/lisa-agy/skills/linear-validate-issue/SKILL.md +313 -0
  192. package/plugins/lisa-agy/skills/linear-verify/SKILL.md +51 -0
  193. package/plugins/lisa-agy/skills/linear-write-issue/SKILL.md +292 -0
  194. package/plugins/lisa-agy/skills/linear-write-prd/SKILL.md +96 -0
  195. package/plugins/lisa-agy/skills/lisa-review-implementation/SKILL.md +209 -0
  196. package/plugins/lisa-agy/skills/monitor/SKILL.md +48 -0
  197. package/plugins/lisa-agy/skills/nightly-add-test-coverage/SKILL.md +40 -0
  198. package/plugins/lisa-agy/skills/nightly-improve-tests/SKILL.md +29 -0
  199. package/plugins/lisa-agy/skills/nightly-lower-code-complexity/SKILL.md +28 -0
  200. package/plugins/lisa-agy/skills/notion-access/SKILL.md +226 -0
  201. package/plugins/lisa-agy/skills/notion-prd-intake/SKILL.md +360 -0
  202. package/plugins/lisa-agy/skills/notion-to-tracker/SKILL.md +357 -0
  203. package/plugins/lisa-agy/skills/notion-write-prd/SKILL.md +109 -0
  204. package/plugins/lisa-agy/skills/performance-review/SKILL.md +94 -0
  205. package/plugins/lisa-agy/skills/plan/SKILL.md +60 -0
  206. package/plugins/lisa-agy/skills/plugin-sync-explain/SKILL.md +53 -0
  207. package/plugins/lisa-agy/skills/prd-backlink/SKILL.md +265 -0
  208. package/plugins/lisa-agy/skills/prd-source-write/SKILL.md +101 -0
  209. package/plugins/lisa-agy/skills/prd-ticket-coverage/SKILL.md +170 -0
  210. package/plugins/lisa-agy/skills/product-walkthrough/SKILL.md +129 -0
  211. package/plugins/lisa-agy/skills/project-ideation/SKILL.md +315 -0
  212. package/plugins/lisa-agy/skills/project-ideation/examples/evidence-card-format.md +21 -0
  213. package/plugins/lisa-agy/skills/project-ideation/examples/host-project-only.md +22 -0
  214. package/plugins/lisa-agy/skills/project-ideation/examples/idempotency-verification-harness.md +57 -0
  215. package/plugins/lisa-agy/skills/project-ideation/examples/public-external-inspiration.md +22 -0
  216. package/plugins/lisa-agy/skills/project-ideation/examples/unavailable-data-rejection.md +22 -0
  217. package/plugins/lisa-agy/skills/pull-request-review/SKILL.md +68 -0
  218. package/plugins/lisa-agy/skills/quality-review/SKILL.md +54 -0
  219. package/plugins/lisa-agy/skills/queue-status/SKILL.md +133 -0
  220. package/plugins/lisa-agy/skills/repair-intake/SKILL.md +584 -0
  221. package/plugins/lisa-agy/skills/reproduce-bug/SKILL.md +96 -0
  222. package/plugins/lisa-agy/skills/research/SKILL.md +68 -0
  223. package/plugins/lisa-agy/skills/review-local/SKILL.md +88 -0
  224. package/plugins/lisa-agy/skills/root-cause-analysis/SKILL.md +155 -0
  225. package/plugins/lisa-agy/skills/security-review/SKILL.md +57 -0
  226. package/plugins/lisa-agy/skills/security-zap-scan/SKILL.md +33 -0
  227. package/plugins/lisa-agy/skills/setup-atlassian/SKILL.md +347 -0
  228. package/plugins/lisa-agy/skills/setup-automations/SKILL.md +99 -0
  229. package/plugins/lisa-agy/skills/setup-confluence/SKILL.md +254 -0
  230. package/plugins/lisa-agy/skills/setup-github/SKILL.md +268 -0
  231. package/plugins/lisa-agy/skills/setup-jira/SKILL.md +198 -0
  232. package/plugins/lisa-agy/skills/setup-linear/SKILL.md +251 -0
  233. package/plugins/lisa-agy/skills/setup-notion/SKILL.md +316 -0
  234. package/plugins/lisa-agy/skills/spec-conformance/SKILL.md +159 -0
  235. package/plugins/lisa-agy/skills/task-decomposition/SKILL.md +127 -0
  236. package/plugins/lisa-agy/skills/task-triage/SKILL.md +23 -0
  237. package/plugins/lisa-agy/skills/tdd-implementation/SKILL.md +83 -0
  238. package/plugins/lisa-agy/skills/tear-down-automations/SKILL.md +34 -0
  239. package/plugins/lisa-agy/skills/test-strategy/SKILL.md +63 -0
  240. package/plugins/lisa-agy/skills/ticket-triage/SKILL.md +182 -0
  241. package/plugins/lisa-agy/skills/tracker-add-journey/SKILL.md +26 -0
  242. package/plugins/lisa-agy/skills/tracker-build-intake/SKILL.md +64 -0
  243. package/plugins/lisa-agy/skills/tracker-create/SKILL.md +26 -0
  244. package/plugins/lisa-agy/skills/tracker-evidence/SKILL.md +52 -0
  245. package/plugins/lisa-agy/skills/tracker-journey/SKILL.md +26 -0
  246. package/plugins/lisa-agy/skills/tracker-read/SKILL.md +27 -0
  247. package/plugins/lisa-agy/skills/tracker-source-artifacts/SKILL.md +107 -0
  248. package/plugins/lisa-agy/skills/tracker-sync/SKILL.md +51 -0
  249. package/plugins/lisa-agy/skills/tracker-validate/SKILL.md +36 -0
  250. package/plugins/lisa-agy/skills/tracker-verify/SKILL.md +27 -0
  251. package/plugins/lisa-agy/skills/tracker-write/SKILL.md +53 -0
  252. package/plugins/lisa-agy/skills/usage-accounting/SKILL.md +170 -0
  253. package/plugins/lisa-agy/skills/verification-lifecycle/SKILL.md +339 -0
  254. package/plugins/lisa-agy/skills/verify/SKILL.md +49 -0
  255. package/plugins/lisa-agy/skills/verify-prd/SKILL.md +392 -0
  256. package/plugins/lisa-agy/skills/wiki-install/SKILL.md +101 -0
  257. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  258. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  259. package/plugins/lisa-copilot/.claude-plugin/plugin.json +72 -0
  260. package/plugins/lisa-copilot/agents/architecture-specialist.agent.md +47 -0
  261. package/plugins/lisa-copilot/agents/bug-fixer.agent.md +39 -0
  262. package/plugins/lisa-copilot/agents/builder.agent.md +40 -0
  263. package/plugins/lisa-copilot/agents/confluence-prd-intake.agent.md +65 -0
  264. package/plugins/lisa-copilot/agents/debug-specialist.agent.md +114 -0
  265. package/plugins/lisa-copilot/agents/git-history-analyzer.agent.md +183 -0
  266. package/plugins/lisa-copilot/agents/github-agent.agent.md +148 -0
  267. package/plugins/lisa-copilot/agents/github-build-intake.agent.md +64 -0
  268. package/plugins/lisa-copilot/agents/github-prd-intake.agent.md +66 -0
  269. package/plugins/lisa-copilot/agents/jira-agent.agent.md +129 -0
  270. package/plugins/lisa-copilot/agents/jira-build-intake.agent.md +64 -0
  271. package/plugins/lisa-copilot/agents/learner.agent.md +43 -0
  272. package/plugins/lisa-copilot/agents/learnings-synthesizer.agent.md +135 -0
  273. package/plugins/lisa-copilot/agents/linear-agent.agent.md +134 -0
  274. package/plugins/lisa-copilot/agents/linear-build-intake.agent.md +64 -0
  275. package/plugins/lisa-copilot/agents/linear-prd-intake.agent.md +66 -0
  276. package/plugins/lisa-copilot/agents/notion-prd-intake.agent.md +63 -0
  277. package/plugins/lisa-copilot/agents/performance-specialist.agent.md +85 -0
  278. package/plugins/lisa-copilot/agents/pr-mining-specialist.agent.md +85 -0
  279. package/plugins/lisa-copilot/agents/product-specialist.agent.md +63 -0
  280. package/plugins/lisa-copilot/agents/quality-specialist.agent.md +56 -0
  281. package/plugins/lisa-copilot/agents/security-specialist.agent.md +51 -0
  282. package/plugins/lisa-copilot/agents/skill-evaluator.agent.md +245 -0
  283. package/plugins/lisa-copilot/agents/spec-conformance-specialist.agent.md +49 -0
  284. package/plugins/lisa-copilot/agents/test-specialist.agent.md +49 -0
  285. package/plugins/lisa-copilot/agents/tracker-mining-specialist.agent.md +85 -0
  286. package/plugins/lisa-copilot/agents/verification-specialist.agent.md +135 -0
  287. package/plugins/lisa-copilot/commands/automation-status.md +12 -0
  288. package/plugins/lisa-copilot/commands/codify-verification.md +6 -0
  289. package/plugins/lisa-copilot/commands/debrief/apply.md +6 -0
  290. package/plugins/lisa-copilot/commands/debrief.md +6 -0
  291. package/plugins/lisa-copilot/commands/doctor.md +6 -0
  292. package/plugins/lisa-copilot/commands/fix/linter-error.md +7 -0
  293. package/plugins/lisa-copilot/commands/git/commit.md +7 -0
  294. package/plugins/lisa-copilot/commands/git/prune.md +6 -0
  295. package/plugins/lisa-copilot/commands/git/submit-pr.md +7 -0
  296. package/plugins/lisa-copilot/commands/implement.md +6 -0
  297. package/plugins/lisa-copilot/commands/improve/code-complexity.md +6 -0
  298. package/plugins/lisa-copilot/commands/improve/max-lines-per-function.md +7 -0
  299. package/plugins/lisa-copilot/commands/improve/max-lines.md +7 -0
  300. package/plugins/lisa-copilot/commands/improve/test-coverage.md +7 -0
  301. package/plugins/lisa-copilot/commands/improve/tests.md +7 -0
  302. package/plugins/lisa-copilot/commands/intake-explain.md +31 -0
  303. package/plugins/lisa-copilot/commands/intake.md +6 -0
  304. package/plugins/lisa-copilot/commands/monitor.md +6 -0
  305. package/plugins/lisa-copilot/commands/plan.md +6 -0
  306. package/plugins/lisa-copilot/commands/plugin-sync-explain.md +8 -0
  307. package/plugins/lisa-copilot/commands/product-walkthrough.md +7 -0
  308. package/plugins/lisa-copilot/commands/project-ideation.md +6 -0
  309. package/plugins/lisa-copilot/commands/pull-request/review.md +7 -0
  310. package/plugins/lisa-copilot/commands/queue-status.md +34 -0
  311. package/plugins/lisa-copilot/commands/repair-intake.md +6 -0
  312. package/plugins/lisa-copilot/commands/research.md +6 -0
  313. package/plugins/lisa-copilot/commands/review/local.md +6 -0
  314. package/plugins/lisa-copilot/commands/security/zap-scan.md +6 -0
  315. package/plugins/lisa-copilot/commands/setup/atlassian.md +7 -0
  316. package/plugins/lisa-copilot/commands/setup/confluence.md +7 -0
  317. package/plugins/lisa-copilot/commands/setup/github.md +7 -0
  318. package/plugins/lisa-copilot/commands/setup/jira.md +7 -0
  319. package/plugins/lisa-copilot/commands/setup/linear.md +7 -0
  320. package/plugins/lisa-copilot/commands/setup/notion.md +7 -0
  321. package/plugins/lisa-copilot/commands/setup-automations.md +6 -0
  322. package/plugins/lisa-copilot/commands/tear-down-automations.md +6 -0
  323. package/plugins/lisa-copilot/commands/verify-prd.md +6 -0
  324. package/plugins/lisa-copilot/commands/verify.md +6 -0
  325. package/plugins/lisa-copilot/commands/wiki/install.md +7 -0
  326. package/plugins/lisa-copilot/hooks/block-no-verify.sh +37 -0
  327. package/plugins/lisa-copilot/hooks/inject-rules.sh +33 -0
  328. package/plugins/lisa-copilot/hooks/install-pkgs.sh +69 -0
  329. package/plugins/lisa-copilot/hooks/notify-ntfy.sh +183 -0
  330. package/plugins/lisa-copilot/hooks/setup-jira-cli.sh +51 -0
  331. package/plugins/lisa-copilot/rules/eager/base-rules.md +70 -0
  332. package/plugins/lisa-copilot/rules/eager/coding-philosophy.md +27 -0
  333. package/plugins/lisa-copilot/rules/eager/config-resolution.md +28 -0
  334. package/plugins/lisa-copilot/rules/eager/documentation-source-paths.md +13 -0
  335. package/plugins/lisa-copilot/rules/eager/empirical-inquiry.md +22 -0
  336. package/plugins/lisa-copilot/rules/eager/intent-routing.md +18 -0
  337. package/plugins/lisa-copilot/rules/eager/leaf-only-lifecycle.md +39 -0
  338. package/plugins/lisa-copilot/rules/eager/prd-lifecycle-rollup.md +31 -0
  339. package/plugins/lisa-copilot/rules/eager/repo-scope-split.md +39 -0
  340. package/plugins/lisa-copilot/rules/eager/security-audit-handling.md +29 -0
  341. package/plugins/lisa-copilot/rules/eager/usage-accounting.md +28 -0
  342. package/plugins/lisa-copilot/rules/eager/verification.md +21 -0
  343. package/plugins/lisa-copilot/rules/eager/wiki-knowledge-source.md +16 -0
  344. package/plugins/lisa-copilot/rules/reference/base-rules.md +133 -0
  345. package/plugins/lisa-copilot/rules/reference/coding-philosophy.md +428 -0
  346. package/plugins/lisa-copilot/rules/reference/config-resolution.md +691 -0
  347. package/plugins/lisa-copilot/rules/reference/documentation-source-paths.md +13 -0
  348. package/plugins/lisa-copilot/rules/reference/empirical-inquiry.md +27 -0
  349. package/plugins/lisa-copilot/rules/reference/intent-routing.md +407 -0
  350. package/plugins/lisa-copilot/rules/reference/leaf-only-lifecycle.md +120 -0
  351. package/plugins/lisa-copilot/rules/reference/prd-lifecycle-rollup.md +156 -0
  352. package/plugins/lisa-copilot/rules/reference/repo-scope-split.md +58 -0
  353. package/plugins/lisa-copilot/rules/reference/security-audit-handling.md +30 -0
  354. package/plugins/lisa-copilot/rules/reference/usage-accounting.md +144 -0
  355. package/plugins/lisa-copilot/rules/reference/verification.md +124 -0
  356. package/plugins/lisa-copilot/rules/reference/wiki-knowledge-source.md +14 -0
  357. package/plugins/lisa-copilot/scripts/automation-status-claude-adapter.mjs +672 -0
  358. package/plugins/lisa-copilot/scripts/automation-status-codex-adapter.mjs +697 -0
  359. package/plugins/lisa-copilot/scripts/automation-status-contract-drift.mjs +392 -0
  360. package/plugins/lisa-copilot/scripts/automation-status-expected-fleet.mjs +319 -0
  361. package/plugins/lisa-copilot/scripts/automation-status-report.mjs +170 -0
  362. package/plugins/lisa-copilot/scripts/doctor-report.mjs +143 -0
  363. package/plugins/lisa-copilot/scripts/plugin-sync-explain.mjs +512 -0
  364. package/plugins/lisa-copilot/scripts/project-ideation-idempotency-harness.mjs +319 -0
  365. package/plugins/lisa-copilot/scripts/queue-contract-resolution.mjs +453 -0
  366. package/plugins/lisa-copilot/scripts/queue-health-classification.mjs +157 -0
  367. package/plugins/lisa-copilot/scripts/queue-status-build-readers.mjs +509 -0
  368. package/plugins/lisa-copilot/scripts/queue-status-prd-readers.mjs +452 -0
  369. package/plugins/lisa-copilot/skills/acceptance-criteria/SKILL.md +71 -0
  370. package/plugins/lisa-copilot/skills/agent-design-best-practices/SKILL.md +219 -0
  371. package/plugins/lisa-copilot/skills/atlassian-access/SKILL.md +293 -0
  372. package/plugins/lisa-copilot/skills/automation-status/SKILL.md +111 -0
  373. package/plugins/lisa-copilot/skills/bug-triage/SKILL.md +23 -0
  374. package/plugins/lisa-copilot/skills/codebase-research/SKILL.md +87 -0
  375. package/plugins/lisa-copilot/skills/codify-verification/SKILL.md +152 -0
  376. package/plugins/lisa-copilot/skills/confluence-prd-intake/SKILL.md +417 -0
  377. package/plugins/lisa-copilot/skills/confluence-to-tracker/SKILL.md +360 -0
  378. package/plugins/lisa-copilot/skills/confluence-write-prd/SKILL.md +109 -0
  379. package/plugins/lisa-copilot/skills/debrief/SKILL.md +94 -0
  380. package/plugins/lisa-copilot/skills/debrief-apply/SKILL.md +63 -0
  381. package/plugins/lisa-copilot/skills/doctor/SKILL.md +317 -0
  382. package/plugins/lisa-copilot/skills/epic-triage/SKILL.md +28 -0
  383. package/plugins/lisa-copilot/skills/fix-linter-error/SKILL.md +45 -0
  384. package/plugins/lisa-copilot/skills/git-commit/SKILL.md +48 -0
  385. package/plugins/lisa-copilot/skills/git-prune/SKILL.md +35 -0
  386. package/plugins/lisa-copilot/skills/git-submit-pr/SKILL.md +105 -0
  387. package/plugins/lisa-copilot/skills/github-add-journey/SKILL.md +115 -0
  388. package/plugins/lisa-copilot/skills/github-build-intake/SKILL.md +377 -0
  389. package/plugins/lisa-copilot/skills/github-create/SKILL.md +101 -0
  390. package/plugins/lisa-copilot/skills/github-evidence/SKILL.md +110 -0
  391. package/plugins/lisa-copilot/skills/github-journey/SKILL.md +121 -0
  392. package/plugins/lisa-copilot/skills/github-prd-intake/SKILL.md +432 -0
  393. package/plugins/lisa-copilot/skills/github-project-v2/SKILL.md +227 -0
  394. package/plugins/lisa-copilot/skills/github-read-issue/SKILL.md +248 -0
  395. package/plugins/lisa-copilot/skills/github-sync/SKILL.md +119 -0
  396. package/plugins/lisa-copilot/skills/github-to-tracker/SKILL.md +345 -0
  397. package/plugins/lisa-copilot/skills/github-validate-issue/SKILL.md +331 -0
  398. package/plugins/lisa-copilot/skills/github-verify/SKILL.md +29 -0
  399. package/plugins/lisa-copilot/skills/github-write-issue/SKILL.md +339 -0
  400. package/plugins/lisa-copilot/skills/github-write-prd/SKILL.md +157 -0
  401. package/plugins/lisa-copilot/skills/implement/SKILL.md +145 -0
  402. package/plugins/lisa-copilot/skills/improve-code-complexity/SKILL.md +44 -0
  403. package/plugins/lisa-copilot/skills/improve-max-lines/SKILL.md +45 -0
  404. package/plugins/lisa-copilot/skills/improve-max-lines-per-function/SKILL.md +46 -0
  405. package/plugins/lisa-copilot/skills/improve-test-coverage/SKILL.md +44 -0
  406. package/plugins/lisa-copilot/skills/improve-tests/SKILL.md +47 -0
  407. package/plugins/lisa-copilot/skills/intake/SKILL.md +132 -0
  408. package/plugins/lisa-copilot/skills/intake-explain/SKILL.md +279 -0
  409. package/plugins/lisa-copilot/skills/jira-add-journey/SKILL.md +121 -0
  410. package/plugins/lisa-copilot/skills/jira-build-intake/SKILL.md +286 -0
  411. package/plugins/lisa-copilot/skills/jira-create/SKILL.md +154 -0
  412. package/plugins/lisa-copilot/skills/jira-evidence/SKILL.md +90 -0
  413. package/plugins/lisa-copilot/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  414. package/plugins/lisa-copilot/skills/jira-journey/SKILL.md +127 -0
  415. package/plugins/lisa-copilot/skills/jira-journey/scripts/generate-templates.py +233 -0
  416. package/plugins/lisa-copilot/skills/jira-journey/scripts/parse-plan.py +368 -0
  417. package/plugins/lisa-copilot/skills/jira-read-ticket/SKILL.md +198 -0
  418. package/plugins/lisa-copilot/skills/jira-read-ticket/scripts/download-attachment.sh +110 -0
  419. package/plugins/lisa-copilot/skills/jira-sync/SKILL.md +95 -0
  420. package/plugins/lisa-copilot/skills/jira-validate-ticket/SKILL.md +318 -0
  421. package/plugins/lisa-copilot/skills/jira-verify/SKILL.md +30 -0
  422. package/plugins/lisa-copilot/skills/jira-write-ticket/SKILL.md +265 -0
  423. package/plugins/lisa-copilot/skills/jsdoc-best-practices/SKILL.md +432 -0
  424. package/plugins/lisa-copilot/skills/linear-add-journey/SKILL.md +105 -0
  425. package/plugins/lisa-copilot/skills/linear-build-intake/SKILL.md +283 -0
  426. package/plugins/lisa-copilot/skills/linear-create/SKILL.md +146 -0
  427. package/plugins/lisa-copilot/skills/linear-evidence/SKILL.md +103 -0
  428. package/plugins/lisa-copilot/skills/linear-journey/SKILL.md +134 -0
  429. package/plugins/lisa-copilot/skills/linear-prd-intake/SKILL.md +383 -0
  430. package/plugins/lisa-copilot/skills/linear-read-issue/SKILL.md +200 -0
  431. package/plugins/lisa-copilot/skills/linear-sync/SKILL.md +114 -0
  432. package/plugins/lisa-copilot/skills/linear-to-tracker/SKILL.md +342 -0
  433. package/plugins/lisa-copilot/skills/linear-validate-issue/SKILL.md +313 -0
  434. package/plugins/lisa-copilot/skills/linear-verify/SKILL.md +51 -0
  435. package/plugins/lisa-copilot/skills/linear-write-issue/SKILL.md +292 -0
  436. package/plugins/lisa-copilot/skills/linear-write-prd/SKILL.md +96 -0
  437. package/plugins/lisa-copilot/skills/lisa-review-implementation/SKILL.md +209 -0
  438. package/plugins/lisa-copilot/skills/monitor/SKILL.md +48 -0
  439. package/plugins/lisa-copilot/skills/nightly-add-test-coverage/SKILL.md +40 -0
  440. package/plugins/lisa-copilot/skills/nightly-improve-tests/SKILL.md +29 -0
  441. package/plugins/lisa-copilot/skills/nightly-lower-code-complexity/SKILL.md +28 -0
  442. package/plugins/lisa-copilot/skills/notion-access/SKILL.md +226 -0
  443. package/plugins/lisa-copilot/skills/notion-prd-intake/SKILL.md +360 -0
  444. package/plugins/lisa-copilot/skills/notion-to-tracker/SKILL.md +357 -0
  445. package/plugins/lisa-copilot/skills/notion-write-prd/SKILL.md +109 -0
  446. package/plugins/lisa-copilot/skills/performance-review/SKILL.md +94 -0
  447. package/plugins/lisa-copilot/skills/plan/SKILL.md +60 -0
  448. package/plugins/lisa-copilot/skills/plugin-sync-explain/SKILL.md +53 -0
  449. package/plugins/lisa-copilot/skills/prd-backlink/SKILL.md +265 -0
  450. package/plugins/lisa-copilot/skills/prd-source-write/SKILL.md +101 -0
  451. package/plugins/lisa-copilot/skills/prd-ticket-coverage/SKILL.md +170 -0
  452. package/plugins/lisa-copilot/skills/product-walkthrough/SKILL.md +129 -0
  453. package/plugins/lisa-copilot/skills/project-ideation/SKILL.md +315 -0
  454. package/plugins/lisa-copilot/skills/project-ideation/examples/evidence-card-format.md +21 -0
  455. package/plugins/lisa-copilot/skills/project-ideation/examples/host-project-only.md +22 -0
  456. package/plugins/lisa-copilot/skills/project-ideation/examples/idempotency-verification-harness.md +57 -0
  457. package/plugins/lisa-copilot/skills/project-ideation/examples/public-external-inspiration.md +22 -0
  458. package/plugins/lisa-copilot/skills/project-ideation/examples/unavailable-data-rejection.md +22 -0
  459. package/plugins/lisa-copilot/skills/pull-request-review/SKILL.md +68 -0
  460. package/plugins/lisa-copilot/skills/quality-review/SKILL.md +54 -0
  461. package/plugins/lisa-copilot/skills/queue-status/SKILL.md +133 -0
  462. package/plugins/lisa-copilot/skills/repair-intake/SKILL.md +584 -0
  463. package/plugins/lisa-copilot/skills/reproduce-bug/SKILL.md +96 -0
  464. package/plugins/lisa-copilot/skills/research/SKILL.md +68 -0
  465. package/plugins/lisa-copilot/skills/review-local/SKILL.md +88 -0
  466. package/plugins/lisa-copilot/skills/root-cause-analysis/SKILL.md +155 -0
  467. package/plugins/lisa-copilot/skills/security-review/SKILL.md +57 -0
  468. package/plugins/lisa-copilot/skills/security-zap-scan/SKILL.md +33 -0
  469. package/plugins/lisa-copilot/skills/setup-atlassian/SKILL.md +347 -0
  470. package/plugins/lisa-copilot/skills/setup-automations/SKILL.md +99 -0
  471. package/plugins/lisa-copilot/skills/setup-confluence/SKILL.md +254 -0
  472. package/plugins/lisa-copilot/skills/setup-github/SKILL.md +268 -0
  473. package/plugins/lisa-copilot/skills/setup-jira/SKILL.md +198 -0
  474. package/plugins/lisa-copilot/skills/setup-linear/SKILL.md +251 -0
  475. package/plugins/lisa-copilot/skills/setup-notion/SKILL.md +316 -0
  476. package/plugins/lisa-copilot/skills/spec-conformance/SKILL.md +159 -0
  477. package/plugins/lisa-copilot/skills/task-decomposition/SKILL.md +127 -0
  478. package/plugins/lisa-copilot/skills/task-triage/SKILL.md +23 -0
  479. package/plugins/lisa-copilot/skills/tdd-implementation/SKILL.md +83 -0
  480. package/plugins/lisa-copilot/skills/tear-down-automations/SKILL.md +34 -0
  481. package/plugins/lisa-copilot/skills/test-strategy/SKILL.md +63 -0
  482. package/plugins/lisa-copilot/skills/ticket-triage/SKILL.md +182 -0
  483. package/plugins/lisa-copilot/skills/tracker-add-journey/SKILL.md +26 -0
  484. package/plugins/lisa-copilot/skills/tracker-build-intake/SKILL.md +64 -0
  485. package/plugins/lisa-copilot/skills/tracker-create/SKILL.md +26 -0
  486. package/plugins/lisa-copilot/skills/tracker-evidence/SKILL.md +52 -0
  487. package/plugins/lisa-copilot/skills/tracker-journey/SKILL.md +26 -0
  488. package/plugins/lisa-copilot/skills/tracker-read/SKILL.md +27 -0
  489. package/plugins/lisa-copilot/skills/tracker-source-artifacts/SKILL.md +107 -0
  490. package/plugins/lisa-copilot/skills/tracker-sync/SKILL.md +51 -0
  491. package/plugins/lisa-copilot/skills/tracker-validate/SKILL.md +36 -0
  492. package/plugins/lisa-copilot/skills/tracker-verify/SKILL.md +27 -0
  493. package/plugins/lisa-copilot/skills/tracker-write/SKILL.md +53 -0
  494. package/plugins/lisa-copilot/skills/usage-accounting/SKILL.md +170 -0
  495. package/plugins/lisa-copilot/skills/verification-lifecycle/SKILL.md +339 -0
  496. package/plugins/lisa-copilot/skills/verify/SKILL.md +49 -0
  497. package/plugins/lisa-copilot/skills/verify-prd/SKILL.md +392 -0
  498. package/plugins/lisa-copilot/skills/wiki-install/SKILL.md +101 -0
  499. package/plugins/lisa-cursor/.claude-plugin/plugin.json +52 -0
  500. package/plugins/lisa-cursor/agents/architecture-specialist.md +47 -0
  501. package/plugins/lisa-cursor/agents/bug-fixer.md +39 -0
  502. package/plugins/lisa-cursor/agents/builder.md +40 -0
  503. package/plugins/lisa-cursor/agents/confluence-prd-intake.md +65 -0
  504. package/plugins/lisa-cursor/agents/debug-specialist.md +114 -0
  505. package/plugins/lisa-cursor/agents/git-history-analyzer.md +183 -0
  506. package/plugins/lisa-cursor/agents/github-agent.md +148 -0
  507. package/plugins/lisa-cursor/agents/github-build-intake.md +64 -0
  508. package/plugins/lisa-cursor/agents/github-prd-intake.md +66 -0
  509. package/plugins/lisa-cursor/agents/jira-agent.md +129 -0
  510. package/plugins/lisa-cursor/agents/jira-build-intake.md +64 -0
  511. package/plugins/lisa-cursor/agents/learner.md +43 -0
  512. package/plugins/lisa-cursor/agents/learnings-synthesizer.md +135 -0
  513. package/plugins/lisa-cursor/agents/linear-agent.md +134 -0
  514. package/plugins/lisa-cursor/agents/linear-build-intake.md +64 -0
  515. package/plugins/lisa-cursor/agents/linear-prd-intake.md +66 -0
  516. package/plugins/lisa-cursor/agents/notion-prd-intake.md +63 -0
  517. package/plugins/lisa-cursor/agents/performance-specialist.md +85 -0
  518. package/plugins/lisa-cursor/agents/pr-mining-specialist.md +85 -0
  519. package/plugins/lisa-cursor/agents/product-specialist.md +63 -0
  520. package/plugins/lisa-cursor/agents/quality-specialist.md +56 -0
  521. package/plugins/lisa-cursor/agents/security-specialist.md +51 -0
  522. package/plugins/lisa-cursor/agents/skill-evaluator.md +245 -0
  523. package/plugins/lisa-cursor/agents/spec-conformance-specialist.md +49 -0
  524. package/plugins/lisa-cursor/agents/test-specialist.md +49 -0
  525. package/plugins/lisa-cursor/agents/tracker-mining-specialist.md +85 -0
  526. package/plugins/lisa-cursor/agents/verification-specialist.md +135 -0
  527. package/plugins/lisa-cursor/commands/automation-status.md +12 -0
  528. package/plugins/lisa-cursor/commands/codify-verification.md +6 -0
  529. package/plugins/lisa-cursor/commands/debrief/apply.md +6 -0
  530. package/plugins/lisa-cursor/commands/debrief.md +6 -0
  531. package/plugins/lisa-cursor/commands/doctor.md +6 -0
  532. package/plugins/lisa-cursor/commands/fix/linter-error.md +7 -0
  533. package/plugins/lisa-cursor/commands/git/commit.md +7 -0
  534. package/plugins/lisa-cursor/commands/git/prune.md +6 -0
  535. package/plugins/lisa-cursor/commands/git/submit-pr.md +7 -0
  536. package/plugins/lisa-cursor/commands/implement.md +6 -0
  537. package/plugins/lisa-cursor/commands/improve/code-complexity.md +6 -0
  538. package/plugins/lisa-cursor/commands/improve/max-lines-per-function.md +7 -0
  539. package/plugins/lisa-cursor/commands/improve/max-lines.md +7 -0
  540. package/plugins/lisa-cursor/commands/improve/test-coverage.md +7 -0
  541. package/plugins/lisa-cursor/commands/improve/tests.md +7 -0
  542. package/plugins/lisa-cursor/commands/intake-explain.md +31 -0
  543. package/plugins/lisa-cursor/commands/intake.md +6 -0
  544. package/plugins/lisa-cursor/commands/monitor.md +6 -0
  545. package/plugins/lisa-cursor/commands/plan.md +6 -0
  546. package/plugins/lisa-cursor/commands/plugin-sync-explain.md +8 -0
  547. package/plugins/lisa-cursor/commands/product-walkthrough.md +7 -0
  548. package/plugins/lisa-cursor/commands/project-ideation.md +6 -0
  549. package/plugins/lisa-cursor/commands/pull-request/review.md +7 -0
  550. package/plugins/lisa-cursor/commands/queue-status.md +34 -0
  551. package/plugins/lisa-cursor/commands/repair-intake.md +6 -0
  552. package/plugins/lisa-cursor/commands/research.md +6 -0
  553. package/plugins/lisa-cursor/commands/review/local.md +6 -0
  554. package/plugins/lisa-cursor/commands/security/zap-scan.md +6 -0
  555. package/plugins/lisa-cursor/commands/setup/atlassian.md +7 -0
  556. package/plugins/lisa-cursor/commands/setup/confluence.md +7 -0
  557. package/plugins/lisa-cursor/commands/setup/github.md +7 -0
  558. package/plugins/lisa-cursor/commands/setup/jira.md +7 -0
  559. package/plugins/lisa-cursor/commands/setup/linear.md +7 -0
  560. package/plugins/lisa-cursor/commands/setup/notion.md +7 -0
  561. package/plugins/lisa-cursor/commands/setup-automations.md +6 -0
  562. package/plugins/lisa-cursor/commands/tear-down-automations.md +6 -0
  563. package/plugins/lisa-cursor/commands/verify-prd.md +6 -0
  564. package/plugins/lisa-cursor/commands/verify.md +6 -0
  565. package/plugins/lisa-cursor/commands/wiki/install.md +7 -0
  566. package/plugins/lisa-cursor/hooks/block-no-verify.sh +37 -0
  567. package/plugins/lisa-cursor/hooks/install-pkgs.sh +69 -0
  568. package/plugins/lisa-cursor/hooks/notify-ntfy.sh +183 -0
  569. package/plugins/lisa-cursor/hooks/setup-jira-cli.sh +51 -0
  570. package/plugins/lisa-cursor/rules/eager/base-rules.md +70 -0
  571. package/plugins/lisa-cursor/rules/eager/coding-philosophy.md +27 -0
  572. package/plugins/lisa-cursor/rules/eager/config-resolution.md +28 -0
  573. package/plugins/lisa-cursor/rules/eager/documentation-source-paths.md +13 -0
  574. package/plugins/lisa-cursor/rules/eager/empirical-inquiry.md +22 -0
  575. package/plugins/lisa-cursor/rules/eager/intent-routing.md +18 -0
  576. package/plugins/lisa-cursor/rules/eager/leaf-only-lifecycle.md +39 -0
  577. package/plugins/lisa-cursor/rules/eager/prd-lifecycle-rollup.md +31 -0
  578. package/plugins/lisa-cursor/rules/eager/repo-scope-split.md +39 -0
  579. package/plugins/lisa-cursor/rules/eager/security-audit-handling.md +29 -0
  580. package/plugins/lisa-cursor/rules/eager/usage-accounting.md +28 -0
  581. package/plugins/lisa-cursor/rules/eager/verification.md +21 -0
  582. package/plugins/lisa-cursor/rules/eager/wiki-knowledge-source.md +16 -0
  583. package/plugins/lisa-cursor/rules/reference/base-rules.md +133 -0
  584. package/plugins/lisa-cursor/rules/reference/coding-philosophy.md +428 -0
  585. package/plugins/lisa-cursor/rules/reference/config-resolution.md +691 -0
  586. package/plugins/lisa-cursor/rules/reference/documentation-source-paths.md +13 -0
  587. package/plugins/lisa-cursor/rules/reference/empirical-inquiry.md +27 -0
  588. package/plugins/lisa-cursor/rules/reference/intent-routing.md +407 -0
  589. package/plugins/lisa-cursor/rules/reference/leaf-only-lifecycle.md +120 -0
  590. package/plugins/lisa-cursor/rules/reference/prd-lifecycle-rollup.md +156 -0
  591. package/plugins/lisa-cursor/rules/reference/repo-scope-split.md +58 -0
  592. package/plugins/lisa-cursor/rules/reference/security-audit-handling.md +30 -0
  593. package/plugins/lisa-cursor/rules/reference/usage-accounting.md +144 -0
  594. package/plugins/lisa-cursor/rules/reference/verification.md +124 -0
  595. package/plugins/lisa-cursor/rules/reference/wiki-knowledge-source.md +14 -0
  596. package/plugins/lisa-cursor/scripts/automation-status-claude-adapter.mjs +672 -0
  597. package/plugins/lisa-cursor/scripts/automation-status-codex-adapter.mjs +697 -0
  598. package/plugins/lisa-cursor/scripts/automation-status-contract-drift.mjs +392 -0
  599. package/plugins/lisa-cursor/scripts/automation-status-expected-fleet.mjs +319 -0
  600. package/plugins/lisa-cursor/scripts/automation-status-report.mjs +170 -0
  601. package/plugins/lisa-cursor/scripts/doctor-report.mjs +143 -0
  602. package/plugins/lisa-cursor/scripts/plugin-sync-explain.mjs +512 -0
  603. package/plugins/lisa-cursor/scripts/project-ideation-idempotency-harness.mjs +319 -0
  604. package/plugins/lisa-cursor/scripts/queue-contract-resolution.mjs +453 -0
  605. package/plugins/lisa-cursor/scripts/queue-health-classification.mjs +157 -0
  606. package/plugins/lisa-cursor/scripts/queue-status-build-readers.mjs +509 -0
  607. package/plugins/lisa-cursor/scripts/queue-status-prd-readers.mjs +452 -0
  608. package/plugins/lisa-cursor/skills/acceptance-criteria/SKILL.md +71 -0
  609. package/plugins/lisa-cursor/skills/agent-design-best-practices/SKILL.md +219 -0
  610. package/plugins/lisa-cursor/skills/atlassian-access/SKILL.md +293 -0
  611. package/plugins/lisa-cursor/skills/automation-status/SKILL.md +111 -0
  612. package/plugins/lisa-cursor/skills/bug-triage/SKILL.md +23 -0
  613. package/plugins/lisa-cursor/skills/codebase-research/SKILL.md +87 -0
  614. package/plugins/lisa-cursor/skills/codify-verification/SKILL.md +152 -0
  615. package/plugins/lisa-cursor/skills/confluence-prd-intake/SKILL.md +417 -0
  616. package/plugins/lisa-cursor/skills/confluence-to-tracker/SKILL.md +360 -0
  617. package/plugins/lisa-cursor/skills/confluence-write-prd/SKILL.md +109 -0
  618. package/plugins/lisa-cursor/skills/debrief/SKILL.md +94 -0
  619. package/plugins/lisa-cursor/skills/debrief-apply/SKILL.md +63 -0
  620. package/plugins/lisa-cursor/skills/doctor/SKILL.md +317 -0
  621. package/plugins/lisa-cursor/skills/epic-triage/SKILL.md +28 -0
  622. package/plugins/lisa-cursor/skills/fix-linter-error/SKILL.md +45 -0
  623. package/plugins/lisa-cursor/skills/git-commit/SKILL.md +48 -0
  624. package/plugins/lisa-cursor/skills/git-prune/SKILL.md +35 -0
  625. package/plugins/lisa-cursor/skills/git-submit-pr/SKILL.md +105 -0
  626. package/plugins/lisa-cursor/skills/github-add-journey/SKILL.md +115 -0
  627. package/plugins/lisa-cursor/skills/github-build-intake/SKILL.md +377 -0
  628. package/plugins/lisa-cursor/skills/github-create/SKILL.md +101 -0
  629. package/plugins/lisa-cursor/skills/github-evidence/SKILL.md +110 -0
  630. package/plugins/lisa-cursor/skills/github-journey/SKILL.md +121 -0
  631. package/plugins/lisa-cursor/skills/github-prd-intake/SKILL.md +432 -0
  632. package/plugins/lisa-cursor/skills/github-project-v2/SKILL.md +227 -0
  633. package/plugins/lisa-cursor/skills/github-read-issue/SKILL.md +248 -0
  634. package/plugins/lisa-cursor/skills/github-sync/SKILL.md +119 -0
  635. package/plugins/lisa-cursor/skills/github-to-tracker/SKILL.md +345 -0
  636. package/plugins/lisa-cursor/skills/github-validate-issue/SKILL.md +331 -0
  637. package/plugins/lisa-cursor/skills/github-verify/SKILL.md +29 -0
  638. package/plugins/lisa-cursor/skills/github-write-issue/SKILL.md +339 -0
  639. package/plugins/lisa-cursor/skills/github-write-prd/SKILL.md +157 -0
  640. package/plugins/lisa-cursor/skills/implement/SKILL.md +145 -0
  641. package/plugins/lisa-cursor/skills/improve-code-complexity/SKILL.md +44 -0
  642. package/plugins/lisa-cursor/skills/improve-max-lines/SKILL.md +45 -0
  643. package/plugins/lisa-cursor/skills/improve-max-lines-per-function/SKILL.md +46 -0
  644. package/plugins/lisa-cursor/skills/improve-test-coverage/SKILL.md +44 -0
  645. package/plugins/lisa-cursor/skills/improve-tests/SKILL.md +47 -0
  646. package/plugins/lisa-cursor/skills/intake/SKILL.md +132 -0
  647. package/plugins/lisa-cursor/skills/intake-explain/SKILL.md +279 -0
  648. package/plugins/lisa-cursor/skills/jira-add-journey/SKILL.md +121 -0
  649. package/plugins/lisa-cursor/skills/jira-build-intake/SKILL.md +286 -0
  650. package/plugins/lisa-cursor/skills/jira-create/SKILL.md +154 -0
  651. package/plugins/lisa-cursor/skills/jira-evidence/SKILL.md +90 -0
  652. package/plugins/lisa-cursor/skills/jira-evidence/scripts/post-evidence.sh +163 -0
  653. package/plugins/lisa-cursor/skills/jira-journey/SKILL.md +127 -0
  654. package/plugins/lisa-cursor/skills/jira-journey/scripts/generate-templates.py +233 -0
  655. package/plugins/lisa-cursor/skills/jira-journey/scripts/parse-plan.py +368 -0
  656. package/plugins/lisa-cursor/skills/jira-read-ticket/SKILL.md +198 -0
  657. package/plugins/lisa-cursor/skills/jira-read-ticket/scripts/download-attachment.sh +110 -0
  658. package/plugins/lisa-cursor/skills/jira-sync/SKILL.md +95 -0
  659. package/plugins/lisa-cursor/skills/jira-validate-ticket/SKILL.md +318 -0
  660. package/plugins/lisa-cursor/skills/jira-verify/SKILL.md +30 -0
  661. package/plugins/lisa-cursor/skills/jira-write-ticket/SKILL.md +265 -0
  662. package/plugins/lisa-cursor/skills/jsdoc-best-practices/SKILL.md +432 -0
  663. package/plugins/lisa-cursor/skills/linear-add-journey/SKILL.md +105 -0
  664. package/plugins/lisa-cursor/skills/linear-build-intake/SKILL.md +283 -0
  665. package/plugins/lisa-cursor/skills/linear-create/SKILL.md +146 -0
  666. package/plugins/lisa-cursor/skills/linear-evidence/SKILL.md +103 -0
  667. package/plugins/lisa-cursor/skills/linear-journey/SKILL.md +134 -0
  668. package/plugins/lisa-cursor/skills/linear-prd-intake/SKILL.md +383 -0
  669. package/plugins/lisa-cursor/skills/linear-read-issue/SKILL.md +200 -0
  670. package/plugins/lisa-cursor/skills/linear-sync/SKILL.md +114 -0
  671. package/plugins/lisa-cursor/skills/linear-to-tracker/SKILL.md +342 -0
  672. package/plugins/lisa-cursor/skills/linear-validate-issue/SKILL.md +313 -0
  673. package/plugins/lisa-cursor/skills/linear-verify/SKILL.md +51 -0
  674. package/plugins/lisa-cursor/skills/linear-write-issue/SKILL.md +292 -0
  675. package/plugins/lisa-cursor/skills/linear-write-prd/SKILL.md +96 -0
  676. package/plugins/lisa-cursor/skills/lisa-review-implementation/SKILL.md +209 -0
  677. package/plugins/lisa-cursor/skills/monitor/SKILL.md +48 -0
  678. package/plugins/lisa-cursor/skills/nightly-add-test-coverage/SKILL.md +40 -0
  679. package/plugins/lisa-cursor/skills/nightly-improve-tests/SKILL.md +29 -0
  680. package/plugins/lisa-cursor/skills/nightly-lower-code-complexity/SKILL.md +28 -0
  681. package/plugins/lisa-cursor/skills/notion-access/SKILL.md +226 -0
  682. package/plugins/lisa-cursor/skills/notion-prd-intake/SKILL.md +360 -0
  683. package/plugins/lisa-cursor/skills/notion-to-tracker/SKILL.md +357 -0
  684. package/plugins/lisa-cursor/skills/notion-write-prd/SKILL.md +109 -0
  685. package/plugins/lisa-cursor/skills/performance-review/SKILL.md +94 -0
  686. package/plugins/lisa-cursor/skills/plan/SKILL.md +60 -0
  687. package/plugins/lisa-cursor/skills/plugin-sync-explain/SKILL.md +53 -0
  688. package/plugins/lisa-cursor/skills/prd-backlink/SKILL.md +265 -0
  689. package/plugins/lisa-cursor/skills/prd-source-write/SKILL.md +101 -0
  690. package/plugins/lisa-cursor/skills/prd-ticket-coverage/SKILL.md +170 -0
  691. package/plugins/lisa-cursor/skills/product-walkthrough/SKILL.md +129 -0
  692. package/plugins/lisa-cursor/skills/project-ideation/SKILL.md +315 -0
  693. package/plugins/lisa-cursor/skills/project-ideation/examples/evidence-card-format.md +21 -0
  694. package/plugins/lisa-cursor/skills/project-ideation/examples/host-project-only.md +22 -0
  695. package/plugins/lisa-cursor/skills/project-ideation/examples/idempotency-verification-harness.md +57 -0
  696. package/plugins/lisa-cursor/skills/project-ideation/examples/public-external-inspiration.md +22 -0
  697. package/plugins/lisa-cursor/skills/project-ideation/examples/unavailable-data-rejection.md +22 -0
  698. package/plugins/lisa-cursor/skills/pull-request-review/SKILL.md +68 -0
  699. package/plugins/lisa-cursor/skills/quality-review/SKILL.md +54 -0
  700. package/plugins/lisa-cursor/skills/queue-status/SKILL.md +133 -0
  701. package/plugins/lisa-cursor/skills/repair-intake/SKILL.md +584 -0
  702. package/plugins/lisa-cursor/skills/reproduce-bug/SKILL.md +96 -0
  703. package/plugins/lisa-cursor/skills/research/SKILL.md +68 -0
  704. package/plugins/lisa-cursor/skills/review-local/SKILL.md +88 -0
  705. package/plugins/lisa-cursor/skills/root-cause-analysis/SKILL.md +155 -0
  706. package/plugins/lisa-cursor/skills/security-review/SKILL.md +57 -0
  707. package/plugins/lisa-cursor/skills/security-zap-scan/SKILL.md +33 -0
  708. package/plugins/lisa-cursor/skills/setup-atlassian/SKILL.md +347 -0
  709. package/plugins/lisa-cursor/skills/setup-automations/SKILL.md +99 -0
  710. package/plugins/lisa-cursor/skills/setup-confluence/SKILL.md +254 -0
  711. package/plugins/lisa-cursor/skills/setup-github/SKILL.md +268 -0
  712. package/plugins/lisa-cursor/skills/setup-jira/SKILL.md +198 -0
  713. package/plugins/lisa-cursor/skills/setup-linear/SKILL.md +251 -0
  714. package/plugins/lisa-cursor/skills/setup-notion/SKILL.md +316 -0
  715. package/plugins/lisa-cursor/skills/spec-conformance/SKILL.md +159 -0
  716. package/plugins/lisa-cursor/skills/task-decomposition/SKILL.md +127 -0
  717. package/plugins/lisa-cursor/skills/task-triage/SKILL.md +23 -0
  718. package/plugins/lisa-cursor/skills/tdd-implementation/SKILL.md +83 -0
  719. package/plugins/lisa-cursor/skills/tear-down-automations/SKILL.md +34 -0
  720. package/plugins/lisa-cursor/skills/test-strategy/SKILL.md +63 -0
  721. package/plugins/lisa-cursor/skills/ticket-triage/SKILL.md +182 -0
  722. package/plugins/lisa-cursor/skills/tracker-add-journey/SKILL.md +26 -0
  723. package/plugins/lisa-cursor/skills/tracker-build-intake/SKILL.md +64 -0
  724. package/plugins/lisa-cursor/skills/tracker-create/SKILL.md +26 -0
  725. package/plugins/lisa-cursor/skills/tracker-evidence/SKILL.md +52 -0
  726. package/plugins/lisa-cursor/skills/tracker-journey/SKILL.md +26 -0
  727. package/plugins/lisa-cursor/skills/tracker-read/SKILL.md +27 -0
  728. package/plugins/lisa-cursor/skills/tracker-source-artifacts/SKILL.md +107 -0
  729. package/plugins/lisa-cursor/skills/tracker-sync/SKILL.md +51 -0
  730. package/plugins/lisa-cursor/skills/tracker-validate/SKILL.md +36 -0
  731. package/plugins/lisa-cursor/skills/tracker-verify/SKILL.md +27 -0
  732. package/plugins/lisa-cursor/skills/tracker-write/SKILL.md +53 -0
  733. package/plugins/lisa-cursor/skills/usage-accounting/SKILL.md +170 -0
  734. package/plugins/lisa-cursor/skills/verification-lifecycle/SKILL.md +339 -0
  735. package/plugins/lisa-cursor/skills/verify/SKILL.md +49 -0
  736. package/plugins/lisa-cursor/skills/verify-prd/SKILL.md +392 -0
  737. package/plugins/lisa-cursor/skills/wiki-install/SKILL.md +101 -0
  738. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  739. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  740. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  741. package/plugins/lisa-harper-fabric/.codex-plugin/hooks/inject-rules.sh +16 -0
  742. package/plugins/lisa-harper-fabric/.codex-plugin/hooks.json +26 -0
  743. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +2 -1
  744. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  745. package/plugins/lisa-nestjs/.codex-plugin/hooks/block-migration-edits.sh +60 -0
  746. package/plugins/lisa-nestjs/.codex-plugin/hooks.json +15 -0
  747. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +2 -1
  748. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  749. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  750. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  751. package/plugins/lisa-rails/.codex-plugin/hooks/inject-rules.sh +22 -0
  752. package/plugins/lisa-rails/.codex-plugin/hooks/rubocop-on-edit.sh +78 -0
  753. package/plugins/lisa-rails/.codex-plugin/hooks/sg-scan-on-edit.sh +74 -0
  754. package/plugins/lisa-rails/.codex-plugin/hooks.json +41 -0
  755. package/plugins/lisa-rails/.codex-plugin/plugin.json +2 -1
  756. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  757. package/plugins/lisa-typescript/.codex-plugin/hooks/block-suppress-directives.sh +73 -0
  758. package/plugins/lisa-typescript/.codex-plugin/hooks/format-on-edit.sh +79 -0
  759. package/plugins/lisa-typescript/.codex-plugin/hooks/lint-on-edit.sh +134 -0
  760. package/plugins/lisa-typescript/.codex-plugin/hooks/sg-scan-on-edit.sh +71 -0
  761. package/plugins/lisa-typescript/.codex-plugin/hooks.json +34 -0
  762. package/plugins/lisa-typescript/.codex-plugin/plugin.json +2 -1
  763. package/plugins/lisa-typescript/hooks/format-on-edit.sh +5 -3
  764. package/plugins/lisa-typescript/hooks/lint-on-edit.sh +5 -2
  765. package/plugins/lisa-typescript/hooks/sg-scan-on-edit.sh +5 -2
  766. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  767. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  768. package/plugins/src/typescript/hooks/format-on-edit.sh +5 -3
  769. package/plugins/src/typescript/hooks/lint-on-edit.sh +5 -2
  770. package/plugins/src/typescript/hooks/sg-scan-on-edit.sh +5 -2
  771. package/scripts/build-plugins.sh +24 -0
  772. package/scripts/generate-agy-plugin-artifacts.mjs +168 -0
  773. package/scripts/generate-codex-plugin-artifacts.mjs +170 -12
  774. package/scripts/generate-copilot-plugin-artifacts.mjs +230 -0
  775. package/scripts/generate-cursor-plugin-artifacts.mjs +173 -0
  776. package/scripts/internal-agy-skill-policy.json +3 -0
  777. package/scripts/internal-copilot-runtime-probe.json +7 -0
  778. package/scripts/internal-copilot-skill-policy.json +3 -0
  779. package/scripts/internal-cursor-skill-policy.json +3 -0
  780. package/scripts/lib/per-agent-hook-filter.mjs +249 -0
  781. package/scripts/probes/wave3-verification.sh +106 -0
@@ -0,0 +1,428 @@
1
+ # Coding Philosophy
2
+
3
+ This rule enforces the core coding philosophy: **immutability**, **predictable structure**, **functional transformations**, **test-driven development**, **clean deletion**, and **simplicity**.
4
+
5
+ ## Guiding Principles: YAGNI + SOLID + DRY + KISS
6
+
7
+ Follow these software engineering principles, **deferring to Occam's Razor/KISS whenever principles conflict**:
8
+
9
+ ### KISS (Keep It Simple, Stupid) - The Tiebreaker
10
+
11
+ When principles conflict, **always choose the simpler solution**.
12
+
13
+ ```typescript
14
+ // KISS: Simple direct approach
15
+ const isAdmin = user.role === "admin";
16
+
17
+ // Over-engineered: Abstraction without value
18
+ const isAdmin = RoleChecker.getInstance().checkRole(user, RoleTypes.ADMIN);
19
+ ```
20
+
21
+ ### YAGNI (You Ain't Gonna Need It)
22
+
23
+ Don't build features, abstractions, or flexibility you don't need **right now**.
24
+
25
+ ```typescript
26
+ // Correct: Solve today's problem
27
+ const formatDate = (date: Date) => date.toISOString().split("T")[0];
28
+
29
+ // Wrong: Building for hypothetical future needs
30
+ const formatDate = (date: Date, format?: string, locale?: string, timezone?: string) => {
31
+ // 50 lines handling cases that may never be used
32
+ };
33
+ ```
34
+
35
+ ### DRY (Don't Repeat Yourself) - With KISS Constraint
36
+
37
+ Extract duplication only when:
38
+ 1. The same logic appears **3+ times**
39
+ 2. The abstraction is **simpler** than the duplication
40
+ 3. The extracted code has a **clear single purpose**
41
+
42
+ ### SOLID Principles - Applied Pragmatically
43
+
44
+ | Principle | Apply When | Skip When |
45
+ | ------------------------- | --------------------------------------------- | --------------------------------------- |
46
+ | **S**ingle Responsibility | Function does 2+ unrelated things | Splitting adds complexity |
47
+ | **O**pen/Closed | Extension points have clear use cases | No foreseeable extensions |
48
+ | **L**iskov Substitution | Using inheritance hierarchies | Using composition (preferred) |
49
+ | **I**nterface Segregation | Consumers need different subsets | Interface is already small |
50
+ | **D**ependency Inversion | Testing requires mocking external services | Direct dependency is simpler |
51
+
52
+ ### Decision Framework
53
+
54
+ When unsure, ask in order:
55
+ 1. **Do I need this now?** (YAGNI) - If no, don't build it
56
+ 2. **Is there a simpler way?** (KISS) - Choose the simpler option
57
+ 3. **Am I repeating myself 3+ times?** (DRY) - Extract if the abstraction is simpler
58
+ 4. **Does this function do one thing?** (SOLID-SRP) - Split only if clearer
59
+
60
+ ---
61
+
62
+ ## Core Principles
63
+
64
+ ### 1. Immutability First
65
+
66
+ Never mutate data. Always create new references.
67
+
68
+ ```typescript
69
+ // Correct - spread creates new object
70
+ const updated = { ...user, name: "New Name" };
71
+
72
+ // Incorrect - mutation
73
+ user.name = "New Name";
74
+ ```
75
+
76
+ ### 2. Function Structure Ordering
77
+
78
+ All functions, hooks, and components follow a strict ordering:
79
+
80
+ ```text
81
+ 1. Variable definitions and derived state (const, useState, useMemo, useCallback)
82
+ 2. Side effects (useEffect, function calls with no return value)
83
+ 3. Return statement
84
+ ```
85
+
86
+ ### 3. Functional Transformations
87
+
88
+ Use `map`, `filter`, `reduce` instead of imperative loops and mutations.
89
+
90
+ ```typescript
91
+ // Correct - functional transformation
92
+ const names = users.map(u => u.name);
93
+
94
+ // Incorrect - imperative mutation
95
+ const names = [];
96
+ users.forEach(u => names.push(u.name));
97
+ ```
98
+
99
+ ### 4. Test-Driven Development (TDD)
100
+
101
+ **Always write failing tests before implementation code.** This is mandatory, not optional.
102
+
103
+ ```text
104
+ TDD Cycle:
105
+ 1. RED: Write a failing test that defines expected behavior
106
+ 2. GREEN: Write the minimum code to make the test pass
107
+ 3. REFACTOR: Clean up while keeping tests green
108
+ ```
109
+
110
+ ### 5. Clean Deletion
111
+
112
+ **Delete old code completely.** No deprecation warnings, migration shims, or backward-compatibility layers unless explicitly requested.
113
+
114
+ ```typescript
115
+ // Correct: Remove the old code entirely
116
+ const calculateScore = (player: Player): number => player.stats.overall;
117
+
118
+ // Wrong: Keeping deprecated versions around
119
+ /** @deprecated Use calculateScore instead */
120
+ const getPlayerScore = (player: Player): number => calculateScore(player);
121
+ ```
122
+
123
+ **Clean deletion rules:**
124
+ - When replacing code, delete the old version completely
125
+ - Never create `V2`, `New`, or `Old` suffixed functions/variables
126
+ - Never add `@deprecated` comments - just remove the code
127
+ - Never write migration code unless explicitly asked
128
+ - Trust git history for recovery if needed
129
+
130
+ ---
131
+
132
+ ## Quick Reference
133
+
134
+ ### Variable Declaration
135
+
136
+ | Pattern | Status | Example |
137
+ | ------- | --------- | ----------------------------- |
138
+ | `const` | Required | `const value = calculate();` |
139
+ | `let` | Forbidden | Use ternary or reduce instead |
140
+ | `var` | Forbidden | Never use |
141
+
142
+ ### Array Operations
143
+
144
+ | Instead of | Use |
145
+ | ----------------------- | -------------------------------------------- |
146
+ | `arr.push(item)` | `[...arr, item]` |
147
+ | `arr.pop()` | `arr.slice(0, -1)` |
148
+ | `arr.splice(i, 1)` | `arr.filter((_, idx) => idx !== i)` |
149
+ | `arr.sort()` | `[...arr].sort()` |
150
+ | `arr[i] = value` | `arr.map((v, idx) => idx === i ? value : v)` |
151
+ | `forEach` with mutation | `reduce` or `map` |
152
+
153
+ ### Object Operations
154
+
155
+ | Instead of | Use |
156
+ | ------------------------- | ----------------------------- |
157
+ | `obj.key = value` | `{ ...obj, key: value }` |
158
+ | `delete obj.key` | `({ key: _, ...rest } = obj)` |
159
+ | `Object.assign(obj, ...)` | `{ ...obj, ...other }` |
160
+
161
+ ### Building Lookup Objects
162
+
163
+ ```typescript
164
+ // Correct - reduce with spread
165
+ const lookup = items.reduce(
166
+ (acc, item) => ({ ...acc, [item.id]: item }),
167
+ {} as Record<string, Item>
168
+ );
169
+
170
+ // Incorrect - forEach with Map.set
171
+ const lookup = new Map();
172
+ items.forEach(item => lookup.set(item.id, item));
173
+ ```
174
+
175
+ ### Conditional Values
176
+
177
+ ```typescript
178
+ // Correct - ternary expression
179
+ const status = isComplete ? "done" : "pending";
180
+
181
+ // Incorrect - let with reassignment
182
+ let status = "pending";
183
+ if (isComplete) {
184
+ status = "done";
185
+ }
186
+ ```
187
+
188
+ ---
189
+
190
+ ## Hook Structure Example
191
+
192
+ ```typescript
193
+ export const usePlayerData = (playerId: string) => {
194
+ // 1. VARIABLES & STATE (first)
195
+ const [isLoading, setIsLoading] = useState(true);
196
+ const { data } = useQuery(GetPlayerDocument, { variables: { playerId } });
197
+
198
+ const playerName = useMemo(() => data?.player?.name ?? "Unknown", [data]);
199
+
200
+ const handleRefresh = useCallback(() => {
201
+ refetch();
202
+ }, [refetch]);
203
+
204
+ // 2. SIDE EFFECTS (second)
205
+ useEffect(() => {
206
+ console.log("Player loaded:", playerName);
207
+ }, [playerName]);
208
+
209
+ // 3. RETURN (last)
210
+ return { playerName, isLoading, handleRefresh };
211
+ };
212
+ ```
213
+
214
+ ## Container Component Example
215
+
216
+ ```typescript
217
+ const PlayerCardContainer: React.FC<Props> = ({ playerId }) => {
218
+ // 1. VARIABLES & STATE
219
+ const { data, loading } = useQuery(GetPlayerDocument, { variables: { playerId } });
220
+ const { colors } = useTheme();
221
+
222
+ const formattedStats = useMemo(
223
+ () => data?.stats?.map(s => ({ ...s, display: formatStat(s) })) ?? [],
224
+ [data?.stats]
225
+ );
226
+
227
+ const handlePress = useCallback(() => {
228
+ router.push(`/players/${playerId}`);
229
+ }, [playerId]);
230
+
231
+ // 2. SIDE EFFECTS (none in this example)
232
+
233
+ // 3. RETURN
234
+ return (
235
+ <PlayerCardView
236
+ stats={formattedStats}
237
+ colors={colors}
238
+ loading={loading}
239
+ onPress={handlePress}
240
+ />
241
+ );
242
+ };
243
+ ```
244
+
245
+ ## Utility Function Example
246
+
247
+ ```typescript
248
+ export const calculateTeamRankings = (
249
+ players: readonly Player[]
250
+ ): readonly TeamRanking[] => {
251
+ // 1. VARIABLES & DERIVED VALUES
252
+ const validPlayers = players.filter(p => p.team && p.score != null);
253
+
254
+ const teamScores = validPlayers.reduce(
255
+ (acc, player) => ({
256
+ ...acc,
257
+ [player.team.id]: {
258
+ teamId: player.team.id,
259
+ totalScore: (acc[player.team.id]?.totalScore ?? 0) + player.score,
260
+ count: (acc[player.team.id]?.count ?? 0) + 1,
261
+ },
262
+ }),
263
+ {} as Record<string, { teamId: string; totalScore: number; count: number }>
264
+ );
265
+
266
+ const rankings = Object.values(teamScores).map(t => ({
267
+ teamId: t.teamId,
268
+ avgScore: t.totalScore / t.count,
269
+ }));
270
+
271
+ const sorted = [...rankings].sort((a, b) => b.avgScore - a.avgScore);
272
+
273
+ // 2. NO SIDE EFFECTS IN PURE FUNCTIONS
274
+
275
+ // 3. RETURN
276
+ return sorted;
277
+ };
278
+ ```
279
+
280
+ ---
281
+
282
+ ## Anti-Patterns to Avoid
283
+
284
+ ### Never use `let` for conditional assignment
285
+
286
+ ```typescript
287
+ // Wrong
288
+ let result;
289
+ if (condition) {
290
+ result = valueA;
291
+ } else {
292
+ result = valueB;
293
+ }
294
+
295
+ // Correct
296
+ const result = condition ? valueA : valueB;
297
+ ```
298
+
299
+ ### Never mutate arrays
300
+
301
+ ```typescript
302
+ // Wrong
303
+ const items = [];
304
+ data.forEach(d => items.push(transform(d)));
305
+
306
+ // Correct
307
+ const items = data.map(d => transform(d));
308
+ ```
309
+
310
+ ### Never use Map when Record suffices
311
+
312
+ ```typescript
313
+ // Wrong
314
+ const lookup = new Map<string, User>();
315
+ users.forEach(u => lookup.set(u.id, u));
316
+ const user = lookup.get(userId);
317
+
318
+ // Correct
319
+ const lookup = users.reduce(
320
+ (acc, u) => ({ ...acc, [u.id]: u }),
321
+ {} as Record<string, User>
322
+ );
323
+ const user = lookup[userId];
324
+ ```
325
+
326
+ ### Never sort in place
327
+
328
+ ```typescript
329
+ // Wrong - mutates original
330
+ const sorted = items.sort((a, b) => a.value - b.value);
331
+
332
+ // Correct - creates new array
333
+ const sorted = [...items].sort((a, b) => a.value - b.value);
334
+ ```
335
+
336
+ ### Never place useEffect before variable definitions
337
+
338
+ ```typescript
339
+ // Wrong
340
+ useEffect(() => {
341
+ /* ... */
342
+ }, [value]);
343
+ const value = useMemo(() => calculate(), [dep]);
344
+
345
+ // Correct
346
+ const value = useMemo(() => calculate(), [dep]);
347
+ useEffect(() => {
348
+ /* ... */
349
+ }, [value]);
350
+ ```
351
+
352
+ ---
353
+
354
+ ## Immutable Patterns Reference
355
+
356
+ ### Building Lookup Objects with Reduce
357
+
358
+ ```typescript
359
+ const colorMap =
360
+ edges?.reduce(
361
+ (acc, edge) => (edge.color ? { ...acc, [edge.tagId]: edge.color } : acc),
362
+ {} as Record<string, string>
363
+ ) ?? {};
364
+ ```
365
+
366
+ ### Accumulating Multiple Properties
367
+
368
+ ```typescript
369
+ const teamGprAccumulator = validPlayers.reduce(
370
+ (acc, player) => {
371
+ const teamId = player.team?.id;
372
+ if (!teamId) return acc;
373
+
374
+ const existing = acc[teamId];
375
+ return {
376
+ ...acc,
377
+ [teamId]: {
378
+ teamId,
379
+ teamName: player.team.name,
380
+ gprSum: (existing?.gprSum ?? 0) + player.gpr,
381
+ playerCount: (existing?.playerCount ?? 0) + 1,
382
+ },
383
+ };
384
+ },
385
+ {} as Record<string, { teamId: string; teamName: string; gprSum: number; playerCount: number }>
386
+ );
387
+ ```
388
+
389
+ ### Nested Object Updates
390
+
391
+ ```typescript
392
+ const updated = {
393
+ ...state,
394
+ user: {
395
+ ...state.user,
396
+ profile: {
397
+ ...state.user.profile,
398
+ avatar: newAvatar,
399
+ },
400
+ },
401
+ };
402
+ ```
403
+
404
+ ### Conditional Property Addition
405
+
406
+ ```typescript
407
+ const result = {
408
+ ...baseObj,
409
+ ...(condition && { optionalProp: value }),
410
+ };
411
+ ```
412
+
413
+ ### Ternary Chain for Multiple Conditions
414
+
415
+ ```typescript
416
+ const priority = score > 90 ? "high" : score > 70 ? "medium" : "low";
417
+ ```
418
+
419
+ ### Readonly Types for Function Parameters
420
+
421
+ ```typescript
422
+ export const calculateTeamGprRank = (
423
+ leaguePlayers: readonly (PlayerWithScores | null | undefined)[],
424
+ myTeamId: string | null | undefined
425
+ ): number | null => {
426
+ // ...
427
+ };
428
+ ```