Files
devplacepy/quality_project.md
T
retoorandClaude Sonnet 5.5 f55c7ee5f4
DevPlace CI / test (push) Failing after 31m42s
Add community node protocol spec, Agent Skills, and make the failing tests hermetic
Community nodes (Phase 1 of plan.md): the protocol specification in
services/nodes/spec.py as the single source of truth, GET /nodes/spec.json,
a generated protocol docs page, the Community nodes API docs group, and the
implementation plan plus the residential proxy research. The no-open-proxy rule
is enforced in the spec (open_proxy cannot be set).

Agent Skills: register the Skills API docs group, cascade skills on account
deletion, add the nested CLAUDE.md, README and routes docs, and cover the
parser, the fetcher (end to end against a mock origin), the data layer and the
routes with 73 unit and 16 api tests.

Tests made hermetic with the repo's existing patterns instead of ambient
environment: embeddings tests set OPENROUTER_API_KEY via monkeypatch, the
workspace tests install FakeBackend via runtime.set_backend, and the skills
install tests use run_async. DockerCliBackend now returns 127 (command not
found) when the CLI is missing instead of raising FileNotFoundError, so a host
without docker answers with a clean error rather than a 500. The Providers tab
empty state no longer names the Model routes tab.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 07:13:25 +02:00

200 lines
9.6 KiB
Markdown

