@codyswann/lisa 2.173.0 → 2.173.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 (100) hide show
  1. package/package.json +1 -1
  2. package/plugins/lisa/.claude-plugin/plugin.json +2 -2
  3. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  4. package/plugins/lisa/agents/jira-agent.md +3 -2
  5. package/plugins/lisa/hooks/enforce-team-first.sh +29 -14
  6. package/plugins/lisa/skills/jira-evidence/SKILL.md +3 -3
  7. package/plugins/lisa/skills/jira-evidence/scripts/post-evidence.sh +21 -4
  8. package/plugins/lisa/skills/jira-sync/SKILL.md +1 -1
  9. package/plugins/lisa/skills/tracker-evidence/SKILL.md +1 -1
  10. package/plugins/lisa-agy/agents/jira-agent.md +3 -2
  11. package/plugins/lisa-agy/plugin.json +1 -1
  12. package/plugins/lisa-agy/skills/jira-evidence/SKILL.md +3 -3
  13. package/plugins/lisa-agy/skills/jira-evidence/scripts/post-evidence.sh +21 -4
  14. package/plugins/lisa-agy/skills/jira-sync/SKILL.md +1 -1
  15. package/plugins/lisa-agy/skills/tracker-evidence/SKILL.md +1 -1
  16. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  17. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  18. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  19. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  20. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  21. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-copilot/agents/jira-agent.agent.md +3 -2
  23. package/plugins/lisa-copilot/skills/jira-evidence/SKILL.md +3 -3
  24. package/plugins/lisa-copilot/skills/jira-evidence/scripts/post-evidence.sh +21 -4
  25. package/plugins/lisa-copilot/skills/jira-sync/SKILL.md +1 -1
  26. package/plugins/lisa-copilot/skills/tracker-evidence/SKILL.md +1 -1
  27. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-cursor/agents/jira-agent.md +3 -2
  29. package/plugins/lisa-cursor/skills/jira-evidence/SKILL.md +3 -3
  30. package/plugins/lisa-cursor/skills/jira-evidence/scripts/post-evidence.sh +21 -4
  31. package/plugins/lisa-cursor/skills/jira-sync/SKILL.md +1 -1
  32. package/plugins/lisa-cursor/skills/tracker-evidence/SKILL.md +1 -1
  33. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  35. package/plugins/lisa-expo/skills/jira-evidence/SKILL.md +2 -2
  36. package/plugins/lisa-expo/skills/jira-evidence/scripts/post-evidence.sh +21 -4
  37. package/plugins/lisa-expo-agy/plugin.json +1 -1
  38. package/plugins/lisa-expo-agy/skills/jira-evidence/SKILL.md +2 -2
  39. package/plugins/lisa-expo-agy/skills/jira-evidence/scripts/post-evidence.sh +21 -4
  40. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-expo-copilot/skills/jira-evidence/SKILL.md +2 -2
  42. package/plugins/lisa-expo-copilot/skills/jira-evidence/scripts/post-evidence.sh +21 -4
  43. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-expo-cursor/skills/jira-evidence/SKILL.md +2 -2
  45. package/plugins/lisa-expo-cursor/skills/jira-evidence/scripts/post-evidence.sh +21 -4
  46. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  48. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  49. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  53. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  54. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  58. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  59. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  63. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  64. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  68. package/plugins/lisa-rails/skills/jira-evidence/SKILL.md +2 -2
  69. package/plugins/lisa-rails/skills/jira-evidence/agents/openai.yaml +2 -2
  70. package/plugins/lisa-rails/skills/jira-evidence/scripts/post-evidence.sh +21 -4
  71. package/plugins/lisa-rails-agy/plugin.json +1 -1
  72. package/plugins/lisa-rails-agy/skills/jira-evidence/SKILL.md +2 -2
  73. package/plugins/lisa-rails-agy/skills/jira-evidence/scripts/post-evidence.sh +21 -4
  74. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-rails-copilot/skills/jira-evidence/SKILL.md +2 -2
  76. package/plugins/lisa-rails-copilot/skills/jira-evidence/scripts/post-evidence.sh +21 -4
  77. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-rails-cursor/skills/jira-evidence/SKILL.md +2 -2
  79. package/plugins/lisa-rails-cursor/skills/jira-evidence/scripts/post-evidence.sh +21 -4
  80. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  82. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  83. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  84. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  85. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  86. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  87. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  88. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  89. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  90. package/plugins/src/base/.claude-plugin/plugin.json +1 -1
  91. package/plugins/src/base/agents/jira-agent.md +3 -2
  92. package/plugins/src/base/hooks/enforce-team-first.sh +29 -14
  93. package/plugins/src/base/skills/jira-evidence/SKILL.md +3 -3
  94. package/plugins/src/base/skills/jira-evidence/scripts/post-evidence.sh +21 -4
  95. package/plugins/src/base/skills/jira-sync/SKILL.md +1 -1
  96. package/plugins/src/base/skills/tracker-evidence/SKILL.md +1 -1
  97. package/plugins/src/expo/skills/jira-evidence/SKILL.md +2 -2
  98. package/plugins/src/expo/skills/jira-evidence/scripts/post-evidence.sh +21 -4
  99. package/plugins/src/rails/skills/jira-evidence/SKILL.md +2 -2
  100. package/plugins/src/rails/skills/jira-evidence/scripts/post-evidence.sh +21 -4
