joelhooks/joelclaw

discovery

Capture interesting finds to the Vault via Inngest.

First seen Feb 27, 2026

Installation

$ npx skills add joelhooks/joelclaw --skill discovery

Summary

  • Capture interesting finds to the Vault via Inngest.
  • Triggers when the user shares a URL, repo, or idea with signal words like \"interesting\", \"cool\", \"neat\", \"check this out\", \"look at this\", \"came across\", or when sharing content with minimal context that implies it should be remembered.
  • Also triggers on bare URL drops with no explicit ask.
  • Fires a discovery/noted event and continues the conversation — the pipeline handles everything else.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from joelhooks/joelclaw · top by installs.

npx skills add joelhooks/joelclaw

Browse all from joelhooks/joelclaw

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Declared

Repository health

Stars 63
Default branch main
Open issues 1
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Version1.0.0
Declared agents opencode

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 7,711 B
  • docs SUMMARY.md 474 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 32 installs

SKILL.md

Discovery — Capture What's Interesting

When Joel flags something as interesting, fire it into the pipeline and keep moving.

Gateway auto-capture rule

Gateway already auto-captures Joel-authored Slack links from #brain-joel (C09LKT871PE).

Contract:

  • only Joel-authored Slack messages in that one channel
  • extract all URLs from message text
  • normalize Slack angle links like <https://x|label>;
  • send one discovery/noted event per unique URL in the message
  • defaults: site=joelclaw, visibility=private
  • include Slack channel/message context in the event
  • fire-and-forget; Slack handling must not block on discovery pipeline failures

So if a future task mentions missing #brain-joel capture, debug the gateway rule first before adding another manual discovery path.

Trigger Detection

Signal words/patterns (case-insensitive):

  • "interesting", "cool", "neat", "nice", "wild", "clever"
  • "check this out", "look at this", "came across", "found this"
  • "bookmarking", "save this", "remember this"
  • Bare URL/repo link with minimal context (1-2 words + link)
  • Sharing a link then immediately moving on

When NOT to trigger: If Joel is asking for help with the thing (debugging, implementing, reviewing), that's a task — not a discovery.

Workflow

1. Resolve site + visibility first

Preferred explicit fields:

  • site: joelclaw | wizardshit | shared
  • visibility: public | private | archived | migration-only

Sensible default when not specified:

  • site = joelclaw
  • visibility = private

2. Canonical operator path when you need the final link back

Use the event surface directly and follow the run to completion:

joelclaw send discovery/noted --data '{"url":"<url>","context":"<optional context>","site":"joelclaw","visibility":"private"}' --follow

The terminal run result now includes the final link for the created piece:

  • public joelclaw discoveries → https://joelclaw.com/cool/<slug>
  • non-public or off-site captures → vault:Resources/discoveries/<Title>.md

Always return that finalLink to Joel.

If Joel explicitly wants the piece published somewhere other than joelclaw and that venue has its own durable publish surface, route to that venue-specific workflow instead of pretending the joelclaw discovery pipeline published it there. The joelclaw discovery pipeline can carry site/visibility metadata, but it only gives you a public joelclaw URL when the capture is actually eligible for joelclaw publication.

3. Compatibility shortcut

joelclaw discover still works as the thin fire-and-forget shortcut and now accepts explicit site/visibility too:

joelclaw discover <url> --site joelclaw --visibility private
joelclaw discover <url> -c "what Joel said about it" --site wizardshit --visibility private

But if Joel needs the final link in the same turn, prefer joelclaw send discovery/noted --follow.

2. Assess for Monitoring (before moving on)

After firing the discovery event, quickly assess:

  1. Is this monitorable? — Does it have ongoing updates? (blog with feed, GitHub repo with releases, living document that changes)
  2. Is it relevant to Joel's interests? — Check the interest profile in the monitor skill. If it maps to 2+ areas, it's a strong candidate.

If both yes → recommend monitoring via MCQ:

"This looks like an active [blog/repo/guide] covering [matched interests]. Want to add it to the monitoring list?"
  1. Yes, monitor it (hourly/daily)
  2. Not now

If the agent recommends monitoring and Joel accepts, add the subscription per the monitor skill workflow.

If monitorable but low relevance → mention briefly: "This has a feed if you ever want to track it" — don't push.

If not monitorable (one-shot article, tweet, static page) → skip, don't mention monitoring at all.

3. Continue conversation

Don't wait. Joel flagged something and moved on — match that energy.

What the Pipeline Does (background, in system-bus worker)

  1. Investigate — clone repos, extract articles via defuddle, read content
  2. Analyze via pi — decides title, tags, relevance, writes summary in Joel's voice
  3. Embed media — if source is a video (YouTube, etc.), auto-embeds <YouTubeEmbed url="..." /> in the note
  4. Write — vault note to ~/Vault/Resources/discoveries/{Title}.md (normal path) or a unique {Title} {fingerprint}.md degraded fallback

- If pi note generation times out or errors, the function writes a source-grounded degraded fallback note (captureStatus: degraded, needs-review) and still forwards discovery/captured with captureStatus: degraded. This keeps /cool capture durable instead of losing the find behind a model stall.

  1. Sync — fires discovery/captured event which syncs to joelclaw.com/cool/
  2. Observe — emit/query canonical OTel for pipeline behavior; the discovery note and discovery/captured event are the durable receipts. The former slog write path is retired.

X/Twitter URL Enrichment

When the source URL is an X/Twitter post (x.com//status/ or twitter.com//status/):

  • X blocks web scraping — do NOT use urltomarkdown or web_search for tweet content
  • Instead, use the x-api skill to fetch tweet text, author, and metrics via the Twitter API v2
  • Extract the tweet ID from the URL and call GET /2/tweets/:id?tweet.fields=text,authorid,createdat,publicmetrics&expansions=authorid&user.fields=name,username
  • Include tweet text, author handle, and engagement metrics in the discovery note
  • See x-api skill for OAuth 1.0a signing details

Deep Dig — Inngest Enrichment Pipeline (ADR-0150)

Enrichment is not manual agent work. The discovery/noted event triggers a durable Inngest function (discovery/enrich) that handles all enrichment automatically:

  1. Classify URL — tweet, repo, article, video
  2. Fetch content — X API for tweets, defuddle for articles, repo clone for repos
  3. Match tracked projects — opencode, opentui, course-builder, pi-tools
  4. Deep dig if matched — recent commits, PRs, issues from upstream
  5. Profile the poster — git authors, web search, contact lookup (fires contact/enrich if new)
  6. Write enriched vault note — full context, not a bare URL

The agent's job is just to fire discovery/noted with whatever context Joel provided. The pipeline does the rest.

Tracked projects (canonical list in packages/system-bus/src/config/tracked-projects.ts)

  • anomalyco/opencode (fork of sst/opencode)
  • anomalyco/opentui (fork of sst/opentui)
  • badass-courses/course-builder
  • joelhooks/pi-tools
  • joelhooks/joelclaw

Video/Media Handling

When the source URL is a YouTube video (youtube.com or youtu.be):

  • The discovery note gets a <YouTubeEmbed url="..." /> component right after the title
  • This renders an embedded video player on the cool page at joelclaw.com
  • The note body still includes analysis/summary — the embed is supplemental, not a replacement for writing about it