Install any skill in seconds. Free to start, no credit card required.
Get Started Free →webiny/webiny-api-cms-content-models
Creating Headless CMS content models via code using the ModelFactory pattern.
Passed 21 of 22 test cases with the skill, and 4 of 22 without it.
and 26 more in the full report
17 fixed4 passed either way1 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
This benchmark measured an earlier version of the skill.
A newer attempt on gemini-3.8-flash on 10/18/2026 did not produce a publishable comparison (not comparable). The snapshot above is the previously measured run.
One of 17 test cases the skill fixed. Same model, same prompt, with and without the skill.
I am creating a single-choice status field with predefined options ('Draft', 'Published', 'Archived'). I want to render it as a standard select dropdown in the editor. I plan to use .renderer("dropdown"). Is dropdown the current standard renderer name in Webiny?
| Checked | Without skill | With skill |
|---|---|---|
| Explains that dropdown is deprecated in favor of select. | Missed | Passed |
| Specifies that single-value predefined fields should use renderer("select"). | Passed | Passed |
The instructions your model reads when the skill loads.
Content models are created using the ModelFactory pattern. You define a class implementing ModelFactory.Interface, use the fluent ModelFactory.Builder API to declare fields, validators, layout, and API names, then export with ModelFactory.createImplementation(). Register in webiny.config.tsx as <Api.Extension>.
Every code-based content model follows the same structure:
import { ModelFactory } from "webiny/api/cms/model";
class MyModelImpl implements ModelFactory.Interface {
async execute(builder: ModelFactory.Builder) {
return [
builder
.public({ modelId: "myModel", name: "My Model", group: "ungrouped" })
.description("Description of the model")
.fields(fields => ({
// field definitions here
}))
.layout([/* row definitions */])
.titleFieldId("fieldId")
.singularApiName("MyModel")
.pluralApiName("MyModels")
];
}
}
export default ModelFactory.createImplementation({
implementation: MyModelImpl,
dependencies: []
});
Register in webiny.config.tsx:
<Api.Extension src={"/extensions/MyModel.ts"} />
test cases passed, vs 4 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.