Save and load timestamped reports. Keyword routing for fast lookup. Cron jobs save output as reports; the agent or user queries them by keyword. Includes the Actionability Gate: delivery-time link checks (Broken/Dead/Indirect/ Missing) for briefings, meeting digests, and research reports.
62
73%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./skills/reports/SKILL.mdThis skill guarantees:
reports/{category}/{YYYY-MM-DD-HHMM}.md with frontmatter:
---
title: {report title}
type: report
category: {category name}
date: {YYYY-MM-DD}
time: {HH:MM PT}
---Saved: reports/{category}/{YYYY-MM-DD-HHMM}.md
Loaded: full report content with metadata.
Before any report reaches the user — a morning briefing, a meeting digest, a
research report — every link must answer one question: can the user click
this and immediately act? The link canon (deterministic, never-guessed URLs)
lives in skills/_output-rules.md under Deterministic Links; this gate adds
the delivery-time failure taxonomy and the retry loop.
| Mode | What it means | Example |
|---|---|---|
| Broken | Link is fake or a placeholder | https://example.com, TODO-find-link |
| Dead | Link to a brain page that isn't committed/pushed | Page written but not pushed — the link 404s |
| Indirect | Link goes somewhere, but not the right place | x.com/alice-example (profile) instead of x.com/alice-example/status/<id> (the specific post) |
| Missing | Actionable item mentioned with no link at all | "the clip making the rounds (~800K views)" with no URL |
Broken, Dead, and Indirect block delivery. Missing is a warning — flag it, don't block. A missing link is honest. An indirect link is a broken promise.
| Pattern | Status | Why it fails |
|---|---|---|
x.com/<handle> | Blocked | Profile ≠ post. Link to x.com/<handle>/status/<id> |
| Bare publication domain | Blocked | Homepage ≠ article. Add the article path |
youtube.com/@channel | Blocked | Channel ≠ video. Link to youtube.com/watch?v=... |
| Brain-page link, file uncommitted | Blocked | Link 404s until committed + pushed |
example.com / TODO placeholder | Blocked | Not a real link |
google.com/search?q=... | Warning | Search ≠ source. Link to the actual result |
| Actionable bullet with no URL | Warning | Where? Link it or describe how to find it |
There is no enforcement script. The agent runs these checks itself before delivering any report with links:
git status in the brain repo — an uncommitted
page behind a link is a Dead link; commit + push first. gbrain get <slug>
confirms the page exists at all.Paste into any report-generating prompt (subagent digests, research summaries, cron report jobs):
ACTIONABILITY GATE: Before finishing, verify every link answers "can the user
click this and act immediately?"
- Every X link → https://x.com/{user}/status/{post_id} — NEVER a profile link
- Every article → full URL with path — NEVER a bare domain
- Every brain-page link → committed + pushed, or don't link it
- If you don't have the direct URL → describe the content WITHOUT a link
- A missing link is better than an indirect linkReport surfaces route through this gate by harness-routing convention (a
routing rule the resolver applies, not a mechanical guarantee): morning
briefings (skills/briefing/SKILL.md), meeting digests, research reports,
and any saved report that carries external links.
055ac6c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.