Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Scaffold, extend, and verify reactive local-first JavaScript or TypeScript applications with TinyBase. Use when choosing TinyBase for in-memory tabular or key-value state, generating an app with create-tinybase, adding schemas or UI bindings, configuring browser or database persistence, configuring MergeableStore synchronization, or diagnosing an existing TinyBase application.
.claude/skills/tinyplex-build-with-tinybase/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -69% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -17% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 6% | 0% |
Prefer a current generated application over reconstructing TinyBase setup from memory. Preserve persistence and synchronization lifecycle ordering, and verify the behavior the user actually needs.
Read references/architecture.md when choosing between Store and MergeableStore, persistence backends, synchronization, or UI bindings.
Confirm that TinyBase fits the task:
persistence, synchronization, or framework bindings.
unbounded, primarily queried on a server, or requires managed backend facilities.
Inspect the installed generator contract first:
shnpm create tinybase@latest -- --list-options
Translate the user's requirements into explicit values. Generate unattended projects with every applicable option and always disable automatic installation and server startup:
shnpm create tinybase@latest -- \ --non-interactive \ --projectName my-tinybase-app \ --appType todos \ --language typescript \ --framework react \ --tinyWidgets false \ --schemas true \ --syncType none \ --persistenceType local-storage \ --prettier true \ --eslint true \ --installAndRun false
Run the generator in the parent directory that should contain the new project. Do not overwrite an existing directory. After generation:
AGENTS.md and README.md.Inspect package.json, TinyBase imports, Store creation, Persister setup, and Synchronizer setup before editing. Use documentation matching the installed TinyBase version. Start at https://tinybase.org/llms.txt or retrieve current TinyBase documentation through Context7 when available.
Keep these boundaries clear:
Reuse existing imports and patterns when they are current. Import integrations from their specific tinybase/... subpaths. Avoid adding a second source of truth in component state for data already owned by TinyBase.
Match verification to the requested behavior:
confirm changes propagate in both directions.
Do not treat compilation alone as proof of persistence or synchronization.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 23,208 | 6,062 | -74% | 1 | 1 | 0% | 6,197 | 1,924 | -69% | 0 | 0 | — |
case-02 | fail→fail | 22,509 | 11,610 | -48% | 1 | 1 | 0% | 3,097 | 3,055 | -1% | 0 | 0 | — |
case-03 | fail→fail | 21,845 | 4,939 | -77% | 1 | 1 | 0% | 4,556 | 1,198 | -74% | 0 | 0 | — |
case-04 | pass→pass | 16,144 | 7,666 | -53% | 1 | 1 | 0% | 2,663 | 2,096 | -21% | 0 | 0 | — |
case-05 | fail→pass | 4,569 | 64,726 | +1317% | 1 | 1 | 0% | 908 | 1,173 | +29% | 0 | 0 | — |
case-06 | pass→pass | 8,224 | 5,768 | -30% | 1 | 1 | 0% | 1,669 | 1,953 | +17% | 0 | 0 | — |
case-07 | fail→fail | 7,529 | 4,608 | -39% | 1 | 1 | 0% | 1,420 | 1,512 | +6% | 0 | 0 | — |
case-08 | pass→pass | 7,076 | 53,851 | +661% | 1 | 1 | 0% | 1,524 | 1,952 | +28% | 0 | 0 | — |
case-09 | pass→pass | 8,107 | 6,690 | -17% | 1 | 1 | 0% | 1,628 | 2,042 | +25% | 0 | 0 | — |
case-10 | pass→pass | 14,757 | 9,340 | -37% | 1 | 1 | 0% | 2,443 | 2,221 | -9% | 0 | 0 | — |
case-11 | pass→pass | 13,828 | 9,816 | -29% | 1 | 1 | 0% | 2,509 | 2,511 | +0% | 0 | 0 | — |
case-12 | fail→pass | 4,834 | 2,899 | -40% | 1 | 1 | 0% | 914 | 1,103 | +21% | 0 | 0 | — |
case-13 | fail→pass | 10,961 | 4,929 | -55% | 1 | 1 | 0% | 1,961 | 1,630 | -17% | 0 | 0 | — |
case-14 | pass→pass | 51,893 | 8,716 | -83% | 1 | 1 | 0% | 2,167 | 2,540 | +17% | 0 | 0 | — |
case-15 | pass→pass | 15,406 | 14,822 | -4% | 1 | 1 | 0% | 2,774 | 3,201 | +15% | 0 | 0 | — |
case-16 | pass→pass | 8,040 | 11,041 | +37% | 1 | 1 | 0% | 1,629 | 2,893 | +78% | 0 | 0 | — |
case-17 | fail→fail | 28,578 | 17,991 | -37% | 1 | 1 | 0% | 4,475 | 3,931 | -12% | 0 | 0 | — |
case-18 | pass→pass | 5,956 | 4,350 | -27% | 1 | 1 | 0% | 1,027 | 1,434 | +40% | 0 | 0 | — |
case-19 | fail→pass | 21,433 | 14,281 | -33% | 1 | 1 | 0% | 3,115 | 3,307 | +6% | 0 | 0 | — |
case-20 | fail→fail | 17,692 | 14,080 | -20% | 1 | 1 | 0% | 3,074 | 3,151 | +3% | 0 | 0 | — |
case-21 | fail→pass | 7,981 | 2,750 | -66% | 1 | 1 | 0% | 1,361 | 1,148 | -16% | 0 | 0 | — |
case-22 | fail→pass | 11,935 | 6,956 | -42% | 1 | 1 | 0% | 1,937 | 1,915 | -1% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +32 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.