@codyswann/lisa 2.300.13 → 2.301.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 (63) hide show
  1. package/cdk/create-only/.github/workflows/ci.yml +11 -0
  2. package/dist/core/upstream-evidence-manifest.js +11 -11
  3. package/expo/create-only/.github/workflows/ci.yml +11 -0
  4. package/expo/create-only/.github/workflows/deploy.yml +1 -0
  5. package/harper-fabric/copy-overwrite/.github/workflows/ci.yml +11 -0
  6. package/nestjs/create-only/.github/workflows/ci.yml +11 -0
  7. package/nestjs/create-only/.github/workflows/deploy.yml +1 -0
  8. package/package.json +1 -1
  9. package/phaser/copy-overwrite/.github/workflows/ci.yml +11 -0
  10. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  11. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  12. package/plugins/lisa-agy/plugin.json +1 -1
  13. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  14. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  15. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  16. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  17. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  18. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  19. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  20. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  21. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  22. package/plugins/lisa-expo-agy/plugin.json +1 -1
  23. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  24. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  25. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  26. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  27. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  28. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  29. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  32. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  33. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  37. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  38. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  42. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  43. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  47. package/plugins/lisa-rails-agy/plugin.json +1 -1
  48. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  52. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  53. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  57. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  58. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  60. package/rails/create-only/.github/workflows/ci.yml +10 -0
  61. package/rails/github-rulesets/quality-checks.json +4 -0
  62. package/typescript/create-only/.github/workflows/ci.yml +10 -0
  63. package/typescript/github-rulesets/quality-checks.json +4 -0
@@ -133,6 +133,11 @@ jobs:
133
133
  # Reference to the quality checks workflow
134
134
  permissions:
135
135
  contents: read
136
+ # work_item_traceability reads the tracker issue to verify the PR
137
+ # backlink. A reusable workflow can only DOWNGRADE the caller's
138
+ # grant, so without issues:read that job cannot enforce anything.
139
+ issues: read
140
+ pull-requests: read
136
141
  uses: CodySwannGT/lisa/.github/workflows/quality.yml@main
137
142
  with:
138
143
  node_version: '22.21.1'
@@ -143,3 +148,9 @@ jobs:
143
148
  GITGUARDIAN_API_KEY: ${{ secrets.GITGUARDIAN_API_KEY }}
144
149
  FOSSA_API_KEY: ${{ secrets.FOSSA_API_KEY }}
145
150
  MAESTRO_API_KEY: ${{ secrets.MAESTRO_API_KEY }}
151
+ # Only the configured tracker's credentials are used. tracker:
152
+ # github needs none of these; jira/linear cannot verify the PR
153
+ # backlink without them and report not-enforceable instead.
154
+ JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
155
+ JIRA_LOGIN: ${{ secrets.JIRA_LOGIN }}
156
+ LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
@@ -23,7 +23,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
23
23
  "cdk/copy-overwrite/tsconfig.json": "bd960df819bb1ce01163ac4b28721eea3f07d482f6c454cfea9a8dc90191033a",
24
24
  "cdk/copy-overwrite/vitest.cdk.ts": "aea238d214b7eb4c532cebe5bf732dc30b9fd04d938a215bd34a5ec2eff17046",
25
25
  "cdk/copy-overwrite/vitest.config.ts": "ce14179d4ab31011bb012ee1669af7d86b5189bdf2934e0bd9dd666a30e3d01e",
26
- "cdk/create-only/.github/workflows/ci.yml": "04cca8fbcb7a5c6da1aeb2b2d00d7a328d15618e4252f1d9dd495052d264d0f5",
26
+ "cdk/create-only/.github/workflows/ci.yml": "dc384ef9bd46af723cafd8d140f6d58d2630cfa8a7b07104254d8ecd4a556636",
27
27
  "cdk/create-only/.github/workflows/deploy.yml": "2746e78fb0fbe7b23b30bbcb0f83171e16f6804fd467b3d41d3c69970572af3f",
