Borrowing it
Nothing to install: this file belongs to cryptomilk/hass-eink-dashboard. 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/cryptomilk/hass-eink-dashboard/main/AGENTS.mdgit clone --depth 1 https://github.com/cryptomilk/hass-eink-dashboardWrote 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/cryptomilk/hass-eink-dashboard/agents-md)<a href="https://agentmods.dev/instructions/cryptomilk/hass-eink-dashboard/agents-md"><img src="https://agentmods.dev/badge/instructions/cryptomilk/hass-eink-dashboard/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/cryptomilk/hass-eink-dashboard/agents-md"><img src="https://agentmods.dev/badge/instructions/cryptomilk/hass-eink-dashboard/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.03655 | $0.03655 |
| Opus 5.5 | $0.01462 | $0.01462 |
| Sonnet 5.5 | $0.00731 | $0.00731 |
| Haiku 4.5 | $0.00365 | $0.00365 |
Grade A, and why
hass-eink-dashboard AGENTS.md 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 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.
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 — 245 lines — stays where its author put it; the contents beside it link to each section on GitHub.
AGENTS.md
Commands
uv run --group test pytest # run all tests
uv run --group test pytest tests/test_render.py::TestRenderWeather::test_weather_draws_temperature # run a single test
uv run --group lint ruff check . # lint
uv run --group format ruff format --check . # format check
uv run --group typecheck ty check # typecheck
uv run --group interrogate interrogate -vv custom_components/eink_dashboard/ # docstring coverage
After making changes, ALWAYS run:
uv run --group format ruff format . && uv run --group lint ruff check . && uv run --group format ruff format --check . && uv run --group typecheck ty check && uv run --group test pytestfor Python changespnpm --dir custom_components/eink_dashboard/frontend typecheck && pnpm --dir custom_components/eink_dashboard/frontend testfor TypeScript changes
Architecture
This is a Home Assistant custom component (custom_components/eink_dashboard/)
that renders e-ink dashboard images as PNG bytes and exposes them via an HA
image entity and a public HTTP endpoint.
Key files:
render.py— rendering orchestrator and shared helpers (delegates tosvg_render.py; also holdsWidgetMetrics,_compute_metrics,color_to_hex,DEFAULT_METRICS,_load_font, and other utilities imported lazily by widget modules andwidgets/_helpers.py)svg_render.py— SVG rendering pipeline: Jinja2 templates, icon-inlining filters (_mdi_svg_filter,_weather_svg_filter),render_widget_svg(),_compose_svg(),_svg_to_png()viaresvg_pywidgets/— per-widget SVG context builders (_build_*_context()), one module per widget type; re-exported viawidgets/__init__.pywidgets/_helpers.py— shared layout helpers for widget builders:_color_context(),_widget_dim(),_card_insets(),_metrics_context(),_title_layout(),_auto_row_height(),_fmt(),_entity_info_context(),_missing_entity_context()(blank-canvas fallback for absent entities),ResolvedEntity+_resolve_entity(),EntityIcon+_resolve_entity_icon(),_resolve_invert()(entity lookup, icon andinvert_conditionresolution shared by Entity, Tile, Gauge, Entities and_entity_info_context()),CardRow+_row_context()(per-row contract of thecard_rowmacro for list widgets),_icon_stroke_width()(icon outline width, widened on 2-level displays),_ACTIVE_STATESimage.py—EinkDashboardImage(ImageEntity), scheduled refresh, ETag trackinghttp.py— unauthenticated HTTP view at/api/eink_dashboard/{entry_id}/image.pngwith ETag/304 supportstore.py—EinkDashboardStore, persists widget list via HA'sStore(eink_dashboard.{entry_id})config_flow.py— multi-step config flow: name/dimensions/interval, plus TRMNL webhook management (add/remove named webhook targets)optimize.py—optimize_for_eink(img, config): optional post-render pipeline (autocontrast, sharpness, contrast, grayscale level quantization)push.py—async_push_image(session, url, image_bytes): HTTP POST of PNG bytes to a webhook URLsensor.py—EinkDashboardSensor, exposes dashboard state as an HA sensor entityconst.py— enums, shared constants, and defaultswidget_config.py— static-onlyTypedDictper widget type (TileWidget, ...) plus shared mixins (WidgetBase,EntityFields, ...) that helpers accept; widgets stay plain JSON dicts at runtime.tychecks subscripts (widget["x"]) but not.get("x")keys
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 · +14 lines · +224 tokens per session 5fc5be0187ce
- 3d ago First seen · 231 lines · 3,431 tokens per session scan A 66277d776e4c
hass-eink-dashboard AGENTS.md is an instructions file published in the GitHub repository cryptomilk/hass-eink-dashboard (124 stars, last pushed 2d ago), licensed Apache-2.0. It adds 3,655 tokens to every session, about $0.0146 per session on Opus 5.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-10-26.
Other instructions, from other repositories
vscode buildNext.instructions.md
Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).
next.js AGENTS.md
AGENTS.md instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.
vscode oss-third-party-notices.instructions.md
Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, cache eligibility and rollout and applying the notice (cutover).
langchain AGENTS.md
AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.
vscode copilot-instructions.md
Copilot instructions for microsoft/vscode, covering vs code copilot instructions, project overview, root folders, core architecture (src/ folder) and built-in extensions (extensions/ folder).
deepseek-harness AGENTS.md
AGENTS.md instructions for deepseek-ai/deepseek-harness, covering agents.md, pre-stable apis and released session data, repository layout, commands and host sandbox failures.