Manage briefing content blocks and sources (in-tree module)
Scanned 9/3/2026
Install to Claude Code
npx -y skills add istota-project/istota --skill briefings --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Briefings?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/istota-project-briefings)More formats (shields.io, HTML) on the badges page.
---
name: briefings
triggers: [briefing, briefings, block, digest, daily briefing, morning briefing, briefing block, briefing source]
description: Manage briefing content blocks and sources (in-tree module)
cli: true
companion_skills: [untrusted_input]
env: [{"var":"BRIEFINGS_USER","from":"user_id"}]
---
# Briefings (content management)
Manage the content model of the user's briefings through the in-tree briefings module. A briefing is an ordered list of **blocks**; each block has a title, an optional synthesis directive, and 1..N **sources** that are gathered and synthesized into one coherent section at generation time. Per-user SQLite; block/source/archive data live there. Scheduling and delivery (cron, target room) are managed separately with `istota briefings schedule …` (operator) or the web settings page — this skill manages *content*.
## CLI
Run `istota-skill briefings --help` for the live list. Output is JSON.
```bash
# Briefing names, block counts, and latest generation timestamps
istota-skill briefings list
# Blocks
istota-skill briefings blocks list --briefing morning
istota-skill briefings blocks add --briefing morning --title "World News" [--directive "3-5 stories, neutral"] [--render-mode synthesis|structured]
istota-skill briefings blocks set --id 3 [--title …] [--directive …] [--render-mode …] [--options '{"tone":"brief"}']
istota-skill briefings blocks reorder --briefing morning --ids 3,1,2
istota-skill briefings blocks remove --id 3
# Sources (kind: rss|email|browse|markets|calendar|todos|reminders|notes|shared_block)
istota-skill briefings sources list --block 3
istota-skill briefings sources add --block 3 --kind email --config '{"mode":"shared","lookback_hours":12}'
istota-skill briefings sources add --block 3 --kind browse --config '{"preset":"ap"}'
istota-skill briefings sources add --block 3 --kind rss --config '{"feed_ref":{"kind":"category","value":4},"limit":10}'
istota-skill briefings sources remove --id 7
# Archive (past rendered briefings)
istota-skill briefings archive list [--briefing morning] [--limit 20]
istota-skill briefings archive show --id 42
```
`blocks list` returns `status: "not_found"` with an `available` name list when the requested briefing does not exist. Briefing names are case-sensitive; run `briefings list` instead of guessing them.
## Source kinds
- **email** — shared/unowned newsletter pool (`{"mode":"shared"}`) or a sender allowlist (`{"mode":"senders","senders":["*@semafor.com"]}`).
- **rss** — recent entries from a Feeds subscription/category (`feed_ref`).
- **browse** — a frontpage URL, by preset (`{"preset":"ap"}`) or custom (`{"url":"https://…"}`).
- **markets** / **calendar** — structured built-ins (rendered verbatim; use `--render-mode structured`).
- **todos** / **reminders** / **notes** — a workspace file named by `{"path":"…"}`. There is **no** default filename: a source with no path reads nothing and contributes a provenance note. The path resolves relative to the user's own folder, so `shared/…` reaches a bot-shared file and `istota/…` the bot workspace.
- **shared_block** — pre-made curated content from the shared store (`{"name":"world-headlines","max_age_hours":6}`). Stale or missing content is omitted rather than failing the briefing.
Blocks are the only content model — the legacy component-based generator is gone. A briefing with no blocks produces nothing and the generation task fails quietly and retries, so give every briefing at least one block.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!