Skip to content

docs: require full PR URLs in captain reports - #11

Merged
kunchenguid merged 3 commits into
mainfrom
docs/full-pr-urls
Jun 13, 2026
Merged

docs: require full PR URLs in captain reports#11
kunchenguid merged 3 commits into
mainfrom
docs/full-pr-urls

Conversation

@kunchenguid

Copy link
Copy Markdown
Owner

Intent

Document a firstmate reporting convention the captain requested: when reporting a PR to the captain, always give the PR's full https URL, never a bare #number, because the captain's terminal makes full URLs clickable. Docs-only change to AGENTS.md - §7 (PR-ready: the crewmate report to the captain) and §9 (captain etiquette). No code, no behavior change; purely a communication-style rule for firstmate.

What Changed

  • Updated firstmate PR-ready instructions to require complete https://... PR URLs instead of bare #number references when reporting to the captain.
  • Clarified ship teardown and backlog examples to record full GitHub PR URLs.
  • Added captain-etiquette guidance allowing shorthand PR numbers only after the full URL appears in the same message.

Risk Assessment

✅ Low: The change is docs-only, narrowly scoped to firstmate PR reporting guidance, and introduces no behavior or code-path risk.

Testing

For this docs-only change, I verified the target commit changes only AGENTS.md, inspected the two requested documentation sections, confirmed the end-user-facing firstmate convention now requires complete https PR URLs instead of bare #numbers, and saved a focused diff artifact as reviewer evidence; no runtime tests were applicable.

Evidence: Focused AGENTS.md diff showing full PR URL convention

diff --git a/AGENTS.md b/AGENTS.md @@ -272,7 +272,7 @@ For ship tasks, when the pipeline reaches CI-green, the crewmate reports done: PR <url> checks green. Run bin/fm-pr-check.sh <id> <PR url> - it records pr= in the task's meta and arms the watcher's merge poll. -Tell the captain: PR link, one-paragraph summary, and the risk level no-mistakes emitted. +Tell the captain: the PR's full URL (always the complete https://... link, never a bare #number - the captain's terminal makes a full URL clickable), a one-paragraph summary, and the risk level no-mistakes emitted. @@ -366,6 +366,7 @@ Routine watcher mechanics include restarting the watcher, polling a waiting watcher, and confirming that no status changed. Batch non-urgent updates into your next natural reply. Use lavish-axi for multi-option decisions and fleet reports worth a visual; plain chat for yes/no. +Whenever you reference a PR to the captain - PR-ready, status updates, backlog lines you quote - give its full https://... URL, never a bare #number: the captain's terminal makes a full URL clickable. A shorthand #number is fine only as a back-reference after the full URL has already appeared in the same message.

diff --git a/AGENTS.md b/AGENTS.md
index ad58f84..f6b38dc 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -272,7 +272,7 @@ Use chat for yes/no decisions; use lavish-axi when there are multiple findings o
 
 For ship tasks, when the pipeline reaches CI-green, the crewmate reports `done: PR <url> checks green`.
 Run `bin/fm-pr-check.sh <id> <PR url>` - it records `pr=` in the task's meta and arms the watcher's merge poll.
-Tell the captain: PR link, one-paragraph summary, and the risk level no-mistakes emitted.
+Tell the captain: the PR's full URL (always the complete `https://...` link, never a bare `#number` - the captain's terminal makes a full URL clickable), a one-paragraph summary, and the risk level no-mistakes emitted.
 (The check contract, for any custom `state/<id>.check.sh` you write yourself: print one line only when firstmate should wake, print nothing otherwise.)
 
 If the captain says "merge it", run `gh-axi pr merge` yourself; that instruction is the explicit approval.
@@ -366,6 +366,7 @@ Does not reach the captain: auto-fixes, retries, routine progress, watcher mecha
 Routine watcher mechanics include restarting the watcher, polling a waiting watcher, and confirming that no status changed.
 Batch non-urgent updates into your next natural reply.
 Use lavish-axi for multi-option decisions and fleet reports worth a visual; plain chat for yes/no.
+Whenever you reference a PR to the captain - PR-ready, status updates, backlog lines you quote - give its full `https://...` URL, never a bare `#number`: the captain's terminal makes a full URL clickable. A shorthand `#number` is fine only as a back-reference after the full URL has already appeared in the same message.
 As a courtesy, mention cost when the fleet grows unusually large (more than ~8 concurrent crewmates); never block on it.
 
 ## 10. Backlog format

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

✅ **Review** - passed

✅ No issues found.

✅ **Test** - passed

