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>
Live test on Ghostty after the prior commit showed a regression: first-pass
/last30days synthesis stripped all inline links. Only after the user asked
"weren't these links supposed to be clickable?" did the agent re-render
with inline links. Agent's own root cause: "I misread LAW 1 — over-applied
'no trailing Sources: block' to mean 'no URLs anywhere'."
The templates and per-citation examples were already correct. The regression
was in EMPHASIS BALANCE — the anti-trailing-Sources prohibition used the
loudest prose (CRITICAL OVERRIDE, MANDATORY, MUST NOT) while the pro-inline-
link rule read as lighter guidance. On a fresh first read, the agent
collapsed both into one prohibition and stripped every citation link.
This commit rebalances emphasis and adds a forcing function:
- New "TWO HARD RULES FOR LINKS" framing at the top of the output section
names RULE A (inline links required on every citation) and RULE B (no
trailing list of links) as a matched pair with equal rhetorical weight.
Explicit: "These rules are complementary, not alternatives."
- New "PRE-SYNTHESIS COMMIT" step forces the agent to identify sources,
pull URLs, and commit to inline-link placement BEFORE drafting — not
audit after the fact.
- Existing CRITICAL OVERRIDE block now opens by pointing back to the
matched-pair framing and drops the "Your citation is the Web: line.
Nothing else is needed." priming sentence that biased the agent toward
link-free drafts.
- New BAD/ALSO-BAD/GOOD triple in the CRITICAL OVERRIDE block shows the
exact regression shape (stripping inline links to "comply" with RULE B)
as a distinct failure mode, not just the trailing-list failure.
- PRE-PRESENT SELF-CHECK reworked: item 6 becomes "RULE B — no trailing
list", item 7 becomes "RULE A — inline links present on first pass"
with a positive count check that regenerates if zero inline links
appear when raw data had URLs (the exact 2026-04-20 regression repro).
- Release notes entry gains one line describing the first-pass guarantee.
No Python changes. This is an amendment on PR #286 folding the fix into
the same review.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Every cited source — X handles, subreddits, publications, YouTube channels,
Polymarket markets — now renders as a blue CMD-clickable markdown link in the
terminal. Raw URL strings remain forbidden everywhere in the output.
The old rule "NEVER paste raw URLs" blocked both raw URLs and links. Claude
Code renders CommonMark [text](url) as hyperlinks (URL hidden), so the new
rule is: "every link must be [text](url), never a raw URL string". Plain text
is the fallback only when the raw research dump has no URL for a source.
Changes:
- SKILL.md: invert URL formatting rule; update narrative / KEY PATTERNS /
RECOMMENDATIONS / stats-block templates; retire the "I have all the links...
Just ask." closer (it's now inline); add two new PRE-PRESENT SELF-CHECK
items (no raw http/https strings, no broken empty links).
- README.md: note the clickable-links capability in the "How it works" list.
- release-notes.md: 2026-04-20 entry crediting @jay_k and @photomatt.
No Python changes — the raw research dump already carries URLs per item;
this is synthesis-side formatting only. No breaking changes to the engine,
the schema, or the CLI flags.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
release-notes.md:
- Drop the "What's New" section entirely. It repeated the same items
as the Headline features section above it in bulleted form, a
holdover from the old v2.9 release notes pattern. CHANGELOG.md is
the canonical Added/Changed/Fixed list; release notes is marketing
copy and shouldn't duplicate it. Added a one-line pointer to
CHANGELOG.md [3.0.0] for anyone looking for the detail.
- Rename "Credits" to "Earlier contributors" and note they are from
the v1 and v2 lineage, so readers don't confuse them with v3
contributors.
- Remove @steipete credit (did not actually contribute to this repo).
CHANGELOG.md [2.1.0] Credits:
- Remove @steipete credit (did not actually contribute to this repo).
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Rewrites release-notes.md from its stale v2.9.1 focus into the v3
story: intelligent pre-research as the killer feature, fun judge /
Best Takes, cross-source cluster merging, single-pass comparisons,
GitHub person-mode and project-mode, 13+ sources, ELI5 mode. Credits
@j-sperling as the v3 engine architect in the hero section and
updates the install instructions from `git clone` to the real install
paths for Claude Code, OpenClaw, and OpenAI Codex CLI.
Also extends the CHANGELOG [3.0.0] entry with a Fixed section covering
the two post-merge prep fixes that landed just before release:
- #214 resolved a duplicate `name: last30days` collision in
skills/last30days/SKILL.md that caused strict marketplace validators
to reject the plugin (reported by @Cody-Coyote in #204)
- #219 added the real Codex CLI integration at
.agents/skills/last30days/SKILL.md (regular file, since Codex's
loader skips symlinked files) plus .codex-plugin/plugin.json as the
namespace marker (inspired by @Jah-yee in #153 and @dannyshmueli
on X)
Bumps the [3.0.0] date from `2026-04` to `2026-04-11` to match the
actual release date, and adds @Cody-Coyote and @Jah-yee to the
[3.0.0] Contributors list.
No code changes. Pure docs prep for the v3.0.0 GitHub release.
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Sync from public repo. Every run now saves the complete briefing as a
topic-named .md file to ~/Documents/Last30Days/. Credit @devin_explores.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add CHANGELOG.md (Keep a Changelog format) and release-notes.md
for the v2.1.0 GitHub Release. Also includes queued copy updates:
plugin.json version bump to 2.1.0, YouTube added to descriptions,
SKILL.md security/permissions section and ClawdBot metadata,
updated watchlist examples, and v2.1 launch post refinements.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>