starterkit-layout
Skill65 starsChanged 18 days agoMITView on GitHub
Where a new file goes inside `Packages/tech.aspid.mvvm/StarterKit/` and how to name it — the Core/General/Helpers/thematic folder taxonomy, singular binder folders, `ToBool/ToString/ToValue` subfolders, where extensions and shared helpers live, type and enum naming, `.meta` files. Use when creating a binder, converter or helper, or moving a file inside StarterKit, when the user asks "where does this go", "what do I call it", or adds a folder.
In this repository9 other files it gives its agents.
- AGENTS.mdAGENTS.md
- asp-branchSkill
- asp-commitSkill
- aspid-code-styleSkill
- asp-mvvm-releaseSkill
- asp-prSkill
- docs-siteSkill
- starterkit-binder-authoringSkill
- starterkit-converter-authoringSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
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
- Very specific: line 50
Every new file and folder gets a .meta (folder: folderAsset: yes, fresh guid).
- Distinctive: line 51
Do not stage new files: the user reviews them as untracked first.
- Very specific: line 53
After a move, update references: other scripts, tests, Docs/docs//*.md (and the ru twins in Docs/i18n/), Samples~.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill 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
StarterKit layout and naming
One assembly, Aspid.MVVM.StarterKit (StarterKit/Runtime), with editor code next to it in StarterKit/Editor. Every family (Binders/, Converters/, Commands/, Collections/, Views/) follows the same structure.
Taxonomy inside a family
| Folder | Content | Examples |
Core/ | Infrastructure the family stands on: base interfaces, declarative generation attributes | IConverter, ITwoWayConverter, ICanExecuteHandler, GenerateSerializableBinderAttribute, IViewFactory |
General/ | Types with logic shared across the family: abstract bases, helper interfaces that cut duplication | Binder, TargetBinder, INumberBinder, IColorBinder, Fallback/ConverterFallback, Numbers/NumberConverter |
General/Mono/ | Abstract Mono bases, kept apart from the serializable ones | MonoBinder, ComponentMonoBinder, Enum/EnumMonoBinder, Addressable/AddressableMonoBinder |
Helpers/ | Plain helpers: *Mode enums, loggers, math | ComparisonMode, ConverterLogger, BinderLogger, BinderMath, ShaderPropertyId |
| Thematic | Concrete implementations only; subfolders by target type ToBool/, ToString/, ToValue/, ToVector/ | Objects/ToBool/EqualityToBoolConverter, Graphic/Color/GraphicColorMonoBinder |
INumberBinder/IColorBinder are not Core: they cut duplication for some binders rather than holding the family up.
Placement rules
- Shared by the whole assembly (binders and converters alike) goes to the root
Runtime/Helpers/<Topic>/:Globalization/CultureInfoMode,Logging/LogMessageText,Numeric/NumericSaturation,Collections/EnumerableCountExtensions,Time/UnixTime,Transforms/,Colors/ColorChannels. - "Shared" means potential applicability, not current callers. An
IEnumerablecount helper is shared even if only converters use it today.ComparisonModeis converter-only →Converters/Helpers. - Extensions sit next to the extended type, not in
Helpers:ConverterFallbackExtensionsinGeneral/Fallback/,FuncConverterExtensionsbesideFuncConverter,AudioSourceExtensionsat the root ofBinders/AudioSource/. - An enum or extension needed by one binder group lives in that group's subfolder, beside its consumers.
- No
Mono/subfolder in thematic binder folders: aBinderand itsMonoBindersit side by side (Object/ObjectNameBinder,Object/ObjectNameMonoBinder). - No
OneWayToSource/folder:*ToSourceMonoBindersits at the root of its subfolder. - Abstract bases of concrete families (
SwitcherMonoBinder,EnumMonoBinder,CasterMonoBinder) go toGeneral/or the root of their family (Caster/CasterMonoBinder), never into a thematic subfolder. - Editor code (drawers, editors) goes to
StarterKit/Editor/<Family>/…, mirroring runtime.
Folder names
- Binders: singular (
Binders/Command,Caster,Collection,Graphic,AudioSource,Collider2D). Exceptions:General,Helpers. - Converters: plural (
Converters/Numbers,Strings,Vectors,Bounds). - Inside a group, a subfolder per property or operation:
AudioSource/Clip,Collider/Box,Graphic/ColorChannel,Numbers/ToString/Plural.
Type names
- The name says what the type does. No
Genericprefix:CasterBinder,ValueToStringConverter. - The name does not lie about scope: text used by binders too is
LogMessageText, notConverterMessageText. - Short
XxxText-style names are fine only for internal helpers; a public type explains itself fully. - Settings enums take a role suffix:
*Mode(ComparisonMode,ColorBlendMode,SizeDeltaMode),*Operation(LogicOperation,ChannelOperation), flags in plural (ColorChannels). Members are consistent (Equal/NotEqual, notEqual/NotEquals). - Nested record-like types are named by meaning (
OptionEntry, notEntry). - Converter naming ("To", the numeric family): skill
starterkit-converter-authoring; binder naming (Mono,ToSource,Switcher):starterkit-binder-authoring.
.meta and git
- Every new file and folder gets a
.meta(folder:folderAsset: yes, fresh guid). Move withgit mvtogether with the.meta. - Do not stage new files: the user reviews them as untracked first.
- Rename serialized types and fields directly, without
[FormerlySerializedAs]: the user has a tool that repairs serialized references. - After a move, update references: other scripts, tests,
Docs/docs/**/*.md(and therutwins inDocs/i18n/),Samples~.
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.

