Files
last30days-skill/release-notes.md
Matt Van Horn 46c5c7f566 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>
2026-04-20 08:17:22 -07:00

93 lines
5.4 KiB
Markdown

The AI world reinvents itself every month. This skill keeps you current.
`/last30days` researches your topic across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, GitHub, and 5+ more sources from the last 30 days, finds what the community is actually upvoting, sharing, betting on, and saying on camera, and writes you a grounded narrative with real citations.
## 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, 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.
## v3 is the intelligent search release
v3 is a ground-up engine rewrite by [@j-sperling](https://github.com/j-sperling). The old engine searched keywords. The new engine understands your topic first, then searches the right people and communities.
Type "OpenClaw" and v3 resolves @steipete, r/openclaw, r/ClaudeCode, and the right YouTube channels and TikTok hashtags before a single API call fires. Type "Peter Steinberger" and it resolves his X handle and GitHub profile, switches to person mode, and shows what he shipped this month at 85% merge rate across 22 PRs. None of that was on Google.
## Headline features
### Intelligent pre-research
The killer feature. A new Python pre-research brain resolves X handles, GitHub repos, subreddits, TikTok hashtags, and YouTube channels before searching. Bidirectional: person to company, product to founder, name to GitHub profile. The right subreddits, the right handles, the right hashtags, all resolved before a single API call.
### Best Takes
A second LLM judge scores every result for humor, wit, and virality alongside relevance. Every brief now ends with a Best Takes section surfacing the cleverest one-liners and most viral quotes. The Reddit and X people are funny, and the old engine buried their best stuff.
### Cross-source cluster merging
When the same story hits Reddit, X, and YouTube, v3 merges them into one cluster instead of three duplicates. Entity-based overlap detection catches matches even when the titles use different words.
### Single-pass comparisons
"X vs Y" used to run three serial passes (12+ minutes). v3 runs one pass with entity-aware subqueries for both sides at once. Same depth, 3 minutes.
### GitHub person-mode and project-mode
When the topic is a person, the engine switches from keyword search to author-scoped queries. PR velocity, top repos by stars, release notes for what shipped this month, woven into the narrative alongside X posts and Reddit threads.
When the topic is a project, it pulls live star counts, READMEs, releases, and top issues from the GitHub API. No stale blog posts.
### ELI5 mode
Say "eli5 on" after any research run. The synthesis rewrites in plain language. No jargon. Same data, same sources, same citations, just clearer. Say "eli5 off" to go back.
### 13+ sources
v3 adds Threads, Pinterest, Perplexity, Bluesky, and Parallel AI grounding to the existing Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, GitHub, and Web lineup. Perplexity Deep Research (`--deep-research`) gives you 50+ citation reports for serious investigation.
### Per-author cap and entity disambiguation
Max 3 items per author prevents single-voice dominance. Synthesis trusts resolved handles over fuzzy keyword matches.
## Install
Claude Code:
```
/plugin marketplace add mvanhorn/last30days-skill
```
OpenClaw:
```
clawhub install last30days-official
```
OpenAI Codex CLI: run `codex` from a checkout of this repo and v3's skill at `.agents/skills/last30days/SKILL.md` will be discovered automatically. Or copy `SKILL.md` to `~/.agents/skills/last30days/SKILL.md` for a global install.
Zero config. Reddit, Hacker News, Polymarket, and GitHub work immediately. Run it once and the setup wizard unlocks X, YouTube, TikTok, and more in 30 seconds.
## v3 Community
v3 was shaped by community contributors whose PRs and issues inspired core features. Their code wasn't merged directly (v3 was a ground-up rewrite), but their ideas drove what shipped.
Thanks to @uppinote20, @zerone0x, @thinkun, @thomasmktong, @fanispoulinakisai-boop, @pejmanjohn, @zl190, and @hnshah. See [CONTRIBUTORS.md](CONTRIBUTORS.md) for the full list.
Contributors who shaped the release itself:
- @Jah-yee (#153) surfaced the need for a real Codex CLI integration, which shipped in #219
- @Cody-Coyote (#204) reported the marketplace validation bug that needed fixing before v3 could ship cleanly
- @dannyshmueli pushed for v3 and Codex family support publicly on X
Full Added / Changed / Fixed detail lives in [CHANGELOG.md](CHANGELOG.md) under `[3.0.0]`.
## Earlier contributors
From the v1 and v2 lineage:
- [@galligan](https://github.com/galligan) for marketplace plugin inspiration
- [@hutchins](https://x.com/hutchins) for pushing the YouTube feature
30 days of research. 30 seconds of work. Thirteen sources. Zero stale prompts.