Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add terva-sh/terva --skill house-stylegit clone --depth 1 https://github.com/terva-sh/tervaWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/terva-sh/terva/house-style)<a href="https://agentmods.dev/skills/terva-sh/terva/house-style"><img src="https://agentmods.dev/badge/skills/terva-sh/terva/house-style/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/terva-sh/terva/house-style"><img src="https://agentmods.dev/badge/skills/terva-sh/terva/house-style.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00057 | $0.01213 |
| Opus 5 | $0.00028 | $0.00607 |
| Sonnet 5 | $0.00011 | $0.00243 |
| Haiku 4.5 | $0.00006 | $0.00121 |
Grade A, and why
house-style scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 111 lines — stays where its author put it; the contents beside it link to each section on GitHub.
House style
Apply this to what you say in a reply and to what you commit. The rules are the same for both. A reader should not be able to tell which one they are reading.
The target is prose a tired engineer understands on the first read. It should also be prose that could not have been written about any other project.
Later instructions refine these rules. A project's own AGENTS.md is the more
specific layer, so its rulings win.
The test that catches the most
Say what a thing does, not how it feels. "The database stays close at hand"
names a feeling. So does "types that follow your schema". Name the mechanism or
the number instead. Write ".toSQL() returns the exact string sent to the
database", or "a column rename fails the build".
Then the check that catches most of the rest. Read the sentence again. If it could appear unchanged in another project's documentation, it says nothing about this one. Cut it.
A project's own nouns are not jargon
Generic slop lists ban words like substrate, wedge, vector, locus, nexus, primitive, harness, surface, bedrock, scaffolding, modality, and paradigm. Most of those are worth avoiding. Some of them are a given project's real names, and there they stay.
The rule underneath is the one to carry: the codebase is the word list. Write the real symbol, file, flag, or command name. Do not write a synonym for it, and do not describe it.
A word that names a real thing in the project is already the concrete word. A
word you could swap for a plainer one with nothing lost is the metaphor. Swap
that one. Substrate is usually base, unless the project has a Substrate type.
Punctuation and layout
- No em dashes. Separate thoughts with a period or a comma. End the sentence, or join it with a comma. Parentheses and en dashes are the same move in a different hat, so they do not substitute.
- Never blind-substitute punctuation. A file-wide swap of em dash for comma produces sentences nobody wrote. Rewrite the sentence with the punctuation it actually wants.
- Straight quotes, never curly.
- Sentence case in headings. Proper nouns keep their capitals.
- Colons introduce a list or an example. A colon used as a mid-sentence connector usually holds up a sentence that should stand on its own.
- Bold carries weight only when it is rare. Do not bold every proper noun, acronym, or term of art.
- No decorative emoji. Emoji that carries data keeps its place, such as an icon field that identifies a row. Everything else in a heading or a bullet goes.
- An inline-header list is a tell when the label restates the line. An example is "Performance: Performance improved by 40%." Turn those into prose.
- Two inline-header forms are fine. One is a bold lead-in that ends in a period, names the item, and adds new detail. The other is a metadata field label with its value.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago Changed · -10 lines b9c50501dd40
- 9d ago First seen · 121 lines · 57 tokens per session scan A 96371be1b750
house-style is a skill published in the GitHub repository terva-sh/terva (2 stars, last pushed today), licensed MIT. It adds 57 tokens to every session and 1,213 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
pi-sync
Daily upstream-sync job for the pi Go port — fetch upstream pi, triage every change since the recorded pin, port what's in scope, verify idiomatic + parity via independent reviews, update the ledger, and push. Use for "sync with upstream", "porting job", or as the scheduled daily run.
pi-go-review
Review ported Go code for idiomatic quality — that the port maximizes Go rather than transliterating TypeScript. Use after porting upstream pi changes, or standalone on any diff in this repo.
sls-dashboard-builder
A tool for creating and modifying importable JSON dashboards for Alibaba Cloud SLS, a service for searching and monitoring logs. It maps checked queries and analysis needs to dashboard charts.
loongsuite-pilot-insight
A reporting workflow for turning LoongSuite Pilot and AI coding-agent logs into structured reports about events, teams, data quality, development efficiency, and AI use. It defines the meaning of the log fields and the measurements used in dashboards.
code-guidelines-go
Go 1.24–1.27 coding guidelines for the dimetron/pi-go AI agent runtime. Use this skill whenever writing, reviewing, or refactoring ANY Go code in pi-go. This covers idiomatic style, error handling, concurrency, project layout, testing (table-driven, fuzz, benchmarks, synctest), new stdlib usage, golangci-lint v2…
go-127
What changed in Go 1.27 (released August 2026) and how it changes the way Go is written in pi-go. Use this skill when writing or reviewing Go that could use a 1.27 feature, when bumping the go directive in go.mod, when a build or test behaves differently after a toolchain upgrade, or when code-guidelines-go points…