Prompts are git repositories
Every prompt on Rubricary is stored as a git repository, named org/name. Its layout is always the same:
support/refund-request/├── prompt.md # the system prompt itself├── evals.yaml # eval cases the prompt is scored against├── README.md # optional notes for whoever reuses it└── LICENSE # the license the prompt text is published underVersions are commits
Every edit is a commit. A version is a label — v1.2.0 — attached to one commit, and the prompt's production version is the one add, get_prompt and the website serve by default. A commit that isn't published yet is a proposal: it's in the history, but nothing resolves to it until it's approved.
Before any commit is accepted, prompt.md goes through the same lint the editor shows as you type. A draft with a lint error is rejected, so every version in the history passed it.
Read a repository over HTTP
Four read-only endpoints expose the repository directly. ref accepts a commit hash or HEAD. Public prompts need no session.
# One file at a ref (defaults: path=prompt.md, ref=HEAD)curl "https://app.rubricary.com/api/git/read?repo=support/refund-request&path=evals.yaml" # Every file at a refcurl "https://app.rubricary.com/api/git/tree?repo=support/refund-request&ref=HEAD" # Commit history, newest first (depth defaults to 50)curl "https://app.rubricary.com/api/git/log?repo=support/refund-request&depth=10" # Every file of a version, zipped (omit version for the current one)curl -OJ "https://app.rubricary.com/api/git/archive?repo=support/refund-request&version=v1.4"read returns the file as plain text (add download=1 to save it as a file); tree and log return JSON; archive returns a zip. A path that doesn't exist at that ref answers 404.
There is no git clone endpoint yet. The archive and npx rubricary add cover getting the files, and log covers the history.