28
28
  "cdk/create-only/cdk.json": "f89030d8fe145a1dbabd59d89ddee4e16984f222d737f7fcf6b778d911e9fe40",
29
29
  "cdk/create-only/tsconfig.local.json": "d26253827e21fd7c41d30565fe3d339675f119e00bb24c5713a01f57ccd06602",
@@ -73,8 +73,8 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
73
73
  "expo/copy-overwrite/tsconfig.eslint.json": "375bb2ee8185e4a57d703e078ad57188f6d45b03b0fcbb16ef049fcf9b14c44b",
74
74
  "expo/copy-overwrite/tsconfig.expo.json": "55f3dfe80496f03152d40d364c5a9cabf3fdce3adc8cebea48ba5257d77b7aa9",
75
75
  "expo/copy-overwrite/tsconfig.json": "c92e2c2c109e8794ee351f634361ef46297f5a0cd606aaf5c19911da836df307",
76
- "expo/create-only/.github/workflows/ci.yml": "3ade267cca43e33c68e56b8c4f5d821ed03f642e5a11aa8b70b79e76ec41b96f",
77
- "expo/create-only/.github/workflows/deploy.yml": "0978b1f4e19e1ff66bb8cdd037d36a3751d4e917db7ceb5bcf100fad36768516",
76
+ "expo/create-only/.github/workflows/ci.yml": "bf75c9d3b4f4a2cb24c2214d9fc27a9cb2247a6694b0cf02c40032b4d3e87cd9",
77
+ "expo/create-only/.github/workflows/deploy.yml": "49a1ae719c1a917f7fee2fc9ef405397308d01b56d75d94a7d03e3dfadd4dce7",
78
78
  "expo/create-only/.github/workflows/maestro-e2e.yml": "444367a8cefaa81b484bc6eff5923c34177e10f6a67cbf1befec00c9d0d1d36b",
79
79
  "expo/create-only/.zap/baseline.conf": "ab18d74ba5270dd5d795e740cd6b1292bb78dc36c79a20c1e7b752d14c0c55f5",
80
80
  "expo/create-only/babel.config.js": "faaf96f0d43c724a240a7892584de54ae384eee9ef9d76430d081f37d9f92924",
@@ -97,7 +97,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
97
97
  "harper-fabric/copy-contents/.prettierignore": "478c782f4c5611187e21584dfd5522e37fc636c5eb03394fea3db45321c6712c",
98
98
  "harper-fabric/copy-contents/gitignore": "d091c40fd0ea3068491f1be0d6510090ae872ca95d0d058ef4595d6492d13897",
99
99
  "harper-fabric/copy-overwrite/.github/dependabot.yml": "e28fde0d906478b3fb7d6b7fc16f7fc5a4a0a20d8160f547f2b4be97c90578b7",
100
- "harper-fabric/copy-overwrite/.github/workflows/ci.yml": "6823d87b989f1fbeb2f471552a041f5c9476e67ece8f6ec7ba75e97738afe2f9",
100
+ "harper-fabric/copy-overwrite/.github/workflows/ci.yml": "d8227671ebec99255c2adac8ef76ec29cdfa5b8f4c56fe376a37dab08accc0cc",
101
101
  "harper-fabric/copy-overwrite/ast-grep/rules/harper/no-early-return-in-search-loop.yml": "c25106e1d4ee3566c70824ba4ecbc2ee0345014008aedb4fac56d0be23029264",
102
102
  "harper-fabric/copy-overwrite/ast-grep/rules/harper/no-empty-conditions-with-sort.yml": "d735e92ea25a4d8fbac8b45e06d73baf8b7cf0b38068623663b928dd6850e26e",
103
103
  "harper-fabric/copy-overwrite/ast-grep/rules/harper/no-full-table-scan.yml": "00f49de6372a3a2825e9e38b6d2d86ac1580e28c1e2e8c8fa07bee0cfe2ac0aa",
