Install any skill in seconds. Free to start, no credit card required.
Get Started Free →waynesutton/convex-component-authoring
How to create, structure, and publish self-contained Convex components with proper isolation, exports, and dependency management
Passed 18 of 22 test cases with the skill, and 14 of 22 without it.
and 3 more in the full report
4 fixed14 passed either way4 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.6-flash on 10/3/2026 did not produce a publishable comparison (not comparable). The snapshot above is the previously measured run.
One of 4 test cases the skill fixed. Same model, same prompt, with and without the skill.
I'm setting up a reusable Convex component package. Standard Convex apps put configuration files inside a convex/ folder. Where should convex.config.ts be placed in a component library project, and how is it invoked?
| Checked | Without skill | With skill |
|---|---|---|
| Places convex.config.ts at the root level of the package | Missed | Passed |
| Exports the default result of calling defineComponent with the component name string | Passed | Passed |
The instructions your model reads when the skill loads.
Produces a self contained component: its own convex.config.ts, schema, functions, and a typed client wrapper the parent app calls. The one rule: a component cannot read the parent's tables, ctx.auth, or process.env. Whatever it needs, the app passes in as arguments.
components.<name> in the parent app| Need | Use |
|---|---|
| Shared logic over the app's own tables | Plain TypeScript helper in convex/lib/ |
| Its own tables with a schema the app cannot touch | Component |
| Isolated functions that run in their own transaction | Component |
| Reuse across apps with one install line | Component |
| A React hook or client utility only | npm library, no component |
If the feature does not need persistent state behind an API boundary, a helper function is less work and easier to type.
my-component/
package.json
src/
component/
convex.config.ts # defineComponent("counter")
schema.ts # tables only this component can see
public.ts # queries, mutations, actions
_generated/ # created by npx convex codegen
client/
index.ts # wrapper class the app imports
example/
convex/
convex.config.ts # app.use(counter) for local testing
test cases passed, vs 14 / 22 without
Published skills whose descriptions closely match this one, with their headline benchmark lift.
More skills from the same source and nearby in the registry, with their headline benchmark lift.