✅ No issues found.

  • git diff --stat a5ffb9f4b5d0ed57d5918fa6f508617007a4bb2f..b22d446d5613e79150a0bc3308a1287f6e22b289
  • grep search in AGENTS.md for full URL / bare #number wording
  • Manual review of AGENTS.md:271-275 and AGENTS.md:365-369
  • git diff a5ffb9f4b5d0ed57d5918fa6f508617007a4bb2f..b22d446d5613e79150a0bc3308a1287f6e22b289 -- AGENTS.md > /var/folders/5x/4nqprlbx0518k3ybcb1sz6gr0000gn/T/no-mistakes-evidence/01KV18CD7W7MXC6ZFTBYKR8W3M/full-pr-url-doc-diff.patch
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

@kunchenguid
kunchenguid merged commit 5456ae0 into main Jun 13, 2026
3 checks passed
@kunchenguid
kunchenguid deleted the docs/full-pr-urls branch June 13, 2026 20:12
andrew-kim-techtorch referenced this pull request in andrew-kim-techtorch/firstmate Jul 7, 2026
…hment requirement

Proven live on PR #11 and PRs #6-#8: github.com/<owner>/<repo>/raw/<sha>/<path>
renders inline for authenticated members on private repos; raw.githubusercontent.com
does not. Attachment upload (browser-only) is no longer needed.

Convention: commit PNGs to docs/pr-screenshots/<task-id>/ and reference via
github.com/<owner>/<repo>/raw/<commit-sha>/<path> in the PR body table.

fm-pr-body-check --ui now accepts github.com/.../raw/... URLs in addition to
existing GitHub attachment URL patterns; blob links still fail.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
andrew-kim-techtorch referenced this pull request in andrew-kim-techtorch/firstmate Jul 7, 2026
)

* feat(bin): add PR body conventions to ship briefs and body-check script

Add a PR body conventions block to ship briefs (no-mistakes and direct-PR
modes) so crewmates always receive clear guidance: lead with the requirement
satisfied, use rendered screenshots from raw.githubusercontent.com or GitHub
attachments (never local /var/folders/private/tmp/Users paths), and present
before/after side by side in a table.

Add bin/fm-pr-body-check.sh that firstmate runs before relaying any PR as
ready; --ui mode also asserts at least one rendered image is present.
Wire a one-line reference into AGENTS.md section 7 PR ready.
Add tests/fm-pr-body-check.test.sh covering the full pass/fail matrix.

* fix(bin): correct PR screenshot convention for private repos

raw.githubusercontent.com URLs do not render inline on private repos
(GitHub image proxy cannot authenticate). Update the ship-brief PR body
conventions and fm-pr-body-check to reflect the correct approach:

- Commit screenshots under docs/pr-screenshots/<task-id>/ and reference
  them as clickable blob links; authenticated reviewers can open these.
- Flag in the PR body when inline rendering is wanted so a human can
  upload images as GitHub attachments (browser drag-drop only).
- fm-pr-body-check now always fails on raw.githubusercontent.com refs,
  in addition to local filesystem paths.
- --ui screenshot detection expanded to match blob links to image files
  as well as inline GitHub attachment images.
- 11 tests covering the full pass/fail matrix.

* fix(bin): require GitHub attachment URLs for --ui inline screenshots

Blob links (github.com/.../blob/...) open in a browser tab but do not
render inline in the PR body. The universal inline method for any GitHub
repo (public or private) is GitHub attachments, served from
user-attachments/assets or <owner>/<repo>/assets URLs.

Update ship-brief conventions: attachment URLs required for inline
rendering; commit source PNGs under docs/pr-screenshots/ for history;
flag the need for a human to perform the browser drag-drop upload.

Update fm-pr-body-check --ui: pass only when the body contains at least
one attachment-style URL; blob links no longer satisfy the check.
10 tests covering the full pass/fail matrix.

* chore: ignore .serena/ tool state directory

* no-mistakes(review): fail loudly on PR body fetch errors in fm-pr-body-check

* no-mistakes(document): docs: sync pr-body-check script into scripts, tests, and brief-contract docs

* fix(bin): use github.com/raw/<sha> for inline screenshots, drop attachment requirement

Proven live on PR #11 and PRs #6-#8: github.com/<owner>/<repo>/raw/<sha>/<path>
renders inline for authenticated members on private repos; raw.githubusercontent.com
does not. Attachment upload (browser-only) is no longer needed.

Convention: commit PNGs to docs/pr-screenshots/<task-id>/ and reference via
github.com/<owner>/<repo>/raw/<commit-sha>/<path> in the PR body table.

fm-pr-body-check --ui now accepts github.com/.../raw/... URLs in addition to
existing GitHub attachment URL patterns; blob links still fail.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
vipentti pushed a commit to vipentti/firstmate that referenced this pull request Aug 5, 2026
* docs: report full PR URLs to the captain, not bare numbers

* no-mistakes(document): Document full PR URLs

* no-mistakes(lint): Keep PR URL docs formatted
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant