{"build":"2.1.286","count":10,"pages":[{"page":"overview","title":"What a mod is","blurb":"What a mod is, which builds load one, what changes on Bedrock and Vertex, and a mod you can run in four files.","chars":22923,"sections":["On by default since 2.1.287","Bedrock, Vertex and other providers","It changes without notice","Claude Code's own features are mods","The fold","Where the code runs","These aren't the settings hooks","The smallest mod that does something","What's here and what isn't"],"url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/overview","page_url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/overview.json"},{"page":"anatomy","title":"Anatomy of a mod","blurb":"plugin.json, hooks.json and register(), and what each of them is allowed to say.","chars":19280,"sections":["The two manifests","register, and the argument nobody uses","The import line","A mod is a closure","Registering an event twice","Three ways to name an event","Matchers","The loader reads your source, and it's strict","Getting $ out of a hook without breaking the rules","Check it before you run it","Running it"],"url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/anatomy","page_url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/anatomy.json"},{"page":"lifecycle","title":"Tiers, order and next()","blurb":"The five tiers, how a hook wraps the ones below it, and everything a hook can do with next().","chars":26476,"sections":["The five tiers","next","The two axioms","next.to","next.origin","next.trace","next.signal and next.budget","What failure actually does",".catch","Serial, and why","Streaming","Recursion"],"url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/lifecycle","page_url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/lifecycle.json"},{"page":"engine","title":"The engine interface","blurb":"Every noun and verb on $, what's new since 2.1.283, and the calls with surprises in them.","chars":25806,"sections":["Every verb is also an event","The nouns","What's new since 2.1.283","What arrived between 2.1.272 and 2.1.283","$.plugin isn't a capability","$.telemetry is for the built-ins","The ops with surprises in them","$ outlives its dispatch","engine.create builds your $","Telling TypeScript about a new noun","A missing noun throws","The names moved once already"],"url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/engine","page_url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/engine.json"},{"page":"events","title":"The event catalogue","blurb":"Every event you can hook, what each one carries, and how a matcher narrows it.","chars":21129,"sections":["Engine events","Operation events","classic.\\*","Globs","Events you can ask to rerun","What still has no event","Why use hooks at all"],"url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/events","page_url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/events.json"},{"page":"ui","title":"Drawing on the screen","blurb":"Panes, components, elements per surface, and how to redraw without making the terminal flicker.","chars":18168,"sections":["ui.render","$.ui.resolve","The fifteen components","Elements, and the one that quietly draws nothing","Opening a pane","Interaction","Client modules","Redrawing","The smaller screen verbs"],"url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/ui","page_url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/ui.json"},{"page":"config","title":"userConfig and options","blurb":"Declaring options in plugin.json, what register() gets, and the three ways a config stops your mod loading.","chars":11589,"sections":["Declaring the fields","Three ways this goes wrong","Configuring one","What arrives at runtime","$.config is the \/config menu","Reading the person's actual settings"],"url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/config","page_url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/config.json"},{"page":"testing","title":"Testing a mod","blurb":"The built-in test kit: describe, expect, mock, test and tier, plus drawing your UI in a test.","chars":22769,"sections":["The five exports","tier, once, at the top","A test","Other plugins in the chain","Things about the test's $","Testing what you draw","mock","Matchers","What the kit doesn't have","Types in your editor","Validate first","What I haven't checked"],"url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/testing","page_url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/testing.json"},{"page":"gotchas","title":"Confirmed gotchas","blurb":"Things that cost me an hour each, all reproduced on a real build, with the output that proves it.","chars":36400,"sections":["1. A hook that fails doesn't block. It disappears.","2. A good deny reason can make the model go around you","3. A tool.call hook breaks worktree isolation for subagents","4. $.session.usage() is mostly empty until the first turn completes","5. The manifest validator doesn't type-check your defaults","6. An unconfigured option reads as \"\", not undefined","7. The capability scan checks shape, not spelling","8. Names change without warning","9. Small things that each cost an hour","10. `prompt.compose` is asked every turn, but only its first answer is sent","What I couldn't reproduce, and what's fixed"],"url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/gotchas","page_url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/gotchas.json"},{"page":"recipes","title":"Recipes","blurb":"Nine short patterns you can paste and adapt, each one run at 2.1.286.","chars":19509,"sections":["1. A guard that fails closed","2. A redactor on the way back up","3. Keeping the engine for the rest of the session","4. Watching tool calls without getting in the way","5. A status line that keeps itself current","6. Adding a noun other mods can use","7. A pane","8. A command, and coping when it's refused","9. A hook that only wants a say","Where to read real ones"],"url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/recipes","page_url":"https:\/\/changelogs.core-directive.com\/reference\/mods\/recipes.json"}]}