@@ -147,8 +147,8 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
147
147
  "nestjs/create-only/.github/k6/thresholds/normal.json": "1842cf0b617380ce641781589b4084b03aac1beeb4803a696b3ae6329710ad44",
148
148
  "nestjs/create-only/.github/k6/thresholds/relaxed.json": "350c18b2c588fd628db8a6e82fc5c0b3ffc8a09f1c89b64d1f530350bc64a9ca",
149
149
  "nestjs/create-only/.github/k6/thresholds/strict.json": "e121ec72de4596b95c013a8c71f03653bcdf057cf7f8d1fec6f0e13c1381867f",
150
- "nestjs/create-only/.github/workflows/ci.yml": "8db7de7f2e3eb2a1605539849a346b55281cfcd9951526f9d5a1757a210da3c6",
151
- "nestjs/create-only/.github/workflows/deploy.yml": "78abfa87639cb7506418dd34387963a0557614933d823e6fa0413395166b945b",
150
+ "nestjs/create-only/.github/workflows/ci.yml": "0985668e6d0478f1993bed8ccd398601d8e73376afd8775e1269ae129418152e",
151
+ "nestjs/create-only/.github/workflows/deploy.yml": "d1b91b1de805c58602764f9041e3c9755682509d8d1de5c2ee1f0ada96665dca",
152
152
  "nestjs/create-only/.zap/baseline.conf": "a7cd559b014555ef2efe7a6ce129384ec376ce4d66d5bc3ae9e2f3f883172c4d",
153
153
  "nestjs/create-only/scripts/zap-baseline.sh": "de3a66a780076f98d5c6306c03b5decac8afbc9ff37583e5e6463c56f3399e3e",
154
154
  "nestjs/create-only/tsconfig.local.json": "0b720ddad0d18f52dadf33bdc4a0aec0eb65c506bc8ebb692f880bdf31d1011d",
@@ -169,7 +169,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
169
169
  "oxlint/typescript.json": "c7352af5d92a97da1386edfbff873f284c932f5413dce87c4af27520097389aa",
170
170
  "phaser/copy-contents/.prettierignore": "3bd2e016bd4bd23f76d186a4a4ba72f47719b9aa1df5d3352ad5719d93e0bf49",
171
171
  "phaser/copy-contents/gitignore": "4b8d1a5817d35f64f5d4859f9184ebe2e1dc42e63f8e9269fff233e2ec258d6c",
172
- "phaser/copy-overwrite/.github/workflows/ci.yml": "02b7fa8ceb9950b72d000fa1688177e747ef549d1b49d2cb4b1db97ec94a3a61",
172
+ "phaser/copy-overwrite/.github/workflows/ci.yml": "7b037b5961569a09e8407e6b9bf9a91377208f76bc309680870c2b56ff2f4813",
173
173
  "phaser/copy-overwrite/.husky/pre-push.verify": "fef6694c2fde6178f46c62936d2b19515adce4fc8ac694ea66d8342aa1474ee7",
174
174
  "phaser/copy-overwrite/ast-grep/rule-tests/.gitkeep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
175
175
  "phaser/copy-overwrite/ast-grep/rules/phaser/no-canvas-renderer.yml": "bd0994bbb8f8e6bde2a1a581fb2cb8aa011d91822dabf4366f500359069726b3",
@@ -889,7 +889,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
889
889
  "rails/copy-overwrite/scripts/threshold-ratchet-compare.mjs": "4535a145c5c5cbee13bdf970bc91d390a264043604e607288cdd6bf28de56192",
890
890
  "rails/copy-overwrite/scripts/threshold-ratchet-families.mjs": "db14245ed89b483912af287bdee917a7a921dc21bb29b49be37fc799c05c413f",
891
891
  "rails/copy-overwrite/sgconfig.yml": "0ffe058c791d4d323f98104cf78c763bb0356d88739042060ceb86b6b1cb78d7",