@@ -14,7 +14,8 @@
14
14
  # 2. Updates the GitHub PR description with evidence/comment.md
15
15
  # 3. Uploads image evidence as JIRA attachments
16
16
  # 4. Posts/updates the JIRA comment with evidence/comment.txt
17
- # 5. Moves the JIRA ticket to "Code Review"
17
+ # 5. Moves the JIRA ticket to the configured jira.workflow.review status
18
+ # (skipped entirely when review is unconfigured — stays in claimed)
18
19
 
19
20
  set -euo pipefail
20
21
 
@@ -152,10 +153,26 @@ else
152
153
  echo "$RESP" | grep -v "HTTP_CODE:" | head -3
153
154
  fi
154
155
 
155
- # ── Step 5: Move ticket to Code Review ──────────────────────────────────────
156
+ # ── Step 5: Move ticket to the configured review status (if any) ────────────
157
+ # A transition may target only a status named in .lisa.config.json jira.workflow.
158
+ # `review` is OPTIONAL: when it is not configured, the build lifecycle stays in
159
+ # `claimed` until `done` — do NOT invent a transition. (See config-resolution.md.)
160
+ REVIEW=""
161
+ if [ -f .lisa.config.json ]; then
162
+ _cfg=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.json 2>/dev/null)
163
+ [ -n "$_cfg" ] && REVIEW="$_cfg"
164
+ fi
165
+ if [ -f .lisa.config.local.json ]; then
166
+ _local=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.local.json 2>/dev/null)
167
+ [ -n "$_local" ] && REVIEW="$_local"
168
+ fi
156
169
  echo ""
157
- echo "==> Moving $TICKET_ID to Code Review..."
158
- jira issue move "$TICKET_ID" "Code Review" 2>&1 && echo " ✓ Ticket moved to Code Review" || echo " WARNING: Could not move ticket" >&2
170
+ if [ -n "$REVIEW" ]; then
171
+ echo "==> Moving $TICKET_ID to $REVIEW..."
172
+ jira issue move "$TICKET_ID" "$REVIEW" 2>&1 && echo " ✓ Ticket moved to $REVIEW" || echo " WARNING: Could not move ticket to $REVIEW (not a valid transition?); leaving in current status" >&2
173
+ else
174
+ echo "==> No jira.workflow.review configured; leaving $TICKET_ID in its current (claimed) status per config-resolution."
175
+ fi
159
176
 
160
177
  echo ""
161
178
  echo "==> Done!"
