@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.
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +2 -2
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/agents/jira-agent.md +3 -2
- package/plugins/lisa/hooks/enforce-team-first.sh +29 -14
- package/plugins/lisa/skills/jira-evidence/SKILL.md +3 -3
- package/plugins/lisa/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa/skills/jira-sync/SKILL.md +1 -1
- package/plugins/lisa/skills/tracker-evidence/SKILL.md +1 -1
- package/plugins/lisa-agy/agents/jira-agent.md +3 -2
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/jira-evidence/SKILL.md +3 -3
- package/plugins/lisa-agy/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-agy/skills/jira-sync/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/tracker-evidence/SKILL.md +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/agents/jira-agent.agent.md +3 -2
- package/plugins/lisa-copilot/skills/jira-evidence/SKILL.md +3 -3
- package/plugins/lisa-copilot/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-copilot/skills/jira-sync/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/tracker-evidence/SKILL.md +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/agents/jira-agent.md +3 -2
- package/plugins/lisa-cursor/skills/jira-evidence/SKILL.md +3 -3
- package/plugins/lisa-cursor/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-cursor/skills/jira-sync/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/tracker-evidence/SKILL.md +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-expo/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-agy/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-expo-agy/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-expo-copilot/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-expo-cursor/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-rails/skills/jira-evidence/agents/openai.yaml +2 -2
- package/plugins/lisa-rails/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-agy/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-rails-agy/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-rails-copilot/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/lisa-rails-cursor/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/agents/jira-agent.md +3 -2
- package/plugins/src/base/hooks/enforce-team-first.sh +29 -14
- package/plugins/src/base/skills/jira-evidence/SKILL.md +3 -3
- package/plugins/src/base/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/src/base/skills/jira-sync/SKILL.md +1 -1
- package/plugins/src/base/skills/tracker-evidence/SKILL.md +1 -1
- package/plugins/src/expo/skills/jira-evidence/SKILL.md +2 -2
- package/plugins/src/expo/skills/jira-evidence/scripts/post-evidence.sh +21 -4
- package/plugins/src/rails/skills/jira-evidence/SKILL.md +2 -2
- 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
|
|
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
|
|
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
|
-
|
|
158
|
-
|
|
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: jira-evidence
|
|
3
|
-
description: "Upload evidence to GitHub pr-assets release, update PR description, upload attachments to JIRA, post comment, and move ticket to
|
|
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
|
|
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
|
|
|
@@ -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
|
|
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
|
|
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
|
-
|
|
158
|
-
|
|
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: jira-evidence
|
|
3
|
-
description: "Upload evidence to GitHub pr-assets release, update PR description, upload attachments to JIRA, post comment, and move ticket to
|
|
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
|
|
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
|
|
|
@@ -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
|
|
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
|
|
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
|
-
|
|
158
|
-
|
|
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: jira-evidence
|
|
3
|
-
description: "Upload evidence to GitHub pr-assets release, update PR description, upload attachments to JIRA, post comment, and move ticket to
|
|
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
|
|
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
|
|
|
@@ -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
|
|
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
|
|
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
|
-
|
|
158
|
-
|
|
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!"
|
|
@@ -107,7 +107,7 @@ Use the `jira-sync` skill to update the ticket at these milestones:
|
|
|
107
107
|
Use the `jira-evidence` skill to:
|
|
108
108
|
- Upload verification evidence to the GitHub PR
|
|
109
109
|
- Post evidence summary as a JIRA comment
|
|
110
|
-
- Transition the ticket to
|
|
110
|
+
- Transition the ticket to the configured `jira.workflow.review` status **only if it is set**; if `review` is unconfigured, leave the ticket in `claimed` (do not transition).
|
|
111
111
|
|
|
112
112
|
### 8. Suggest Status Transition
|
|
113
113
|
|
|
@@ -116,7 +116,7 @@ Based on the milestone, suggest (but don't auto-transition). Status role names a
|
|
|
116
116
|
| Milestone | Suggested role | Default status |
|
|
117
117
|
|-----------|----------------|----------------|
|
|
118
118
|
| Plan created | `claimed` | `In Progress` |
|
|
119
|
-
| PR ready | (review-equivalent — project's
|
|
119
|
+
| PR ready | (review-equivalent — project's review status) | the configured `jira.workflow.review` status, or **no transition** when `review` is unconfigured |
|
|
120
120
|
| PR merged | `done` (env-aware) | `Done` (or env-keyed variant per `jira.workflow.done`) |
|
|
121
121
|
|
|
122
122
|
Note: `done` may be a string or an env-keyed map (`{ dev, staging, production }`). When suggesting the PR-merged transition, the env is implied by the PR's base branch via `deploy.branches` — surface the resolved status name to the human; do not auto-transition.
|
|
@@ -124,6 +124,7 @@ Note: `done` may be a string or an env-keyed map (`{ dev, staging, production }`
|
|
|
124
124
|
## Rules
|
|
125
125
|
|
|
126
126
|
- Never auto-transition ticket status, with one explicit exception: when `jira-verify` returns `FAIL` for the pre-flight gate (Step 2), transition to the configured `blocked` status, add the configured `human_needed` marker label (`jira.labels.human_needed`, default `Human Needed`), and reassign to the Reporter. Every other status change remains a suggestion the human confirms.
|
|
127
|
+
- Any transition is config-bound: never invent transitions; a transition may target only a status named in `config.jira.workflow`. Don't guess from the live workflow. The evidence-time review hop (Step 7) follows this rule too — it is config-bound, optional, and skipped when `jira.workflow.review` is absent (the ticket stays in `claimed`).
|
|
127
128
|
- Always read the full ticket graph via `jira-read-ticket` before determining intent — don't rely on ticket type alone
|
|
128
129
|
- Never create or materially edit a ticket by calling MCP write tools directly — always delegate to `jira-write-ticket` so relationships, Gherkin criteria, and metadata gates are enforced
|
|
129
130
|
- If sign-in credentials are in the ticket, extract and pass them to the flow. If the ticket touches an authenticated surface and credentials are missing, that is a Step 2 failure — block and reassign rather than guessing.
|
|
@@ -9,10 +9,13 @@
|
|
|
9
9
|
# - UserPromptSubmit : detects /lisa:research|plan|implement|intake|debrief in the
|
|
10
10
|
# raw prompt and arms enforcement for the session
|
|
11
11
|
# - PreToolUse : detects the same skills via a `Skill` tool call,
|
|
12
|
-
# arms enforcement, and blocks bypass tool calls
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
# team
|
|
12
|
+
# arms enforcement, and blocks bypass tool calls until
|
|
13
|
+
# the team is established — i.e. until a TeamCreate
|
|
14
|
+
# (older Claude Code) or the first Agent spawn
|
|
15
|
+
# (implicit-team model, Claude Code >= 2.1.178) fires
|
|
16
|
+
# - PostToolUse : on a successful Claude TeamCreate OR a successful
|
|
17
|
+
# Agent spawn (implicit team), marks the session as
|
|
18
|
+
# team-established (lifts enforcement)
|
|
16
19
|
# - SubagentStart : marks the new subagent session as a teammate so
|
|
17
20
|
# it is exempt — teammates inherit the lead's team
|
|
18
21
|
# and must never create a second team (double-create
|
|
@@ -85,7 +88,12 @@ case "$HOOK_EVENT" in
|
|
|
85
88
|
|
|
86
89
|
PostToolUse)
|
|
87
90
|
TOOL_NAME=$(printf '%s' "$INPUT" | jq -r '.tool_name // empty' 2>/dev/null || true)
|
|
88
|
-
|
|
91
|
+
# A successful TeamCreate (older Claude Code) OR a successful Agent spawn
|
|
92
|
+
# (Claude Code >= 2.1.178, where TeamCreate/TeamDelete were removed in favor
|
|
93
|
+
# of the implicit-team model — the team forms automatically when the lead
|
|
94
|
+
# spawns its first teammate via the Agent tool) marks the session as
|
|
95
|
+
# team-established and lifts enforcement.
|
|
96
|
+
if [ "$TOOL_NAME" = "TeamCreate" ] || [ "$TOOL_NAME" = "Agent" ]; then
|
|
89
97
|
ERROR=$(printf '%s' "$INPUT" | jq -r '.tool_response.error // empty' 2>/dev/null || true)
|
|
90
98
|
IS_ERROR=$(printf '%s' "$INPUT" | jq -r '.tool_response.is_error // empty' 2>/dev/null || true)
|
|
91
99
|
if [ -z "$ERROR" ] && [ "$IS_ERROR" != "true" ]; then
|
|
@@ -136,9 +144,12 @@ if [ -f "$TEAM_FLAG" ]; then
|
|
|
136
144
|
exit 0
|
|
137
145
|
fi
|
|
138
146
|
|
|
139
|
-
# These
|
|
147
|
+
# These are the path forward; never block them.
|
|
148
|
+
# - ToolSearch / TeamCreate : the older explicit-team path (Claude Code < 2.1.178)
|
|
149
|
+
# - Agent : the implicit-team path (Claude Code >= 2.1.178) —
|
|
150
|
+
# spawning the first teammate IS what forms the team
|
|
140
151
|
case "$TOOL_NAME" in
|
|
141
|
-
ToolSearch|TeamCreate)
|
|
152
|
+
ToolSearch|TeamCreate|Agent)
|
|
142
153
|
exit 0
|
|
143
154
|
;;
|
|
144
155
|
esac
|
|
@@ -163,21 +174,25 @@ fi
|
|
|
163
174
|
ACTIVE_SKILL=$(cat "$SKILL_FLAG" 2>/dev/null || echo "lisa:???")
|
|
164
175
|
cat >&2 <<EOF
|
|
165
176
|
Blocked: this session invoked /${ACTIVE_SKILL}, which is an agent-team flow.
|
|
166
|
-
In Claude, before any other tool call, you must
|
|
177
|
+
In Claude, before any other tool call, you must establish the team by spawning
|
|
178
|
+
your first teammate:
|
|
167
179
|
|
|
168
|
-
|
|
169
|
-
|
|
180
|
+
Call the \`Agent\` tool with an appropriate \`subagent_type\`.
|
|
181
|
+
|
|
182
|
+
The team forms automatically the moment the lead spawns its first teammate —
|
|
183
|
+
this is the implicit-team model on Claude Code >= 2.1.178, where the explicit
|
|
184
|
+
\`TeamCreate\`/\`TeamDelete\` tools were removed. (On older Claude Code the
|
|
185
|
+
\`TeamCreate\` tool path still works and is also accepted.)
|
|
170
186
|
|
|
171
187
|
The current attempt to call \`${TOOL_NAME}\` is a team-bypass path. Reading
|
|
172
188
|
the ticket, exploring the code, fetching context — those are tasks for the
|
|
173
|
-
team you are about to
|
|
174
|
-
exists.
|
|
189
|
+
team you are about to spawn, not for the lead session before the team exists.
|
|
175
190
|
|
|
176
191
|
If you are running Lisa in a non-Claude harness, this Claude enforcement hook
|
|
177
192
|
should not be installed; follow the runtime-aware orchestration preamble in the
|
|
178
193
|
skill instead.
|
|
179
194
|
|
|
180
|
-
Re-read the orchestration preamble in /${ACTIVE_SKILL} and start
|
|
181
|
-
|
|
195
|
+
Re-read the orchestration preamble in /${ACTIVE_SKILL} and start by spawning a
|
|
196
|
+
teammate with the \`Agent\` tool.
|
|
182
197
|
EOF
|
|
183
198
|
exit 2
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jira-evidence
|
|
3
|
-
description: "Upload text evidence to GitHub pr-assets release, update PR description, post JIRA comment with code blocks, and move ticket to the configured
|
|
3
|
+
description: "Upload text evidence to GitHub pr-assets release, update PR description, post JIRA comment with code blocks, 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
|
|
7
7
|
|
|
8
8
|
## Workflow resolution
|
|
9
9
|
|
|
10
|
-
The post-build review status is read from `.lisa.config.json` `jira.workflow.review` (or `jira.workflow.code_review`)
|
|
10
|
+
The post-build review status is read from `.lisa.config.json` `jira.workflow.review` (or `jira.workflow.code_review`). `review` is optional; when unset, the ticket stays in `claimed` until `done` and this skill skips the transition. Never transition to a status that is not named in `config.jira.workflow`. If the configured status is not a valid transition from the current state, log a warning and skip.
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
|
-
REVIEW="
|
|
13
|
+
REVIEW=""
|
|
14
14
|
if [ -f .lisa.config.json ]; then
|
|
15
15
|
_cfg=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.json 2>/dev/null)
|
|
16
16
|
[ -n "$_cfg" ] && REVIEW="$_cfg"
|
|
@@ -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
|
|
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
|
|
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
|
-
|
|
158
|
-
|
|
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 |
|
|
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
|
|
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: 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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
158
|
-
|
|
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!"
|