Borrowing it
Nothing to install: this file belongs to gotempsh/temps. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/gotempsh/temps/main/AGENTS.mdgit clone --depth 1 https://github.com/gotempsh/tempsWrote 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/instructions/gotempsh/temps/agents-md)<a href="https://agentmods.dev/instructions/gotempsh/temps/agents-md"><img src="https://agentmods.dev/badge/instructions/gotempsh/temps/agents-md/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/instructions/gotempsh/temps/agents-md"><img src="https://agentmods.dev/badge/instructions/gotempsh/temps/agents-md.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.06783 | $0.06783 |
| Opus 5.5 | $0.02713 | $0.02713 |
| Sonnet 5.5 | $0.01357 | $0.01357 |
| Haiku 4.5 | $0.00678 | $0.00678 |
Grade B, and why
temps AGENTS.md scanned grade B with 2 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 yesterday.
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.
Strips warnings and disclaimersmediumAnti-refusal
Omitting safety caveats hides risk from the user and is a common jailbreak preamble.
- **Run `cargo check --lib`** (or `-p <crate>`) after every modification; only build when you are at least 99% sure it compiles. New code compiles **without warnings**; fix them all before calling work complete. Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
server serves it minified with unstable key order, so `curl ... > How it starts
The opening of the file, as written. The whole thing — 355 lines — stays where its author put it; the contents beside it link to each section on GitHub.
AGENTS.md
The rules for working on Temps, for people and for every coding agent. Claude
Code loads this file through CLAUDE.md; Codex, Cursor and others read it
directly. Core philosophy: code that works safely, and when it fails,
explains why comprehensively.
Read REVIEW.md before opening a PR: the recurring review
findings (authorization scope, secrets in logs, stale writes, cancellation and
cleanup, resource limits, migrations) and a pre-PR checklist.
| Need | Go to |
|---|---|
| What each crate does, its layer and consumers | docs/architecture/crates.md (generated) |
| A crate that follows the rules below end to end | crates/temps-flags: error.rs, services/flag_service.rs, handlers/{handler,types,audit}.rs, plugin.rs |
| Step-by-step recipes (skills) | temps-add-migration-and-entity, temps-add-handler, temps-add-plugin, temps-split-module, temps-design-system, start-temps |
| Environment variables the binary reads, and why | docs/reference/environment-variables.md |
| Architecture decisions | docs/adr/README.md; a new ADR takes python3 scripts/adr_index.py --next |
Critical Rules
NEVER
- Put a real user's, customer's or third party's identity into anything that leaves this machine. The repository is public. Company, product and account names, internal hostnames, contract/method names, real trace/span/request IDs, or any other detail that identifies whose system produced a payload never appear in code, comments, test fixtures, commit messages, branch or file names, PR titles, descriptions or comments, or issue text.
- Reproducing a reported bug: keep the shape that makes the payload valuable (timings, ordering, precision, nesting, sizes, edge cases); rename services, operations and hosts to generic ones and regenerate every identifier. A fixture that identifies nobody is strictly better.
- Describing it: say "a reported cross-project trace", never who reported it.
- A live task target is scratch input, not evidence: a real URL, repo or account a user hands you ("deploy github.com/someone/their-repo") must not end up in tests, fixtures, commits or PRs as an example, even though the user supplied it. Write against a generic case ("a repo with no build manifest, just an
index.html"). - Allowed: public provider names and logos that identify supported integrations, and upstream URLs and copyright/license notices that attribute third-party assets; keep required attribution. This never covers customer accounts, private hostnames, credentials or captured payload identifiers.
- Before pushing, grep the diff and any PR body for the reporter's names and identifiers. Once on GitHub it is effectively permanent: force-pushing does not remove a PR's recorded commits or diff, PRs cannot be deleted, forks keep the objects.
- Put the local build or verification environment into public text (PRs, commits, code comments): machine paths, cache helpers or servers, Docker socket paths, local toolchain workarounds. Report verification as the generic commands and their results.
- Commit
.envfiles, credentials or secrets, including local dev-instance artifacts (encryption keys, auth secrets, generated tokens,temps_data-style directories). Rungit statusbefore staging and scrutinize every path you did not intentionally edit; a broadgit addafter running a local instance is the usual cause. A committed secret is compromised: stop tracking it and tell the user whether history needs rewriting; never force-push without asking. - Sweep unrelated dirty files into a commit. If the tree was dirty when you arrived, ask before staging those files.
- Access the database from an HTTP handler. Handlers call services.
- Return untyped JSON (
serde_json::Value). Use typed structs. - Use anyhow's
.context()/.with_context(). Use.map_err()into a typed error. Enforced asdisallowed-methodsinclippy.toml(thetemps-clibootstrap binary is exempt). - Use
.unwrap()/.expect()in production code. Use?or explicit handling.unwrap_used,expect_used,dbg_macroandtodoare denied workspace-wide (tests are exempt viaclippy.toml). For a truly infallible call prefer restructuring; otherwise#[allow(clippy::unwrap_used, reason = "why it cannot fail")]on the narrowest item. Every lintallowneeds areason. - Use
anyhow::Resultin the service layer. Use typedthiserrorenums. - Expose stored sensitive data (API keys, tokens, passwords) in responses; mask them. The one exception is a credential minted by the request itself (a new API key, an admin-reset temporary password): returned exactly once in plaintext with
Cache-Control: no-store, never persisted in retrievable form, never logged or audited. - Write N+1 queries. Use JOINs for related data.
- Leave the project in a non-compilable state.
- Use
#[tokio::main]when integrating with pingora. - Log in plain text. Use structured logging (JSONL for deployment logs).
- Overwrite
apps/temps-cli/openapi.jsonwith the raw server response. Usebun run spec:update(OpenAPI clients). - Create markdown documentation files unless explicitly asked.
- Mark Docker tests
#[ignore]. They skip at runtime when Docker is missing.#[ignore = "reason"]is allowed only on a test a dedicated CI job runs with--ignored, or a known-broken/manual test whose reason starts withknown broken:/manual:and says what is wrong. A bare#[ignore]fails CI (scripts/rule_drift.py). - Write error types with generic messages. Include IDs, names and the operation.
- Expose internal dependencies through public accessors (
service.db()). Pass them via the constructor orAppState. - Use
Option<T>for a required dependency. UseArc<T>and fail at startup if it is missing. - Use
get_servicefor a required plugin dependency. Userequire_service, which fails fast with a clear error. - Add runtime configuration as an environment variable (next section).
- Hand-edit
CHANGELOG.md. git-cliff generates it from commit subjects at release time (concurrent edits used to conflict constantly); preview withscripts/changelog.sh --unreleased. - Pass
--no-verifyunless the user explicitly asks. If a hook is broken, fix the hook. - Mutate Docker resources you did not create. A host may already run a live Temps instance or operator-owned resources: never stop, remove, prune, rebuild or retag existing containers, images, volumes or networks. Tests create uniquely named resources and clean up only their own.
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.
- yesterday Changed · +5 lines · +93 tokens per session b7f84283addb
- 4d ago Changed · -34 lines · +2,696 tokens per session scan A → B ee1bb823c290
- 13d ago Changed · +10 lines · +133 tokens per session 862ec3d1ceae
- 15d ago Changed · +8 lines · +80 tokens per session cd7c02b44f93
- 1mo ago Changed · +5 lines · +97 tokens per session e0aa73d645c8
- 1mo ago Changed · -22 tokens per session 6a8db135d1cc
- 1mo ago Changed · +10 lines · +126 tokens per session 8856c69645d5
- 2mo ago Changed · +36 lines · +339 tokens per session 8c1673d3b8e5
- 2mo ago First seen · 315 lines · 3,241 tokens per session scan A 41e23c705265
temps AGENTS.md is an instructions file published in the GitHub repository gotempsh/temps (903 stars, last pushed yesterday), licensed Apache-2.0. It adds 6,783 tokens to every session, about $0.0271 per session on Opus 5.5. A static security scan graded it B with 2 findings (strips warnings and disclaimers, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
temps AGENTS.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| temps AGENTS.mdgotempsh/temps | Instructions file | 903 | yesterday | Apache-2.0 | B | 6,783 | Codex, OpenCode |
| vscode buildNext.instructions.mdmicrosoft/vscode | Instructions file | 195k | today | MIT | A | 9,719 | GitHub Copilot |
| next.js AGENTS.mdvercel/next.js | Instructions file | 143k | today | MIT | A | 7,461 | Codex, OpenCode |
| langchain AGENTS.mdlangchain-ai/langchain | Instructions file | 149k | today | MIT | A | 4,680 | Codex, OpenCode |
| vscode oss-third-party-notices.instructions.mdmicrosoft/vscode | Instructions file | 195k | today | MIT | A | 5,516 | GitHub Copilot |
| vscode copilot-instructions.mdmicrosoft/vscode | Instructions file | 195k | today | MIT | A | 3,093 | GitHub Copilot |
| deepseek-harness AGENTS.mddeepseek-ai/deepseek-harness | Instructions file | 274k | 2d ago | MIT | A | 4,313 | Codex, OpenCode |