godot-kotlin-jvm / specs
CLAUDE.md995 starsChanged 8 days agoMITView on GitHub
This directory is the guidance of the project: what Godot-JVM offers its users, the rules every implementation follows, and what it deliberately does not do. Commands are python specs/check_specs.py [--summary [PREFIX] | --fix | --accept <ID>... | --next <target>].
In this repository11 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- build-nativeSkill
- bump-godotSkill
- check-cppSkill
- godot-cpp-fork-commitSkill
- regenerate-apiSkill
- run-editor-probesSkill
- run-harness-testsSkill
- spec-reviewSkill
- test-in-projectSkill
The file
We split this CLAUDE.md into the rules it gives an agent
5 rules. About 0 are common, 2 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 50
Read the relevant specs, non-goals included, before implementing or changing a feature, and the constitution before any technical choice.
- Very specific: line 53
Do not propose or implement what a non-goal excludes unless its Reopen if: holds.
- Distinctive: line 54
When two articles pull in different directions, ask the maintainer.
- Very specific: line 55
Run the checker after every edit under specs/.
- Very specific: line 56
Before committing a change to cpp/ or kt/, or opening a pull request, run /spec-review: it checks the change against the specs, which the …
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.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
Specs
This directory is the guidance of the project: what Godot-JVM offers its users, the rules every implementation follows, and what it deliberately does not do.
- Writing or editing a spec or the constitution: read FORMAT.md.
- IDs, statuses, hashes, adding or dropping items: read TRACKER.md.
Principles
- A spec is the target the code aims at. It describes the current intended state of the product; nothing dead appears in a spec file. Specs change in the same change as the code. When code and spec disagree, either the tracker says the work is not done yet (
todo,partial), or the spec is outdated and gets updated in that change. The record of what changed is the git history ofspecs/; the tracker keeps only the IDs of deleted items, so they are never reused. - A spec states a lasting concept of the product, in the present tense: capabilities that hold for users, rules that always or never hold, and non-goals (what is deliberately not offered, and why). Details stay in the code: a helper, an option or a small convenience needs no spec.
- A capability describes the product only when the tracker says
done. Checkpython specs/check_specs.py --summary <ID>before relying on one. Specs are never quoted as user documentation. - Scope: Godot-JVM as its users meet it: the extension, its runtime libraries and its tooling. Releases, CI, documentation and contributing are out of scope. Benchmarks (F.5) are the exception: they back F.1's performance claims.
- Usual actors in capability sentences: game developer (implied when no actor is named), player, app developer (embeds Godot in an Android app), library author.
- Spec IDs appear only in
specs/and in commit messages, never in code, comments, docs or CI files, so the checker resolves every in-repo reference.
Layout
specs/
├── CLAUDE.md this file
├── FORMAT.md grammar of specs, the constitution, _category.md and the template
├── TRACKER.md IDs, tracker syntax, statuses, notes, hashes, commands
├── CONSTITUTION.md global rules
├── tracker.toml statuses, dead IDs and file hashes
├── check_specs.py validator and tools (Python 3.11+, no dependency)
├── _template.md starting point for a spec
└── <Letter>-<slug>/ one directory per category
├── _category.md
└── <Letter>.<NNN>-<slug>.md e.g. A.002-script-members.mdEveryday sequences
| Task | Steps | Files |
Implement a todo capability | implement; set its status to done (or partial with a note); run the checker | code, tracker.toml |
| Fix a typo in a lead or heading | edit; run the checker | spec |
| Reword a capability, rule or non-goal (same or new intent) | edit the line in place; run the checker (hash fails); re-judge the capability statuses it affects; --accept <SpecID> | spec, tracker.toml |
| Add a capability | --next <SpecID>; add the line; --fix (adds todo); --accept <SpecID> | spec, tracker.toml |
| Add a rule or non-goal | --next <SpecID>.R or .N; add the line; re-judge statuses the rule affects; --accept <SpecID> | spec, tracker.toml |
| Drop a capability | delete its line; set its entry to abandoned (optional note); optionally add a non-goal (--next <SpecID>.N); --accept <SpecID> | spec, tracker.toml |
| Drop a rule or non-goal | delete its line; add "<ID>" = { status = "abandoned" }; re-judge statuses that relied on it; --accept <SpecID> | spec, tracker.toml |
| Merge parallel branches | resolve the spec; resolve the hash line by taking either side; run the checker; review; --accept <SpecID> | spec, tracker.toml |
Commands are python specs/check_specs.py [--summary [PREFIX] | --fix | --accept <ID>... | --next <target>].
Working rules
- Read the relevant specs, non-goals included, before implementing or changing a feature, and the constitution before any technical choice.
- Spec text, tracker statuses and hashes change in the same change as the code they concern.
- Claude may create, reword and delete specs, capabilities, rules and non-goals, and change statuses. For CONSTITUTION.md, Claude drafts the change and edits the file only when the maintainer asked for it or approved it in chat.
- Do not propose or implement what a non-goal excludes unless its
Reopen if:holds; raise it with the maintainer instead. - When two articles pull in different directions, ask the maintainer.
- Run the checker after every edit under
specs/. CI runs it on every pull request. - Before committing a change to
cpp/orkt/, or opening a pull request, run/spec-review: it checks the change against the specs, which the checker cannot do.
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.