@@ -67,7 +67,7 @@ Based on the milestone, suggest (but don't automatically perform) a status trans
67
67
  | Milestone | Suggested Status |
68
68
  |-----------|-----------------|
69
69
  | Plan created | "In Progress" |
70
- | PR ready | "In Review" |
70
+ | PR ready | configured `jira.workflow.review` status, or no transition when unconfigured |
71
71
  | PR merged | "Done" |
72
72
 
73
73
  ### Step 5: Parent Status Rollup (`--rollup`)
@@ -47,6 +47,6 @@ The checklist is tracker-agnostic — the same shape works on JIRA, GitHub Issue
47
47
  - **Feature/UX completion:** state plainly which acceptance criteria each screenshot covers, and call out any deferred or out-of-scope surface explicitly so QA/PM doesn't have to infer.
48
48
  6. **"What would help me confirm" (bug) / "How to QA" (feature) section.** Concrete actionable retest steps with the exact selection criteria (e.g., "pick a record whose Status column shows `—`, not `Processing` or `Pending Review`").
49
49
  7. **Explicit invitation to be corrected.** End with a line like *"If any of the steps I listed are different from what you expected / actually did, please tell me explicitly which step I got wrong."* Non-optional — small differences (which record, which device, exact tap order, expected behavior) change everything, and naming the door open short-circuits ticket bounce-loops.
50
- 8. **Workflow transition** is the vendor skill's job, not yours — it'll move the ticket per the configured tracker (JIRA: Reassign to reporter for bug repro / move to Awaiting QA for feature; GitHub: direct `claimed` → configured `done` after a successful build; Linear: equivalent state). You don't transition manually.
50
+ 8. **Workflow transition** is the vendor skill's job, not yours — it'll move the ticket per the configured tracker (JIRA: Reassign to reporter for bug repro / move to the configured review status when one exists, otherwise leave it in `claimed`; GitHub: direct `claimed` → configured `done` after a successful build; Linear: equivalent state). You don't transition manually.
51
51
 
52
52
  **Why this format:** It (a) gives the reporter a frame-by-frame they can compare against, (b) avoids the JIRA image-collapse failure mode while still working everywhere else, (c) names the most plausible discrepancies up front so the loop short-circuits, (d) explicitly opens the door to being corrected so tickets don't bounce on assumed alignment. The same mechanics that resolve a stuck bug ticket also give QA an unambiguous handoff for a freshly-built feature.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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: jira-evidence
3
- description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to Code Review. Reusable by any skill that captures screenshots and generates evidence/comment.txt + evidence/comment.md."
3
+ description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to the configured review status only when `jira.workflow.review` is set (otherwise leave it in `claimed`). Reusable by any skill that captures screenshots and generates evidence/comment.txt + evidence/comment.md."
4
4
  ---
5
5
 
6
6
  # JIRA Evidence Posting
@@ -44,7 +44,7 @@ bash .claude/skills/jira-evidence/scripts/post-evidence.sh PROJ-123 ./evidence 4
44
44
  3. **Update PR description** — Replaces or appends the `## Evidence` section in the PR body using `gh pr edit`
45
45
  4. **Upload JIRA attachments** — Uploads screenshots via REST API v3 so `!filename.png!` wiki markup renders inline
46
46
  5. **Post JIRA comment** — Posts `comment.txt` as a new comment via REST API v2 (wiki markup with embedded images)
47
- 6. **Move ticket to Code Review** — Transitions the JIRA ticket via `jira issue move`
47
+ 6. **Move ticket to the configured review status** — Resolves `jira.workflow.review` (or the `jira.workflow.code_review` alias) from `.lisa.config.json` / `.lisa.config.local.json` and transitions via `jira issue move`. `review` is optional; when unset, the ticket stays in `claimed` and this step is skipped. Never transition to a status not named in `config.jira.workflow`. If the configured status is not a valid transition from the current state, log a warning and skip.
48
48
 
49
49
  ## Screenshot Naming Convention
50
50
 
@@ -14,7 +14,8 @@
14
14
  # 2. Updates the GitHub PR description with evidence/comment.md
15
15
  # 3. Uploads image evidence as JIRA attachments
16
16
  # 4. Posts/updates the JIRA comment with evidence/comment.txt
17
- # 5. Moves the JIRA ticket to "Code Review"
17
+ # 5. Moves the JIRA ticket to the configured jira.workflow.review status
18
+ # (skipped entirely when review is unconfigured — stays in claimed)
18
19
 
19
20
  set -euo pipefail
20
21
 
@@ -152,10 +153,26 @@ else
152
153
  echo "$RESP" | grep -v "HTTP_CODE:" | head -3
153
154
  fi
154
155
 
155
- # ── Step 5: Move ticket to Code Review ──────────────────────────────────────
156
+ # ── Step 5: Move ticket to the configured review status (if any) ────────────
157
+ # A transition may target only a status named in .lisa.config.json jira.workflow.
158
+ # `review` is OPTIONAL: when it is not configured, the build lifecycle stays in
159
+ # `claimed` until `done` — do NOT invent a transition. (See config-resolution.md.)
160
+ REVIEW=""
161
+ if [ -f .lisa.config.json ]; then
162
+ _cfg=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.json 2>/dev/null)
163
+ [ -n "$_cfg" ] && REVIEW="$_cfg"
164
+ fi
165
+ if [ -f .lisa.config.local.json ]; then
166
+ _local=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.local.json 2>/dev/null)
167
+ [ -n "$_local" ] && REVIEW="$_local"
168
+ fi
156
169
  echo ""