892
- "rails/create-only/.github/workflows/ci.yml": "599805266a47b5c0039145a11df225d4db6c59d35b2ecc582a44d55ab7f4b1f0",
892
+ "rails/create-only/.github/workflows/ci.yml": "ad53014bdd6cf15bfadfaef7740b6094c3c7bd044f9d176c4938154da983529d",
893
893
  "rails/create-only/.github/workflows/claude-code-review-response.yml": "bfbe3127c4941c35886d324d439ae0302fbccd74a11cb4decf05a21195efa0e9",
894
894
  "rails/create-only/.github/workflows/claude-nightly-code-complexity.yml": "3943137c81ed212d7d3f35f7d7f6242a984fda43ed29a5f565ab5c2923d92606",
895
895
  "rails/create-only/.github/workflows/claude-nightly-test-coverage.yml": "f7f2eeb05ddd18e196c4b292c0a846e765ed8b67ddeacfc6b19c3d676d91e459",
@@ -911,7 +911,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
911
911
  "rails/create-only/spec/rails_helper.rb": "aa94dcec9eea6d238c7210ca9ee88ba009061f1ba59bd042eaf09b8f98582689",
912
912
  "rails/create-only/spec/spec_helper.rb": "4308dcddf2ee1b65986ff206a0feac62c8e3a1cae842b115fd2945b7563ed9cd",
913
913
  "rails/deletions.json": "eeadf9a2b1677913199a235091a8d6190477f3e2a5fd598d62cf658cb59a8099",
914
- "rails/github-rulesets/quality-checks.json": "ea42f2bb938881bc6ec129e7300a2b824313951031d4720f46e944c4dfe1a9da",
914
+ "rails/github-rulesets/quality-checks.json": "0ec1c366589edbaa6b8f45f940cef3ada5ed7b1a956d98d3fa6034b0f78fbc7c",
915
915
  "rails/merge/.claude/settings.json": "9c49f8c7c453f8749c90def3e22d412c3345c533d24b30dc7745ffa052ad6fa1",
916
916
  "scripts/build-plugins.sh": "d26321ea10bc3ed8cf096f900622cb4cf7a37117fabf9730f0fe5c9d949582fc",
917
917
  "scripts/check-duplicate-versions.mjs": "84d97e94eb834522848ddce951bb54ae9da1e4be252e2c51fed0c01c4f4d6b72",
@@ -1014,7 +1014,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
1014
1014
  "typescript/copy-overwrite/vitest.config.ts": "da92f06cc3ce68462c6f2f3d95adb1b1464591ce383a24e3334dc986e0c1e0fb",
1015
1015
  "typescript/create-only/.github/workflows/auto-update-pr-branches-dispatch.yml": "347f8a3830efdc3ad701fae0858994f4e45df8100844e91948b017b98115a28c",
1016
1016
  "typescript/create-only/.github/workflows/auto-update-pr-branches.yml": "cf185555bcbe8e9957333abcae2e0c20e00875f8d867f70134efbd2a5c974ee5",
1017
- "typescript/create-only/.github/workflows/ci.yml": "d8c7f65e408a21e344b3a518ddf088d5ada4b08eb24d6b2cfa38ec6755ca8b5a",
1017
+ "typescript/create-only/.github/workflows/ci.yml": "dac98b7ab5a7397461e459b2553101bfdc6451d28b42f3b0115056b62cfb8b1d",
1018
1018
  "typescript/create-only/.github/workflows/claude-ci-auto-fix.yml": "a9155c10d0c28eba0f77ec5bc2a2d99b0eeb5d499218aac81948d3f27e6aa4fb",
1019
1019
  "typescript/create-only/.github/workflows/claude-code-review-response.yml": "68bc8b53c2d4c58ab49b176796d27214415608fe94130e1f465c0bd41a100443",
