@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,200 @@
1
+ ---
2
+ name: linear-read-issue
3
+ description: "Fetches the full scope of a Linear work item — Issue or Project — including metadata, description, acceptance criteria, all comments, attachments, native relations (blocks/blocked_by/relates_to/duplicates), Project parent (if any) with siblings, and sub-Issues. Produces a consolidated context bundle that downstream agents consume so they never act on a single item in isolation."
4
+ allowed-tools: ["Bash", "Skill", "mcp__linear-server__list_teams", "mcp__linear-server__get_issue", "mcp__linear-server__get_project", "mcp__linear-server__list_issues", "mcp__linear-server__list_comments", "mcp__linear-server__list_documents", "mcp__linear-server__get_document"]
5
+ ---
6
+
7
+ # Read Linear Work Item: $ARGUMENTS
8
+
9
+ Fetch the full scope of the item AND its related graph. Downstream agents must never act on an item in isolation — always call this skill first so they see blockers, project siblings, linked PRs, and historical comments.
10
+
11
+ This skill is the destination of the `lisa:tracker-read` shim when `tracker = "linear"`. Read-only.
12
+
13
+ Repository name for scoped comments and logs: `basename $(git rev-parse --show-toplevel)`.
14
+
15
+ ## Configuration
16
+
17
+ Reads `linear.workspace`, `linear.teamKey` from `.lisa.config.json` (with `.local` override).
18
+
19
+ ## Phase 1 — Resolve Context
20
+
21
+ 1. If `$ARGUMENTS` matches `<TEAM>-<n>` → Issue mode.
22
+ 2. If `$ARGUMENTS` is a URL containing `/project/<slug>-<short-id>` → Project mode (extract `<short-id>`).
23
+ 3. Otherwise stop and report. Do NOT guess.
24
+ 4. Resolve team ID via `mcp__linear-server__list_teams({query: <teamKey>})`.
25
+
26
+ ## Phase 2 — Fetch Primary Item
27
+
28
+ ### Issue mode
29
+
30
+ Call `mcp__linear-server__get_issue`. Extract and preserve:
31
+
32
+ **Metadata**
33
+ - Identifier, title, issue type (typically a label or workflow state), state, priority (0–4)
34
+ - Assignee, creator, subscribers
35
+ - Labels (capture full names — `status:*`, `component:*`, `priority:*`, `prd-*`)
36
+ - Project (parent), parent Issue (if Sub-task), cycle, milestone (ProjectMilestone)
37
+ - Estimate, due date
38
+ - Created, updated, completed dates
39
+
40
+ **Body**
41
+ - Full description (preserve markdown)
42
+ - **Validation Journey** section if present (pass verbatim to downstream)
43
+ - Attachment URLs (capture, do not download unless needed)
44
+
45
+ **Comments**
46
+ Fetch ALL comments via `mcp__linear-server__list_comments({issueId: <id>})` in chronological order. Walk thread parents/children — Linear comments are threaded via `parentId`. Do not truncate. For each comment:
47
+ - Author, timestamp, body
48
+ - Flag comments that contain: credentials, reproduction steps, status updates from stakeholders, decisions, or triage headers.
49
+
50
+ ### Project mode
51
+
52
+ Call `mcp__linear-server__get_project` with `includeMilestones: true`, `includeResources: true`. Extract:
53
+
54
+ **Metadata**
55
+ - ID, slug, name, state, priority, lead, color
56
+ - Teams, labels, milestones, target date, start date
57
+ - Created, updated dates
58
+
59
+ **Body**
60
+ - Description (markdown)
61
+ - Attached documents — call `mcp__linear-server__list_documents({projectId})` then `get_document` per result. Treat each as additional spec content.
62
+
63
+ **Member Issues**
64
+ - Call `mcp__linear-server__list_issues({project: <id>})` to enumerate the Project's Issues. Capture identifier, title, state, parent Issue (for sub-Issue tree).
65
+
66
+ ## Phase 3 — Fetch Attachments / Remote Links
67
+
68
+ Linear stores remote URLs as attachments on the Issue. For each:
69
+
70
+ - **GitHub PR or commit**: run `gh pr view <url> --json title,state,body,mergedAt,reviewDecision,comments,reviews` (PRs) or `gh api repos/<owner>/<repo>/commits/<sha>` (commits). Capture title, state, unresolved review comments, merge status.
71
+ - **Confluence page**: capture title and URL. Do not fetch body unless a downstream task explicitly needs it.
72
+ - **Dashboard / log link / external URL**: capture title and URL only.
73
+
74
+ If `gh` is not authenticated, note "gh auth required" and continue — do not abort.
75
+
76
+ ## Phase 4 — Fetch Relations
77
+
78
+ Linear native Issue relations are returned in the `get_issue` response under `relations`. Group by type:
79
+
80
+ - `blocks` / `blocked_by`
81
+ - `relates_to`
82
+ - `duplicates` / `duplicated_by`
83
+
84
+ For each related Issue, call `mcp__linear-server__get_issue` and capture:
85
+ - Identifier, title, state, priority, assignee
86
+ - Description (full, unless cancelled — then summary only)
87
+ - Acceptance Criteria section
88
+ - Last 10 comments (chronological)
89
+ - Attachments (URLs only — skip deep PR fetch unless the relation is `blocks` or `blocked_by`)
90
+
91
+ **Special handling for `blocked_by`:** fetch full PR details via `gh` for each blocker's GitHub attachments so the agent knows whether the blocker is actually shipped.
92
+
93
+ For Project-level relationships (Project ↔ Project), Linear doesn't model native relations — check the Project description and resources for cross-references and capture them as plain links.
94
+
95
+ ## Phase 5 — Fetch Project Context
96
+
97
+ If the primary Item is an Issue with a Project parent:
98
+
99
+ 1. Fetch the Project via `mcp__linear-server__get_project` — full description, milestones, labels, lead.
100
+ 2. Fetch Project documents (Phase 2 procedure).
101
+ 3. Find Project siblings via `mcp__linear-server__list_issues({project: <projectId>})` excluding the primary identifier.
102
+ 4. For each sibling, capture: identifier, title, state, priority, assignee, summary (first paragraph of description).
103
+ 5. If a sibling is `Started` or `In Review` with a different assignee, flag it prominently.
104
+
105
+ If the primary Item IS a Project, Phase 5 is the same as fetching all member Issues (already done in Phase 2 Project mode).
106
+
107
+ ## Phase 6 — Fetch Sub-Issues
108
+
109
+ If the primary Issue has children (sub-Issues), fetch each via `mcp__linear-server__get_issue`: identifier, title, state, assignee, description (first paragraph), Acceptance Criteria.
110
+
111
+ ## Phase 7 — Assemble Context Bundle
112
+
113
+ Produce a single structured output the caller can pass verbatim to downstream agents.
114
+
115
+ ```text
116
+ # Linear Work Item Context: <IDENTIFIER>
117
+
118
+ ## Primary Item
119
+ - Identifier: <ID>
120
+ - Type: <Issue | Project>
121
+ - State: <state>
122
+ - Priority: <0–4 or named>
123
+ - Assignee: <name or none>
124
+ - Project (parent): <project-slug — name> or none
125
+ - Parent Issue: <ID — title> or none (Sub-task only)
126
+ - Cycle: <name or none>
127
+ - Milestone: <project-milestone or none>
128
+ - Labels: <comma-separated>
129
+ - Estimate: <points>
130
+
131
+ ### Description
132
+ <full description>
133
+
134
+ ### Acceptance Criteria
135
+ <criteria>
136
+
137
+ ### Validation Journey
138
+ <section or "None">
139
+
140
+ ### Comments (<count>)
141
+ <chronological comments, flagged items called out>
142
+
143
+ ### Attachments
144
+ <list of URLs with titles>
145
+
146
+ ## Remote Links
147
+ ### Pull Requests (<count>)
148
+ - <url> — <title> — <state> — <reviewDecision>
149
+ <body summary + unresolved review comments>
150
+
151
+ ### Confluence
152
+ - <title> — <url>
153
+
154
+ ### Other
155
+ - <title> — <url>
156
+
157
+ ## Relations
158
+ ### Blocks (<count>)
159
+ <per-issue block>
160
+
161
+ ### Blocked By (<count>)
162
+ <per-issue block with PR state>
163
+
164
+ ### Relates To (<count>)
165
+ <per-issue block>
166
+
167
+ ### Duplicates / Duplicated By
168
+ <per-issue block>
169
+
170
+ ## Project Context (when primary is an Issue under a Project)
171
+ ### Project <slug> — <name>
172
+ - State: <state>
173
+ - Description: <full markdown>
174
+ - Milestones: <list>
175
+ - Documents: <list of doc titles + identifiers>
176
+
177
+ ### Siblings In-Flight (<count>)
178
+ - <ID> — <state> — <assignee> — <title> **[FLAG: in progress by other assignee]**
179
+
180
+ ### Other Siblings (<count>)
181
+ - <ID> — <state> — <title>
182
+
183
+ ## Sub-Issues (<count>)
184
+ - <ID> — <state> — <assignee> — <title>
185
+
186
+ ## Summary for Downstream
187
+ - Full item count pulled: <N>
188
+ - Blockers still open: <list>
189
+ - Related in-flight work: <list>
190
+ - Relevant PRs: <list with state>
191
+ ```
192
+
193
+ ## Rules
194
+
195
+ - Never summarize or truncate the primary item's description or Validation Journey.
196
+ - Never skip a relation type, even if it seems unrelated — the downstream agent decides relevance.
197
+ - If a related item returns an access error, capture the error and continue. Do not abort the read.
198
+ - Flag in-flight sibling work prominently so the caller can avoid duplicate implementation.
199
+ - If the Issue has no Project parent, state this explicitly — do not silently skip Phase 5.
200
+ - Output is pure context. This skill never modifies the item.
@@ -0,0 +1,114 @@
1
+ ---
2
+ name: linear-sync
3
+ description: "Syncs plan progress to a linked Linear Issue. Posts plan contents, progress updates, branch links, and PR links at key milestones. Use this skill throughout the plan lifecycle to keep Linear Issues in sync. The Linear counterpart of lisa:jira-sync and lisa:github-sync."
4
+ allowed-tools: ["Bash", "Skill", "mcp__linear-server__list_teams", "mcp__linear-server__get_issue", "mcp__linear-server__list_issues", "mcp__linear-server__save_comment", "mcp__linear-server__list_issue_labels", "mcp__linear-server__create_issue_label", "mcp__linear-server__save_issue"]
5
+ ---
6
+
7
+ # Sync Plan to Linear: $ARGUMENTS
8
+
9
+ Post milestone updates to the linked Linear Issue at key plan-lifecycle moments. This skill is the destination of the `lisa:tracker-sync` shim when `tracker = "linear"`.
10
+
11
+ ## Configuration
12
+
13
+ Reads `linear.workspace`, `linear.teamKey` from `.lisa.config.json` (with `.local` override).
14
+
15
+ ## When to invoke
16
+
17
+ Callers (planning skills, lifecycle skills) invoke this skill at:
18
+
19
+ | Milestone | What to post |
20
+ |-----------|--------------|
21
+ | Plan created | Plan contents (sections + ordered tasks) as a comment, suggest transition `Backlog → Todo` (label: `status:ready`) |
22
+ | Implementation in progress | Branch URL + first commit, suggest transition `Todo → In Progress` (label: `status:in-progress`) |
23
+ | PR ready for review | PR URL + summary, the implementation handoff comment, suggest transition `In Progress → In Review` (label: `status:code-review`) |
24
+ | PR merged | Merge SHA + deploy environment (if known), suggest transition `In Review → Done` (label: `status:done`) |
25
+
26
+ This skill **suggests** transitions but does not auto-transition the native Linear `state` field. It DOES update the `status:*` label set when the caller asks (the build queue is keyed off labels). Native state transitions remain a human / triage decision.
27
+
28
+ ## Input
29
+
30
+ `$ARGUMENTS` is `<IDENTIFIER> <milestone>` where:
31
+
32
+ - `<IDENTIFIER>` is the Linear Issue identifier (e.g. `ENG-123`). If not provided, the skill searches the active plan file for a linked Linear Issue.
33
+ - `<milestone>` is one of `plan-created`, `implementation-in-progress`, `pr-ready`, `pr-merged`.
34
+
35
+ ## Phase 1 — Resolve Issue
36
+
37
+ 1. If `$ARGUMENTS` includes an identifier, parse it.
38
+ 2. Else search for the active plan file (most recent file under `plans/`) and extract the linked Linear Issue identifier from its frontmatter.
39
+ 3. Fetch the Issue via `mcp__linear-server__get_issue` to confirm it exists.
40
+
41
+ ## Phase 2 — Compose Milestone Comment
42
+
43
+ Per the milestone, build the comment body. Include:
44
+
45
+ - A milestone header (e.g. `**Plan created** — <plan-file>`)
46
+ - Relevant links (plan file, branch, PR)
47
+ - A short summary (first 5 lines of the plan section / commit message / PR description)
48
+ - The suggested status transition
49
+
50
+ Example for `plan-created`:
51
+
52
+ ```markdown
53
+ **Plan created** — `plans/feat-X.md`
54
+
55
+ Sections:
56
+ - Phase 1: Schema doc
57
+ - Phase 2: Linear destination skills
58
+ - ...
59
+
60
+ Tasks: 7 ordered items.
61
+
62
+ Next: implementation begins. Suggested status: **Todo** (label: `status:ready`).
63
+ ```
64
+
65
+ ## Phase 3 — Post Comment
66
+
67
+ Call `mcp__linear-server__save_comment({issueId: <id>, body: <comment>})`.
68
+
69
+ ## Phase 4 — Update Status Label (when caller requests)
70
+
71
+ If the caller passes `--update-label`, update the `status:*` label set via `mcp__linear-server__save_issue`:
72
+
73
+ - `plan-created` → add `status:ready`
74
+ - `implementation-in-progress` → remove `status:ready`, add `status:in-progress`
75
+ - `pr-ready` → remove `status:in-progress`, add `status:code-review`
76
+ - `pr-merged` → remove `status:code-review`, add `status:done`
77
+
78
+ If the requested label doesn't exist on the team, create it via `mcp__linear-server__create_issue_label`.
79
+
80
+ Verify exactly one `status:*` label remains after the update — having two simultaneously breaks the build-queue invariant.
81
+
82
+ Without `--update-label`, this skill posts the comment only and does NOT touch labels.
83
+
84
+ ## Phase 5 — Parent Status Rollup (`--rollup`)
85
+
86
+ When the caller passes `--rollup`, this skill **derives a parent/container's `status:*` label from the roll-up of its children** instead of acting on a leaf. A **Project** (the Epic equivalent) rolls up from its Issues; an **Issue** rolls up from its sub-Issues. This implements the Linear child-issue-status arm of the **Parent status rollup (the state machine)** section of the `leaf-only-lifecycle` rule — cite that rule, do not restate the policy.
87
+
88
+ **Resolve the child set the same way `lisa:linear-read-issue` does** — `mcp__linear-server__list_issues({project: <id>})` for a Project's Issues, or `mcp__linear-server__get_issue` per child for an Issue's sub-Issues (via `parentId`). Capture each child's `status:*` label. If the item has **no** children it is a leaf — rollup is N/A; behave as a normal milestone sync.
89
+
90
+ **Evaluate the required children in priority order and take the first match** (canonical roles from `config-resolution`; Linear label map is `status:blocked`, `status:in-progress`, `status:code-review`, `status:done`):
91
+
92
+ | If among the required child leaves… | Derived parent role | Linear label |
93
+ |---|---|---|
94
+ | any child carries `status:blocked` | `blocked` | `status:blocked` |
95
+ | else any child carries `status:in-progress` **or** `status:code-review` | `claimed` | `status:in-progress` |
96
+ | else **all** required children carry `status:done` | `done` | the configured terminal `done` label |
97
+ | else (children exist, none started) | — | unchanged — parent keeps its non-ready container label |
98
+
99
+ - **Blocked dominates** — one blocked child surfaces `status:blocked` on the parent even while siblings progress.
100
+ - **"Required" children only** — won't-do / optional (e.g. `Canceled`) children do not hold the parent open.
101
+ - **Recursive** — a Project reaches `status:done` only when its Issues have themselves rolled up to `status:done`. Evaluate bottom-up.
102
+ - **Never set the parent to `status:ready`** — `ready` is leaf-only. Rollup only moves the parent between non-ready container labels.
103
+
104
+ **Single-environment collapse (this repo).** The terminal `done` resolves via the env-keyed `done` logic in `config-resolution`. In this repo `deploy.branches` declares only `production: main`, so `done` collapses to the single `status:done` label and the lifecycle is `status:ready → status:in-progress → status:code-review → status:done` with **no** dev/staging promotion hops; the rollup never resolves a dev or staging `done`. Multi-environment projects keep the env-keyed map.
105
+
106
+ **Apply the derived label** via `mcp__linear-server__save_issue` (Project or Issue), removing the parent's existing `status:*` and adding the derived one so exactly one `status:*` label remains. Post an idempotent rollup comment naming the derived state and the child tally. The native Linear `state` is **not** auto-transitioned — only the `status:*` label, mirroring the `--update-label` rule. **Safe default:** if the derived terminal cannot be resolved (ambiguous required-set or unresolvable env `done`), do not guess — post the derived suggestion as a comment and leave the parent's label untouched.
107
+
108
+ ## Rules
109
+
110
+ - Never auto-transition the native Linear `state` — only the label, and only when the caller explicitly asks (`--update-label`, or `--rollup` for parent derivation per the `leaf-only-lifecycle` rule).
111
+ - Rollup derives a *parent's* `status:*` label from its children and never sets a parent to `status:ready`. It cites the `leaf-only-lifecycle` rule by slug rather than restating the state machine.
112
+ - Never post empty or minimal comments — if a milestone has no meaningful content, skip the post.
113
+ - Do not delete prior milestone comments. They are the audit trail.
114
+ - If `save_comment` fails, retry once. If it fails again, surface the error.
@@ -0,0 +1,342 @@
1
+ ---
2
+ name: linear-to-tracker
3
+ description: >
4
+ Break down a Linear PRD (a Linear Project) into Epics, Stories, and Sub-tasks in the configured destination tracker (JIRA, GitHub Issues, or Linear per .lisa.config.json). Use this skill
5
+ whenever the user shares a Linear project URL and wants it converted into tracker tickets, or asks to
6
+ "break down this Linear project", "create tickets from a Linear project", "turn this Linear PRD into tickets", or similar. This skill mirrors `lisa:notion-to-tracker` and `lisa:confluence-to-tracker` for projects
7
+ whose PRDs live in Linear — the workflow, gates, dry-run mode, and validation rules are identical;
8
+ only the source-of-truth tool surface differs (Linear MCP instead of Notion / Confluence MCP).
9
+ allowed-tools: ["Skill", "Bash", "mcp__linear-server__get_project", "mcp__linear-server__list_projects", "mcp__linear-server__list_issues", "mcp__linear-server__get_issue", "mcp__linear-server__list_comments", "mcp__linear-server__list_documents", "mcp__linear-server__get_document", "mcp__linear-server__list_project_labels", "mcp__linear-server__list_teams"]
10
+ ---
11
+
12
+ # Linear PRD to Tracker Breakdown
13
+
14
+ Convert a Linear PRD (a Linear **Project**) into a structured ticket hierarchy in the configured destination tracker (JIRA, GitHub Issues, or Linear per .lisa.config.json): Epics > Stories > Sub-tasks.
15
+ Each sub-task is scoped to exactly one repo and includes an empirical verification plan.
16
+
17
+ This skill is the Linear counterpart of `lisa:notion-to-tracker` and `lisa:confluence-to-tracker`. The three skills share the same phases, gates, dry-run contract, and per-ticket validation logic. Only the PRD-side fetch tools differ. When changing workflow logic, change ALL THREE skills together so the source vendors stay behaviorally identical.
18
+
19
+ ## What "PRD" means in Linear
20
+
21
+ Linear has no native "PRD" entity. This skill treats a **Linear Project** as the PRD container:
22
+
23
+ - **Project description** (markdown) is the PRD body — equivalent to a Notion page body or a Confluence page body.
24
+ - **Project documents** (Linear's long-form markdown docs attached to projects, fetched via `list_documents({projectId})` / `get_document`) are treated as additional spec content and merged into the analysis. A multi-document Linear PRD is the analog of a multi-page Confluence PRD.
25
+ - **Project sub-issues** (`list_issues({project})`) act as the candidate set for epics and user stories — the same role child Epic pages play in a Notion/Confluence PRD.
26
+ - **Linear comments live on Issues, not on Projects.** This skill aggregates comments from every issue under the project to capture decisions and engineering notes. Project-level discussion that isn't reflected on an issue is invisible to this skill.
27
+
28
+ ## Modes
29
+
30
+ This skill supports two modes, controlled by a `dry_run` flag in `$ARGUMENTS`:
31
+
32
+ - **`dry_run: false`** (default — full mode): run all phases, write tickets via `lisa:tracker-write`, run the preservation gate, report.
33
+ - **`dry_run: true`** (planning + validation only — no writes): run Phases 1, 1.5, 1.6, 2, 3, 4 to plan the hierarchy and draft each ticket spec, then call `lisa:tracker-validate` (with `--spec-only`) on every drafted ticket. Aggregate the per-ticket validator reports into a single dry-run report. **Skip Phase 5 (sub-task creation), Phase 5.5 (preservation gate), and Phase 6 (results report)** — none of those make sense without writes. Return the dry-run report so the caller (e.g. `lisa:linear-prd-intake`) can decide whether to proceed.
34
+
35
+ Dry-run output format is identical to `lisa:notion-to-tracker`'s and `lisa:confluence-to-tracker`'s. Reuse the same fields, including `prd_anchor` and `prd_section`. The only difference: Linear has no inline-comment selection-anchor primitive at the project level — `prd_anchor` is the anchor a downstream caller would use to *post a comment on the related sub-issue* (typically the issue identifier, e.g. `LIN-123`, scoped to a section heading). When the failure does not map to any single sub-issue, set `prd_anchor: null` and the caller falls back to its sentinel feedback channel.
36
+
37
+ ```text
38
+ ## linear-to-tracker dry-run: <PRD title>
39
+
40
+ ### Planned hierarchy
41
+ - Epic: <summary>
42
+ prd_section: "<heading text from the project description / document that produced this epic>"
43
+ prd_anchor: "<linear issue identifier or null>"
44
+ - Story 1.1: <summary>
45
+ prd_section: "<heading or user-story line>"
46
+ prd_anchor: "<linear issue identifier or null>"
47
+ - Sub-task [<repo>]: <summary>
48
+ prd_section: "<heading or AC bullet>"
49
+ prd_anchor: "<linear issue identifier or null>"
50
+ - ...
51
+ - Story 1.2: ...
52
+
53
+ ### Per-ticket validation
54
+ - <ticket-id>: PASS | FAIL — <count> failures
55
+ prd_section: "<heading text>"
56
+ prd_anchor: "<linear issue identifier or null>"
57
+ failures:
58
+ - gate: <gate-id>
59
+ category: <category from validator>
60
+ product_relevant: <true|false>
61
+ what: <plain-language description from validator>
62
+ recommendation: <1–3 candidate resolutions from validator>
63
+
64
+ ### Verdict: PASS | FAIL
65
+ ### Total failures: <n>
66
+ ```
67
+
68
+ The dry-run mode never writes to JIRA and never calls `mcp__atlassian__createJiraIssue`. It also never modifies the source Linear project, never adds/removes labels, never edits sub-issues, and never posts comments — that is the orchestrating skill's responsibility (`lisa:linear-prd-intake`).
69
+
70
+ ## Hard Rule: All Writes Go Through `lisa:tracker-write`
71
+
72
+ **Every JIRA ticket created by this skill — every epic, story, and sub-task — MUST be created by invoking the `lisa:tracker-write` skill. Never call `mcp__atlassian__createJiraIssue`, `mcp__atlassian__editJiraIssue`, `mcp__atlassian__createIssueLink`, or any other Atlassian write tool directly from this skill or from any sub-agent it spawns.**
73
+
74
+ `lisa:tracker-write` enforces gates this skill does not:
75
+ - 3-audience description (Context / Technical Approach / Acceptance Criteria)
76
+ - Gherkin acceptance criteria
77
+ - Epic parent validation
78
+ - Explicit issue-link discovery (`blocks` / `is blocked by` / `relates to` / `duplicates` / `clones`)
79
+ - Single-repo scope check on Bug / Task / Sub-task / Improvement
80
+ - Sign-in account and target environment recorded in description
81
+ - Post-create verification
82
+
83
+ Bypassing `lisa:tracker-write` produces thin tickets that the rest of the lifecycle (triage, ticket-verify, journey, evidence) treats as broken. Atlassian reads in this skill are limited to the tools listed in `allowed-tools` (currently `getJiraIssueRemoteIssueLinks`) for the Phase 5.5 preservation gate. The Linear read tools listed in `allowed-tools` above are PRD-side only and never write.
84
+
85
+ ## Input
86
+
87
+ A Linear project URL, slug, or ID. The PRD is expected to have:
88
+ - A project with a description containing context, problems, and (optionally) a list of user stories
89
+ - One or more sub-issues that act as candidate epics or user stories
90
+ - Optionally one or more Linear documents attached to the project, with deeper spec content
91
+ - Issue comments capturing engineering notes and product decisions
92
+
93
+ URL parsing — Linear project URLs come in this shape:
94
+
95
+ ```text
96
+ https://linear.app/<workspace>/project/<slug>-<short-id>
97
+ https://linear.app/<workspace>/project/<slug>-<short-id>/<view>
98
+ ```
99
+
100
+ Extract the trailing `<short-id>` (the alphanumeric segment after the last `-` in the slug). If only a workspace or team URL is provided (no `/project/<slug>-<id>` segment), stop and report — single-PRD mode requires a specific project. The caller wanted `lisa:linear-prd-intake` (batch mode).
101
+
102
+ ## Configuration
103
+
104
+ This skill reads project configuration from `.lisa.config.json` (with `.lisa.config.local.json` overriding per key) and operational E2E test config from environment variables. See the `config-resolution` rule for the full schema.
105
+
106
+ ### From `.lisa.config.json`
107
+
108
+ This skill is a **PRD source** (Linear); destination tracker resolution is handled by `lisa:tracker-write` and `lisa:tracker-validate` internally — this skill does NOT read `tracker` directly. The relevant config for the source side:
109
+
110
+ | Field | Purpose | Required when |
111
+ |-------|---------|---------------|
112
+ | `linear.workspace` | Linear workspace slug (used for URL synthesis on remote links) | always |
113
+
114
+ ### From environment variables (E2E test config — operational, not tracker)
115
+
116
+ | Variable | Purpose | Example |
117
+ |----------|---------|---------|
118
+ | `E2E_TEST_PHONE` | Test user phone number for verification plans | `0000000099` |
119
+ | `E2E_TEST_OTP` | Test user OTP code | `555555` |
120
+ | `E2E_TEST_ORG` | Test organization name | `Arsenal` |
121
+ | `E2E_BASE_URL` | Frontend base URL for Playwright tests | `https://dev.example.io/` |
122
+ | `E2E_GRAPHQL_URL` | GraphQL API URL for curl verification | `https://gql.dev.example.io/graphql` |
123
+
124
+ If env vars are not available, ask the user to provide them explicitly before proceeding. Do not retrieve credentials from repository files or local agent settings.
125
+
126
+ ## Workflow
127
+
128
+ ### Phase 1: Fetch & Analyze the PRD
129
+
130
+ 1. **Resolve the project** via `mcp__linear-server__get_project` with the slug or ID, including milestones and resources (`includeMilestones: true`, `includeResources: true`). Capture the project title, description, state, labels, lead, dates, attached documents, attached links.
131
+ 2. **Fetch attached Linear documents** via `mcp__linear-server__list_documents({projectId})` then `get_document` per result. Treat each as additional PRD content. (A Linear PRD with a single rich project description and no attached documents is the common case; multi-document PRDs are valid too.)
132
+ 3. **Identify candidate epics and user stories** from project sub-issues via `mcp__linear-server__list_issues({project: <id>})`. Capture identifier, title, description, labels, state, parent issue, and `parentId` chain so the issue hierarchy is reproducible.
133
+ 4. **Fetch full comments per sub-issue** via `mcp__linear-server__list_comments({issueId})` for every issue surfaced in step 3. Walk thread parents/children — comments are threaded via `parentId` references on the comment object.
134
+ 5. **Synthesize decisions and blockers** from the project description + every document + every issue comment:
135
+ - Decisions already confirmed by the team (look for agreement in comment threads)
136
+ - Open questions that need product/engineering input
137
+ - Engineering comments (prefixed with "Engineering:" or wrench emoji) that identify technical constraints
138
+ - Cross-PRD dependencies (references to other Linear projects, documents, or shared infrastructure)
139
+
140
+ ### Phase 1.5: Extract Source Artifacts
141
+
142
+ PRDs typically reference external design, UX, and data artifacts (Figma files, Lovable prototypes, Loom walkthroughs, screenshots, example payloads, peer Linear or Confluence pages). These MUST be preserved onto the resulting tickets — otherwise developers picking up a ticket lose the source of truth. This is the failure mode this step exists to prevent.
143
+
144
+ 1. **Scan the project description, every attached document body, every sub-issue description, and every fetched comment thread** for:
145
+ - URLs to design/prototype tools (Figma, FigJam, Figma Make, Lovable, Framer, Penpot)
146
+ - URLs to recording/walkthrough tools (Loom, YouTube, Vimeo, Descript)
147
+ - URLs to collaborative docs (Google Docs/Slides/Sheets, peer Confluence pages, Notion peer pages, peer Linear documents)
148
+ - URLs to code sandboxes (CodeSandbox, StackBlitz, Replit, GitHub permalinks/gists)
149
+ - URLs to diagramming tools (Miro, Mural, Excalidraw, Mermaid Live, draw.io, Lucid)
150
+ - URLs to data/observability tools (Grafana, Datadog, Sentry, Metabase, Looker)
151
+ - Embedded images and file attachments referenced in the project / documents
152
+ - Fenced code blocks with example data (JSON, SQL, GraphQL, cURL request/response)
153
+
154
+ 2. **Classify each artifact and apply taxonomy rules** by invoking the `lisa:tracker-source-artifacts` skill. That skill is the single source of truth for: domains (`ui-design` / `ux-flow` / `data` / `ops` / `reference`), per-tool classification rules (Figma `/proto/` vs design, Lovable as `ux-flow`, Loom, screenshots), and coverage smells. Do not restate the rules here — invoke the skill so any drift in the rules propagates uniformly.
155
+
156
+ 3. **Build an `artifacts` map** keyed by domain. Each entry: `{ url, title, domain, source_page, source_page_url, classification_reason }`. The `classification_reason` makes disambiguation auditable. The `source_page` lets you trace each reference back to where it appeared (project description vs a specific document title vs a specific sub-issue comment).
157
+
158
+ 4. **Surface coverage smells** as defined in `lisa:tracker-source-artifacts` §5. Record any detected smells on the epic.
159
+
160
+ ### Phase 1.6: Source Precedence & Conflict Resolution
161
+
162
+ Source precedence rules and cross-axis conflict handling are defined in `lisa:tracker-source-artifacts` §3 and §4. Apply them during ticket synthesis: every conflict between artifacts must be recorded under `## Open Questions` on the affected ticket, never silently reconciled.
163
+
164
+ The existing-component reuse expectation is defined in `lisa:tracker-source-artifacts` §7. Encode it on every UI-touching story.
165
+
166
+ ### Phase 2: Codebase + Live Product Research
167
+
168
+ Identical to `lisa:notion-to-tracker` Phase 2 and `lisa:confluence-to-tracker` Phase 2. Two complementary inputs ground PRD analysis: the **code** (what's there to reuse / extend) and the **live product** (what users see today). Skipping either produces tickets that misjudge the change.
169
+
170
+ **2a. Codebase research.** If the session doesn't already have codebase context, explore the repos to understand what exists. Use Explore agents for repos not yet examined.
171
+
172
+ **2b. Live product walkthrough.** If the PRD touches existing user-facing surfaces, invoke the `lisa:product-walkthrough` skill against `E2E_BASE_URL` using the test user from config.
173
+
174
+ Skip 2b only when the work is purely backend with no user-visible surface, or affects a screen that does not yet exist in dev/prod.
175
+
176
+ Walkthrough findings are surfaced back to product via the orchestrating intake skill (`lisa:linear-prd-intake`), which posts them on the project's sentinel feedback issue. This skill itself does NOT post to Linear — it only reads. The walkthrough section is also inherited onto the resulting epic / stories under a `## Current Product` subsection in the JIRA description.
177
+
178
+ ### Phase 3: Create Epics
179
+
180
+ > **Mode guard**: In `dry_run: true` mode, do not invoke `lisa:tracker-write` in this phase. Instead, draft the epic spec (summary, description_body, artifacts) and validate it with `lisa:tracker-validate --spec-only`. Record the drafted spec (including a placeholder epic key like `DRY-RUN-EPIC-1`) for Phase 4 to use as parent references. In `dry_run: false` mode (default), proceed as described below.
181
+
182
+ For each epic identified in Phase 1, **invoke the `lisa:tracker-write` skill** (do not call `createJiraIssue` directly). Pass it everything it needs to enforce its quality gates:
183
+
184
+ - `project_key`: resolved by `lisa:tracker-write` from `.lisa.config.json`
185
+ - `issue_type`: `Epic`
186
+ - `summary`: epic title from the PRD
187
+ - `description_body`: a draft of the 3-audience description containing:
188
+ - **Context / Business Value**: epic summary from the PRD, originating Linear project URL, business outcome
189
+ - **Technical Approach**: cross-cutting integration points and constraints surfaced in Phase 2 codebase research
190
+ - List of user stories the epic contains
191
+ - Key decisions from comments (with attribution)
192
+ - Blockers and open questions
193
+ - Dependencies on other epics or PRDs
194
+ - A **Source Artifacts** section listing every artifact extracted in Phase 1.5 (grouped by domain)
195
+ - `artifacts`: the full Phase 1.5 artifact list — every artifact, regardless of domain. The epic is the canonical hub. No filtering at the epic level.
196
+ - `priority`, `labels`, `components`, `fix_version`: as appropriate
197
+
198
+ **Leaf-only build-ready (`leaf-only-lifecycle`)**: an Epic is a container, not a leaf work unit. Do NOT mark it build-ready — `lisa:tracker-write` must not be passed `status:ready` for an Epic, and the Epic's lifecycle state rolls up from its children. The build-ready label is applied only in Phase 5.
199
+
200
+ Capture the returned epic key — Phase 4 needs it as the parent for stories.
201
+
202
+ ### Phase 4: Create Stories
203
+
204
+ > **Mode guard**: In `dry_run: true` mode, do not invoke `lisa:tracker-write` in this phase. Instead, draft each story spec and validate it with `lisa:tracker-validate --spec-only`. Use placeholder keys (e.g. `DRY-RUN-STORY-1.1`) for any downstream references. In `dry_run: false` mode (default), proceed as described below.
205
+
206
+ For each Epic, plan two kinds of stories:
207
+ - **One "X.0 Setup" story** for data model and infrastructure prerequisites
208
+ - **One story per user story** from the PRD (numbered to match the PRD's structure or the source Linear sub-issues)
209
+
210
+ **Story naming convention**: Prefix the summary with a short code derived from the PRD title (e.g., `[CU-1.1]` for "Contract Upload").
211
+
212
+ For each story, **invoke `lisa:tracker-write`** with:
213
+
214
+ - `project_key`: resolved by `lisa:tracker-write` from `.lisa.config.json`
215
+ - `issue_type`: `Story`
216
+ - `epic_parent`: the Epic key captured in Phase 3 (mandatory)
217
+ - `summary`: prefixed per the naming convention above
218
+ - `description_body`: 3-audience description as in `lisa:notion-to-tracker` Phase 4
219
+ - `artifacts`: the Phase 1.5 artifacts filtered by domain per the inheritance table below
220
+
221
+ | Story type | Inherits domains |
222
+ |------------|------------------|
223
+ | Frontend / UI | `ui-design`, `ux-flow`, `reference` |
224
+ | Backend / API / data model | `data`, `reference` |
225
+ | Infrastructure | `ops`, `reference` |
226
+ | Mixed / setup ("X.0") | All domains |
227
+
228
+ **Leaf-only build-ready (`leaf-only-lifecycle`)**: a Story is a container (it has child Sub-tasks), not a leaf work unit. Do NOT mark it build-ready — never pass `status:ready` to `lisa:tracker-write` for a Story. Its lifecycle state rolls up from its Sub-tasks. The build-ready label is applied only in Phase 5.
229
+
230
+ Capture each returned story key — Phase 5 needs it as the parent for sub-tasks.
231
+
232
+ ### Phase 5: Create Sub-tasks
233
+
234
+ **Auto-split cross-repo work before delegation.** For each candidate sub-task, apply `lisa:task-decomposition` step 1.5: if the work touches more than one repo, split it into one sub-task per repo under the same parent Story (e.g., `[backend-api] Add field` + `[mobile-app] Display field`), and encode the producer-before-consumer ordering via dependencies. Work units that may span repos (Epic, Story, Spike) stay as planned; work units that must be single-repo (Bug, Task, Sub-task, Improvement) are split now. Splitting is this skill's responsibility — the validator's S10 gate is `product_relevant: false` because cross-repo failures are decomposition errors caught here, not product questions sent back to the PRD.
235
+
236
+ Delegate sub-task creation to **parallel agents** (one per epic or batch of stories) for efficiency. **Every spawned agent must invoke `lisa:tracker-write` for each sub-task — no agent may call `createJiraIssue` directly.**
237
+
238
+ Each sub-task MUST:
239
+ 1. **Be scoped to exactly ONE repo** — indicated in brackets in the summary: `[repo-name]`
240
+ 2. **Include an Empirical Verification Plan** — real user-like verification, NOT unit tests, linting, or typechecking
241
+
242
+ **Leaf-only build-ready (`leaf-only-lifecycle`)**: Sub-tasks are the **leaf work units** of the decomposition — they are the ONLY items in the hierarchy that receive the build-ready label. `lisa:tracker-write` applies `status:ready` here so downstream build intake (`lisa:tracker-build-intake`) claims the leaves and never the Epic or Stories. Apply `status:ready` to each Sub-task; never to its parent Story or Epic (Phases 3–4). `lisa:tracker-write` enforces the same invariant on the write side, so a Sub-task split into per-repo children (the cross-repo case above) carries build-ready on the children, not on any intermediate parent that gains child work.
243
+
244
+ Sub-tasks inherit their parent story's artifacts by reference (the parent link). Do not pass the same artifact list to every sub-task.
245
+
246
+ ### Phase 5.5: Artifact Preservation Gate (mandatory)
247
+
248
+ Run the preservation gate defined in `lisa:tracker-source-artifacts` §8 against the artifacts extracted in Phase 1.5 and the tickets just created. Do NOT restate or modify the gate logic here — invoke the rules from `lisa:tracker-source-artifacts`.
249
+
250
+ To run the gate, this skill must:
251
+
252
+ 1. Pull the remote links of every epic and story created in this run via `lisa:tracker-read (vendor-neutral; dispatches to jira-read-ticket or github-read-issue)`.
253
+ 2. Apply the §8 preservation matrix and verdict rules.
254
+ 3. If the gate fails: list each dropped/misrouted artifact and either re-attach via `lisa:tracker-write` (UPDATE mode) or stop and ask the human.
255
+ 4. If the gate passes: print the matrix compactly and proceed to Phase 6.
256
+
257
+ This gate is not optional.
258
+
259
+ ### Phase 6: Report Results
260
+
261
+ After all tickets are created, present a summary table to the user:
262
+ - All Epics with keys and URLs
263
+ - All Stories grouped by Epic
264
+ - All Sub-tasks grouped by Story with repo tags
265
+ - Repo distribution
266
+ - **Artifact Preservation Matrix**
267
+ - Blockers list with recommendations and alternatives
268
+ - Cross-PRD dependencies
269
+
270
+ ### Phase 7: PRD Back-link
271
+
272
+ > **Mode guard**: In `dry_run: true` mode, skip this phase entirely — no tickets exist to link.
273
+
274
+ After Phase 6, invoke the `lisa:prd-backlink` skill to write a `## Tickets` section back into the source Linear project (or its description). The section becomes the canonical anchor for the **Debrief** flow once the initiative ships.
275
+
276
+ Invoke `lisa:prd-backlink` with:
277
+
278
+ - `source_type: "linear"`
279
+ - `source_ref`: the original Linear project URL
280
+ - `tickets`: the full list created in Phases 3–5, each entry as `{ key, title, type, url, parent_key }`
281
+
282
+ If `lisa:prd-backlink` fails (permission denied, Linear unreachable), surface the error in the Phase 6 report rather than aborting — the tickets are already created. Recommend the user re-run `lisa:prd-backlink` standalone once the source is reachable.
283
+
284
+ ## Handling Ambiguities and Blockers
285
+
286
+ When you encounter something the PRD + comments + codebase can't resolve:
287
+
288
+ 1. **Don't guess** — mark the ticket with a BLOCKER section
289
+ 2. **Include your recommendation** with rationale
290
+ 3. **List 2-3 alternatives** so the user/product can choose
291
+ 4. **State what's needed to unblock**
292
+
293
+ ## Agent Prompt Template for Sub-task Creation
294
+
295
+ When delegating to agents, provide this context. **The "MUST invoke jira-write-ticket" instruction is load-bearing — do not edit it out when adapting this template.**
296
+
297
+ ```text
298
+ Create JIRA sub-tasks in the [PROJECT] project at [CLOUD_ID].
299
+
300
+ CRITICAL: For each sub-task, invoke the `lisa:tracker-write` skill via the Skill tool.
301
+ Do NOT call `mcp__atlassian__createJiraIssue` directly. The `lisa:tracker-write` skill
302
+ enforces required quality gates (Gherkin acceptance criteria, 3-audience description,
303
+ single-repo scope, sign-in/environment fields, post-create verification). Bypassing it
304
+ produces broken tickets that downstream skills (triage, journey, evidence) cannot use.
305
+
306
+ For each sub-task, invoke `lisa:tracker-write` with:
307
+ - issue_type: "Sub-task"
308
+ - parent: the parent story key
309
+ - project_key: [PROJECT]
310
+ - summary: prefixed with the repo in brackets, e.g. "[backend-api] Add audit log table"
311
+ - description_body: a 3-section draft (Context / Technical Approach / Acceptance Criteria)
312
+ - gherkin_acceptance_criteria: derived from the story's functional requirements
313
+ - sign_in_account: [test user credentials from config — name + role + how to obtain]
314
+ - target_environment: "dev"
315
+ - empirical_verification_plan: real user-like verification (curl + auth token,
316
+ Playwright browser flow, CLI check after deploy) using the test credentials.
317
+ NOT unit tests, linting, or typechecking.
318
+
319
+ Each sub-task must:
320
+ 1. Be scoped to ONE repo only — repo named in brackets in the summary
321
+ 2. Include the Empirical Verification Plan in the description
322
+ 3. Be created via `lisa:tracker-write`, not via direct MCP calls
323
+
324
+ If `lisa:tracker-write` rejects a sub-task, fix the input and re-invoke. Do NOT fall back
325
+ to a direct `createJiraIssue` call to bypass the gate.
326
+
327
+ Test user info: [credentials from config]
328
+
329
+ [Then list all sub-tasks grouped by parent story with details]
330
+ ```
331
+
332
+ ## Cross-PRD Shared Infrastructure
333
+
334
+ Track tickets that are shared across PRDs to avoid duplication. When a sub-task overlaps with an existing ticket, reference it instead of creating a duplicate. Search JIRA for existing tickets in the project before creating new ones for shared infrastructure.
335
+
336
+ ## Linear-specific notes
337
+
338
+ - **Project description format**: Linear project descriptions are markdown. Treat headings (`#`, `##`, `###`) as section markers for `prd_section`.
339
+ - **Document parents**: Linear documents are attached to either a Project or an Issue (exactly one). For PRD intake, only documents attached to the project being processed are in scope. Documents attached to a child Issue are picked up via that issue's content surface.
340
+ - **Comment threading**: Linear comments are threaded via a `parentId` field on each comment. When fetching comments via `list_comments`, capture the full reply tree — replies often hold the actual decision while the root comment was the question.
341
+ - **No project-level comments via MCP**: clarifying-question comments cannot land directly on the project itself. The orchestrating skill (`lisa:linear-prd-intake`) handles this by maintaining a sentinel feedback issue under the project. This skill does not write to Linear at all — it only reads.
342
+ - **Issue identifiers** (`LIN-123`, `ENG-456`, etc.) are the closest analog to a Confluence inline-comment anchor. When dry-run output sets `prd_anchor` to an issue identifier, the caller knows it can post a clarifying-question comment on that specific issue if it wants block-level anchoring.