157
- echo "==> Moving $TICKET_ID to Code Review..."
158
- jira issue move "$TICKET_ID" "Code Review" 2>&1 && echo " ✓ Ticket moved to Code Review" || echo " WARNING: Could not move ticket" >&2
170
+ if [ -n "$REVIEW" ]; then
171
+ echo "==> Moving $TICKET_ID to $REVIEW..."
172
+ jira issue move "$TICKET_ID" "$REVIEW" 2>&1 && echo " ✓ Ticket moved to $REVIEW" || echo " WARNING: Could not move ticket to $REVIEW (not a valid transition?); leaving in current status" >&2
173
+ else
174
+ echo "==> No jira.workflow.review configured; leaving $TICKET_ID in its current (claimed) status per config-resolution."
175
+ fi
159
176
 
160
177
  echo ""
161
178
  echo "==> Done!"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.173.0",
3
+ "version": "2.173.2",
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: jira-evidence
3
- description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to Code Review. Reusable by any skill that captures screenshots and generates evidence/comment.txt + evidence/comment.md."
3
+ description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to the configured review status only when `jira.workflow.review` is set (otherwise leave it in `claimed`). Reusable by any skill that captures screenshots and generates evidence/comment.txt + evidence/comment.md."
4
4
  ---
5
5
 
6
6
  # JIRA Evidence Posting
@@ -44,7 +44,7 @@ bash .claude/skills/jira-evidence/scripts/post-evidence.sh PROJ-123 ./evidence 4
44
44
  3. **Update PR description** — Replaces or appends the `## Evidence` section in the PR body using `gh pr edit`
45
45
  4. **Upload JIRA attachments** — Uploads screenshots via REST API v3 so `!filename.png!` wiki markup renders inline
46
46
  5. **Post JIRA comment** — Posts `comment.txt` as a new comment via REST API v2 (wiki markup with embedded images)
47
- 6. **Move ticket to Code Review** — Transitions the JIRA ticket via `jira issue move`
47
+ 6. **Move ticket to the configured review status** — Resolves `jira.workflow.review` (or the `jira.workflow.code_review` alias) from `.lisa.config.json` / `.lisa.config.local.json` and transitions via `jira issue move`. `review` is optional; when unset, the ticket stays in `claimed` and this step is skipped. Never transition to a status not named in `config.jira.workflow`. If the configured status is not a valid transition from the current state, log a warning and skip.
48
48
 
49
49
  ## Screenshot Naming Convention
50
50
 
@@ -14,7 +14,8 @@
14
14
  # 2. Updates the GitHub PR description with evidence/comment.md
15
15
  # 3. Uploads image evidence as JIRA attachments
16
16
  # 4. Posts/updates the JIRA comment with evidence/comment.txt
17
- # 5. Moves the JIRA ticket to "Code Review"
17
+ # 5. Moves the JIRA ticket to the configured jira.workflow.review status
18
+ # (skipped entirely when review is unconfigured — stays in claimed)
18
19
 
19
20
  set -euo pipefail
20
21
 
@@ -152,10 +153,26 @@ else
152
153
  echo "$RESP" | grep -v "HTTP_CODE:" | head -3
153
154
  fi
154
155
 
