Turns Daybook into a multi-user tool and reworks the feed UI: - Multi-user: Django session login (username/password + remember-me), per-user personal API tokens (DRF authtoken), whole app gated behind login. Each artifact has an owner; feeds are private per user. - Rename persona -> source (free-text label for whatever posted an artifact: agent-profile, script, or person). source + tags form one unified label system; single label filter matches tags, source has its own filter/column/sidebar. - Settings area (gear/user menu, top-right): Account (view/regenerate token) and Demo Data (in-app button seeding one artifact per kind). User account management via Django admin (superusers only). - Feed rework: rolling 7-day window with sticky inline date separators and infinite scroll; left sidebar is now a Sources list with per-source unread counts; artifact type shown as text after title; source in its own column. - Unread tracking: read_at on Artifact, marked read when previewed, bold titles for unread, sidebar unread badges, old banner removed. - Tag colours: global shared registry, hash-based default with optional per-tag override via tag_colors on POST/PATCH. - Ingest: token resolves owner; same source name under two users' tokens stays isolated. daybook_post.py renamed persona->source, requires a real token, --check accepts a bearer token. Docs updated to match. Migrations 0004-0008 rename persona, add owner (nullable -> backfill to first superuser -> required), and add read_at. Fresh installs no-op the backfill. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
56 lines
2.6 KiB
Markdown
56 lines
2.6 KiB
Markdown
---
|
|
name: daybook-posting
|
|
description: Use when you have produced a finished deliverable such as a report, summary, brief, diagram, generated HTML, PDF, deck, or status update that a human should review later outside this chat. Publishes the artifact to Daybook and returns a URL.
|
|
---
|
|
|
|
# Daybook Posting
|
|
|
|
Daybook is a private artifact journal for completed agent outputs. It stores, indexes, and displays artifacts for human review. It does not execute commands, run workflows, or continue conversations.
|
|
|
|
Always use the helper script. Do not hand-build curl, JSON, PowerShell multipart, or inline shell content.
|
|
|
|
From the project root:
|
|
|
|
```bash
|
|
python skills/daybook-posting/scripts/daybook_post.py --check
|
|
python skills/daybook-posting/scripts/daybook_post.py --kind markdown --title "Build Report" --content-file report.md
|
|
cat report.md | python skills/daybook-posting/scripts/daybook_post.py --kind markdown --title "Build Report"
|
|
python skills/daybook-posting/scripts/daybook_post.py --file diagram.svg --title "Architecture Diagram"
|
|
```
|
|
|
|
The project also keeps a compatibility wrapper at `scripts/daybook_post.py`, but the canonical helper is bundled inside this skill.
|
|
|
|
The artifact URL is printed as the final stdout line.
|
|
|
|
## Configuration
|
|
|
|
Use environment variables:
|
|
|
|
```text
|
|
DAYBOOK_URL=http://127.0.0.1:8001
|
|
DAYBOOK_TOKEN=your-personal-api-token
|
|
DAYBOOK_SOURCE=agent
|
|
```
|
|
|
|
`DAYBOOK_TOKEN` is your personal per-user API token, from Settings → Account in the app (not a token shared by everyone). Artifacts posted with your token land only in your feed.
|
|
|
|
## Kind Cheat Sheet
|
|
|
|
| Kind | Use for | Content shape |
|
|
|---|---|---|
|
|
| `markdown` | Reports, briefs, notes | Markdown text. |
|
|
| `html_fragment` | Themed HTML reports/cards/tables | Body-only HTML. No `html/head/body`. |
|
|
| `html_full` | Complete custom pages/frameworks | Full HTML document with doctype/html/head/body. |
|
|
| `deck` | Simple slide-like artifact | Top-level `<section>...</section>` blocks. |
|
|
|
|
For images, PDFs, SVGs, and other files, use `--file`; the helper infers multipart and content type.
|
|
|
|
For CSV, JSON, or code that should render today, use `--file path --as-markdown` to post it as a Markdown fenced code block. Without `--as-markdown`, these upload as downloadable binary files.
|
|
|
|
## Rules
|
|
|
|
- Run `--check` first if unsure Daybook is reachable.
|
|
- Use a stable `DAYBOOK_SOURCE` or pass `--source` (the agent-profile, script, or person name that produced this artifact).
|
|
- Use `--tags a,b,c` for filtering.
|
|
- Use `--meta run_id=... --meta model=...` for machine-readable context.
|
|
- Never inline multiline content into the shell command; use a file or stdin.
|