JIRA Evidence Posting
Workflow resolution
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.
REVIEW=""
if [ -f .lisa.config.json ]; then
_cfg=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.json 2>/dev/null)
[ -n "$_cfg" ] && REVIEW="$_cfg"
fi
if [ -f .lisa.config.local.json ]; then
_local=$(jq -r '.jira.workflow.review // .jira.workflow.code_review // empty' .lisa.config.local.json 2>/dev/null)
[ -n "$_local" ] && REVIEW="$_local"
fi
Upload captured evidence and generated templates to GitHub PR description and JIRA ticket. This skill is the posting step — it assumes evidence files and comment templates already exist in the evidence directory.
Arguments
$ARGUMENTS: <TICKET_ID> <EVIDENCE_DIR> <PR_NUMBER>
TICKET_ID(required): JIRA ticket key (e.g.,PROJ-123)EVIDENCE_DIR(required): Directory containing evidence and templates (e.g.,./evidence)PR_NUMBER(required): GitHub PR number to update description
Prerequisites
JIRA_API_TOKENenvironment variable set- a jira-cli config —
.lisa/jira-cli/.config.ymlif thesetup-jira-cliSessionStart hook wrote one, otherwise~/.config/.jira/.config.yml.serverandloginare read from whichever is used, and the fallback is announced on stderr rather than taken silently. ghCLI authenticated- Evidence directory containing:
NN-name.txtorNN-name.jsontext evidence files (e.g.,01-health-check.json)comment.txt— JIRA wiki markup (generated bygenerate-templates.py)comment.md— GitHub markdown (generated bygenerate-templates.py)
Comment-body preflight (required)
Before posting or updating anything, check the evidence body (comment.md, and comment.txt where this skill uses it):
- It contains a
## Not establishedheading. That heading is never omitted and never blank — when nothing is outstanding it still rendersNone outstanding — reviewed; otherwise it names, in plain operator language, what the verification did not prove. - The accompanying verdict carries
not_established_reviewed: true(the list may be empty; the flag may never be omitted). - It contains a
## Artifact identityheading carrying values, not placeholders — the repository, thehead_shathe verification observed, theenvironment, and per artifact itssha256digest andcaptured_at. Refuse to post a body whose identity heading is absent or unpopulated, or whose recordedartifact_head_shadisagrees with the verdict'sartifact.head_sha— report the evidence id and both SHAs. Definition: theclaim-evidence-mappingrule.
If either is missing, refuse to post: stop and report the missing Not-established review to the caller instead of publishing. Composing the body is lisa-tracker-evidence's job (see its UI Evidence Checklist); this skill only refuses to publish one that omits the section. The section is defined by the claim-evidence-mapping rule and generalizes lisa-improve-harness's required, never-empty Known limits field.
Usage
bash .claude/skills/jira-evidence/scripts/post-evidence.sh <TICKET_ID> <EVIDENCE_DIR> <PR_NUMBER>
Example
bash .claude/skills/jira-evidence/scripts/post-evidence.sh PROJ-123 ./evidence 42
What It Does
- Read JIRA config — Resolves the jira-cli config (
$PROJECT_DIR/.lisa/jira-cli/.config.ymlfirst, then~/.config/.jira/.config.yml, announcing the fallback) and readsserverandloginfrom it dynamically — no hardcoded values. Exits 1 naming both paths when neither exists. The same resolved path is then passed tojira issue moveas--config, so the CLI cannot end up on a different config than the one this script parsed. - Upload to GitHub
pr-assetsrelease — Uploads evidence files viagh release upload --clobber - Update PR description — Replaces or appends the
## Evidencesection in the PR body - Post JIRA comment — Posts
comment.txtas a new comment (wiki markup with code blocks) - Move ticket to the configured review status — Transitions the JIRA ticket to
$REVIEW(default:Code Review).
Evidence Naming Convention
Text evidence files are named: {NN}-{evidence-name}.txt or {NN}-{evidence-name}.json
evidence/
01-health-check.json uploaded
02-schema-after-migration.txt uploaded
03-rate-limit-response.txt uploaded
comment.txt used for JIRA comment
comment.md used for PR description
Troubleshooting
Evidence not appearing in GitHub PR
Evidence files must be in the pr-assets GitHub release. If the release does not exist:
gh release create pr-assets --title "PR Assets" --notes "CDN for PR evidence"
JIRA API returns 403
Ensure JIRA_API_TOKEN is set and login in the resolved jira-cli config (.lisa/jira-cli/.config.yml, else ~/.config/.jira/.config.yml) matches your Atlassian account email.