155
- # ── Step 5: Move ticket to Code Review ──────────────────────────────────────
156
+ # ── Step 5: Move ticket to the configured review status (if any) ────────────
157
+ # A transition may target only a status named in .lisa.config.json jira.workflow.
158
+ # `review` is OPTIONAL: when it is not configured, the build lifecycle stays in
159
+ # `claimed` until `done` — do NOT invent a transition. (See config-resolution.md.)
160
+ REVIEW=""
161
+ if [ -f .lisa.config.json ]; then
162
+ _cfg=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.json 2>/dev/null)
163
+ [ -n "$_cfg" ] && REVIEW="$_cfg"
164
+ fi
165
+ if [ -f .lisa.config.local.json ]; then
166
+ _local=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.local.json 2>/dev/null)
167
+ [ -n "$_local" ] && REVIEW="$_local"
168
+ fi
156
169
  echo ""
157
- echo "==> Moving $TICKET_ID to Code Review..."
158
- jira issue move "$TICKET_ID" "Code Review" 2>&1 && echo " ✓ Ticket moved to Code Review" || echo " WARNING: Could not move ticket" >&2
170
+ if [ -n "$REVIEW" ]; then
171
+ echo "==> Moving $TICKET_ID to $REVIEW..."
172
+ jira issue move "$TICKET_ID" "$REVIEW" 2>&1 && echo " ✓ Ticket moved to $REVIEW" || echo " WARNING: Could not move ticket to $REVIEW (not a valid transition?); leaving in current status" >&2
173
+ else
174
+ echo "==> No jira.workflow.review configured; leaving $TICKET_ID in its current (claimed) status per config-resolution."
175
+ fi
159
176
 
160
177
  echo ""
161
178
  echo "==> Done!"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.173.0",
3
+ "version": "2.173.2",
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: jira-evidence
3
- description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to Code Review. Reusable by any skill that captures screenshots and generates evidence/comment.txt + evidence/comment.md."
3
+ description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to the configured review status only when `jira.workflow.review` is set (otherwise leave it in `claimed`). Reusable by any skill that captures screenshots and generates evidence/comment.txt + evidence/comment.md."
4
4
  ---
5
5
 
6
6
  # JIRA Evidence Posting
@@ -44,7 +44,7 @@ bash .claude/skills/jira-evidence/scripts/post-evidence.sh PROJ-123 ./evidence 4
44
44
  3. **Update PR description** — Replaces or appends the `## Evidence` section in the PR body using `gh pr edit`
45
45
  4. **Upload JIRA attachments** — Uploads screenshots via REST API v3 so `!filename.png!` wiki markup renders inline
46
46
  5. **Post JIRA comment** — Posts `comment.txt` as a new comment via REST API v2 (wiki markup with embedded images)
47
- 6. **Move ticket to Code Review** — Transitions the JIRA ticket via `jira issue move`
47
+ 6. **Move ticket to the configured review status** — Resolves `jira.workflow.review` (or the `jira.workflow.code_review` alias) from `.lisa.config.json` / `.lisa.config.local.json` and transitions via `jira issue move`. `review` is optional; when unset, the ticket stays in `claimed` and this step is skipped. Never transition to a status not named in `config.jira.workflow`. If the configured status is not a valid transition from the current state, log a warning and skip.
48
48
 
49
49
  ## Screenshot Naming Convention
50
50
 
@@ -14,7 +14,8 @@
14
14
  # 2. Updates the GitHub PR description with evidence/comment.md
15
15
  # 3. Uploads image evidence as JIRA attachments
16
16
  # 4. Posts/updates the JIRA comment with evidence/comment.txt
17
- # 5. Moves the JIRA ticket to "Code Review"
17
+ # 5. Moves the JIRA ticket to the configured jira.workflow.review status
18
+ # (skipped entirely when review is unconfigured — stays in claimed)
18
19
 
19
20
  set -euo pipefail
20
21
 
@@ -152,10 +153,26 @@ else
152
153
  echo "$RESP" | grep -v "HTTP_CODE:" | head -3
153
154
  fi
154
155
 
