| name | tech-trends-daily |
| description | Fetch the day's trending technical news and the top trending marketing-related GitHub repositories, then produce a clean markdown report. Use this whenever the user asks for "today's tech trends", "trending tech news", "what's hot in tech today", "trending GitHub repos", "trending marketing repos", or invokes `/tech-trends-daily` (optionally with a window like `24h`, `48h`, `7d`). Trigger this skill even when the user does not explicitly say "skill" — phrases like "give me a daily tech briefing", "show me trending stuff from the last 48 hours", or "any cool marketing tools shipping on GitHub this week" should all invoke it. |
tech-trends-daily
Produce a dated tech-trend briefing combining Hacker News + Reddit signal with the top 5 marketing-related GitHub repositories trending in the requested window.
Workflow
1. Resolve the time window
Parse a window argument from the user's message. Accepted forms: 24h, 48h, 72h, 7d, 2w, etc.
Default to 24h if the user did not specify one.
2. Run the fetcher script
Invoke from the project root (the directory the skill is installed in):
python3 .claude/skills/tech-trends-daily/scripts/fetch_trends.py --window <WINDOW>
The script returns a single JSON object on stdout with these top-level keys:
generated_at — ISO-8601 UTC timestamp
window — echo of the requested window
since — ISO-8601 lower bound
tech_trends — array of stories ranked by cross-source signal then score
marketing_github_repos — array of up to 5 repos
marketing_filter_strategy — one of strict-trending / loose-trending / loose-with-search-fallback
errors — per-source error strings (empty array on a clean run)
If the JSON has a non-empty errors array, surface that fact in the output (don't silently swallow it). Continue with whatever data succeeded.
If the script itself fails (non-zero exit), read the stderr message and report it to the user — do not synthesize a trend list from memory.
3. Produce the report
Format the JSON into the exact structure below. Keep summaries to one line each — the user will click through if they want more.
# Tech Trends — {YYYY-MM-DD} (last {window})
_Generated {generated_at} • {N} stories • {M} marketing repos • filter: {marketing_filter_strategy}_
## Top Tech Trends
1. **{title}** — {1-line take on why it's notable}
{sources joined by ' · '} · score {score} · [discussion]({permalink}) · [link]({url})
2. ...
## Top {len} Marketing GitHub Repos
1. **[{owner}/{name}]({url})** — {description}
{language} · ★ {stars_total} (+{stars_today} today) · topics: {top 4 topics or "—"}
2. ...
---
{if errors: '⚠️ Source errors: ' + comma-joined error strings}
Notes on formatting:
- For the "1-line take" on each trend, write a brief editorial summary (≤ 20 words) drawn from the title and what you can infer. Don't fabricate facts. If the title is already self-explanatory, restate succinctly.
- If a story shows multiple sources (e.g.,
["HN", "reddit/programming"]), that means it surfaced on more than one feed — call this out as "multi-source" or list the sources.
- Show at most 8 tech trends in the chat output even if the JSON returned more.
- For repos, only show
(+N today) when stars_today > 0. Otherwise omit the parenthetical.
4. Save to the dated file
Write the same markdown to:
output/trends/{YYYY-MM-DD}.md
Path is relative to the project root. Use the date from generated_at (UTC). Create output/trends/ if missing.
If a file for today already exists, overwrite it — the latest run is the canonical report. Don't append.
5. Print to chat
After saving, print the report inline so the user sees it without having to open the file. Then add one line at the bottom:
Saved to output/trends/{YYYY-MM-DD}.md
Why these choices
- Script not direct fetches: HN/Reddit/GitHub fetches are repetitive boilerplate that benefit from deterministic execution. Re-coding them per invocation wastes tokens and risks drift.
- Loose-with-fallback marketing filter: strict keyword matching on a 25-repo trending list often returns 0–2 marketing repos on a quiet day. The script auto-widens, then auto-falls-back to GitHub's topic search, so you reliably get a non-empty top-5 without a noisy result on busy days.
- Print + save: chat is for now, the dated file builds a personal trend archive over time.
Tuning
If the user wants different behavior, edit the script — don't paper over it in the skill body:
- Change keyword tiers:
MARKETING_STRICT and MARKETING_LOOSE near the top of scripts/fetch_trends.py.
- Change source list or trend limit: same file,
main().
- Source-specific notes (endpoints, failure modes, window mapping) live in
references/sources.md. Read that file before changing how a source is queried.