GitHub Evidence Posting
Upload captured evidence and generated templates to the GitHub PR description and the originating GitHub Issue. This skill is the posting step — it assumes evidence files and a comment template already exist in the evidence directory.
Arguments
$ARGUMENTS: <ISSUE_REF> <EVIDENCE_DIR> <PR_NUMBER>
ISSUE_REF(required): GitHub issue ref —org/repo#<number>or full GitHub issue URL.EVIDENCE_DIR(required): Directory containing evidence and templates (e.g.,./evidence).PR_NUMBER(required): GitHub PR number to update description.
Prerequisites
ghCLI authenticated (gh auth status).- Evidence directory containing:
NN-name.txtorNN-name.jsontext evidence files (e.g.,01-health-check.json)comment.md— GitHub markdown body for both the issue comment and the PR description's## Evidencesection.- (Optional)
comment.txt— kept for parity with the JIRA path; not used here.
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.
Workflow
Resolve refs
Parse
ISSUE_REFinto<issue-org>/<issue-repo>#<issue-number>. Parse the local repo (where the PR lives) viagh repo view --json nameWithOwner --jq '.nameWithOwner'.Ensure the
pr-assetsrelease exists in the IMPLEMENTATION repoThe
pr-assetsrelease is the asset CDN for evidence files. Each PR's evidence is uploaded with the PR number prefix in the asset name to keep them addressable.gh release view pr-assets --repo <impl-org>/<impl-repo> >/dev/null 2>&1 \ || gh release create pr-assets --repo <impl-org>/<impl-repo> --title "PR Assets" --notes "CDN for PR evidence"Upload each evidence file
for f in "$EVIDENCE_DIR"/[0-9][0-9]-*.txt "$EVIDENCE_DIR"/[0-9][0-9]-*.json; do [ -f "$f" ] || continue name="pr-${PR_NUMBER}-$(basename "$f")" gh release upload pr-assets --repo <impl-org>/<impl-repo> --clobber "$f#$name" doneThe
#$namesyntax sets the asset name.--clobberlets re-runs overwrite.Update the PR description
Replace or append the
## Evidencesection in the PR body usingcomment.md:current_body=$(gh pr view "$PR_NUMBER" --repo <impl-org>/<impl-repo> --json body --jq '.body') evidence_section=$(cat "$EVIDENCE_DIR/comment.md") # Replace existing ## Evidence ... up to next ## or EOF; otherwise append.Use a Bash heredoc / temp file to compose the new body, then:
gh pr edit "$PR_NUMBER" --repo <impl-org>/<impl-repo> --body-file /tmp/pr-body.mdPost a comment on the originating issue
The issue may live in a different repo than the PR (cross-repo work):
gh issue comment <issue-number> --repo <issue-org>/<issue-repo> --body-file "$EVIDENCE_DIR/comment.md"Leave lifecycle labels unchanged
GitHub evidence posting is evidence-only. The caller that owns the build lifecycle (
lisa-github-build-intake/lisa-github-agent) transitions the issue from the configuredclaimedlabel directly to the configureddonelabel after a successful build. Do not applystatus:code-reviewhere.
Evidence Naming Convention
evidence/
01-health-check.json uploaded
02-schema-after-migration.txt uploaded
03-rate-limit-response.txt uploaded
comment.md used for issue comment + PR description
Asset names in the release are prefixed with pr-<number>- so multiple PRs' evidence coexists without collision.
Troubleshooting
Evidence not appearing in GitHub PR or issue
Check:
gh auth statussucceeds.- The PR / issue refs are correct.
- The
pr-assetsrelease exists in the implementation repo.
gh issue edit returns 404
The issue may live in a different repo than the PR — pass --repo <issue-org>/<issue-repo> explicitly. The implementation repo and the destination tracker repo can differ when tracker = "github" is set on a project that ships from a separate codebase.
Notes
- This skill is symmetric with
lisa-jira-evidence— the evidence directory layout andcomment.mdcontent are identical so a single template generator can serve both vendors. - The PR's
## Evidencesection is the canonical link for reviewers; the issue comment is for the PRD/PM thread.