Built for agents
lift.md format is plain markdown, so any LLM can read and write workouts without special tooling. Bring your own model — there's nothing proprietary to learn, no SDK to install, and no lock-in. This page collects the resources that make LiftMark easy to drive from an agent, plus copy-paste setup for the common ones.
The format is just markdown
A header, exercises, and lists of sets:
# Bench Day
@units: lbs
## Bench Press
- 135 x 5
- 185 x 5
- 225 x 5 Full spec (or raw markdown to feed into a model's context).
llms.txt
getlift.md/llms.txt is a machine-readable index of the format, spec, validator API, and skill installer — point an agent at it as a single entry point to everything below.
Validate before you trust it
Have an agent check its own output against the live validator at
POST https://getlift.md/validate. The simplest call is the raw
markdown as the request body — no JSON escaping:
curl -s -X POST https://getlift.md/validate \
-H 'Content-Type: text/markdown' \
--data-binary @workout.md
Prefer JSON? Send Content-Type: application/json with a body of
{"markdown": "..."}. Either way you get back
{success, summary, errors, warnings} — feed the
errors back to the model to iterate until success is true.
The skill
Most of the work is packaged as one Agent
Skill, generate-workout: it teaches the model the format
and validates every workout against the API. Install it with one line, or
download the skill bundle and
add it to any tool that loads skills. Pick your agent below.
Install the generate-workout skill with one line. It
teaches Claude
Code the format and validates every workout against the API
automatically:
curl -fsSL https://getlift.md/install.sh | sh Start a new session and ask for a workout — e.g. "write me a push day in lift.md format". The skill fetches the spec, drafts the plan, and loops on the validator until it passes. (You can also just tell Claude to run that installer for you.)
Cowork and claude.ai both run the same Agent Skills. Grab the bundle and add it:
- claude.ai: Customize → Skills → + → Create skill, and upload the zip.
- Cowork: add it the same way under Customize, or just ask Claude to install it for you.
The skill validates automatically wherever the sandbox is allowed to
reach getlift.md (Cowork running locally, or a claude.ai
workspace with outbound access enabled). If network egress is locked
down, the skill still writes correct lift.md — validate the result
yourself by pasting it into the box on the
format hub.
Codex
CLI reads an AGENTS.md file from your repo root (or
~/.codex/AGENTS.md for all projects). Drop in this
recipe and Codex will fetch the spec and validate its own output:
# lift.md workouts
When I ask you to write or edit a lift.md (LiftMark) workout:
1. Read the format spec first and follow it:
curl -s https://getlift.md/spec.md
2. Write the plan in lift.md format — a `# Title`, `## Exercise`
headings, and `- weight x reps` set lines.
3. Validate before showing it to me. Save the workout to a file and POST it:
curl -s -X POST https://getlift.md/validate \
-H 'Content-Type: text/markdown' \
--data-binary @workout.md
4. The response is JSON: {success, summary, errors, warnings}. If success is
false, fix everything listed in errors and re-validate. Only hand me a
workout that validates. Codex runs with network access off by default — approve the network prompt when it validates, or run with Full Access. No other setup needed.
No special tooling — this works with any model behind the OpenAI or Anthropic API, or any agent that can make an HTTP request:
-
Fetch the spec once and put it in your system prompt:
curl -s https://getlift.md/spec.md. It's static, so cache it (with Anthropic, mark the block for prompt caching). - Have the model produce a workout in lift.md format.
-
POST the output to the validator (raw markdown is simplest):
curl -s -X POST https://getlift.md/validate \ -H 'Content-Type: text/markdown' \ --data-binary @workout.md -
If
successis false, append theerrorsarray to the conversation and ask for a fix. Repeat — bounded to a few retries — until it validates.
Links
- Format hub — pitch, examples, and live validator
- Full specification (also raw markdown)
- llms.txt — machine-readable index for LLMs
- generate-workout skill (.zip) — or
curl -fsSL https://getlift.md/install.sh | sh - Validator API:
POST https://getlift.md/validate - GitHub repository