1020
1020
  "typescript/create-only/.github/workflows/claude-deploy-auto-fix.yml": "5e0f7282b1b97a308bc5b95f6a4ef784d4dfbd02f3126bf9254fbf4576606daf",
@@ -1035,7 +1035,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
1035
1035
  "typescript/create-only/vitest.config.local.ts": "476738b351114a0efbcd3ae4ce1cf016307b55ee41ed8e87c35e28e4639d98f5",
1036
1036
  "typescript/create-only/vitest.thresholds.json": "ce04fe30ad6139f734dbc56d92a801c11cfd86a0d9e49c06c1c2d0a137beeffd",
1037
1037
  "typescript/deletions.json": "fe5f44b7a02148eacc429782e948b1c4aee302d1d56524cc16adec5489bbc308",
1038
- "typescript/github-rulesets/quality-checks.json": "89b9e09267cdb65865728d0e873de9c1225b8ca796e67f06fa8b72ccf6d4515e",
1038
+ "typescript/github-rulesets/quality-checks.json": "d92599b203071b99b8fac1422b8493d2546138961ef04ba98176bc400af60945",
1039
1039
  "typescript/merge/.claude/settings.json": "834e6456cae81f45073bbbb08bf731fef043efb30cae2658cb4a59f17e66d165",
1040
1040
  "typescript/merge/.oxlintrc.json": "4debc093acfd263eb81ae15894073ebf098513204f45f40b83fb8fa5353fa1f8",
1041
1041
  "typescript/package-lisa/package.lisa.json": "bdd1766c2f327290207874b04fd3a577a8188bb57c2fd77d482bb7d6ecf17355",
@@ -30,6 +30,11 @@ jobs:
30
30
  # Reference to the quality checks workflow
31
31
  permissions:
32
32
  contents: read
33
+ # work_item_traceability reads the tracker issue to verify the PR
34
+ # backlink. A reusable workflow can only DOWNGRADE the caller's
35
+ # grant, so without issues:read that job cannot enforce anything.
36
+ issues: read
37
+ pull-requests: read
33
38
  uses: CodySwannGT/lisa/.github/workflows/quality.yml@main
34
39
  with:
35
40
  node_version: '22.21.1'
@@ -47,6 +52,12 @@ jobs:
47
52
  GITGUARDIAN_API_KEY: ${{ secrets.GITGUARDIAN_API_KEY }}
48
53
  FOSSA_API_KEY: ${{ secrets.FOSSA_API_KEY }}
49
54
  MAESTRO_API_KEY: ${{ secrets.MAESTRO_API_KEY }}
55
+ # Only the configured tracker's credentials are used. tracker:
56
+ # github needs none of these; jira/linear cannot verify the PR
57
+ # backlink without them and report not-enforceable instead.
58
+ JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
59
+ JIRA_LOGIN: ${{ secrets.JIRA_LOGIN }}
60
+ LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
50
61
  lighthouse:
51
62
  name: 💡 Lighthouse CI
52
63
  needs: [quality]
@@ -92,6 +92,7 @@ jobs:
92
92
  needs: [determine_environment]
93
93
  permissions:
94
94
  contents: write
95
+ issues: read
95
96
  pull-requests: read
96
97
  with:
97
98
  environment: ${{ needs.determine_environment.outputs.environment }}
@@ -12,6 +12,11 @@ jobs:
12
12
  name: 🔍 Quality Checks
13
13
  permissions:
14
14
  contents: read
15
+ # work_item_traceability reads the tracker issue to verify the PR
16
+ # backlink. A reusable workflow can only DOWNGRADE the caller's
17
+ # grant, so without issues:read that job cannot enforce anything.
18
+ issues: read
19
+ pull-requests: read
15
20
  uses: CodySwannGT/lisa/.github/workflows/quality.yml@main
16
21
  with:
17
22
  node_version: '22.21.1'
@@ -23,3 +28,9 @@ jobs:
23
28
  GITGUARDIAN_API_KEY: ${{ secrets.GITGUARDIAN_API_KEY }}
24
29
  FOSSA_API_KEY: ${{ secrets.FOSSA_API_KEY }}
25
30
  MAESTRO_API_KEY: ${{ secrets.MAESTRO_API_KEY }}
31
+ # Only the configured tracker's credentials are used. tracker:
32
+ # github needs none of these; jira/linear cannot verify the PR
33
+ # backlink without them and report not-enforceable instead.
34
+ JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
35
+ JIRA_LOGIN: ${{ secrets.JIRA_LOGIN }}
36
+ LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
@@ -14,6 +14,11 @@ jobs:
14
14
  # Reference to the quality checks workflow
15
15
  permissions:
16
16
  contents: read
17
+ # work_item_traceability reads the tracker issue to verify the PR
18
+ # backlink. A reusable workflow can only DOWNGRADE the caller's
19
+ # grant, so without issues:read that job cannot enforce anything.
20
+ issues: read
21
+ pull-requests: read
17
22
  uses: CodySwannGT/lisa/.github/workflows/quality.yml@main
18
23
  with:
19
24
  node_version: '22.21.1'
@@ -25,6 +30,12 @@ jobs:
25
30
  GITGUARDIAN_API_KEY: ${{ secrets.GITGUARDIAN_API_KEY }}
26
31
  FOSSA_API_KEY: ${{ secrets.FOSSA_API_KEY }}
27
32
  MAESTRO_API_KEY: ${{ secrets.MAESTRO_API_KEY }}
33
+ # Only the configured tracker's credentials are used. tracker:
34
+ # github needs none of these; jira/linear cannot verify the PR
35
+ # backlink without them and report not-enforceable instead.
36
+ JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
37
+ JIRA_LOGIN: ${{ secrets.JIRA_LOGIN }}
38
+ LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
28
39
 
29
40
  zap:
30
41
  name: 🕷️ ZAP Baseline Scan
@@ -85,6 +85,7 @@ jobs:
85
85
  needs: [determine_environment]
86
86
  permissions:
87
87
  contents: write
88
+ issues: read
88
89
  pull-requests: read
89
90
  with:
90
91
  environment: ${{ needs.determine_environment.outputs.environment }}
package/package.json CHANGED
@@ -115,7 +115,7 @@
115
115
  "brace-expansion": ">=5.0.8"
116
116
  },
117
117
  "name": "@codyswann/lisa",
118
- "version": "2.300.13",
118
+ "version": "2.301.1",
119
119
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
120
120
  "main": "dist/index.js",
