Agents can now put images inside markdown/HTML artifacts instead of only
posting them as standalone artifacts.
- New Asset model: an image uploaded ahead of the artifact that embeds it.
- POST /api/assets uploads an image (image/* only, 50 MB cap) and returns
a stable URL the agent references normally, e.g. . No custom
syntax; existing markdown/fragment rendering handles it.
- GET /assets/{id} serves the image, owner-scoped (404 for other users).
- On artifact creation the content is scanned for asset URLs and matching
assets are attached to it, so the image dies with the artifact it belongs
to. Uploads never referenced are swept after a 24h grace period.
- Quota: assets count toward the owner's quota at upload time and can
trigger eviction; evicting an artifact frees its assets too, and usage
now sums artifacts plus assets.
- daybook_post.py gains --upload-image, which prints the URL to embed.
- Docs and SKILL.md cover the upload-then-reference workflow.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
73 lines
3.2 KiB
Markdown
73 lines
3.2 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.
|
|
|
|
## Images Inside Content
|
|
|
|
To embed an image *within* a markdown or HTML artifact (rather than posting it as its own
|
|
artifact), upload it first and reference the returned URL:
|
|
|
|
```bash
|
|
# 1. Upload -> prints the URL as the last line
|
|
python skills/daybook-posting/scripts/daybook_post.py --upload-image chart.png
|
|
|
|
# 2. Reference that URL in your markdown, then post as usual
|
|
# 
|
|
python skills/daybook-posting/scripts/daybook_post.py report.md
|
|
```
|
|
|
|
The image is linked to the artifact that references it and is deleted along with it.
|
|
Unreferenced uploads are cleaned up after 24 hours.
|
|
|
|
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.
|