aster AGENTS.md

Repository instructions for Aster, a Rust workspace made of several related packages. A workspace lets multiple packages share one project and build setup.

In plain words
What is it for?
Use them when editing Aster’s Rust packages, command-line interface, libraries, or text shown to users.
Why use it?
They keep code, user-facing messages, commit messages, and package structure consistent with the project’s rules.

Instructions file for CodexOpenCode

Install

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.

agentmods
npx agentmods add instructions/zfinix/aster/agents-md
Clone the repo
git clone --depth 1 https://github.com/Zfinix/aster

Made for: Codex, OpenCode.

Per session 2,676 This file is loaded in full into every session.
When invoked 2,676 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.02676 $0.02676
Opus 5 $0.01338 $0.01338
Sonnet 5 $0.00535 $0.00535
Haiku 4.5 $0.00268 $0.00268

Measured 2d ago against content hash 8e8f7cdfc2a6, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

aster 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 2d 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.

AGENTS.md · 238 lines

How it starts

The opening of the file, as written. The whole thing — 238 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Aster

Rust workspace, edition 2024, stable toolchain. Crates live in crates/ and are prefixed aster- (the exception is symbol-extractor). The crates/aster-cli crate is the binary; everything else is a library.

Human-facing setup and PR etiquette live in CONTRIBUTING.md. This file is the working agreement for agents editing this repo.

Global rules

  • No useless comments in code.
  • Match the project's existing style and patterns before writing anything new.
  • No em dashes (—) in any writing.
  • Never add Co-Authored-By: Claude/Cursor trailers to commits or PRs, and strip them if found.
  • Use Conventional Commits for every message.

User-facing copy

Every string a user sees (TUI cells, panel cards, error boxes, status lines) is written in plain, relatable language, never harness vocabulary. "Turns", "verdict", "judge", "budget exhausted", "rate limited", "context window" are internal words; users get "tries", "check", "too many requests", "stopped after 20 tries". Errors always say what happened and what to do next in one plain sentence, with the raw provider detail demoted below. Protocol field names, config keys, env vars, and docs stay technical; only rendered copy is covered by this rule.

Rust conventions

  • Read the crate you are touching and follow its existing patterns before introducing a new one.
  • Inline variables into format! braces: format!("{name}"), not format!("{}", name).
  • Collapse nested if statements.
  • Prefer method references over closures: .map(str::trim), not .map(|s| s.trim()).
  • Avoid bare bool and ambiguous Option parameters that force callers to write foo(false) or bar(None). Prefer enums, newtypes, or named methods so the callsite reads on its own. aster_policy::Mode and PermissionModeArg are the shape to copy.
  • Make match statements exhaustive. Avoid wildcard arms over enums we own, so adding a variant produces a compile error instead of silent fallthrough.
  • New traits get a doc comment explaining their role and what implementors are expected to do. McpInvoker in crates/aster-mcp/src/lib.rs is the example.
  • Prefer private modules with an explicit pub crate API. Keep the exported surface as small as the callers need.
  • Do not create helper functions that are called exactly once.
  • Keep the core dependency-light. No vector DB, no external services in the review path. A new heavy dependency needs a written justification in the PR.

Read the full file on GitHub · 238 lines

Changes

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.

  1. 2d ago First seen · 238 lines · 2,676 tokens per session scan A 8e8f7cdfc2a6

Subscribe to this mod's changes

aster AGENTS.md is an instructions file published in the GitHub repository Zfinix/aster (40 stars, last pushed 7d ago), licensed Apache-2.0. It adds 2,676 tokens to every session, about $0.0134 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-30.