Project CLAUDE.md & a custom Cerebras skill
Put your fingerprints on the build. Write a project CLAUDE.md with process and design sections, then author your own skill so Claude calls an LLM the Cerebras way — fast, structured, and shareable.
Now the human element. A one-line prompt would build something, but if we want a strong, differentiated
product, this is where we put our fingerprints on it — through a carefully written project
CLAUDE.md and our very own skill. Let's write both.
01The project CLAUDE.md: set the scene
Open a new CLAUDE.md in the repo root and describe the product at a high level — not
the detailed requirements (those belong in Jira), just enough for Claude to stay coherent because it knows
the game:
“Pre-Legal is a SaaS product that lets users draft legal agreements based on templates in the
templates directory. The user has a chat to establish which document they want and how to fill
in the fields. The available documents are described in catalog.json…”
Type @catalog.json (or a full path) inside CLAUDE.md and Claude Code
inserts that file's contents right there. Great for pulling in a catalog, or referencing an
agents.md. One character, whole file included.
Add a line of context — “the initial implementation is a front-end-only prototype” — so Claude understands the starting state.
02A development-process section
Spell out how work should flow, so every ticket is built the same disciplined way:
Use your Atlassian tools to read the feature instructions from Jira. Develop the feature — do not skip any steps. Thoroughly test with unit tests and integration tests; fix any issues. Submit a PR using your GitHub tools.
03An AI-design section (enter Cerebras)
Because this product calls an LLM to understand the user and fill fields, we say how:
When writing code to call an LLM, use your cerebras skill: LiteLLM via OpenRouter to the `openai/gpt-oss-120b` model, with Cerebras as the inference provider. Use structured output so results can populate the document fields.
“Use your cerebras skill” — a skill we are about to build. This is the payoff of skills: the
CLAUDE.md stays short and just points at the expertise.
04A technical-design section
Give the architecture guardrails so Claude builds something coherent and containerised:
Package the whole project into a Docker container. Backend in `backend/` — a UV project using FastAPI. Frontend in `frontend/`. Provide scripts to start and stop the app. Use SQLite, created fresh each time the container starts, with a users table supporting sign-up and sign-in.
Single line breaks in Markdown collapse into one paragraph. To force separate lines (as in a list of scripts), end
each line with two spaces. Open the preview and you will see it lay out properly — a small
thing that keeps your CLAUDE.md readable.
05Build the Cerebras skill
Why Cerebras? We want the AI to respond blisteringly fast. We use an open model,
gpt-oss-120b, over OpenRouter, but pin the provider to Cerebras —
you pay a little more than the cheapest option, but responses come back almost instantly. (Prefer free models? Just
skip this or point the skill elsewhere.)
Create the folder .claude/skills/cerebras/ and a SKILL.md inside. The
metadata block at the very top must use this exact format — like an API key, get it wrong and it
will not work:
--- name: cerebras description: Cerebras inference. Use this to write code to call an LLM using LiteLLM and OpenRouter with the Cerebras inference provider. --- # Calling an LLM via Cerebras These instructions let you write code to call an LLM with Cerebras specified as the inference provider. Read the model + key from `.env`. # structured output, pinned to the Cerebras provider resp = litellm.completion( model="openrouter/openai/gpt-oss-120b", messages=messages, api_key=os.environ["OPENROUTER_API_KEY"], response_format=NDAFields, # a Pydantic schema extra_body={"provider": {"order": ["Cerebras"], "allow_fallbacks": False}}, )
Clear metadata (so Claude knows when to reach for it) plus a few good code snippets (so it knows
how). Anyone on your team who clones the repo gets the same skill. Tomorrow you will literally see the
extra_body from this file appear in the code Claude writes — proof the skill was used.
06Wire in the key and go
The skill needs an OpenRouter API key. Copy your existing .env across — and thanks to
the .gitignore we set up, it will never be committed:
cp ../pm/.env . # brings your OPENROUTER_API_KEY into this projectFinally, make it crystal clear in CLAUDE.md: “There is an OpenRouter API key in the
.env file in the project root.” Now we have a project CLAUDE.md,
a home CLAUDE.md, a .env, and a brand-new Cerebras skill — the
product is fully primed to build.
✓ Key takeaways
- The project
CLAUDE.mdsets high-level context (leave detailed requirements to Jira) and can pull in files with the@fileimport trick. - Give it sections for process (read Jira, don't skip steps, test, PR), AI design (use the cerebras skill), and technical design (Docker, FastAPI, SQLite).
- A skill is a folder under
.claude/skills/with aSKILL.md; the metadata block format must be exact. - Cerebras gives super-fast inference for
gpt-oss-120bvia OpenRouter, pinned withextra_bodyprovider routing, plus structured output. - Copy in
.env(never committed, thanks to.gitignore) and name it inCLAUDE.md.