@codyswann/lisa 2.216.0 → 2.217.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/package.json +1 -1
  2. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  3. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  4. package/plugins/lisa/.codex-plugin/skills/lisa-confluence-to-tracker/SKILL.md +78 -3
  5. package/plugins/lisa/.codex-plugin/skills/lisa-github-to-tracker/SKILL.md +81 -4
  6. package/plugins/lisa/.codex-plugin/skills/lisa-github-validate-issue/SKILL.md +31 -0
  7. package/plugins/lisa/.codex-plugin/skills/lisa-github-write-issue/SKILL.md +16 -0
  8. package/plugins/lisa/.codex-plugin/skills/lisa-jira-validate-ticket/SKILL.md +32 -0
  9. package/plugins/lisa/.codex-plugin/skills/lisa-jira-write-ticket/SKILL.md +16 -0
  10. package/plugins/lisa/.codex-plugin/skills/lisa-linear-to-tracker/SKILL.md +82 -4
  11. package/plugins/lisa/.codex-plugin/skills/lisa-linear-validate-issue/SKILL.md +31 -0
  12. package/plugins/lisa/.codex-plugin/skills/lisa-linear-write-issue/SKILL.md +16 -0
  13. package/plugins/lisa/.codex-plugin/skills/lisa-notion-to-tracker/SKILL.md +78 -2
  14. package/plugins/lisa/.codex-plugin/skills/lisa-prd-backlink/SKILL.md +12 -3
  15. package/plugins/lisa/.codex-plugin/skills/lisa-prd-ticket-coverage/SKILL.md +17 -0
  16. package/plugins/lisa/skills/lisa-confluence-to-tracker/SKILL.md +78 -3
  17. package/plugins/lisa/skills/lisa-github-to-tracker/SKILL.md +81 -4
  18. package/plugins/lisa/skills/lisa-github-validate-issue/SKILL.md +31 -0
  19. package/plugins/lisa/skills/lisa-github-write-issue/SKILL.md +16 -0
  20. package/plugins/lisa/skills/lisa-jira-validate-ticket/SKILL.md +32 -0
  21. package/plugins/lisa/skills/lisa-jira-write-ticket/SKILL.md +16 -0
  22. package/plugins/lisa/skills/lisa-linear-to-tracker/SKILL.md +82 -4
  23. package/plugins/lisa/skills/lisa-linear-validate-issue/SKILL.md +31 -0
  24. package/plugins/lisa/skills/lisa-linear-write-issue/SKILL.md +16 -0
  25. package/plugins/lisa/skills/lisa-notion-to-tracker/SKILL.md +78 -2
  26. package/plugins/lisa/skills/lisa-prd-backlink/SKILL.md +12 -3
  27. package/plugins/lisa/skills/lisa-prd-ticket-coverage/SKILL.md +17 -0
  28. package/plugins/lisa-agy/plugin.json +1 -1
  29. package/plugins/lisa-agy/skills/lisa-confluence-to-tracker/SKILL.md +78 -3
  30. package/plugins/lisa-agy/skills/lisa-github-to-tracker/SKILL.md +81 -4
  31. package/plugins/lisa-agy/skills/lisa-github-validate-issue/SKILL.md +31 -0
  32. package/plugins/lisa-agy/skills/lisa-github-write-issue/SKILL.md +16 -0
  33. package/plugins/lisa-agy/skills/lisa-jira-validate-ticket/SKILL.md +32 -0
  34. package/plugins/lisa-agy/skills/lisa-jira-write-ticket/SKILL.md +16 -0
  35. package/plugins/lisa-agy/skills/lisa-linear-to-tracker/SKILL.md +82 -4
  36. package/plugins/lisa-agy/skills/lisa-linear-validate-issue/SKILL.md +31 -0
  37. package/plugins/lisa-agy/skills/lisa-linear-write-issue/SKILL.md +16 -0
  38. package/plugins/lisa-agy/skills/lisa-notion-to-tracker/SKILL.md +78 -2
  39. package/plugins/lisa-agy/skills/lisa-prd-backlink/SKILL.md +12 -3
  40. package/plugins/lisa-agy/skills/lisa-prd-ticket-coverage/SKILL.md +17 -0
  41. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  43. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  44. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-copilot/skills/lisa-confluence-to-tracker/SKILL.md +78 -3
  48. package/plugins/lisa-copilot/skills/lisa-github-to-tracker/SKILL.md +81 -4
  49. package/plugins/lisa-copilot/skills/lisa-github-validate-issue/SKILL.md +31 -0
  50. package/plugins/lisa-copilot/skills/lisa-github-write-issue/SKILL.md +16 -0
  51. package/plugins/lisa-copilot/skills/lisa-jira-validate-ticket/SKILL.md +32 -0
  52. package/plugins/lisa-copilot/skills/lisa-jira-write-ticket/SKILL.md +16 -0
  53. package/plugins/lisa-copilot/skills/lisa-linear-to-tracker/SKILL.md +82 -4
  54. package/plugins/lisa-copilot/skills/lisa-linear-validate-issue/SKILL.md +31 -0
  55. package/plugins/lisa-copilot/skills/lisa-linear-write-issue/SKILL.md +16 -0
  56. package/plugins/lisa-copilot/skills/lisa-notion-to-tracker/SKILL.md +78 -2
  57. package/plugins/lisa-copilot/skills/lisa-prd-backlink/SKILL.md +12 -3
  58. package/plugins/lisa-copilot/skills/lisa-prd-ticket-coverage/SKILL.md +17 -0
  59. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-cursor/skills/lisa-confluence-to-tracker/SKILL.md +78 -3
  61. package/plugins/lisa-cursor/skills/lisa-github-to-tracker/SKILL.md +81 -4
  62. package/plugins/lisa-cursor/skills/lisa-github-validate-issue/SKILL.md +31 -0
  63. package/plugins/lisa-cursor/skills/lisa-github-write-issue/SKILL.md +16 -0
  64. package/plugins/lisa-cursor/skills/lisa-jira-validate-ticket/SKILL.md +32 -0
  65. package/plugins/lisa-cursor/skills/lisa-jira-write-ticket/SKILL.md +16 -0
  66. package/plugins/lisa-cursor/skills/lisa-linear-to-tracker/SKILL.md +82 -4
  67. package/plugins/lisa-cursor/skills/lisa-linear-validate-issue/SKILL.md +31 -0
  68. package/plugins/lisa-cursor/skills/lisa-linear-write-issue/SKILL.md +16 -0
  69. package/plugins/lisa-cursor/skills/lisa-notion-to-tracker/SKILL.md +78 -2
  70. package/plugins/lisa-cursor/skills/lisa-prd-backlink/SKILL.md +12 -3
  71. package/plugins/lisa-cursor/skills/lisa-prd-ticket-coverage/SKILL.md +17 -0
  72. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  73. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  74. package/plugins/lisa-expo-agy/plugin.json +1 -1
  75. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  79. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  80. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  83. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  84. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  85. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  86. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  87. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  88. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  89. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  90. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  92. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  93. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  94. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  95. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  96. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  97. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  98. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  99. package/plugins/lisa-rails-agy/plugin.json +1 -1
  100. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  101. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  102. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  103. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  104. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  105. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  106. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  107. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  108. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  109. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  110. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  111. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  112. package/plugins/src/base/skills/lisa-confluence-to-tracker/SKILL.md +78 -3
  113. package/plugins/src/base/skills/lisa-github-to-tracker/SKILL.md +81 -4
  114. package/plugins/src/base/skills/lisa-github-validate-issue/SKILL.md +31 -0
  115. package/plugins/src/base/skills/lisa-github-write-issue/SKILL.md +16 -0
  116. package/plugins/src/base/skills/lisa-jira-validate-ticket/SKILL.md +32 -0
  117. package/plugins/src/base/skills/lisa-jira-write-ticket/SKILL.md +16 -0
  118. package/plugins/src/base/skills/lisa-linear-to-tracker/SKILL.md +82 -4
  119. package/plugins/src/base/skills/lisa-linear-validate-issue/SKILL.md +31 -0
  120. package/plugins/src/base/skills/lisa-linear-write-issue/SKILL.md +16 -0
  121. package/plugins/src/base/skills/lisa-notion-to-tracker/SKILL.md +78 -2
  122. package/plugins/src/base/skills/lisa-prd-backlink/SKILL.md +12 -3
  123. package/plugins/src/base/skills/lisa-prd-ticket-coverage/SKILL.md +17 -0
  124. package/typescript/copy-overwrite/.github/GITHUB_ACTIONS.md +1 -1
  125. package/typescript/create-only/.github/workflows/claude-ci-auto-fix.yml +14 -6
  126. package/typescript/create-only/.github/workflows/claude-deploy-auto-fix.yml +11 -4
