| name | preferences |
| description | User's general coding preferences |
User's personal coding preferences
These rules are set by the user through direct feedback.
They ALWAYS take priority over base skills.
Model usage
- Use Opus or Sonnet for subagents
- Never use Haiku — quality too low for real work
Linter-owned defaults
The machine-checkable preferences (immutability, member order, explicit
visibility, _-prefix naming, magic numbers, ternary returns, no swallowed
exceptions, dead-weight removal) live as compilable lists in the user's
preferences-lint skill and are compiled into each project's lint config
by lint-setup. The PROJECT's lint config is authoritative — write to
satisfy it; the linter is the correction net. In a project with no lint
config (and where lint-setup is not installed), load preferences-lint
deliberately if the machine-checkable details are needed; if
preferences-lint is ALSO unavailable on this machine, these categories
have no substitute text — say so in the report instead of silently
proceeding without them.
Field initialization
- Initialize fields at the declaration site when the value does NOT depend on constructor parameters
- Only assign in the constructor when the value requires constructor args or complex logic
- This applies to all languages:
final _bg:Sprite = new Sprite(), readonly List<int> _items = new(), etc.
Naming
- Event listener methods: use
Handler suffix, not on prefix — e.g. frameSelectHandler, not onFrameSelect
Comments and documentation
- All code comments and documentation must be in English only — no other languages in source code