Keep a prompt library your agents can fetch
Store reusable prompts and skills in a Base76 base with full history, and serve each one as plain markdown that any agent or script can fetch.
Prompts you reuse end up scattered across chat histories, dotfiles, and docs. Put them in a base and every agent you use reads from the same copy. Each edit keeps the previous version, and a share link serves every prompt as plain markdown, so Claude Code, a shell script, or another vendor’s agent can fetch one with curl.
The prompt
Create a prompt library base in Base76. Each prompt has a unique kebab-case name, a one-line summary, tags, and the full prompt as markdown. Save the three prompts below.
The schema
| Field | Type | Notes |
|---|---|---|
name | text | Unique; display field, so it becomes the page title and slug |
summary | text | One line |
tags | multi_select | allow_new: true |
body | markdown | Required |
The agent can set the page templates in the same define_collection call. Prompt pages show the tags and the body. The collection page is a list sorted by name:
"templates": {
"record": [{"type": "title"},
{"type": "chips", "field": "tags"},
{"type": "markdown", "field": "body"}],
"collection": [{"type": "list", "fields": ["summary", "tags"],
"sort": "name"}]
}
Edit without making copies
Because name is unique, the agent saves prompts with upsert matched on it. Send a prompt that exists and it updates in place; send a new one and it’s created:
curl -s -X PUT https://api.base76.com/v1/bases/tim/prompts/records/prompts \
-H "Authorization: Bearer $B76_KEY" \
-H 'content-type: application/json' \
-d '{"on": "name",
"records": [{"name": "code-review",
"body": "# Code review\n\nCheck for bugs first."}]}'
The response counts what happened: "created": 0, "updated": 1. Only the fields you send change, so the summary and tags stay as they were.
The old body isn’t gone. history lists every version of a record with who changed it, the API key or the agent’s connection, and what changed. restore writes an old version back as a new one, so going back is itself undoable.
Serve prompts as markdown
Ask the agent to share the prompts collection. Add .md to the link and you get an index of every prompt:
# Prompts
- [code-review](https://app.base76.com/s/b76s_…/code-review-cct2yfrj.md) — Summary: Review a diff for correctness first, Tags: code
- [meeting-recap](https://app.base76.com/s/b76s_…/meeting-recap-b9gk56cm.md) — Summary: Decisions and owners from a transcript, Tags: writing
- [release-notes](https://app.base76.com/s/b76s_…/release-notes-gqe2j7fk.md) — Summary: Turn a git log into user-facing release notes, Tags: writing, code
Each prompt’s link returns frontmatter (id, name, summary, tags, version, dates) and then the body. In a script:
PROMPTS="https://app.base76.com/s/b76s_…"
curl -s "$PROMPTS/release-notes-gqe2j7fk.md"
The slug is the name plus the last eight characters of the record id. Base76 resolves the link by those eight characters, so renaming a prompt doesn’t break links you’ve already handed out.
Limits
- Anyone with the share link can read every prompt in the collection. For private prompts, skip the share link and have scripts call
getwith an API key. - Share pages are cached for up to a minute, so an edit can take that long to show up at the link.
- Markdown renders with raw HTML turned off. A prompt that contains HTML shows it as text.