@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,219 @@
1
+ ---
2
+ name: agent-design-best-practices
3
+ description: Best practices for designing Claude Code agent files (.claude/agents/*.md). This skill should be used when writing or reviewing agent markdown files to ensure proper design with focused domains, correct tool access, reusable definitions, and separation of capabilities from lifecycle. Combines Anthropic's official guidance with battle-tested patterns from agent team usage.
4
+ ---
5
+
6
+ # Agent Design Best Practices
7
+
8
+ ## Overview
9
+
10
+ This skill defines best practices for designing Claude Code agent files (`.claude/agents/*.md`). Agent files define reusable roles that can be spawned as subagents or teammates. The core principle is that **agent files define capabilities, not lifecycle** -- the team lead's spawn prompt controls when and how the agent runs.
11
+
12
+ ## Principles
13
+
14
+ ### 1. Define Capabilities, Not Lifecycle
15
+
16
+ Agent files describe *what* an agent can do. The spawn prompt from the team lead controls *when* it runs and *what to focus on*.
17
+
18
+ ```markdown
19
+ <!-- Wrong: Hardcodes workflow phase and interaction pattern -->
20
+ # Security Planner Agent
21
+
22
+ You are a security specialist in a plan-create Agent Team.
23
+ Given a Research Brief from the team lead, identify security
24
+ considerations for the planned changes.
25
+
26
+ ## Output Format
27
+
28
+ Send your sub-plan to the team lead via `SendMessage` with this structure:
29
+ ...
30
+ ```
31
+
32
+ ```markdown
33
+ <!-- Correct: Defines domain expertise, team lead controls usage -->
34
+ # Security Specialist Agent
35
+
36
+ You are a security specialist who identifies vulnerabilities,
37
+ evaluates threats, and recommends mitigations for code changes.
38
+
39
+ ## Analysis Process
40
+ 1. Read affected files
41
+ 2. STRIDE analysis
42
+ 3. Check input validation
43
+ ...
44
+ ```
45
+
46
+ The wrong version is coupled to one workflow ("plan-create Agent Team", "Given a Research Brief", "Send via SendMessage"). The correct version works in any context -- planning, review, ad-hoc analysis -- because the team lead's spawn prompt provides the specific instructions.
47
+
48
+ ### 2. One Agent Per Domain, Not Per Phase
49
+
50
+ Prefer a single agent that covers a domain over multiple agents split by workflow phase. The team lead specializes the agent per phase via the spawn prompt.
51
+
52
+ | Wrong | Right |
53
+ |-------|-------|
54
+ | `security-planner` + `security-reviewer` | `security-specialist` |
55
+ | `test-strategist` + `test-coverage-agent` | `test-specialist` |
56
+ | `architecture-planner` + `architecture-reviewer` | `architecture-specialist` |
57
+
58
+ The same agent type can be spawned multiple times with different prompts for different phases. A `security-specialist` spawned during planning gets "evaluate this plan for security risks" while the same type spawned during review gets "review these code changes for vulnerabilities."
59
+
60
+ ### 3. Design Focused Domains
61
+
62
+ Each agent should excel at one specific domain. The domain should be broad enough to avoid workflow coupling but narrow enough to provide real expertise.
63
+
64
+ ```yaml
65
+ # Too narrow (coupled to one workflow step)
66
+ description: Performs STRIDE analysis on Research Briefs during plan-create Phase 2
67
+
68
+ # Too broad (no clear expertise)
69
+ description: General-purpose agent that can do anything
70
+
71
+ # Just right (focused domain, reusable across workflows)
72
+ description: Security specialist. Performs threat modeling (STRIDE), reviews code for OWASP Top 10 vulnerabilities, checks auth/validation/secrets handling.
73
+ ```
74
+
75
+ ### 4. Write Detailed Descriptions
76
+
77
+ Claude uses the `description` field in YAML frontmatter to decide when to delegate tasks. Be specific about what the agent does and when it adds value.
78
+
79
+ ```yaml
80
+ # Bad: Vague, Claude can't decide when to use it
81
+ description: Reviews code
82
+
83
+ # Good: Specific domain, clear trigger conditions
84
+ description: Security specialist. Performs threat modeling (STRIDE), reviews code for OWASP Top 10 vulnerabilities, checks auth/validation/secrets handling, and recommends mitigations.
85
+ ```
86
+
87
+ ### 5. Limit Tool Access
88
+
89
+ Grant only the tools necessary for the agent's domain. This enforces focus and prevents agents from exceeding their intended scope.
90
+
91
+ | Agent Type | Appropriate Tools | Rationale |
92
+ |-----------|-------------------|-----------|
93
+ | Researcher / Reviewer | `Read, Grep, Glob, Bash` | Read-only analysis, no file modifications |
94
+ | Implementer | `Read, Write, Edit, Bash, Grep, Glob` | Needs to modify code |
95
+ | Planner | `Read, Grep, Glob` | Research only, no execution |
96
+
97
+ Read-only agents cannot implement code. Do not assign implementation tasks to agents without `Write` and `Edit` tools.
98
+
99
+ ### 6. No Hardcoded Interaction Patterns
100
+
101
+ Do not prescribe how the agent communicates or what input format it expects. The team lead's spawn prompt handles interaction patterns.
102
+
103
+ ```markdown
104
+ <!-- Wrong: Hardcodes communication protocol -->
105
+ ## Input
106
+ You receive a **Research Brief** from the team lead containing...
107
+
108
+ ## Output Format
109
+ Send your sub-plan to the team lead via `SendMessage` with this structure:
110
+ ```
111
+
112
+ ```markdown
113
+ <!-- Correct: Defines output structure without prescribing delivery mechanism -->
114
+ ## Output Format
115
+ Structure your findings as:
116
+
117
+ ### Threat Model (STRIDE)
118
+ | Threat | Applies? | Description | Mitigation |
119
+ ...
120
+ ```
121
+
122
+ The output format itself is fine to define -- it provides structure. But how the agent receives input and delivers output should be left to the team lead.
123
+
124
+ ### 7. Context Window Isolation
125
+
126
+ Each teammate has its own context window. Teammates do not share context and cannot see what other teammates have done. Account for this in agent design:
127
+
128
+ - Do not assume the agent has seen previous analysis from other agents
129
+ - Include enough domain knowledge in the agent file for independent operation
130
+ - The team lead bridges context between agents via spawn prompts and messages
131
+
132
+ ### 8. File Ownership in Teams
133
+
134
+ When agents work in teams, each teammate should own distinct files or directories. Two teammates editing the same file leads to conflicts and lost work.
135
+
136
+ Design agent domains so their file ownership naturally separates:
137
+
138
+ | Agent | Owns |
139
+ |-------|------|
140
+ | `implementer` | Source files (`src/`) |
141
+ | `test-specialist` | Test files (`tests/`) |
142
+ | `quality-specialist` | No files (read-only) |
143
+
144
+ ## Agent File Structure
145
+
146
+ ### Required Frontmatter
147
+
148
+ ```yaml
149
+ ---
150
+ name: agent-name # lowercase with hyphens
151
+ description: When and why to use this agent. Be specific.
152
+ tools: Read, Grep, Glob # comma-separated, minimal set
153
+ ---
154
+ ```
155
+
156
+ ### Optional Frontmatter
157
+
158
+ ```yaml
159
+ model: sonnet # sonnet, opus, haiku, or inherit (default)
160
+ permissionMode: default # default, acceptEdits, plan, bypassPermissions, etc.
161
+ maxTurns: 50 # limit agentic turns
162
+ skills: # skills to preload
163
+ - skill-name
164
+ memory: user # persistent memory: user, project, or local
165
+ ```
166
+
167
+ ### Body Structure
168
+
169
+ The markdown body becomes the agent's system prompt. Structure it as:
170
+
171
+ 1. **Role statement** -- one sentence describing what the agent is
172
+ 2. **Analysis/workflow process** -- numbered steps for the agent's approach
173
+ 3. **Output format** -- structure for findings (without prescribing delivery mechanism)
174
+ 4. **Rules/constraints** -- guardrails for the agent's behavior
175
+
176
+ ## Anti-Patterns
177
+
178
+ ### Don't Create Phase-Specific Agents
179
+
180
+ ```markdown
181
+ <!-- Wrong: Two agents for the same domain, split by phase -->
182
+ # Pre-Implementation Security Planner
183
+ ...
184
+ # Post-Implementation Security Reviewer
185
+ ...
186
+
187
+ <!-- Correct: One agent, team lead controls timing -->
188
+ # Security Specialist
189
+ ...
190
+ ```
191
+
192
+ ### Don't Hardcode Workflow Dependencies
193
+
194
+ ```markdown
195
+ <!-- Wrong: Agent assumes specific workflow context -->
196
+ You are part of the plan-create Phase 2 team.
197
+ Wait for the Research Brief from Phase 1.
198
+ After your analysis, the Consistency Checker will validate your output.
199
+
200
+ <!-- Correct: Agent is self-contained -->
201
+ You are a security specialist who identifies vulnerabilities
202
+ and recommends mitigations for code changes.
203
+ ```
204
+
205
+ ### Don't Over-Specify the Model
206
+
207
+ Only set `model` when there's a clear reason. Most agents work well with `inherit` (the default), which uses the same model as the parent session. Use `haiku` for fast, simple tasks (exploration, search). Use `sonnet` or `opus` only when the domain requires stronger reasoning.
208
+
209
+ ## Verification Checklist
210
+
211
+ Before committing an agent file, verify:
212
+
213
+ 1. **Description is specific** -- Claude can determine when to delegate from the description alone
214
+ 2. **Tools are minimal** -- only the tools the agent actually needs
215
+ 3. **No workflow coupling** -- no references to specific team structures, phases, or input formats
216
+ 4. **No hardcoded communication** -- no "send via SendMessage" or "given a Research Brief"
217
+ 5. **Domain is reusable** -- the agent works in planning, review, and ad-hoc contexts
218
+ 6. **Role statement is clear** -- first line of body explains what the agent is
219
+ 7. **Output format is defined** -- structured output without prescribing delivery
@@ -0,0 +1,293 @@
1
+ ---
2
+ name: atlassian-access
3
+ description: "Vendor-neutral access layer for Atlassian (JIRA + Confluence). Every jira-* and confluence-* skill MUST delegate through this skill rather than calling Atlassian directly. Resolves a substrate per operation in this order: (1) acli if installed and its active profile matches the configured site, (2) Atlassian MCP if authenticated and the configured cloudId is in its accessible resources, (3) curl + API-token Basic auth. Verifies the active connection matches `.lisa.config.json` before every operation — substrates authenticated as a different Atlassian account are skipped, not used."
4
+ allowed-tools: ["Bash", "Read", "Skill"]
5
+ ---
6
+
7
+ # Atlassian Access: $ARGUMENTS
8
+
9
+ Single chokepoint for all Atlassian operations. Routes each op to a substrate, enforces connection match, returns structured result. Caller skills (`jira-*`, `confluence-*`) MUST go through this — they MUST NOT invoke `acli` directly, call Atlassian MCP tools directly, or curl the Atlassian REST API themselves.
10
+
11
+ ## Invocation contract
12
+
13
+ The caller passes one operation plus its arguments. Operations are listed in the dispatch table below. The skill returns either the structured operation result (JSON when the substrate provides it) or a clear error.
14
+
15
+ ```text
16
+ operation: read-ticket key: PROJ-123
17
+ operation: write-ticket payload: {...}
18
+ operation: transition key: PROJ-123 to: "In Review"
19
+ operation: comment key: PROJ-123 body: "..."
20
+ operation: search-issues jql: "project = SE AND status = Open"
21
+ operation: read-page id: 12345
22
+ operation: write-page payload: {...}
23
+ ```
24
+
25
+ ## Workflow
26
+
27
+ ### Step 1 — Substrate selection (per operation)
28
+
29
+ Read config:
30
+
31
+ ```bash
32
+ SITE=$(jq -r '.atlassian.site // empty' .lisa.config.json)
33
+ CLOUDID=$(jq -r '.atlassian.cloudId // empty' .lisa.config.json)
34
+ EMAIL=$(jq -r '.atlassian.email // empty' .lisa.config.local.json 2>/dev/null)
35
+ [ -z "$CLOUDID" ] && { echo "Error: atlassian.cloudId not set. Run /lisa:setup:atlassian." >&2; exit 1; }
36
+ ```
37
+
38
+ Probe each tier in order; the first that's ready AND identity-matches is the substrate for this operation. Identity-match is verified before any operation; substrates authenticated as a different Atlassian account are skipped, not used.
39
+
40
+ ```bash
41
+ substrate=""
42
+
43
+ # Tier 1: acli
44
+ if command -v acli >/dev/null 2>&1 && acli auth status >/dev/null 2>&1; then
45
+ current_site=$(acli auth status 2>/dev/null | awk '/^ Site:/{print $2}')
46
+ if [ "$current_site" = "$SITE" ]; then
47
+ substrate="acli"
48
+ else
49
+ # acli installed but pointing at a different site. Try switching profiles.
50
+ if acli auth switch --site "$SITE" ${EMAIL:+--email "$EMAIL"} >/dev/null 2>&1; then
51
+ substrate="acli"
52
+ fi
53
+ fi
54
+ fi
55
+
56
+ # Tier 2: Atlassian MCP (if acli not ready OR the operation isn't acli-covered)
57
+ # $OP_REQUIRES is a conceptual variable set by the dispatch table to "non-acli" for
58
+ # operations that have no acli adapter (e.g. read-page-descendants). It is not a real
59
+ # shell variable initialized here — the condition is illustrative pseudo-code.
60
+ if [ -z "$substrate" ] || [ "$OP_REQUIRES" = "non-acli" ]; then
61
+ # Probe via mcp__plugin_atlassian_atlassian__getAccessibleAtlassianResources.
62
+ # (Pseudo-code; actual call is the MCP tool invocation, not a bash command.)
63
+ # If the MCP returns a list and $CLOUDID is in it, MCP is identity-matched.
64
+ # If the MCP is unauthenticated or $CLOUDID is NOT in the list, MCP is skipped.
65
+ if mcp_atlassian_authenticated_and_matches_cloudid "$CLOUDID"; then
66
+ : ${substrate:=mcp}
67
+ # Mark MCP as available even if acli already won tier 1 — used for ops acli can't do.
68
+ mcp_available=true
69
+ fi
70
+ fi
71
+
72
+ # Tier 3: curl + API token (headless / multi-account / scoped-token path)
73
+ read_atlassian_token() {
74
+ local email="$1"
75
+ [ -n "$ATLASSIAN_API_TOKEN" ] && { echo "$ATLASSIAN_API_TOKEN"; return; }
76
+ local slug=$(echo "$email" | tr '[:upper:]@.' '[:lower:]__')
77
+ local varname="ATLASSIAN_API_TOKEN_${slug}"
78
+ [ -n "${!varname}" ] && { echo "${!varname}"; return; }
79
+ case "$(uname -s)" in
80
+ Darwin) security find-generic-password -s lisa-atlassian -a "$email" -w 2>/dev/null ;;
81
+ Linux) command -v secret-tool >/dev/null && secret-tool lookup service lisa-atlassian account "$email" 2>/dev/null ;;
82
+ MINGW*|MSYS*|CYGWIN*)
83
+ # `cmdkey /generic ... /pass:` stores the secret in Windows Credential Manager, but
84
+ # `cmdkey /list` never prints stored passwords (by design). Read the CredentialBlob
85
+ # back via the Win32 CredRead API through PowerShell; pass the target name via an env
86
+ # var to dodge nested quoting, and strip the CRLF powershell.exe appends.
87
+ LISA_CRED_TARGET="lisa-atlassian-${email}" powershell.exe -NoProfile -NonInteractive -Command '
88
+ Add-Type -TypeDefinition @"
89
+ using System;
90
+ using System.Runtime.InteropServices;
91
+ public static class LisaCred {
92
+ [StructLayout(LayoutKind.Sequential)]
93
+ private struct CREDENTIAL {
94
+ public int Flags; public int Type; public IntPtr TargetName; public IntPtr Comment;
95
+ public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;
96
+ public int CredentialBlobSize; public IntPtr CredentialBlob; public int Persist;
97
+ public int AttributeCount; public IntPtr Attributes; public IntPtr TargetAlias; public IntPtr UserName;
98
+ }
99
+ [DllImport("advapi32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
100
+ private static extern bool CredRead(string target, int type, int flags, out IntPtr credential);
101
+ [DllImport("advapi32.dll")] private static extern void CredFree(IntPtr cred);
102
+ public static string Read(string target) {
103
+ IntPtr p;
104
+ if (!CredRead(target, 1, 0, out p)) { return null; }
105
+ try {
106
+ CREDENTIAL c = (CREDENTIAL)Marshal.PtrToStructure(p, typeof(CREDENTIAL));
107
+ if (c.CredentialBlobSize == 0) { return String.Empty; }
108
+ return Marshal.PtrToStringUni(c.CredentialBlob, c.CredentialBlobSize / 2);
109
+ } finally { CredFree(p); }
110
+ }
111
+ }
112
+ "@
113
+ [LisaCred]::Read($env:LISA_CRED_TARGET)' 2>/dev/null | tr -d '\r' ;;
114
+ esac
115
+ }
116
+ TOKEN=$(read_atlassian_token "$EMAIL")
117
+ [ -n "$TOKEN" ] && curl_available=true && : ${substrate:=curl}
118
+
119
+ # Fail loudly with actionable remediation if nothing works.
120
+ if [ -z "$substrate" ]; then
121
+ # Detect plugin enablement state for the suggestion.
122
+ plugin_enabled_global=$(jq -r '.enabledPlugins["atlassian@claude-plugins-official"] // false' ~/.claude/settings.json 2>/dev/null || echo "false")
123
+ plugin_enabled_project=$(jq -r '.enabledPlugins["atlassian@claude-plugins-official"] // false' .claude/settings.json 2>/dev/null || echo "false")
124
+ plugin_enabled_local=$(jq -r '.enabledPlugins["atlassian@claude-plugins-official"] // false' .claude/settings.local.json 2>/dev/null || echo "false")
125
+
126
+ cat >&2 <<EOF
127
+ Error: no Atlassian access substrate available for site $SITE.
128
+
129
+ Attempted:
130
+ acli — $(command -v acli >/dev/null && echo "installed but identity mismatch or unauthenticated" || echo "not installed")
131
+ MCP — $([ "$plugin_enabled_global" = "true" ] || [ "$plugin_enabled_project" = "true" ] || [ "$plugin_enabled_local" = "true" ] && echo "plugin enabled but not authenticated or cloudId $CLOUDID not in accessible resources" || echo "plugin not enabled in any settings.json scope")
132
+ curl — no ATLASSIAN_API_TOKEN found for $EMAIL (env, slug-suffixed env, or keychain)
133
+
134
+ Remediation paths (pick one):
135
+
136
+ 1. Install the Atlassian MCP plugin (local scope — per-developer, gitignored).
137
+ This is the simplest path for single-account developers.
138
+
139
+ Run in your terminal:
140
+
141
+ jq '.enabledPlugins["atlassian@claude-plugins-official"] = true' \\
142
+ .claude/settings.local.json 2>/dev/null > /tmp/s && \\
143
+ mv /tmp/s .claude/settings.local.json || \\
144
+ echo '{"enabledPlugins":{"atlassian@claude-plugins-official":true}}' > .claude/settings.local.json
145
+
146
+ Then restart Claude Code (or run /restart-mcp) to load the plugin, and
147
+ invoke 'mcp__plugin_atlassian_atlassian__authenticate' to complete OAuth.
148
+
149
+ 2. Install acli and authenticate (best for multi-account developers).
150
+
151
+ brew tap atlassian/homebrew-acli && brew install acli
152
+ acli auth login # OAuth as the account matching $EMAIL
153
+
154
+ 3. Provision an API token (headless / CI / scoped-token environments).
155
+
156
+ Run /lisa:setup:atlassian — guided flow with clipboard-piped keychain store.
157
+
158
+ EOF
159
+ exit 1
160
+ fi
161
+ ```
162
+
163
+ Operation dispatch then uses `$substrate` for the primary route. If the operation has no `acli` adapter and `$substrate=acli`, fall through to `$mcp_available` then `$curl_available` for the actual call. The fall-through stops at the first available tier that can perform the operation.
164
+
165
+ ### Step 2 — Connection-match check
166
+
167
+ The active connection MUST point at the cloudId/site declared in `.lisa.config.json`. Step 1's substrate selection already verifies this implicitly (substrates that don't match are skipped). This step is the explicit assertion before any operation runs — defensive in case the substrate state changed since selection.
168
+
169
+ Read configured site:
170
+
171
+ ```bash
172
+ cloudid=$(jq -r '.atlassian.cloudId // empty' .lisa.config.json)
173
+ site=$(jq -r '.atlassian.site // empty' .lisa.config.json) # optional human-readable site URL
174
+ email=$(jq -r '.atlassian.email // empty' .lisa.config.json) # optional, for multi-account disambiguation
175
+
176
+ if [ -z "$cloudid" ]; then
177
+ echo "Error: atlassian.cloudId not set in .lisa.config.json. Run /lisa:setup:atlassian." >&2
178
+ exit 1
179
+ fi
180
+ ```
181
+
182
+ **CLI mode check**:
183
+
184
+ ```bash
185
+ # Compare active acli profile against config.
186
+ current=$(acli auth status --json 2>/dev/null)
187
+ current_site=$(echo "$current" | jq -r '.site // empty')
188
+ current_email=$(echo "$current" | jq -r '.email // empty')
189
+
190
+ if [ -n "$site" ] && [ "$current_site" != "$site" ]; then
191
+ # Profile mismatch — switch.
192
+ acli auth switch --site "$site" ${email:+--email "$email"}
193
+ fi
194
+ ```
195
+
196
+ If `acli auth switch` fails because no matching profile exists, surface the error verbatim and instruct the caller to run `/lisa:setup:atlassian` to add the profile.
197
+
198
+ **curl mode check** (when the chosen op routes to curl):
199
+
200
+ ```bash
201
+ # Validate the active ATLASSIAN_API_TOKEN points at the configured account by
202
+ # hitting /rest/api/3/myself and comparing emailAddress.
203
+ AUTH=$(printf '%s:%s' "$email" "$ATLASSIAN_API_TOKEN" | base64)
204
+ myself=$(curl -s -H "Authorization: Basic $AUTH" \
205
+ "https://${site}/rest/api/3/myself")
206
+ me_email=$(echo "$myself" | jq -r '.emailAddress // empty')
207
+
208
+ if [ -z "$me_email" ]; then
209
+ echo "Error: ATLASSIAN_API_TOKEN failed authentication against $site. Run /lisa:setup:atlassian to re-issue." >&2
210
+ exit 1
211
+ fi
212
+ if [ "$me_email" != "$email" ]; then
213
+ echo "Error: ATLASSIAN_API_TOKEN belongs to '$me_email', but .lisa.config.local.json declares '$email'. Multi-account misconfiguration." >&2
214
+ exit 1
215
+ fi
216
+ ```
217
+
218
+ If validation fails, never silently proceed — abort and instruct the user to fix env.
219
+
220
+ ### Step 3 — Operation dispatch
221
+
222
+ Substrate column meanings:
223
+
224
+ - **`acli`**: routes through `acli`. Preferred when available and identity-matched.
225
+ - **`MCP`**: routes through the Atlassian MCP. Preferred when acli can't do the op and the MCP is identity-matched (cloudId in `getAccessibleAtlassianResources`).
226
+ - **`curl`**: routes through curl + Basic auth + `ATLASSIAN_API_TOKEN`. Used when neither acli nor MCP is available.
227
+ - Multiple cells filled means tier ordering applies — try acli, then MCP, then curl, taking the first that has an adapter for the op AND is identity-matched.
228
+ - One cell means only that substrate can perform the op.
229
+
230
+ `<SITE>` = `.atlassian.site` (e.g. `propswap.atlassian.net`). `<CLOUDID>` = `.atlassian.cloudId`. `<AUTH>` = `Basic $(printf '%s:%s' "$email" "$ATLASSIAN_API_TOKEN" | base64)`. JIRA paths use `/rest/api/3/...`; Confluence uses `/wiki/rest/api/...` (v1) or `/api/v2/...` (v2).
231
+
232
+ | Operation | acli adapter | MCP adapter | curl adapter |
233
+ |---|---|---|---|
234
+ | **JIRA ops** | | | |
235
+ | `read-ticket key:<K>` | `acli jira workitem view <K> --json` | `mcp__plugin_atlassian_atlassian__getJiraIssue` | `GET https://<SITE>/rest/api/3/issue/<K>` |
236
+ | `write-ticket payload:<P>` (create) | `acli jira workitem create --from-json <P>` | `mcp__plugin_atlassian_atlassian__createJiraIssue` | `POST https://<SITE>/rest/api/3/issue` body=`<P>` |
237
+ | `write-ticket payload:<P>` (edit) | `acli jira workitem edit <K> --from-json <P>` | `mcp__plugin_atlassian_atlassian__editJiraIssue` | `PUT https://<SITE>/rest/api/3/issue/<K>` body=`<P>` |
238
+ | `transition key:<K> to:<S>` | `acli jira workitem transition --key <K> --status "<S>" --yes` | `mcp__plugin_atlassian_atlassian__transitionJiraIssue` | resolve transition id then `POST .../issue/<K>/transitions` |
239
+ | `transitions key:<K>` | (not exposed) | `mcp__plugin_atlassian_atlassian__getTransitionsForJiraIssue` | `GET https://<SITE>/rest/api/3/issue/<K>/transitions` |
240
+ | `comment key:<K> body:<B>` | `acli jira workitem comment add --key <K> --body "<B>"` | `mcp__plugin_atlassian_atlassian__addCommentToJiraIssue` | `POST https://<SITE>/rest/api/3/issue/<K>/comment` |
241
+ | `link from:<K> to:<K2> type:<T>` | `acli jira workitem link create --inward <K> --outward <K2> --type "<T>"` | `mcp__plugin_atlassian_atlassian__createJiraIssueLink` | `POST https://<SITE>/rest/api/3/issueLink` |
242
+ | `remote-links key:<K>` | (not exposed) | `mcp__plugin_atlassian_atlassian__getJiraIssueRemoteIssueLinks` | `GET https://<SITE>/rest/api/3/issue/<K>/remotelink` |
243
+ | `search-issues jql:<J>` | `acli jira workitem search --jql "<J>" --json` | `mcp__plugin_atlassian_atlassian__searchJiraIssuesUsingJql` | `POST https://<SITE>/rest/api/3/search/jql` |
244
+ | `list-projects` | `acli jira project list --paginate --json` | `mcp__plugin_atlassian_atlassian__getVisibleJiraProjects` | `GET https://<SITE>/rest/api/3/project/search` |
245
+ | `issue-type-metadata project:<K>` | `acli jira project view --key <K> --include-all --json` | `mcp__plugin_atlassian_atlassian__getJiraProjectIssueTypesMetadata` | `GET https://<SITE>/rest/api/3/issuetype/project?projectId=<id>` |
246
+ | **Confluence ops** | | | |
247
+ | `read-page id:<I>` | `acli confluence page view --id <I> --json` | `mcp__plugin_atlassian_atlassian__getConfluencePage` | `GET https://api.atlassian.com/ex/confluence/<CLOUDID>/wiki/rest/api/content/<I>` |
248
+ | `read-page-descendants id:<I>` | — | `mcp__plugin_atlassian_atlassian__getConfluencePageDescendants` | `GET .../content/<I>/descendant/page` |
249
+ | `read-page-comments id:<I> kind:<footer\|inline>` | — | `mcp__plugin_atlassian_atlassian__getConfluencePageFooterComments` / `getConfluencePageInlineComments` | `GET .../content/<I>/child/comment?location=<kind>` |
250
+ | `read-comment-children id:<C>` | — | `mcp__plugin_atlassian_atlassian__getConfluenceCommentChildren` | `GET .../content/<C>/child/comment` |
251
+ | `write-page payload:<P>` (create) | — | `mcp__plugin_atlassian_atlassian__createConfluencePage` | `POST .../wiki/rest/api/content` body=`<P>` |
252
+ | `write-page payload:<P>` (edit) | — | `mcp__plugin_atlassian_atlassian__updateConfluencePage` | `PUT .../content/<I>` body must include `version.number` bumped |
253
+ | `label-page id:<I> add:<L1,L2> remove:<L3,L4>` | — | (no v2 label-write endpoint on MCP) | (Atlassian gap; not used by lisa — see "Confluence PRD lifecycle" rule) |
254
+ | `comment-page id:<I> kind:<footer\|inline> body:<B>` | — | `mcp__plugin_atlassian_atlassian__createConfluenceFooterComment` / `createConfluenceInlineComment` | `POST .../content` body has `type=comment` |
255
+ | `search-pages cql:<Q>` | — | `mcp__plugin_atlassian_atlassian__searchConfluenceUsingCql` | `GET .../content/search?cql=<Q>` |
256
+ | `list-spaces` | `acli confluence space list --type global --json` | `mcp__plugin_atlassian_atlassian__getConfluenceSpaces` | `GET .../wiki/rest/api/space` |
257
+ | **Common ops** | | | |
258
+ | `list-sites` | `acli auth status --json` | `mcp__plugin_atlassian_atlassian__getAccessibleAtlassianResources` | `GET https://api.atlassian.com/oauth/token/accessible-resources` |
259
+
260
+ **Confluence v1 vs v2:** every Confluence curl path above uses **v1** (`/wiki/rest/api/...`). v1 is deprecated by Atlassian but as of writing remains functional for API-token Basic auth. The v2 API (`/api/v2/...`) requires *granular* OAuth scopes that aren't issued to Basic-auth API tokens consistently — so v1 is the safer path for now. When Atlassian fully retires v1, this table must move to v2 (the dispatch is the only thing that changes; the substrate-selection logic is unaffected).
261
+
262
+ **acli flag note:** acli's `--output` flag does not exist; the correct flag is `--json`. List commands require `--paginate` or `--limit` (no implicit fetch-all). Several documented adapters are nominal — verify against `acli <subcmd> --help` before relying on them. When acli's adapter is broken or missing for a specific op, fall through to MCP (if identity-matched) then curl per the tier ordering.
263
+
264
+ **JIRA terminal-resolution note:** when a caller marks a transition as terminal per `leaf-only-lifecycle`, the substrate must not treat a Done-named status as sufficient by name alone. After `transition key:<K> to:<S>`, re-read the issue and verify `statusCategory = Done`; if the workflow requires a resolution, verify `resolution` is set. If the transition screen requires a resolution value, pass the configured default resolution when available; otherwise return a setup error so the build-intake skill can report the workflow gap instead of silently leaving an unresolved ticket in a Done-looking status.
265
+
266
+ Operations not in this table are unsupported — add an adapter row before using them. Adapters MUST return a structured response (parse `acli`'s `--json`; jq-process curl's raw JSON).
267
+
268
+ ### Payload conventions
269
+
270
+ - `write-ticket` payload: full JSON spec when creating; partial JSON (only changed fields, with `key` to identify) when editing. Adapters detect create vs edit by presence of `key`.
271
+ - `write-page` payload: supports a label-only mutation form — `{ "id": "<I>", "labels": { "add": [...], "remove": [...] } }` — so callers transitioning PRD lifecycle labels do not need to resend the page body. Full create/update payloads also accepted.
272
+ - `comment-page` `kind: inline` requires `anchor` (the highlighted text the comment attaches to). `kind: footer` ignores `anchor`.
273
+
274
+ ### Step 4 — Return result
275
+
276
+ Emit either:
277
+
278
+ - The structured operation result (JSON object), wrapped in a `<result>` block for caller parsing, OR
279
+ - An error message prefixed with `Error:` and a remediation hint. Exit non-zero. Include the HTTP status code (curl) or acli exit code so callers can route on it.
280
+
281
+ Do not paraphrase substrate output beyond JSON normalization.
282
+
283
+ ## Invariants
284
+
285
+ - Caller skills never invoke `acli` or `curl` against Atlassian directly. They only invoke this skill.
286
+ - Substrate is decided once per skill invocation and never switches mid-operation.
287
+ - Connection match is mandatory. Operations that bypass it (because "the user obviously meant the configured site") are forbidden.
288
+ - Profile mutations (`acli auth switch`) are allowed when acli is the active substrate. The curl substrate never mutates the token — if `ATLASSIAN_API_TOKEN` doesn't match the configured account, fail loud rather than silently substituting.
289
+ - `.lisa.config.local.json` overrides `.lisa.config.json` per-key — the same precedence rule as every other consumer of project config.
290
+
291
+ ## Headless behavior
292
+
293
+ In a headless / non-interactive context (no TTY, `CI=true`, or `-p` mode), the MCP tier is unavailable (its OAuth flow needs a browser). The substrate ladder collapses to: acli (if pre-authenticated, e.g., a CI image baked with a service-account token) → curl + `ATLASSIAN_API_TOKEN`. Never block on interactive prompts. If both fail readiness checks, exit non-zero with a deterministic error.
@@ -0,0 +1,111 @@
1
+ ---
2
+ name: automation-status
3
+ description: "Read-only operator surface for the current project's Lisa automation fleet. Resolves the expected recurring jobs from the same setup-automations contract Lisa uses to create them, inspects the active runtime scheduler (Codex automations or Claude /schedule), compares live command/cadence/queue arguments against the expected contract, and reports grouped fleet health such as healthy, missing, unsupported, drifted, stale, or failing with remediation guidance."
4
+ allowed-tools: ["Skill", "Bash", "Read"]
5
+ ---
6
+
7
+ # Automation Status: $ARGUMENTS
8
+
9
+ `/lisa:automation-status` is the operator-facing inspection surface for Lisa's unattended job fleet. It answers, for the **current repo only**, whether the recurring Lisa automations that should exist actually exist, still match Lisa's setup contract, and appear healthy based on the runtime metadata available.
10
+
11
+ This command is **read-only** in v1. It does not create, update, resume, rerun, pause, or delete automations. It complements `/lisa:setup-automations`, `/lisa:tear-down-automations`, `/lisa:intake`, `/lisa:repair-intake`, `doctor`, and `monitor`; it does not replace them.
12
+
13
+ ## Confirmation policy
14
+
15
+ Do **not** ask for confirmation once invoked. This skill inspects scheduler state and reports what it finds. There are no write-side effects in the v1 surface.
16
+
17
+ ## Scope
18
+
19
+ Inspect only the Lisa automation fleet for the current project:
20
+
21
+ - `intake-repair`
22
+ - `intake-prd`
23
+ - `intake-tickets`
24
+ - `exploratory-bugs` when the current stack supports `exploratory-qa`
25
+ - `exploratory-prds`
26
+
27
+ Resolve the expected project identifier, fleet naming prefix, queue arguments, cadence, and stack-support rules from the same contract used by `setup-automations` and `tear-down-automations`. Do **not** invent a second source of truth for fleet naming or queue resolution.
28
+
29
+ ## Runtime inspection
30
+
31
+ Branch on the active runtime and prefer the runtime's native automation listing surface:
32
+
33
+ - **Codex**: inspect Codex automations metadata first. Use backing-store files only as a fallback or to enrich timestamps when the runtime surface cannot provide enough status detail directly.
34
+ - **Claude**: inspect the `/schedule` listing surface and any exposed recency or failure metadata available there.
35
+ - **Other runtimes**: if no native recurring-task inspection exists, report that automation-status is unsupported in this runtime rather than guessing.
36
+
37
+ The report must stay repo-scoped: inspect only automations whose names belong to the current repo's Lisa fleet prefix, and do not absorb unrelated automations into the result.
38
+
39
+ ## What to report
40
+
41
+ For each expected automation, report:
42
+
43
+ 1. Whether it exists.
44
+ 2. Whether it is expected or intentionally unsupported.
45
+ 3. The configured command and cadence Lisa expects.
46
+ 4. Any detected drift in name, cadence, command shape, or queue arguments.
47
+ 5. Any available recent-run health signal such as stale last-run timing or repeated failure status.
48
+ 6. A concise remediation hint when attention is needed.
49
+
50
+ Emit an overall grouped fleet verdict such as `HEALTHY`, `ATTENTION_NEEDED`, or `PARTIAL_SUPPORT`, plus the runtime surface inspected.
51
+
52
+ ## Operator usage
53
+
54
+ Typical entrypoint:
55
+
56
+ ```text
57
+ /lisa:automation-status
58
+ ```
59
+
60
+ Use this command when an operator needs to answer one of these questions for the current repo:
61
+
62
+ - "Did Lisa set up every automation this project expects?"
63
+ - "Is the scheduler still pointing at the right cadence and queue arguments?"
64
+ - "Is the queue idle because there is no work, or because the automation is stale or failing?"
65
+
66
+ The report should be terminal-first and immediately actionable: observable scheduler facts first, then the smallest useful remediation step.
67
+
68
+ ## Runtime differences
69
+
70
+ - **Codex**: prefer native automation metadata and use backing-store files only to fill gaps such as timestamps or failure recency. When Codex exposes health/memory signals, include them as observed facts rather than assumptions.
71
+ - **Claude**: use the `/schedule` listing as the primary runtime surface. Compare the live schedule name, cadence, and command shape against the Lisa contract, but degrade gracefully when `/schedule` does not expose equivalent recency or failure fields.
72
+ - **Other runtimes**: report automation-status as unsupported for that runtime instead of guessing from unrelated files or naming patterns.
73
+
74
+ ## Verdicts and remediation
75
+
76
+ - `HEALTHY`: every expected automation exists and the inspected runtime metadata shows no actionable drift, staleness, or failure.
77
+ - `PARTIAL_SUPPORT`: the fleet is otherwise healthy, but at least one exploratory job is intentionally unsupported for this stack or runtime.
78
+ - `ATTENTION_NEEDED`: at least one automation is missing, drifted, stale, or failing.
79
+
80
+ Status-specific remediation guidance:
81
+
82
+ - `MISSING`: tell the operator which job is absent and recommend rerunning `/lisa:setup-automations` or recreating the missing job with the expected cadence and command.
83
+ - `DRIFTED`: show the expected versus observed cadence/command mismatch and recommend aligning the scheduler entry with Lisa's current setup contract, usually by rerunning `/lisa:setup-automations`.
84
+ - `STALE`: explain that the job exists but has not run recently enough for its cadence. Recommend inspecting the runtime's recent-run history or failure logs before changing queue state.
85
+ - `FAILING`: surface the failure signal directly and recommend checking the latest runtime error plus the affected queue command (`/lisa:intake`, `/lisa:repair-intake`, or exploratory job) after the scheduler issue is resolved.
86
+ - `UNSUPPORTED`: explain why the job is intentionally absent and say that no remediation is required unless the project stack or runtime support changed.
87
+
88
+ Render the report in grouped sections using the shared `scripts/automation-status-report.mjs` contract:
89
+
90
+ ```text
91
+ Overall verdict: <VERDICT>
92
+ Counts: <n HEALTHY>, <n MISSING>, <n UNSUPPORTED>, <n DRIFTED>, <n STALE>, <n FAILING>
93
+ Runtime inspected: <runtime surface>
94
+ Generated at: <ISO timestamp>
95
+
96
+ 1. <group title>
97
+ - <STATUS> <automation-id>: <summary>
98
+ Expected: <cadence> -> <command>
99
+ Observed: <what the runtime exposed>
100
+ Remediation: <next step when attention is needed>
101
+ ```
102
+
103
+ Keep observable runtime facts separate from remediation guidance so operators can distinguish drift, unsupported jobs, and actual failures quickly.
104
+
105
+ ## Rules
106
+
107
+ - Stay **read-only**. Never create, update, delete, enable, disable, or rerun automations from this skill.
108
+ - Reuse `setup-automations` contract logic for expected fleet resolution, cadence, queue arguments, naming, and stack-specific support checks.
109
+ - Distinguish **unsupported** from **missing**. An exploratory job omitted because the current stack lacks `exploratory-qa` is not a failure.
110
+ - If the runtime cannot expose a field such as last-run timestamp or failure state, say that explicitly instead of implying health.
111
+ - Keep the output operational and repo-scoped so operators can tell whether Lisa's unattended surfaces are present, current, and healthy right now.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: bug-triage
3
+ description: "8-step bug triage and implementation workflow. Ensures bugs are reproducible, root-caused, and fixable before implementation begins."
4
+ ---
5
+
6
+ # Bug Triage
7
+
8
+ Follow this 8-step triage process before implementing any bug fix. Do not skip triage.
9
+
10
+ ## Triage Steps
11
+
12
+ 1. Verify you have all information needed to reproduce the bug (authentication requirements, environment information, etc.). Do not make assumptions. If anything is missing, stop and ask before proceeding.
13
+ 2. Reproduce the bug. If you cannot reproduce it, stop and report what you tried and what you observed.
14
+ 3. Once reproduced, verify you are 100% positive on how to fix it. If not, determine what you need to do to be 100% positive (e.g. add logging, trace the code path, inspect state) and do that first.
15
+ 4. Verify you have access to the tools, environments, and permissions needed to deploy and verify this fix (e.g. CI/CD pipelines, deployment targets, logging/monitoring systems, API access, database access). If any are missing or inaccessible, stop and raise them before starting implementation.
16
+ 5. Define the tests you will write to confirm the fix and prevent a regression.
17
+ 6. Define the documentation you will create or update to explain this bug so another developer understands the "how" and "what" behind it.
18
+ 7. If you can verify your fix before deploying to the target environment (e.g. start the app, invoke the API, open a browser, run the process, check logs), do so before deploying.
19
+ 8. Define how you will verify the fix beyond a shadow of a doubt (e.g. deploy to the target environment, invoke the API, open a browser, run the process, check logs).
20
+
21
+ ## Implementation
22
+
23
+ Use the output of the triage steps above as your guide. Do not skip triage.