supernova
AGENTS.md194 starsChanged 22 days agoMITView on GitHub
Supernova is an opinionated development environment built on Pi. The Pi SDK owns agent execution; we build the desktop and browser experience, session workflows, and recovery around it. Understand the constraint, then choose the smallest change that makes the correct behavior clear. We want simple systems, not machinery that looks impressive. After understanding the problem, stop at the first option that meets the requirements:
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,774 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository4 other files it gives its agents.
- commit-messageSkill
- create-prSkill
- no-use-effectSkill
- writing-good-testsSkill
The file
Show its rules and text
We split this AGENTS.md into the rules it gives an agent
19 rules. About 1 is common, 16 are distinctive, and 2 are very specific to this project.
≈1
Common · estimate
Many files like this have a rule of this kind.
≈16
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Correctness before convenience: Keep behavior predictable through reconnects, session restarts, and partial streams.
- Distinctive: line 25
After understanding the problem, stop at the first option that meets the requirements:
- Distinctive: line 28
Does the codebase already solve it?: Look for existing helpers, types, components, and patterns before writing replacements.
- Distinctive: line 29
Does the standard library or platform cover it?: Prefer built-in behavior over custom machinery: CSS over JavaScript layout logic, native …
- Distinctive: line 30
Does an installed dependency solve it?: Use it before adding another.
- Distinctive: line 31
Only then, write custom code: Keep it as small and direct as correctness and readability allow.
- Distinctive: line 33
No speculative features, configurability, or scaffolding for later.
- Distinctive: line 34
Prefer removing unnecessary machinery over adding another layer.
- Distinctive: line 36
Never simplify away trust-boundary validation, protection against data loss, security, accessibility, or explicitly requested behavior.
- Distinctive: line 37
When a deliberate simplification has a known limit, document that limit and the condition for revisiting it near the code.
- Distinctive: line 42
Read enough surrounding code to understand the change.
- Distinctive: line 43
Don't improve adjacent code, comments, or formatting just because you're there.
- Distinctive: line 44
Remove imports, variables, functions, and other code that your changes make unused.
- Distinctive: line 45
Every changed line should serve the requested outcome.
- Distinctive: line 53
Run relevant checks, fix failures caused by your changes, and repeat until the success criteria are met or you're genuinely blocked.
- Common: line 58
Don't overwrite unrelated work or use live sessions, credentials, or workspace state as disposable test fixtures.
- Distinctive: line 70
Use Bun for dependencies and scripts, TypeScript for code, and workspace packages for shared boundaries.
- Very specific: line 92
When comparing other projects or checking upstream patterns, look in .context/ first.
- Very specific: line 100
Add changelog entries for user-facing, release-relevant changes under ## [Unreleased] in CHANGELOG.md.
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Supernova
Supernova is an opinionated development environment built on Pi. The Pi SDK owns agent execution; we build the desktop and browser experience, session workflows, and recovery around it.
What we care about
- Speed is a feature. Long sessions, rapid streams, and dense timelines should stay responsive. Consider rendering, network, and runtime costs, not only the empty-screen experience.
- Correctness before convenience. Keep behavior predictable through reconnects, session restarts, and partial streams. A simpler implementation is not a win if it loses work or hides failure.
- Polish is part of the work. Loading states, keyboard interaction, scrolling, spacing, and smooth transitions belong to the feature, not a later cleanup pass.
- Remote by design. The server owns execution, credentials, and workspace access. Paths refer to the server's machine. Desktop is a shell, not a second runtime.
How to work
Understand the constraint, then choose the smallest change that makes the correct behavior clear. We want simple systems, not machinery that looks impressive.
Think before coding
- State assumptions that affect the result. If multiple interpretations would lead to different implementations, lay them out rather than silently choosing one.
- Name uncertainty. When an ambiguity changes scope, behavior, or safety, ask before proceeding; don't code around something you haven't understood.
- Surface tradeoffs and point out simpler approaches. Push back when the requested approach adds complexity without solving a real constraint.
- Understand the actual flow before choosing a shortcut. For bugs, inspect callers and sibling paths, then fix the root cause at the shared boundary rather than patching only the reported symptom.
Simplicity first
After understanding the problem, stop at the first option that meets the requirements:
- Does this need to exist? Skip speculative work; explain what concrete need would justify it.
- Does the codebase already solve it? Look for existing helpers, types, components, and patterns before writing replacements.
- Does the standard library or platform cover it? Prefer built-in behavior over custom machinery: CSS over JavaScript layout logic, native capabilities over a new dependency, while preserving the app's design and accessibility conventions.
- Does an installed dependency solve it? Use it before adding another. Don't add a dependency for something a few clear lines can do.
- Only then, write custom code. Keep it as small and direct as correctness and readability allow.
- No speculative features, configurability, or scaffolding for later. Extract shared behavior for real duplication, not hypothetical future callers. Avoid single-use factories and interfaces that add no meaningful boundary.
- Prefer removing unnecessary machinery over adding another layer. Keep the diff and number of files small, but don't compress code into clever one-liners or bypass established ownership boundaries.
- Handle real failure modes, not impossible scenarios already ruled out by the boundary. Don't preserve backward compatibility unless requested.
- Never simplify away trust-boundary validation, protection against data loss, security, accessibility, or explicitly requested behavior. Among equally simple options, choose the one that handles real edge cases correctly.
- When a deliberate simplification has a known limit, document that limit and the condition for revisiting it near the code. Obvious code needs no comment defending its simplicity.
- Review the result for unnecessary machinery. If a substantially smaller implementation would be equally clear and correct, simplify it before calling the work done.
Surgical changes
- Read enough surrounding code to understand the change; read files fully for audits and broad rewrites. Match existing style and conventions.
- Don't improve adjacent code, comments, or formatting just because you're there. Refactor only where the requested change needs it.
- Remove imports, variables, functions, and other code that your changes make unused. Flag unrelated dead code rather than deleting it.
- Every changed line should serve the requested outcome. Ask before removing intentional functionality outside the agreed scope.
- Code is the memory, not comments. Write a comment only for what the code cannot say: why, which invariant, which external quirk. Do not restate names or signatures, and do not trust a stale comment over the code; fix or delete it. See Coding standards.
Goal-driven execution
- Turn the request into observable success criteria before implementing. “Make it work” is not a verification plan.
- For a bug fix, reproduce the failure with a focused regression test, then make it pass. For validation, cover invalid inputs and the expected failures. For a refactor, verify that behavior is preserved before and after.
- For multi-step work, give a short plan pairing each step with how you'll verify it. Keep routine, trivial edits lightweight.
- Run relevant checks, fix failures caused by your changes, and repeat until the success criteria are met or you're genuinely blocked. Don't stop at the first implementation when verification is part of the task.
- Report what you checked and what remains unverified. Scale verification to the risk; a typo fix does not need a full test run.
Working boundaries
Don't overwrite unrelated work or use live sessions, credentials, or workspace state as disposable test fixtures. Ask before destructive actions or restarting processes you didn't start. If a task conflicts with repository guidance, call out the conflict and get confirmation before overriding it.
Where code lives
| Path | Owns |
apps/server | Headless Node API, CLI, runtime composition, HTTP/WebSocket routing. Never hosts or bundles the UI. |
apps/desktop | Electron shell, bundled renderer loading, local API child, OS integration. |
packages/web | React/Vite client. No native or filesystem assumptions. |
packages/agent-runtime | Node-only Pi integration: feature modules, the session runtime, and service composition. |
packages/contracts | Environment-neutral Zod schemas, Chord service contracts, and serializable domain types. |
Use Bun for dependencies and scripts, TypeScript for code, and workspace packages for shared boundaries. Run verification commands from the repository root; this is a Turborepo workspace.
Read what the task needs
This is the repository's only AGENTS.md. Shared and area-specific conventions live in docs/internal/; don't add nested instruction files. Read the relevant guide when working in its area, not the whole table before every edit.
| When working on… | Read |
| Product direction and feature tradeoffs | Product |
| Package boundaries, runtime ownership, desktop/browser hosting | Architecture |
| Coding hygiene, quality, file/folder structure, comments | Coding standards |
| React UI, styling, client state, server access | Web |
| Runtime features, Pi integration, backend organization | Agent runtime |
| Shared schemas, service payloads, errors, exports | Contracts |
| Sessions, streaming, reconnects, persistence, recovery | Session runtime |
| Checkpoint capture, restore, Git preservation | Checkpoint system |
| Local setup and verification commands | Development |
| Writing, placing, and running tests | Testing |
| Desktop icon assets and generation | Icons |
| Changelog entries and publishing releases | Release |
| Writing or reorganizing documentation | Documentation |
When comparing other projects or checking upstream patterns, look in .context/ first. Available references, for example, include .context/pi; inspect the directory rather than assuming a mirror exists.
Documentation
docs/ contains guides for people using Supernova. docs/internal/ contains conventions, architectural decisions, and procedures for people and agents building it.
Code is the source of truth for implementation; docs preserve philosophy, design reasoning, coding standards, structural conventions, constraints, and procedures. Trim clear implementation duplication and repetition, not the substance or voice that teaches judgment. Keep each subject in one home and rewrite stale sections rather than appending work logs. See Documentation.
Add changelog entries for user-facing, release-relevant changes under ## [Unreleased] in CHANGELOG.md. Internal refactors, tests, and documentation-only changes don't need entries unless they affect released behavior or release operations.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

