cordis-composition-reference
Installation
SKILL.md
Cordis composition reference
Reference material for bundle patches and preset plugin lists. Procedures live in cordis-plugin-development and editing-cordis-compositions.
Loader patch dialect
A profile composes an ordered list of patch layers over the bundle entry lists. Each patch is a mapping:
insert: [rows]appends rows; with anidnaming an existinggroup: truerow, the rows are appended inside that group'sconfiglist.- A patch with an
idand noinserttargets the existing row with that id. Supplied fields replace the row's fields;configis replaced wholesale, never deep-merged, so restate every field the row needs. A truthynameasserts the existing plugin name rather than renaming it. - Non-insert patches without a nonempty
id, and targets that match no row, are warned about and skipped.
A row has id, name (the plugin package specifier; inserted relative paths are anchored beside their patch file), optional config, and optional disabled, inject, intercept, and isolate.
group: truewithname: cordis:groupmakesconfiga nested entry list and allows patches to insert into it by id.cordis:includeloads a literal YAML or JSON entry list fromconfig.path.disabledaccepts a boolean, null, or a!!jsexpression evaluated against the Loader context at every mount decision. A disabled row omits requiredconfigunlessgroup: trueforces activation.!!jsscalars are Loader expressions, never!js. Insideconfigthey are evaluated after the row's declared injections activate, against that plugin's context (ctx.<service>), so!!js dshHomePath('sessions')and!!js "!ctx.get('profileContext')"are valid. Other row metadata stays literal.isolatemaps service names totrueor a realm label; a preset plugin that provides a service isolates the provider and all consumers together. Scope controls contributions and event visibility;isolatecontrols service instances.