When a prompt is not a simple question or very small ask, guide the user toward:
- Self-contained problem statement
- Acceptance criteria
- Constraints: musts, must-nots, preferences, and escalation points
- Decomposition into clean phases
- Evaluation design for the tests or checks that prove success
- Read
CONTEXT.mdfirst and use its vocabulary. - Follow
docs/engineering-style.md; it is enforced, not aspirational. - Decisions live in
docs/adr/; add an ADR when you change one. - Shortcuts require an entry in
docs/technical-debt-ledger.mdwith a delete condition, before you rely on them.
just test # cargo test --workspace
just lint # cargo fmt --check + clippy --all-targets -D warnings
just dev # run finitesitesd against .dev-data
just fmt # rustfmtEvery mutation needs a positive test and at least one negative/replay test.
cargo clippy --all-targets -- -D warnings must pass before any handoff.
fsiteis the supported agent-facing surface. Do not bypass it with raw nostr events, direct registry writes, DNS edits, or proxy edits.- Use
FINITE_SITES_API=https://api.finite.chatfor production unless the task is explicitly local development. - Collaborative Project Outputs use Project Repositories:
fsite describe workflow publish-static-site --output json
fsite describe workflow publish-stateful-app --output json
fsite describe workflow project-config --output json
fsite auth register --output json
fsite project init --config finite.toml --dry-run --output json
fsite project init --config finite.toml --output json
fsite project grant PROJECT --email editor@example.com --send-invite --output json
fsite project share PROJECT OUTPUT --shared --add-email viewer@example.com --send-invite --output json
fsite auth login editor@example.com
fsite auth redeem editor@example.com TOKEN_FROM_EMAIL
fsite auth git PROJECT --email editor@example.com --store --output json
git clone https://git.finite.chat/PROJECT.git- A
[project]-onlyfinite.tomlis a valid Bare Project Repository with no served output. Add missing outputs later by adding them tofinite.tomland replayingfsite project init --config finite.toml. - Email is optional. Prefer native auth with
fsite auth register; usefsite auth redeem EMAIL TOKEN --link-nativewhen an invite token should link that email to the local npub. Usefsite auth link-email EMAILonly when you need to request a fresh token.auth login/redeemremains the External Principal fallback. - Commit deploy bytes and push the configured Deploy Branch. Finite Sites does not run builds.
- There is no direct bundle upload command. For static sites and apps, commit
the selected
finite.tomloutput path, then push. - App outputs use
kind = "app"with an explicitstartcommand. Finite setsPORTandDATA_DIR; the app must listen on0.0.0.0:$PORTand write live mutable state only underDATA_DIR. - Commit the whole source tree that collaborators and agents need. The
Project Repository is the shared source;
finite.tomlonly selects what is served as the website. - Do not reconstruct source from rendered HTML. Use the Project Repository.
- A generated
/llms.txtis platform guidance only. If a project publishes its own/llms.txt, preserve it and treat it as the project's authority. - Never commit, print, or upload
.finite/,.env*, private keys, or build caches. Avoid dependency directories unless they are intentionally committed runtime payload for an app output.
The public repository is expected to publish fsite binaries from tags named
v*. Keep README install commands and generated /llms.txt instructions in
sync with .github/workflows/release.yml.