<!-- doc: quality_project.md | version: 1.0.0 | updated: 2026-10-11 -->
# Quality Project Playbook: What Belongs in AGENTS.md
Generic companion to `quality_software.md` and `quality_versioning.md`.
It defines what an agent instruction file must contain so that every
agent (and every human) develops the same way and the project stays
consistent and current.
Naming note: this repo uses `CLAUDE.md` instead of `AGENTS.md`, but
the system is what matters, not the filename. Three layers, loaded
by scope:
- Personal base rules (DevPlace: `~/.claude/CLAUDE.md`). Applies to
every project for one operator: safety, proof, craft, ops habits.
- Root project file (DevPlace: `CLAUDE.md`, ~440 lines). Applies to
the whole repo regardless of area touched. Always loaded, so it
stays proportional to global rules only.
- Nested subsystem files (DevPlace: ~30 `CLAUDE.md` files next to
the code). Loaded only when a file under that directory is read
or edited. Deep mechanics, helpers, pitfalls, worked examples.
If your tooling reads `AGENTS.md`, use that name with the identical
three-layer split. Never merge all three into one file: the root
would bloat past usefulness and agents would stop reading it.
## 1. Personal base rules (cross-project, rarely changes)
One short file per operator, ported across projects. Contents:
- Control over cleverness: hard caps on everything unbounded,
floors automated processes may never cross, static ceilings over
autotuning, fewer dependencies.
- Safety: destructive ops dry-run by default and explicitly
confirmed, loud skips over silent corruption, verify-before-write,
deletes that reclaim (compaction in the same change).
- Proof: measured claims only, real-path testing with failure
injection, suite after behavior change, live verification after
deploy.
- Craft: exact minimal diffs, boring technology, research before
load-bearing decisions, docs describing today with gaps marked.
- Communication: direct and factual, disagree with data, fixed
style bans (DevPlace: no em dashes anywhere).
- Operations: commit, deploy, verify in the same session;
retention and checks run inside the system on loops.
This layer never names project paths or stack details. When it
conflicts with a project file, the project file wins.
## 2. Root project file (global rules, always loaded)
Ordered contents, each earning its place by applying to every area:
1. Project identity in one paragraph: what it is, stack in one
line per layer, ports, key constraints (username rules,
password rules, data layout). An agent must orient in 30 seconds.
2. Commands table: install, dev, prod, every test target, load
test, lint, clean. Exact commands, no prose alternatives. Which
interpreter each target uses.
3. Single-test invocation and the failure-triage order
(cheapest-first), so agents debug efficiently instead of
re-running the slowest suite.
4. CLI reference for management commands (one line each), so agents
use named commands instead of inventing shell one-liners.
5. Runtime data layout: the single data root, the path registry,
and the rule that no module computes a path from scratch.
6. Environment variables table: name, default, purpose. Complete;
an undocumented env var is a trap.
7. Subsystem map: table of every nested doc with one-line scope, so
agents know which file to load (and that it exists).
8. Architecture: request pipeline, routing layout, templates and
frontend rules, content pipeline, auth, database, background
work. One paragraph each with pointers down, not full detail.
9. Hard rules, each marked as such: soft delete, reportability,
production-DB protection, confirmation gates, changelog/doc
duties. A hard rule states the rule, the mechanism enforcing it,
and what fails if violated (usually a named test).
10. Conventions: naming, validation style, response style,
ownership checks, date formats, slug/ID handling, role storage.
Each convention shows the one correct shape.
11. Testing: tier definitions, directory mirroring rule, fixture
stack, required patterns, full-suite gate. Pitfalls live in the
nested test doc; the root states the gate.
12. Feature workflow: the ordered step list (understand, data,
server, view, safety, agent+docs, document, validate) with the
blocking rule: a failed step blocks the rest.
13. CI/CD: what runs on push/PR, merge gate, DTAP stages, deploy
then verify.
Size guard: if the root passes ~500 lines, detail has leaked in
that belongs in a nested file. Split it out.
## 3. Nested subsystem files (deep detail, loaded on touch)
One per directory that owns a mechanic (DevPlace: routers,
services, database, static/js, static/css, templates, tests).
Contents:
- Scope line: which paths it covers, in the first line.
- The mechanic: helpers, entrypoints, and patterns with exact
symbol names (`conditional_update_farm`, `respond()`,
`get_users_by_uids`), never paraphrased APIs.
- The closed sets: registries, token scales, breakpoint lists,
event catalogues. An agent must be able to check membership.
- CORRECT/WRONG pairs for the two or three mistakes every newcomer
makes (DevPlace tests doc: scoped vs unscoped selectors, waits
vs sleeps). Show code, not advice.
- Common pitfalls section: the real bugs this area produced, each
with cause and fix. Pitfalls are bug reports that pay rent.
- Worked examples: one end-to-end change with the file count it
touched, so agents calibrate "one feature = N files".
- Backwards-compatibility notes where the area promises them
(what may never break, what the migration path is).
A nested file never repeats the root. It assumes the root was read
and only adds what the root deliberately omitted.
## 4. Severity levels: hard rule, convention, guidance
Agents follow what they can rank. Mark every statement:
- Hard rule: enforced by code, hook, or failing test. Violation
breaks the suite or is denied by tooling. Example: every removal
is a soft delete; production DB access needs written confirmation
plus a token; new user-visible tables must be classified
reportable or private with a reason.
- Convention: one correct shape, enforced by review. Example:
response helpers, date formats, commit message shape, no second
implementation of an existing helper.
- Guidance: preferred approach with stated tradeoffs. Example:
boring technology, static ceilings over autotuning, research
before load-bearing decisions.
Write the enforcement next to the rule ("fails in
`tests/unit/database/moderation.py`", "denied by the pre-tool hook").
A rule without a named enforcer is a wish.
## 5. Keeping the docs updated (the docs are code)
- Same-change rule: the doc update ships in the commit that changes
the behavior. Docs describing yesterday are worse than missing
docs because agents trust them.
- Landing rule: new global rule goes to the root, new mechanic or
pitfall to the nested file, new user-visible behavior to README
plus the user docs site. The feature workflow names this step so
it is never skipped.
- Measured, not remembered: counts, diagrams, and claims derive
from the running app and schema (DevPlace architecture atlas is
generated from the imported app object and live schema, and
records where docs and code disagree).
- No fiction: docs state what the system does today, gaps listed
next to the code that will close them. No roadmap prose, no
aspirational architecture.
- Versioned per `quality_versioning.md` section 4: header comment,
history table, bump in the same commit. All three layers count as
markdown and follow the scheme.
- Deletion duty: removing a feature removes its doc lines in the
same commit. Stale sections are found by searching for the
removed symbol, not by rereading.
## 6. Anti-patterns: what does NOT belong
- Tutorial prose or onboarding narrative. Agent docs are reference,
not a course. One example per pattern, then the rule.
- Duplicated detail in two layers. If root and nested both explain
it, one will rot. Root states the rule and points down.
- Unbounded lists ("all endpoints", "all settings") pasted by hand.
Point at the registry, the table, or the command that lists them.
- Aspirational rules nobody enforces. Each release, delete one rule
the suite does not check and no review ever cites.
- Secrets, credentials, customer data, or production hostnames.
Env var names yes, values never.
- Style debates or option-weighing. Decide with an opinion, state
the tradeoff in one line, move on.
## 7. Replication checklist for your hosting site
1. Personal base file: safety, proof, craft, ops. Shared across
your projects, project file wins on conflict.
2. Root `AGENTS.md`: identity, commands, triage order, CLI, data
layout, env table, subsystem map, architecture pointers, hard
rules with enforcers, conventions, testing gate, workflow, CI/CD.
Under ~500 lines.
3. Nested files per area: `billing/`, `provisioning/`,
`support/`, `status/`, plus `tests/` pitfalls and
`templates/` partials. Scope line first, symbols exact,
CORRECT/WRONG pairs, pitfalls from real bugs.
4. Severity marks on every statement plus the named enforcement
(test path, hook name, review gate).
5. Same-change doc updates, landing rule, measured claims, no
fiction, version headers on all three layers, deletion duty.
6. Quarterly audit: run the suite, grep each hard rule for its
enforcer, delete one unenforced rule, regenerate the
architecture counts.
## Doc history
| Version | Date | Change |
|---------|------|--------|
| 1.0.0 | 2026-10-11 | Created from repo research: three-layer CLAUDE.md system, root/nested/personal contents, severity levels, update duties, anti-patterns. |