Skip to content
Back to skills

Briefings

ASecurity

Manage briefing content blocks and sources (in-tree module)

  • 13 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 3, 2026
ai-agentsrustgobashsql

Works with

  • cli

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 3, 2026

npx -y skills add istota-project/istota --skill briefings --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Briefings?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Briefings
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/istota-project-briefings/badge)](https://www.skillsdirectory.com/skills/istota-project-briefings)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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.

Files in this skill

  • __init__.py2.6 KB
  • __main__.py80 B
  • skill.md3.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.