fix: preserve output contract as six hard rules, not two

Live Ghostty test of the prior amendment confirmed RULE A (inline links)
works on first pass, but exposed a new regression: the established output
contract collapsed. First-pass output had "Story 1/2/3" plain-prose
sections instead of bold-headline paragraphs, a plain "Stats" heading
with - bullets instead of the ├─ └─ │ emoji tree, no  All agents
reported back! line, no --- separators, and a flat "I am now an expert"
closer instead of the QUERY_TYPE-specific invitation variant.

Same failure pattern as before (emphasis imbalance between co-equal
rules), opposite direction: the link rules at the top of the output
section became the loudest prose and the existing structural rules
(bold headlines, stats template, emoji tree, QUERY_TYPE invitation,
--- separators) read as style preferences by comparison.

Fix is additive, not reductive. The TWO HARD RULES framing becomes the
OUTPUT CONTRACT with six rules named A-F, each at equal emphasis, stated
in parallel construction:

- RULE A: inline markdown links on every citation.
- RULE B: no trailing list of links.
- RULE C: bold headline per narrative paragraph (**Headline** — body).
- RULE D: stats block with  opening, ├─/└─/│ tree, emoji prefix per
  active source. No plain - bullets, no missing emoji.
- RULE E: QUERY_TYPE-specific invitation variant with 2-3 example
  follow-ups from this run. No flat "I am now an expert" closer.
- RULE F: --- horizontal rules before and after the stats block.

Closing sentence: "These six rules are a set, not a priority order.
Satisfying some by violating others is a bug, not a compromise."

Corresponding changes:

- PRE-SYNTHESIS COMMIT expanded from 6 link-focused bullets to 7
  bullets covering template/headlines/stats/separators/sources/trailing-
  list. Structure-first ordering primes the agent to reach for the
  template before drafting prose.
- PRE-PRESENT SELF-CHECK reworked. Items 1 and 2 become counted
  structural checks (≥3 bold headline openers, ≥3 ├─ tree characters,
  one emoji per active source). New items 5 and 6 add separator and
  invitation-variant checks. Items 7-10 preserve the existing RULE B
  / RULE A / no-raw-URL / no-broken-link checks.
- Release-notes entry extended to mention the preserved output
  contract alongside the clickable links.

No Python changes. This is the third commit on PR #286.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Matt Van Horn
2026-04-20 08:17:22 -07:00
parent 83c14209da
commit 46c5c7f566
2 changed files with 34 additions and 22 deletions
+1 -3
View File
@@ -4,9 +4,7 @@ The AI world reinvents itself every month. This skill keeps you current.
## 2026-04-20 — Clickable source links
Every cited source in the synthesis (X handles, subreddits, publications, YouTube channels, Polymarket markets) now renders as a blue CMD-clickable markdown link in the terminal. No raw URL strings — just clean link text you can click straight through to the source. Works in Claude Code on any terminal that supports OSC 8 hyperlinks (Ghostty, iTerm, Warp, others).
The skill follows two hard rules: inline links required on every citation, no trailing list of links anywhere. Both fire on first pass — no need to ask twice.
Every cited source in the synthesis (X handles, subreddits, publications, YouTube channels, Polymarket markets) now renders as a blue CMD-clickable markdown link in the terminal. No raw URL strings, no trailing list of links, and the rest of the output contract is preserved intact — bold headline paragraphs, `├─` `└─` emoji stats tree, and the QUERY_TYPE-specific invitation all render correctly on first pass. Works in Claude Code on any terminal that supports OSC 8 hyperlinks (Ghostty, iTerm, Warp, others).
Credit to [@jay_k](https://x.com/jay_k) for surfacing the missing link-back in the reply thread, and to [@photomatt](https://x.com/photomatt) for confirming CMD-click works in Claude Code — that was the nudge to flip the rule.