@codyswann/lisa 3.23.0 → 3.23.2

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 (102) hide show
  1. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  2. package/dist/core/upstream-evidence-manifest.js +20 -69
  3. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  4. package/dist/migrations/ensure-quality-caller-scopes.d.ts.map +1 -1
  5. package/dist/migrations/ensure-quality-caller-scopes.js +1 -2
  6. package/dist/migrations/ensure-quality-caller-scopes.js.map +1 -1
  7. package/package.json +1 -1
  8. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  9. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  10. package/plugins/lisa/.codex-plugin/skills/lisa-doctor/SKILL.md +3 -5
  11. package/plugins/lisa/.codex-plugin/skills/lisa-drive-pr-to-merge/SKILL.md +3 -3
  12. package/plugins/lisa/.codex-plugin/skills/lisa-sync-down/SKILL.md +9 -16
  13. package/plugins/lisa/rules/reference/config-resolution.md +2 -2
  14. package/plugins/lisa/skills/lisa-doctor/SKILL.md +3 -5
  15. package/plugins/lisa/skills/lisa-drive-pr-to-merge/SKILL.md +3 -3
  16. package/plugins/lisa/skills/lisa-sync-down/SKILL.md +10 -17
  17. package/plugins/lisa-agy/plugin.json +1 -1
  18. package/plugins/lisa-agy/skills/lisa-doctor/SKILL.md +3 -5
  19. package/plugins/lisa-agy/skills/lisa-drive-pr-to-merge/SKILL.md +3 -3
  20. package/plugins/lisa-agy/skills/lisa-sync-down/SKILL.md +10 -17
  21. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  23. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  24. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  25. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  26. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  27. package/plugins/lisa-copilot/rules/reference/config-resolution.md +2 -2
  28. package/plugins/lisa-copilot/skills/lisa-doctor/SKILL.md +3 -5
  29. package/plugins/lisa-copilot/skills/lisa-drive-pr-to-merge/SKILL.md +3 -3
  30. package/plugins/lisa-copilot/skills/lisa-sync-down/SKILL.md +10 -17
  31. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +2 -2
  33. package/plugins/lisa-cursor/skills/lisa-doctor/SKILL.md +3 -5
  34. package/plugins/lisa-cursor/skills/lisa-drive-pr-to-merge/SKILL.md +3 -3
  35. package/plugins/lisa-cursor/skills/lisa-sync-down/SKILL.md +10 -17
  36. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  38. package/plugins/lisa-expo-agy/plugin.json +1 -1
  39. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  43. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  44. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  48. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  49. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  53. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  54. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  58. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  59. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  63. package/plugins/lisa-rails-agy/plugin.json +1 -1
  64. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  68. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  69. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  73. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  74. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  76. package/plugins/src/base/rules/reference/config-resolution.md +2 -2
  77. package/plugins/src/base/skills/lisa-doctor/SKILL.md +3 -5
  78. package/plugins/src/base/skills/lisa-drive-pr-to-merge/SKILL.md +3 -3
  79. package/plugins/src/base/skills/lisa-sync-down/SKILL.md +10 -17
  80. package/rails/deletions.json +6 -1
  81. package/scripts/detect-stale-workflow-inputs.mjs +7 -7
  82. package/scripts/generate-upstream-evidence-manifest.mjs +1 -0
  83. package/scripts/verify-health-deterministic-built.mjs +1 -1
  84. package/typescript/copy-contents/.husky/commit-msg +4 -1
  85. package/typescript/copy-contents/.husky/pre-commit +4 -1
  86. package/typescript/copy-contents/.husky/pre-push +8 -2
  87. package/typescript/copy-contents/.husky/prepare-commit-msg +4 -1
  88. package/typescript/deletions.json +14 -1
  89. package/rails/create-only/.github/workflows/claude-code-review-response.yml +0 -31
  90. package/rails/create-only/.github/workflows/claude-nightly-code-complexity.yml +0 -22
  91. package/rails/create-only/.github/workflows/claude-nightly-test-coverage.yml +0 -30
  92. package/rails/create-only/.github/workflows/claude-nightly-test-improvement.yml +0 -33
  93. package/rails/create-only/.github/workflows/claude-sync-down-branches.yml +0 -46
  94. package/scripts/migrate-deploy-order.sh +0 -161
  95. package/typescript/create-only/.github/workflows/claude-ci-auto-fix.yml +0 -42
  96. package/typescript/create-only/.github/workflows/claude-code-review-response.yml +0 -31
  97. package/typescript/create-only/.github/workflows/claude-deploy-auto-fix.yml +0 -39
  98. package/typescript/create-only/.github/workflows/claude-nightly-code-complexity.yml +0 -24
  99. package/typescript/create-only/.github/workflows/claude-nightly-test-coverage.yml +0 -31
  100. package/typescript/create-only/.github/workflows/claude-nightly-test-improvement.yml +0 -34
  101. package/typescript/create-only/.github/workflows/claude-sync-down-branches.yml +0 -46
  102. package/typescript/create-only/.github/workflows/claude.yml +0 -37
@@ -1,22 +0,0 @@
1
- # Seeded by Lisa on first setup — this file is YOURS.
2
- # Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
3
- # You can customize this file — Lisa will not overwrite it.
4
-
5
- name: Claude Nightly Code Complexity
6
-
7
- on:
8
- schedule:
9
- - cron: '0 5 * * 1-5'
10
- workflow_dispatch:
11
-
12
- permissions:
13
- contents: write
14
- issues: write
15
- pull-requests: write
16
- id-token: write
17
-
18
- jobs:
19
- reduce-complexity:
20
- uses: CodySwannGT/lisa/.github/workflows/reusable-claude-nightly-code-complexity-rails.yml@main
21
- secrets:
22
- CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
@@ -1,30 +0,0 @@
1
- # Seeded by Lisa on first setup — this file is YOURS.
2
- # Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
3
- # You can customize this file — Lisa will not overwrite it.
4
-
5
- name: Claude Nightly Test Coverage
6
-
7
- on:
8
- schedule:
9
- - cron: '0 4 * * 1-5'
10
- workflow_dispatch:
11
- inputs:
12
- coverage_increment:
13
- description: 'Percentage points to increase coverage per run'
14
- required: false
15
- default: 5
16
- type: number
17
-
18
- permissions:
19
- contents: write
20
- issues: write
21
- pull-requests: write
22
- id-token: write
23
-
24
- jobs:
25
- improve-coverage:
26
- uses: CodySwannGT/lisa/.github/workflows/reusable-claude-nightly-test-coverage-rails.yml@main
27
- with:
28
- coverage_increment: ${{ github.event.inputs.coverage_increment || 5 }}
29
- secrets:
30
- CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
@@ -1,33 +0,0 @@
1
- # Seeded by Lisa on first setup — this file is YOURS.
2
- # Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
3
- # You can customize this file — Lisa will not overwrite it.
4
-
5
- name: Claude Nightly Test Improvement
6
-
7
- on:
8
- schedule:
9
- - cron: '0 3 * * 1-5'
10
- workflow_dispatch:
11
- inputs:
12
- mode:
13
- description: 'Analysis mode'
14
- required: true
15
- default: 'nightly'
16
- type: choice
17
- options:
18
- - nightly
19
- - general
20
-
21
- permissions:
22
- contents: write
23
- issues: write
24
- pull-requests: write
25
- id-token: write
26
-
27
- jobs:
28
- improve-tests:
29
- uses: CodySwannGT/lisa/.github/workflows/reusable-claude-nightly-test-improvement-rails.yml@main
30
- with:
31
- mode: ${{ github.event.inputs.mode || 'nightly' }}
32
- secrets:
33
- CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
@@ -1,46 +0,0 @@
1
- # Seeded by Lisa on first setup — this file is YOURS.
2
- # Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
3
- # You can customize this file — Lisa will not overwrite it.
4
- #
5
- # Back-syncs merges down the env chain so hotfixes propagate.
6
- # Example: PR merged to main -> opens a sync PR to staging.
7
- # PR merged to staging -> opens a sync PR to dev.
8
- #
9
- # The source -> target chain is DERIVED from .lisa.config.json:
10
- # "deploy": {
11
- # "branches": { "dev": "dev", "staging": "staging", "production": "main" },
12
- # "order": ["dev", "staging", "production"] // low env -> high env
13
- # }
14
- # The reusable workflow walks deploy.order from the highest environment down,
15
- # mapping each env's branch to the next-lower env's branch. The example above
16
- # yields main -> staging and staging -> dev. Single-environment projects (one
17
- # entry in deploy.branches) produce an empty chain and the workflow no-ops.
18
- #
19
- # Customize for your project:
20
- # - `branches` (the trigger filter below): list each branch whose merged PRs
21
- # should *trigger* a back-sync — i.e. every non-lowest branch in deploy.order.
22
- # - To override the derived chain, pass it explicitly:
23
- # with:
24
- # chain: '{"main":"staging","staging":"dev"}'
25
- # An explicit `chain` always wins over the config-derived one.
26
-
27
- name: Claude Sync Down Branches
28
-
29
- on:
30
- pull_request:
31
- types: [closed]
32
- branches: [main, staging]
33
-
34
- permissions:
35
- contents: write
36
- pull-requests: write
37
- issues: write
38
- actions: read
39
- id-token: write
40
-
41
- jobs:
42
- sync:
43
- if: github.event.pull_request.merged == true
44
- uses: CodySwannGT/lisa/.github/workflows/reusable-claude-sync-down-branches.yml@main
45
- secrets:
46
- CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
@@ -1,161 +0,0 @@
1
- #!/usr/bin/env bash
2
- #
3
- # migrate-deploy-order.sh — backfill `deploy.order` into workspace projects and,
4
- # where provably safe, switch their back-sync wrapper from a hardcoded `chain`
5
- # to the config-derived one.
6
- #
7
- # Context: `reusable-claude-sync-down-branches.yml` now derives its source->target
8
- # chain from `.lisa.config.json` `deploy.order` + `deploy.branches`. An explicit
9
- # `chain:` in a project's `claude-sync-down-branches.yml` wrapper still overrides
10
- # the derived value, so this migration is OPT-IN and non-breaking.
11
- #
12
- # Per project (read from .lisa.workspaces.json):
13
- # 1. If no wrapper file → SKIP.
14
- # 2. If no deploy.branches in config → SKIP (cannot derive; keep explicit chain).
15
- # 3. If single-env → propose removing the (redundant) wrapper chain ONLY when it
16
- # derives to the same value; otherwise REVIEW (drift — chain targets envs the
17
- # config doesn't declare).
18
- # 4. If multi-env:
19
- # - Determine deploy.order (existing, or derive conventionally dev<staging<production).
20
- # - Compute the derived chain.
21
- # - SAFE → derived chain == current wrapper chain: add deploy.order (if missing)
22
- # and drop the wrapper `chain:` line. Behavior provably unchanged.
23
- # - REVIEW → derived chain != wrapper chain, or env rank unknown: report, change nothing.
24
- #
25
- # Default mode is DRY RUN. Pass --apply to write changes.
26
- #
27
- # Usage:
28
- # scripts/migrate-deploy-order.sh # dry run, all workspace projects
29
- # scripts/migrate-deploy-order.sh --apply # write changes
30
- # scripts/migrate-deploy-order.sh --workspaces /path/to/.lisa.workspaces.json
31
-
32
- set -euo pipefail
33
-
34
- APPLY=false
35
- WS="${HOME}/workspace/lisa/.lisa.workspaces.json"
36
- while [ $# -gt 0 ]; do
37
- case "$1" in
38
- --apply) APPLY=true; shift ;;
39
- --workspaces) WS="$2"; shift 2 ;;
40
- *) echo "Unknown arg: $1" >&2; exit 2 ;;
41
- esac
42
- done
43
-
44
- command -v jq >/dev/null || { echo "jq is required" >&2; exit 1; }
45
- [ -f "$WS" ] || { echo "Workspaces file not found: $WS" >&2; exit 1; }
46
-
47
- # Conventional env rank (low -> high). Unknown env names => REVIEW.
48
- env_rank() {
49
- case "$1" in
50
- dev|develop|development) echo 10 ;;
51
- qa|test) echo 20 ;;
52
- staging|stage|stg) echo 30 ;;
53
- preprod|preproduction|uat) echo 40 ;;
54
- prod|production|prd) echo 50 ;;
55
- *) echo "" ;;
56
- esac
57
- }
58
-
59
- # Derive deploy.order (JSON array, low->high) from deploy.branches keys by rank.
60
- # Echoes the array on success, or "ERR_UNKNOWN:<env>" if a key has no known rank.
61
- derive_order() {
62
- local cfg="$1" envs e r pairs
63
- envs=$(jq -r '(.deploy.branches // {}) | keys[]' "$cfg")
64
- pairs=""
65
- while IFS= read -r e; do
66
- [ -z "$e" ] && continue
67
- r=$(env_rank "$e")
68
- [ -z "$r" ] && { echo "ERR_UNKNOWN:$e"; return 0; }
69
- pairs+="$r $e"$'\n'
70
- done <<< "$envs"
71
- printf '%s' "$pairs" | sort -n | awk '{print $2}' | jq -R . | jq -sc .
72
- }
73
-
74
- # Compute derived chain JSON from a config that already has branches+order.
75
- derive_chain() {
76
- jq -e -r '
77
- (.deploy.branches // {}) as $b | (.deploy.order // []) as $o
78
- | ($b|keys|sort) as $bk | ($o|sort) as $ok
79
- | if ($b|length)<=1 then "{}"
80
- elif (($b|[.[]]|unique|length)<=1) then "{}"
81
- elif ($o|length)==0 then "ERR_NO_ORDER"
82
- elif ($bk!=$ok) then "ERR_MISMATCH"
83
- else ($o|reverse) as $hl
84
- | [ range(0;($hl|length)-1) | {($b[$hl[.]]):$b[$hl[.+1]]} ] | add | tojson end
85
- ' "$1" 2>/dev/null || echo "ERR_PARSE"
86
- }
87
-
88
- # Extract the explicit chain JSON from a wrapper file, or empty string if none.
89
- wrapper_chain() {
90
- grep -oE "chain:[[:space:]]*'[^']*'" "$1" 2>/dev/null | head -1 | sed -E "s/chain:[[:space:]]*'(.*)'/\1/" || true
91
- }
92
-
93
- SAFE=0; REVIEW=0; SKIP=0
94
- echo "Mode: $([ "$APPLY" = true ] && echo APPLY || echo DRY-RUN)"
95
- echo "Workspaces: $WS"
96
- echo
97
-
98
- while IFS= read -r proj; do
99
- dir="${proj/#\~/$HOME}"
100
- cfg="$dir/.lisa.config.json"
101
- wrap="$dir/.github/workflows/claude-sync-down-branches.yml"
102
-
103
- [ -f "$wrap" ] || { printf "SKIP %-45s (no wrapper)\n" "$proj"; SKIP=$((SKIP+1)); continue; }
104
- [ -f "$cfg" ] || { printf "SKIP %-45s (no .lisa.config.json — keep explicit chain)\n" "$proj"; SKIP=$((SKIP+1)); continue; }
105
-
106
- nb=$(jq -r '(.deploy.branches // {}) | length' "$cfg" 2>/dev/null || echo 0)
107
- [ "$nb" -ge 1 ] 2>/dev/null || { printf "SKIP %-45s (no deploy.branches — keep explicit chain)\n" "$proj"; SKIP=$((SKIP+1)); continue; }
108
-
109
- cur_chain=$(wrapper_chain "$wrap")
110
- has_order=$(jq -r 'has("deploy") and (.deploy|has("order"))' "$cfg" 2>/dev/null || echo false)
111
-
112
- if [ "$has_order" = "true" ]; then
113
- order_json=$(jq -c '.deploy.order' "$cfg")
114
- else
115
- order_json=$(derive_order "$cfg")
116
- if [[ "$order_json" == ERR_UNKNOWN:* ]]; then
117
- printf "REVIEW %-45s (unknown env name '%s' — set deploy.order manually)\n" "$proj" "${order_json#ERR_UNKNOWN:}"
118
- REVIEW=$((REVIEW+1)); continue
119
- fi
120
- fi
121
-
122
- # Compute derived chain against a config that has both branches and the order.
123
- tmp=$(mktemp)
124
- jq --argjson o "$order_json" '.deploy.order = $o' "$cfg" > "$tmp"
125
- derived=$(derive_chain "$tmp")
126
-
127
- case "$derived" in
128
- ERR_*) printf "REVIEW %-45s (%s computing chain)\n" "$proj" "$derived"; REVIEW=$((REVIEW+1)); rm -f "$tmp"; continue ;;
129
- esac
130
-
131
- # Normalise both chains for comparison (sorted keys).
132
- norm() { echo "$1" | jq -cS . 2>/dev/null || echo "$1"; }
133
- d_norm=$(norm "$derived"); c_norm=$([ -n "$cur_chain" ] && norm "$cur_chain" || echo '""')
134
-
135
- if [ -z "$cur_chain" ]; then
136
- # No explicit wrapper chain already → just ensure deploy.order is present.
137
- if [ "$has_order" = "true" ]; then
138
- printf "SKIP %-45s (already config-driven, deploy.order set)\n" "$proj"; SKIP=$((SKIP+1))
139
- else
140
- printf "SAFE %-45s add deploy.order=%s (wrapper already chain-less)\n" "$proj" "$order_json"
141
- SAFE=$((SAFE+1))
142
- if [ "$APPLY" = true ]; then mv "$tmp" "$cfg"; tmp=""; fi
143
- fi
144
- elif [ "$d_norm" = "$c_norm" ]; then
145
- printf "SAFE %-45s derived==wrapper (%s); add order + drop wrapper chain\n" "$proj" "$derived"
146
- SAFE=$((SAFE+1))
147
- if [ "$APPLY" = true ]; then
148
- [ "$has_order" = "true" ] || { mv "$tmp" "$cfg"; tmp=""; }
149
- # Drop the `chain:` line and the now-orphaned `with:` if it becomes empty.
150
- perl -0pi -e 's/^[[:space:]]*with:\n[[:space:]]*chain:[[:space:]]*'"'"'[^'"'"']*'"'"'\n//m; s/^[[:space:]]*chain:[[:space:]]*'"'"'[^'"'"']*'"'"'\n//m;' "$wrap"
151
- fi
152
- else
153
- printf "REVIEW %-45s derived=%s != wrapper=%s\n" "$proj" "$derived" "$cur_chain"
154
- REVIEW=$((REVIEW+1))
155
- fi
156
- [ -n "${tmp:-}" ] && rm -f "$tmp" || true
157
- done < <(jq -r 'keys[]' "$WS")
158
-
159
- echo
160
- echo "Summary: SAFE=$SAFE REVIEW=$REVIEW SKIP=$SKIP"
161
- [ "$APPLY" = false ] && echo "(dry run — re-run with --apply to write)"
@@ -1,42 +0,0 @@
1
- # Seeded by Lisa on first setup — this file is YOURS.
2
- # Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
3
- # You can customize this file — Lisa will not overwrite it.
4
-
5
- name: Claude CI Auto-Fix
6
-
7
- on:
8
- workflow_run:
9
- workflows: ['🔍 CI Quality Checks']
10
- types: [completed]
11
-
12
- permissions:
13
- actions: read
14
- contents: write
15
- issues: write
16
- pull-requests: write
17
- id-token: write
18
-
19
- jobs:
20
- auto-fix:
21
- uses: CodySwannGT/lisa/.github/workflows/reusable-claude-ci-auto-fix.yml@main
22
- with:
23
- workflow_run_conclusion: ${{ github.event.workflow_run.conclusion }}
24
- head_repo_full_name: ${{ github.event.workflow_run.head_repository.full_name }}
25
- repo_full_name: ${{ github.repository }}
26
- head_branch: ${{ github.event.workflow_run.head_branch }}
27
- run_id: ${{ github.event.workflow_run.id }}
28
- package_manager: 'bun'
29
- # Least-privilege mapping — exactly the secrets the auto-fix chain uses.
30
- # The tracker tokens are load-bearing: the reusable workflow forwards them
31
- # to the failure-issue dispatcher, which needs JIRA_API_TOKEN /
32
- # LINEAR_API_KEY to file tickets in the tracker declared in
33
- # .lisa.config.json. A CLAUDE_CODE_OAUTH_TOKEN-only mapping silently
34
- # strands those tickets in GitHub Issues. Unset secrets pass as empty —
35
- # safe on repos that don't use that tracker. (`secrets: inherit` would
36
- # also work but hands the chain every repo secret and trips
37
- # SonarCloud/security-scanner gates.)
38
- secrets:
39
- CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
40
- PAT: ${{ secrets.PAT }}
41
- JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
42
- LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
@@ -1,31 +0,0 @@
1
- # Seeded by Lisa on first setup — this file is YOURS.
2
- # Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
3
- # You can customize this file — Lisa will not overwrite it.
4
-
5
- name: Claude Code Review Response
6
-
7
- on:
8
- pull_request_review:
9
- types: [submitted]
10
-
11
- permissions:
12
- actions: write
13
- checks: write
14
- contents: write
15
- issues: write
16
- pull-requests: write
17
- id-token: write
18
-
19
- jobs:
20
- respond-to-review:
21
- uses: CodySwannGT/lisa/.github/workflows/reusable-claude-code-review-response.yml@main
22
- with:
23
- review_user_login: ${{ github.event.review.user.login }}
24
- pr_user_login: ${{ github.event.pull_request.user.login }}
25
- pr_head_ref: ${{ github.event.pull_request.head.ref }}
26
- pr_number: ${{ github.event.pull_request.number }}
27
- repo_owner: ${{ github.repository_owner }}
28
- repo_name: ${{ github.event.repository.name }}
29
- package_manager: 'bun'
30
- secrets:
31
- CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
@@ -1,39 +0,0 @@
1
- # Seeded by Lisa on first setup — this file is YOURS.
2
- # Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
3
- # You can customize this file — Lisa will not overwrite it.
4
-
5
- name: Claude Deploy Auto-Fix
6
-
7
- on:
8
- workflow_run:
9
- workflows: ['Release and Deploy', '🚀 Release and Deploy']
10
- types: [completed]
11
-
12
- permissions:
13
- actions: read
14
- contents: write
15
- issues: write
16
- pull-requests: write
17
- id-token: write
18
-
19
- jobs:
20
- auto-fix:
21
- uses: CodySwannGT/lisa/.github/workflows/reusable-claude-deploy-auto-fix.yml@main
22
- with:
23
- workflow_run_conclusion: ${{ github.event.workflow_run.conclusion }}
24
- head_repo_full_name: ${{ github.event.workflow_run.head_repository.full_name }}
25
- repo_full_name: ${{ github.repository }}
26
- head_branch: ${{ github.event.workflow_run.head_branch }}
27
- run_id: ${{ github.event.workflow_run.id }}
28
- package_manager: 'bun'
29
- # Least-privilege mapping — exactly the secrets the deploy-fix chain
30
- # uses. The tracker tokens are load-bearing: the reusable workflow needs
31
- # JIRA_API_TOKEN / LINEAR_API_KEY to reach the tracker declared in
32
- # .lisa.config.json. Unset secrets pass as empty. (`secrets: inherit`
33
- # would also work but hands the chain every repo secret and trips
34
- # SonarCloud/security-scanner gates.)
35
- secrets:
36
- CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
37
- PAT: ${{ secrets.PAT }}
38
- JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
39
- LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
@@ -1,24 +0,0 @@
1
- # Seeded by Lisa on first setup — this file is YOURS.
2
- # Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
3
- # You can customize this file — Lisa will not overwrite it.
4
-
5
- name: Claude Nightly Code Complexity
6
-
7
- on:
8
- schedule:
9
- - cron: '0 5 * * 1-5'
10
- workflow_dispatch:
11
-
12
- permissions:
13
- contents: write
14
- issues: write
15
- pull-requests: write
16
- id-token: write
17
-
18
- jobs:
19
- reduce-complexity:
20
- uses: CodySwannGT/lisa/.github/workflows/reusable-claude-nightly-code-complexity.yml@main
21
- with:
22
- package_manager: 'bun'
23
- secrets:
24
- CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
@@ -1,31 +0,0 @@
1
- # Seeded by Lisa on first setup — this file is YOURS.
2
- # Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
3
- # You can customize this file — Lisa will not overwrite it.
4
-
5
- name: Claude Nightly Test Coverage
6
-
7
- on:
8
- schedule:
9
- - cron: '0 4 * * 1-5'
10
- workflow_dispatch:
11
- inputs:
12
- coverage_increment:
13
- description: 'Percentage points to increase coverage per run'
14
- required: false
15
- default: 5
16
- type: number
17
-
18
- permissions:
19
- contents: write
20
- issues: write
21
- pull-requests: write
22
- id-token: write
23
-
24
- jobs:
25
- improve-coverage:
26
- uses: CodySwannGT/lisa/.github/workflows/reusable-claude-nightly-test-coverage.yml@main
27
- with:
28
- coverage_increment: ${{ github.event.inputs.coverage_increment || 5 }}
29
- package_manager: 'bun'
30
- secrets:
31
- CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
@@ -1,34 +0,0 @@
1
- # Seeded by Lisa on first setup — this file is YOURS.
2
- # Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
3
- # You can customize this file — Lisa will not overwrite it.
4
-
5
- name: Claude Nightly Test Improvement
6
-
7
- on:
8
- schedule:
9
- - cron: '0 3 * * 1-5'
10
- workflow_dispatch:
11
- inputs:
12
- mode:
13
- description: 'Analysis mode'
14
- required: true
15
- default: 'nightly'
16
- type: choice
17
- options:
18
- - nightly
19
- - general
20
-
21
- permissions:
22
- contents: write
23
- issues: write
24
- pull-requests: write
25
- id-token: write
26
-
27
- jobs:
28
- improve-tests:
29
- uses: CodySwannGT/lisa/.github/workflows/reusable-claude-nightly-test-improvement.yml@main
30
- with:
31
- mode: ${{ github.event.inputs.mode || 'nightly' }}
32
- package_manager: 'bun'
33
- secrets:
34
- CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
@@ -1,46 +0,0 @@
1
- # Seeded by Lisa on first setup — this file is YOURS.
2
- # Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
3
- # You can customize this file — Lisa will not overwrite it.
4
- #
5
- # Back-syncs merges down the env chain so hotfixes propagate.
6
- # Example: PR merged to main -> opens a sync PR to staging.
7
- # PR merged to staging -> opens a sync PR to dev.
8
- #
9
- # The source -> target chain is DERIVED from .lisa.config.json:
10
- # "deploy": {
11
- # "branches": { "dev": "dev", "staging": "staging", "production": "main" },
12
- # "order": ["dev", "staging", "production"] // low env -> high env
13
- # }
14
- # The reusable workflow walks deploy.order from the highest environment down,
15
- # mapping each env's branch to the next-lower env's branch. The example above
16
- # yields main -> staging and staging -> dev. Single-environment projects (one
17
- # entry in deploy.branches) produce an empty chain and the workflow no-ops.
18
- #
19
- # Customize for your project:
20
- # - `branches` (the trigger filter below): list each branch whose merged PRs
21
- # should *trigger* a back-sync — i.e. every non-lowest branch in deploy.order.
22
- # - To override the derived chain, pass it explicitly:
23
- # with:
24
- # chain: '{"main":"staging","staging":"dev"}'
25
- # An explicit `chain` always wins over the config-derived one.
26
-
27
- name: Claude Sync Down Branches
28
-
29
- on:
30
- pull_request:
31
- types: [closed]
32
- branches: [main, staging]
33
-
34
- permissions:
35
- contents: write
36
- pull-requests: write
37
- issues: write
38
- actions: read
39
- id-token: write
40
-
41
- jobs:
42
- sync:
43
- if: github.event.pull_request.merged == true
44
- uses: CodySwannGT/lisa/.github/workflows/reusable-claude-sync-down-branches.yml@main
45
- secrets:
46
- CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
@@ -1,37 +0,0 @@
1
- # Seeded by Lisa on first setup — this file is YOURS.
2
- # Lisa will not overwrite it. (copy-overwrite assets ARE replaced each run.)
3
- # You can customize this file — Lisa will not overwrite it.
4
-
5
- name: Claude Code
6
-
7
- on:
8
- issue_comment:
9
- types: [created]
10
- pull_request_review_comment:
11
- types: [created]
12
- issues:
13
- types: [opened, assigned]
14
- pull_request_review:
15
- types: [submitted]
16
-
17
- permissions:
18
- actions: read
19
- contents: write
20
- issues: write
21
- pull-requests: write
22
- id-token: write
23
-
24
- jobs:
25
- claude:
26
- if: |
27
- contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association || github.event.review.author_association || github.event.issue.author_association || '')
28
- uses: CodySwannGT/lisa/.github/workflows/reusable-claude.yml@main
29
- with:
30
- event_name: ${{ github.event_name }}
31
- author_association: ${{ github.event.comment.author_association || github.event.review.author_association || github.event.issue.author_association || '' }}
32
- comment_body: ${{ github.event.comment.body || '' }}
33
- review_body: ${{ github.event.review.body || '' }}
34
- issue_body: ${{ github.event.issue.body || '' }}
35
- issue_title: ${{ github.event.issue.title || '' }}
36
- secrets:
37
- CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}