155
- # ── Step 5: Move ticket to Code Review ──────────────────────────────────────
156
+ # ── Step 5: Move ticket to the configured review status (if any) ────────────
157
+ # A transition may target only a status named in .lisa.config.json jira.workflow.
158
+ # `review` is OPTIONAL: when it is not configured, the build lifecycle stays in
159
+ # `claimed` until `done` — do NOT invent a transition. (See config-resolution.md.)
160
+ REVIEW=""
161
+ if [ -f .lisa.config.json ]; then
162
+ _cfg=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.json 2>/dev/null)
163
+ [ -n "$_cfg" ] && REVIEW="$_cfg"
164
+ fi
165
+ if [ -f .lisa.config.local.json ]; then
166
+ _local=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.local.json 2>/dev/null)
167
+ [ -n "$_local" ] && REVIEW="$_local"
168
+ fi
156
169
  echo ""
157
- echo "==> Moving $TICKET_ID to Code Review..."
158
- jira issue move "$TICKET_ID" "Code Review" 2>&1 && echo " ✓ Ticket moved to Code Review" || echo " WARNING: Could not move ticket" >&2
170
+ if [ -n "$REVIEW" ]; then
171
+ echo "==> Moving $TICKET_ID to $REVIEW..."
172
+ jira issue move "$TICKET_ID" "$REVIEW" 2>&1 && echo " ✓ Ticket moved to $REVIEW" || echo " WARNING: Could not move ticket to $REVIEW (not a valid transition?); leaving in current status" >&2
173
+ else
174
+ echo "==> No jira.workflow.review configured; leaving $TICKET_ID in its current (claimed) status per config-resolution."
175
+ fi
159
176
 
160
177
  echo ""
161
178
  echo "==> Done!"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "2.173.0",
3
+ "version": "2.173.2",
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: jira-evidence
3
- description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to Code Review. Reusable by any skill that captures screenshots and generates evidence/comment.txt + evidence/comment.md."
3
+ description: "Upload screenshots to GitHub pr-assets release, update PR description with evidence, upload attachments to JIRA, post wiki markup comment, and move ticket to the configured review status only when `jira.workflow.review` is set (otherwise leave it in `claimed`). Reusable by any skill that captures screenshots and generates evidence/comment.txt + evidence/comment.md."
4
4
  ---
5
5
 
6
6
  # JIRA Evidence Posting
@@ -44,7 +44,7 @@ bash .claude/skills/jira-evidence/scripts/post-evidence.sh PROJ-123 ./evidence 4
44
44
  3. **Update PR description** — Replaces or appends the `## Evidence` section in the PR body using `gh pr edit`
45
45
  4. **Upload JIRA attachments** — Uploads screenshots via REST API v3 so `!filename.png!` wiki markup renders inline
46
46
  5. **Post JIRA comment** — Posts `comment.txt` as a new comment via REST API v2 (wiki markup with embedded images)
47
- 6. **Move ticket to Code Review** — Transitions the JIRA ticket via `jira issue move`
47
+ 6. **Move ticket to the configured review status** — Resolves `jira.workflow.review` (or the `jira.workflow.code_review` alias) from `.lisa.config.json` / `.lisa.config.local.json` and transitions via `jira issue move`. `review` is optional; when unset, the ticket stays in `claimed` and this step is skipped. Never transition to a status not named in `config.jira.workflow`. If the configured status is not a valid transition from the current state, log a warning and skip.
48
48
 
49
49
  ## Screenshot Naming Convention
50
50
 
@@ -14,7 +14,8 @@
14
14
  # 2. Updates the GitHub PR description with evidence/comment.md
15
15
  # 3. Uploads image evidence as JIRA attachments
16
16
  # 4. Posts/updates the JIRA comment with evidence/comment.txt
17
- # 5. Moves the JIRA ticket to "Code Review"
17
+ # 5. Moves the JIRA ticket to the configured jira.workflow.review status
18
+ # (skipped entirely when review is unconfigured — stays in claimed)
18
19
 
19
20
  set -euo pipefail
20
21
 
@@ -152,10 +153,26 @@ else
152
153
  echo "$RESP" | grep -v "HTTP_CODE:" | head -3
153
154
  fi
154
155
 
