* feat: battle-tested skill patterns from production deployment Backport production-learned brain-operations patterns: - Iron Law of Back-Linking (mandatory bidirectional linking) - Brain filing rules (file by primary subject, not format) - Enrichment protocol (7-step pipeline, 3-tier system, person/company templates) - Media ingest workflows (articles, videos, podcasts, PDFs, screenshots) - Citation requirements (mandatory [Source: ...] on every fact) - Test Before Bulk operating principle - Voice recipe: unicode crash fix, PII scrub, identity-first prompt, DIY STT+LLM+TTS - X-to-Brain recipe: image OCR, Filtered Stream, tweet rating rubric, cron stagger * chore: bump version and changelog (v0.8.1) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: add _brain-filing-rules.md to CLAUDE.md key files * feat: smart file upload with TUS resumable and .redirect.yaml pointers - Supabase Storage auto-selects upload method by file size: < 100 MB standard POST, >= 100 MB TUS resumable (6 MB chunks + retry) - Signed URL generation for private bucket access (1-hour expiry) - New `upload-raw` command with size routing: small text stays in git, large/media files go to cloud with .redirect.yaml pointer - New `signed-url` command for generating access links - File resolver supports both .redirect.yaml (v0.9+) and .redirect (legacy) - Redirect format upgraded: 10 fields with full metadata - All migration commands (mirror, redirect, restore, clean) handle both formats * feat: skills reference actual gbrain file commands - Filing rules document upload-raw, signed-url, and .redirect.yaml format - Ingest skill uses gbrain files upload-raw for raw source preservation - Maintain skill adds file storage health checks - Setup skill adds storage configuration phase with migration guidance - Voice recipe uses upload-raw for call audio storage - Migration v0.9.0 with complete storage setup instructions * chore: bump version and changelog (v0.9.0) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: gbrain publish -- shareable HTML with password protection First code+skill pair: deterministic code does the work (strip private data, encrypt with AES-256-GCM, generate self-contained HTML), the skill tells the agent when and how to use it. 34 new tests. See: https://x.com/garrytan/status/2042925773300908103 * feat: backlinks check/fix, page lint, and report commands Three new deterministic tools (zero LLM calls): - gbrain backlinks check/fix -- scans brain for entity mentions without back-links, creates them. Enforces the Iron Law from the skills. - gbrain lint [--fix] -- catches LLM preambles, code fence wrapping, placeholder dates, missing frontmatter, broken citations, empty sections. --fix auto-strips fixable artifacts. - gbrain report --type <name> -- saves timestamped reports to brain/reports/{type}/YYYY-MM-DD-HHMM.md for audit trails. 33 new tests (409 total, 0 fail). * feat: v0.9.0 migration tells agents to swap scripts for built-in commands Migration file now: - Lists all 5 new deterministic commands with usage examples - Includes a script-to-command replacement table (old -> new) - Tells the agent to find custom script references in AGENTS.md, skills, and cron jobs and replace with gbrain commands - Adds recommended cron jobs for daily backlink fix + weekly lint - References the Thin Harness, Fat Skills thread * fix: CLI routing bugs found during DX review - Fixed subArgs reference error in handleCliOnly (used wrong variable name) - Renamed gbrain backlinks check/fix to gbrain check-backlinks to avoid conflict with existing backlinks operation (per-page incoming links) - Added TOOLS section to --help output showing publish, check-backlinks, lint, report - Added upload-raw and signed-url to FILES section in --help - Updated all docs/migration references to use check-backlinks * fix: security hardening from adversarial review - XSS: sanitize marked.parse() output (strip script/iframe/on* attrs) - Path traversal: validate report --type against [a-z0-9-] pattern - TUS: HEAD request before retry to get server's actual offset (TUS spec) - Pointer: upload-raw now includes pointer content in JSON output - Symlinks: use lstatSync in all walkers to prevent directory escape --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
97 lines
3.3 KiB
Markdown
97 lines
3.3 KiB
Markdown
# Briefing Skill
|
|
|
|
Compile a daily briefing from brain context.
|
|
|
|
> **Filing rule:** When the briefing creates or updates brain pages,
|
|
> follow `skills/_brain-filing-rules.md`.
|
|
|
|
## Workflow
|
|
|
|
1. **Today's meetings.** For each meeting on the calendar:
|
|
- Search gbrain for each participant by name
|
|
- Read their pages from gbrain for compiled_truth context
|
|
- Summarize: who they are, recent timeline, relationship to you
|
|
2. **Active deals.** List deal pages in gbrain filtered to active status:
|
|
- Deadlines approaching in the next 7 days
|
|
- Recent timeline entries (last 7 days)
|
|
3. **Time-sensitive threads.** Open items from timeline entries:
|
|
- Items with deadlines in the next 48 hours
|
|
- Follow-ups that are overdue
|
|
4. **Recent changes.** Pages updated in the last 24 hours:
|
|
- What changed and why (read timeline entries from gbrain)
|
|
5. **People in play.** List person pages in gbrain sorted by recency:
|
|
- Updated in last 7 days
|
|
- Have high activity (many recent timeline entries)
|
|
6. **Stale alerts.** From gbrain health check:
|
|
- Pages flagged as stale that are relevant to today's meetings
|
|
|
|
## GBrain-Native Context Loading
|
|
|
|
Before generating any briefing, load context from gbrain systematically.
|
|
|
|
### Before a meeting
|
|
|
|
For every attendee on the calendar invite:
|
|
- `gbrain search "<attendee name>"` -- find their brain page
|
|
- `gbrain get <slug>` -- load compiled truth, recent timeline, relationship context
|
|
- If no page exists, note the gap ("No brain page for Sarah Chen -- consider enrichment")
|
|
|
|
### Before an email reply
|
|
|
|
Before drafting or triaging any email:
|
|
- `gbrain search "<sender name>"` -- load sender context
|
|
- Read their compiled truth to understand who they are, what they care about, and
|
|
your relationship history. This turns a cold reply into an informed one.
|
|
|
|
### Daily briefing queries
|
|
|
|
Run these queries to populate the briefing sections:
|
|
- `gbrain query "active deals status"` -- deal pipeline snapshot
|
|
- `gbrain query "meetings this week"` -- recent meeting pages with insights
|
|
- `gbrain query "pending commitments follow-ups"` -- open threads and action items
|
|
- `gbrain search --type person --sort updated --limit 10` -- people in play
|
|
|
|
## Output Format
|
|
|
|
```
|
|
DAILY BRIEFING -- [date]
|
|
========================
|
|
|
|
MEETINGS TODAY
|
|
- [time] [meeting name]
|
|
Participants: [name] (slug: people/name, [key context])
|
|
|
|
ACTIVE DEALS
|
|
- [deal name] -- [status], deadline: [date]
|
|
Recent: [latest timeline entry]
|
|
|
|
ACTION ITEMS
|
|
- [item] -- due [date], related to [slug]
|
|
|
|
RECENT CHANGES (24h)
|
|
- [slug] -- [what changed]
|
|
|
|
PEOPLE IN PLAY
|
|
- [name] -- [why they're active]
|
|
```
|
|
|
|
## Back-Linking During Briefing
|
|
|
|
If the briefing creates or updates any brain pages (e.g., new meeting prep
|
|
pages, updated entity pages), the back-linking iron law applies: every entity
|
|
mentioned must have a back-link from their page. See `skills/_brain-filing-rules.md`.
|
|
|
|
## Citation in Briefings
|
|
|
|
When presenting facts from brain pages, include inline citations:
|
|
- "Jane is CTO of Acme [Source: people/jane-doe, updated 2026-04-01]"
|
|
- This lets the user trace any claim back to the brain page and assess freshness
|
|
|
|
## Tools Used
|
|
|
|
- Search gbrain by name (query)
|
|
- Read a page from gbrain (get_page)
|
|
- List pages in gbrain by type (list_pages)
|
|
- Check gbrain health (get_health)
|
|
- View timeline entries in gbrain (get_timeline)
|