<< All versions

Skill v1.0.1

currentAutomated scan100/100
awebai/aweb/create-from-template

+3 new

──Details
PublishedOctober 22, 2026 at 07:43 AM
Content Hashsha256:997e98cd839210ab...
Git SHA567f85730549
Bump Typepatch
Compare with v1.0.0
──Files
Files (1 file, 4.3 KB)
SKILL.md4.3 KBactive
SKILL.md · 162 lines · 4.3 KB

version: "1.0.1" name: create-from-template description: Use when an agent needs to create or append a folio document from a built-in declarative template: pitch, memo, or metrics. This is for USING folio, not changing server code.


Create a folio document from a built-in template

Use this when the human wants a structured deck, memo, or metrics page and you want folio to render schema-validated slots to ordinary Markdown before storage. The stored document is still append-only Markdown; templates are just a safer input shape for common layouts.

Prerequisites

Run from a workspace with an active AWID team certificate:

bash
aw workspace status
aw id cert show
export FOLIO_ORIGIN=https://folio.aweb.ai

For local development, use http://127.0.0.1:8765 instead.

Template schema

All template requests use:

json
{"name":"<pitch|memo|metrics>","slots":{}}

Minimal pitch selector shape: {"name":"pitch","slots":{"cover":{"title":"Deck"},"sections":[]}}.

Built-ins:

  • pitch: cover/metrics/sections/ask
  • memo: cover/sections
  • metrics: cover/metrics

Slot fields:

  • cover: title required; optional subtitle, eyebrow.
  • metrics: array of objects with label required, value required, optional caption.
  • sections: array of objects with heading required, optional body Markdown.
  • ask: object with optional headline, body Markdown, items array of strings.

Unsupported templates, slots, fields, or bad shapes fail closed with 422.

Pitch body shape

bash
cat > pitch-template.json <<'JSON'
{
"slug": "pitch",
"title": "Pitch",
"template": {
"name": "pitch",
"slots": {
"cover": {
"title": "Aweb Folio",
"subtitle": "Agent-authored documents and presentations",
"eyebrow": "Private by capability link"
},
"metrics": [
{"label": "Teams", "value": "12", "caption": "pilot workspaces"},
{"label": "Time to share", "value": "<1 min", "caption": "after draft approval"}
],
"sections": [
{"heading": "Problem", "body": "Agents need durable handoffs that humans can read without logging in."},
{"heading": "Solution", "body": "Use append-only Markdown, team themes, media, and no-login present links."}
],
"ask": {
"headline": "Ask",
"body": "Approve launch and send the presentation link.",
"items": ["Ship folio", "Watch deploy", "Follow up with feedback"]
}
}
}
}
JSON
aw id request POST "$FOLIO_ORIGIN/v1/documents" --team-auth --raw \
--body-file pitch-template.json

Memo body shape

bash
cat > memo-template.json <<'JSON'
{
"slug": "team-memo",
"title": "Team memo",
"template": {
"name": "memo",
"slots": {
"cover": {"title": "Team memo", "subtitle": "Weekly update"},
"sections": [
{"heading": "Status", "body": "Green — final milestone is in review."},
{"heading": "Risks", "body": "Keep present links private and noindex."}
]
}
}
}
JSON
aw id request POST "$FOLIO_ORIGIN/v1/documents" --team-auth --raw \
--body-file memo-template.json

Metrics body shape

bash
cat > metrics-template.json <<'JSON'
{
"slug": "launch-metrics",
"title": "Launch metrics",
"template": {
"name": "metrics",
"slots": {
"cover": {"title": "Launch metrics"},
"metrics": [
{"label": "Documents", "value": "12", "caption": "this team"},
{"label": "Versions", "value": "48", "caption": "on the busiest document"}
]
}
}
}
JSON
aw id request POST "$FOLIO_ORIGIN/v1/documents" --team-auth --raw \
--body-file metrics-template.json

Append a template-generated version

Use the template body without slug/title against the append endpoint:

bash
cat > pitch-v2-template.json <<'JSON'
{
"name": "memo",
"slots": {
"cover": {"title": "Pitch update"},
"sections": [
{"heading": "Changes", "body": "Updated the ask and launch metrics."}
]
}
}
JSON
aw id request POST "$FOLIO_ORIGIN/v1/documents/pitch/versions/template" --team-auth --raw \
--body-file pitch-v2-template.json

Present the generated document

bash
aw id request POST "$FOLIO_ORIGIN/v1/present" --team-auth --raw \
--body '{"slug":"pitch","ttl_seconds":86400}'

The returned /present/<token> page uses the same theme, layout, sanitizer, and noindex protections as any other folio document.

← v1.0.0All versions