@@ -96,6 +96,21 @@ PRD item id → [ticket keys that cover it]
96
96
 
97
97
  Matching rules (in priority order):
98
98
 
99
+ 0. **Declared trace (deterministic — preferred)**: tickets created after
100
+ requirement traceability landed carry a `Source Requirement` section
101
+ (verbatim requirement quotes + register `R-ids`), and the PRD's
102
+ `## Tickets` section carries the same ids in its `lisa:gw … reqs=`
103
+ tokens. When present, the declared trace IS the mapping — match the
104
+ quoted text against the extracted atomic items (match on the verbatim
105
+ quote, not the `R-id`: ids are per-generation and may have shifted if
106
+ the PRD was re-planned; quotes are the durable anchor). A declared
107
+ trace is definitive: do not second-guess it with keyword inference,
108
+ but DO flag a declared quote that no longer appears anywhere in the
109
+ PRD (the requirement was edited or removed — surface it as a drift
110
+ finding, not silently). The derived-work form ("Derived work
111
+ supporting R3, R7") counts as a trace to the named requirements.
112
+ Fall back to rules 1–4 only for tickets with no Source Requirement
113
+ section (created before traceability existed).
99
114
  1. **Direct quote / strong keyword overlap**: the ticket's summary or AC explicitly names the PRD item's keywords. High confidence.
100
115
  2. **Domain match**: PRD item describes a UI affordance ("Tasks widget") and a ticket scopes that affordance (`[CU-2.1] Tasks widget — empty state`). Medium-high confidence.
101
116
  3. **Scope inheritance**: PRD item is a sub-detail of a parent (e.g. an AC under a user story); the ticket covers the parent user story. Medium confidence — flag for review if no more specific ticket exists.
@@ -107,6 +122,8 @@ Items with **zero** matching tickets are coverage gaps.
107
122
 
108
123
  For each created ticket, identify any tickets whose scope_signals do NOT trace back to a PRD item, AND are not justifiable as standard infrastructure tasks (e.g. `X.0 Setup` stories for data model / migrations are typically infrastructure scaffolding, not scope creep).
109
124
 
125
+ With declared traces this becomes precise: a ticket whose `Source Requirement` section is absent (on a post-traceability ticket set), or whose declared quotes match nothing in the PRD, is an orphan — the strongest scope-creep signal available. A ticket using the derived-work form is by definition not scope creep; it declares which requirements it supports.
126
+
110
127
  Scope creep is informational, not blocking — but worth surfacing because it usually indicates the agent invented work.
111
128
 
112
129
  ### Phase 5 — Determine verdict
@@ -183,7 +183,7 @@ Fixer of last resort for red CI on unattended branches: Claude analyzes error lo
183
183
  - Falls back to a non-frozen dependency install when the lockfile itself is broken, so Claude can repair and commit the lockfile
184
184
  - When no fix can be produced, files a deduplicated ticket in the tracker declared in `.lisa.config.json` (`tracker`: jira | github | linear) with a title that says whether Claude ran at all
185
185
  - Skips environment branches (`main`, `staging`, `dev`) and auto-fix branches (prevents infinite loops); failing checks on an auto-fix PR escalate to a ticket instead of re-entering
186
- - Requires `secrets: inherit` in the caller so tracker credentials (`JIRA_API_TOKEN` / `LINEAR_API_KEY`) reach the issue dispatcher
186
+ - Requires the caller to map `JIRA_API_TOKEN` / `LINEAR_API_KEY` (and `PAT`) explicitly in its `secrets:` block so tracker credentials reach the issue dispatcher — least-privilege by design; `secrets: inherit` also works mechanically but hands the chain every repo secret and trips SonarCloud security gates
187
187
 
188
188
  ### Claude Code Review Response (`claude-code-review-response.yml`)
189
189
 
@@ -25,9 +25,17 @@ jobs:
25
25
  head_branch: ${{ github.event.workflow_run.head_branch }}
26
26
  run_id: ${{ github.event.workflow_run.id }}
27
27
  package_manager: 'bun'
28
- # `secrets: inherit` (not an explicit mapping) is load-bearing: the
29
- # reusable workflow forwards secrets to the issue dispatcher, which needs
30
- # JIRA_API_TOKEN / LINEAR_API_KEY to file failure tickets in the tracker
31
- # declared in .lisa.config.json. An explicit CLAUDE_CODE_OAUTH_TOKEN-only
32
- # mapping silently strands those tickets in GitHub Issues.
33
- secrets: inherit
28
+ # Least-privilege mapping exactly the secrets the auto-fix chain uses.
29
+ # The tracker tokens are load-bearing: the reusable workflow forwards them
30
+ # to the failure-issue dispatcher, which needs JIRA_API_TOKEN /
31
+ # LINEAR_API_KEY to file tickets in the tracker declared in
32
+ # .lisa.config.json. A CLAUDE_CODE_OAUTH_TOKEN-only mapping silently
33
+ # strands those tickets in GitHub Issues. Unset secrets pass as empty —
34
+ # safe on repos that don't use that tracker. (`secrets: inherit` would
35
+ # also work but hands the chain every repo secret and trips
36
+ # SonarCloud/security-scanner gates.)
37
+ secrets:
38
+ CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
39
+ PAT: ${{ secrets.PAT }}
40
+ JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
41
+ LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
@@ -25,7 +25,14 @@ jobs:
25
25
  head_branch: ${{ github.event.workflow_run.head_branch }}
26
26
  run_id: ${{ github.event.workflow_run.id }}
27
27
  package_manager: 'bun'
28
- # `secrets: inherit` (not an explicit mapping) is load-bearing: the
29
- # reusable workflow needs tracker credentials (JIRA_API_TOKEN /
30
- # LINEAR_API_KEY) to reach the tracker declared in .lisa.config.json.
31
- secrets: inherit
28
+ # Least-privilege mapping exactly the secrets the deploy-fix chain
29
+ # uses. The tracker tokens are load-bearing: the reusable workflow needs
30
+ # JIRA_API_TOKEN / LINEAR_API_KEY to reach the tracker declared in
31
+ # .lisa.config.json. Unset secrets pass as empty. (`secrets: inherit`
32
+ # would also work but hands the chain every repo secret and trips
33
+ # SonarCloud/security-scanner gates.)
34
+ secrets:
35
+ CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
36
+ PAT: ${{ secrets.PAT }}
37
+ JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
38
+ LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}