155
- # ── Step 5: Move ticket to Code Review ──────────────────────────────────────
156
+ # ── Step 5: Move ticket to the configured review status (if any) ────────────
157
+ # A transition may target only a status named in .lisa.config.json jira.workflow.
158
+ # `review` is OPTIONAL: when it is not configured, the build lifecycle stays in
159
+ # `claimed` until `done` — do NOT invent a transition. (See config-resolution.md.)
160
+ REVIEW=""
161
+ if [ -f .lisa.config.json ]; then
162
+ _cfg=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.json 2>/dev/null)
163
+ [ -n "$_cfg" ] && REVIEW="$_cfg"
164
+ fi
165
+ if [ -f .lisa.config.local.json ]; then
166
+ _local=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.local.json 2>/dev/null)
167
+ [ -n "$_local" ] && REVIEW="$_local"
168
+ fi
156
169
  echo ""
157
- echo "==> Moving $TICKET_ID to Code Review..."
158
- jira issue move "$TICKET_ID" "Code Review" 2>&1 && echo " ✓ Ticket moved to Code Review" || echo " WARNING: Could not move ticket" >&2
170
+ if [ -n "$REVIEW" ]; then
171
+ echo "==> Moving $TICKET_ID to $REVIEW..."
172
+ jira issue move "$TICKET_ID" "$REVIEW" 2>&1 && echo " ✓ Ticket moved to $REVIEW" || echo " WARNING: Could not move ticket to $REVIEW (not a valid transition?); leaving in current status" >&2
173
+ else
174
+ echo "==> No jira.workflow.review configured; leaving $TICKET_ID in its current (claimed) status per config-resolution."
175
+ fi
159
176
 
160
177
  echo ""
161
178
  echo "==> Done!"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "2.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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.173.0",
3
+ "version": "2.173.2",
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: jira-evidence
3
- description: "Upload evidence to GitHub pr-assets release, update PR description, upload attachments to JIRA, post comment, and move ticket to Code Review. Reusable by any skill that captures evidence and generates evidence/comment.txt + evidence/comment.md."
3
+ description: "Upload evidence to GitHub pr-assets release, update PR description, upload attachments to JIRA, post comment, and move ticket to the configured review status only when `jira.workflow.review` is set (otherwise leave it in `claimed`). Reusable by any skill that captures evidence and generates evidence/comment.txt + evidence/comment.md."
4
4
  ---
5
5
 
6
6
  # JIRA Evidence Posting
@@ -44,7 +44,7 @@ bash .claude/skills/jira-evidence/scripts/post-evidence.sh PROJ-123 ./evidence 4
44
44
  3. **Update PR description** — Replaces or appends the `## Evidence` section in the PR body using `gh pr edit`
45
45
  4. **Upload JIRA attachments** — Uploads image evidence via REST API v3 so `!filename.png!` wiki markup renders inline
46
46
  5. **Post JIRA comment** — Posts `comment.txt` as a new comment via REST API v2 (wiki markup)
47
- 6. **Move ticket to Code Review** — Transitions the JIRA ticket via `jira issue move`
47
+ 6. **Move ticket to the configured review status** — Resolves `jira.workflow.review` (or the `jira.workflow.code_review` alias) from `.lisa.config.json` / `.lisa.config.local.json` and transitions via `jira issue move`. `review` is optional; when unset, the ticket stays in `claimed` and this step is skipped. Never transition to a status not named in `config.jira.workflow`. If the configured status is not a valid transition from the current state, log a warning and skip.
48
48
 
49
49
  ## Evidence Naming Conventions
50
50
 
@@ -1,4 +1,4 @@
1
1
  display_name: "Jira Evidence"
2
- short_description: "Upload evidence to GitHub pr-assets release, update PR description, upload attachments to JIRA, post comment, and move ticket to Code Review"
2
+ short_description: "Upload evidence to GitHub pr-assets release, update PR description, upload attachments to JIRA, post comment, and move ticket to the…"
3
3
  default_prompt:
4
- - "Use $jira-evidence: Upload evidence to GitHub pr-assets release, update PR description, upload attachments to JIRA, post comment, and move ticket to Code Review."
4
+ - "Use $jira-evidence: Upload evidence to GitHub pr-assets release, update PR description, upload attachments to JIRA, post comment, and move ticket to the…."