121
121
  "exports": {
@@ -15,6 +15,11 @@ jobs:
15
15
  name: 🔍 Quality Checks
16
16
  permissions:
17
17
  contents: read
18
+ # work_item_traceability reads the tracker issue to verify the PR
19
+ # backlink. A reusable workflow can only DOWNGRADE the caller's
20
+ # grant, so without issues:read that job cannot enforce anything.
21
+ issues: read
22
+ pull-requests: read
18
23
  uses: CodySwannGT/lisa/.github/workflows/quality.yml@main
19
24
  with:
20
25
  node_version: '22.21.1'
@@ -29,3 +34,9 @@ jobs:
29
34
  GITGUARDIAN_API_KEY: ${{ secrets.GITGUARDIAN_API_KEY }}
30
35
  FOSSA_API_KEY: ${{ secrets.FOSSA_API_KEY }}
31
36
  MAESTRO_API_KEY: ${{ secrets.MAESTRO_API_KEY }}
37
+ # Only the configured tracker's credentials are used. tracker:
38
+ # github needs none of these; jira/linear cannot verify the PR
39
+ # backlink without them and report not-enforceable instead.
40
+ JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
41
+ JIRA_LOGIN: ${{ secrets.JIRA_LOGIN }}
42
+ LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "AWS CDK-specific Lisa plugin.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Expo and React Native-specific skills, agents, rules, and MCP servers.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Harper/Fabric-specific Lisa rules for TypeScript component apps.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "NestJS-specific skills and migration write-protection hooks.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-phaser",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Phaser 4 game-development rules for TypeScript projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Ruby on Rails-specific skills and hooks for RuboCop and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-rails",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Ruby on Rails-specific hooks — RuboCop linting/formatting and ast-grep scanning on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "TypeScript-specific hooks for formatting, linting, and ast-grep scanning on edit.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-typescript",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "TypeScript-specific hooks — Prettier formatting, ESLint linting, ast-grep scanning, and error-suppression blocking on edit",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "Distributable LLM Wiki kernel — ingest, query, lint, and maintain a git-native markdown knowledge base across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "2.300.13",
3
+ "version": "2.301.1",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -20,6 +20,10 @@ jobs:
20
20
  contents: read
21
21
  checks: write
22
22
  pull-requests: write
23
+ # work_item_traceability reads the tracker issue to verify the PR
24
+ # backlink. A reusable workflow can only DOWNGRADE the caller's
25
+ # grant, so without issues:read that job cannot enforce anything.
26
+ issues: read
23
27
  uses: CodySwannGT/lisa/.github/workflows/quality-rails.yml@main
24
28
  # Rails projects default to PostgreSQL. For a MySQL app, uncomment:
25
29
  # with:
@@ -27,3 +31,9 @@ jobs:
27
31
  secrets:
28
32
  GITGUARDIAN_API_KEY: ${{ secrets.GITGUARDIAN_API_KEY }}
29
33
  FOSSA_API_KEY: ${{ secrets.FOSSA_API_KEY }}
34
+ # Only the configured tracker's credentials are used. tracker:
35
+ # github needs none of these; jira/linear cannot verify the PR
36
+ # backlink without them and report not-enforceable instead.
37
+ JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
38
+ JIRA_LOGIN: ${{ secrets.JIRA_LOGIN }}
39
+ LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
@@ -43,6 +43,10 @@
43
43
  {
44
44
  "context": "Quality Checks / Security",
45
45
  "integration_id": 15368
46
+ },
47
+ {
48
+ "context": "Quality Checks / 🔗 Work-Item Traceability",
49
+ "integration_id": 15368
46
50
  }
47
51
  ]
48
52
  }
@@ -14,6 +14,10 @@ jobs:
14
14
  permissions:
15
15
  contents: read
16
16
  pull-requests: read
17
+ # work_item_traceability reads the tracker issue to verify the PR
18
+ # backlink. A reusable workflow can only DOWNGRADE the caller's
19
+ # grant, so without issues:read that job cannot enforce anything.
20
+ issues: read
17
21
  uses: CodySwannGT/lisa/.github/workflows/quality.yml@main
18
22
  with:
19
23
  node_version: '22.21.1'
@@ -25,3 +29,9 @@ jobs:
25
29
  GITGUARDIAN_API_KEY: ${{ secrets.GITGUARDIAN_API_KEY }}
26
30
  FOSSA_API_KEY: ${{ secrets.FOSSA_API_KEY }}
27
31
  MAESTRO_API_KEY: ${{ secrets.MAESTRO_API_KEY }}
32
+ # Only the configured tracker's credentials are used. tracker:
33
+ # github needs none of these; jira/linear cannot verify the PR
34
+ # backlink without them and report not-enforceable instead.
35
+ JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
36
+ JIRA_LOGIN: ${{ secrets.JIRA_LOGIN }}
37
+ LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
@@ -59,6 +59,10 @@
59
59
  {
60
60
  "context": "🔍 Quality Checks / 🧪 Run Integration Tests",
61
61
  "integration_id": 15368
62
+ },
63
+ {
64
+ "context": "🔍 Quality Checks / 🔗 Work-Item Traceability",
65
+ "integration_id": 15368
62
66
  }
63
67
  ]
64
68
  }