CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

ai-persistence

Durability and state persistence for TanStack AI chats with @tanstack/ai-persistence. Routes to server chat persistence (withPersistence), client persistence (localStorage/IndexedDB), the store contracts, and adapter recipes. Distinguishes delivery durability (resumable streams) from conversation state. Use when conversations must survive reloads, multi-device, approvals, or server restarts — NOT for stream reconnect alone.

Quality

87%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

82%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-engineered router skill: executable code sketches, concrete security rules with real examples, and crisp decision tables for sub-skill routing. The main costs are minor redundancy and deep generation-persistence/credential detail inlined at overview level rather than left to the sub-skills it already routes to.

Suggestions

Merge or deduplicate the two `log` bullets in the Secure persistence section — they overlap and both constrain the same input lane.

Move the byte-storage detail (storageKey callback, blobKey backfill, fetch caps, snapshot transactions) into the build-*-adapter / artifact-store sub-skills and keep only the routing pointer plus the one-line authorization rule at overview level.

Add a short feedback-loop note under the conformance testkit rule (e.g., 'fix the failing contract and re-run until green before shipping the adapter') to complete the validation cycle.

DimensionReasoningScore

Conciseness

The body is dense with library-specific rules Claude could not know ("Default blob key is `artifacts/<runId>/<artifactId>`", "404, not 403, so valid ids aren't confirmed") and never explains known concepts — SSRF, path traversal, and envelope encryption are used as shorthand, not taught. It misses the 5 anchor on small redundancy: the two overlapping `log` bullets in Secure persistence, and "A replayable stream is not a saved conversation. A saved conversation is not a live stream." restating the layer table.

4 / 5

Actionability

The minimal end-to-end sketch is complete, executable code for both server route and client hook, and guidance comes with concrete values throughout: a worked `storageKey` callback payload, a real predicate example (`allowInputUrl: ({ url }) => url.hostname.endsWith('.cdn.example.com')`), and decision tables that route to a specific adapter recipe per stack. No pseudocode filler.

5 / 5

Workflow Clarity

"Recommended production stack" gives a numbered 1–4 sequence, "Run the conformance testkit against any adapter you write" is an explicit validation checkpoint, and the routing tables make the navigate-to-sub-skill workflow unambiguous. Not 5: there is no inline feedback loop (e.g., what to do when the testkit fails) and the implementation order across sub-skills is implied rather than sequenced.

4 / 5

Progressive Disclosure

No bundle files exist under this skill (no references/, scripts/, or assets/), and all pointers go one level deep to sibling skill files, clearly signaled via "Need to... / Read" and "The app runs... / Read" routing tables — good navigation. Not 5: substantial deep material (byte-storage security, CredentialStore rules, sandbox snapshot transactions) is inlined in this overview where sub-skills likely repeat it.

4 / 5

Total

17

/

20

Passed

Description

87%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: it names the domain with concrete APIs, answers what and when explicitly, includes natural trigger phrases, and adds a negative boundary that sharply reduces conflict with adjacent skills. The only gap is that it does not surface the generation/artifact persistence and credential-store halves of the skill's actual scope.

DimensionReasoningScore

Specificity

"Routes to server chat persistence (withPersistence), client persistence (localStorage/IndexedDB), the store contracts, and adapter recipes" names several concrete, API-level capabilities. It falls just short of the 5 anchor because it omits whole-body coverage areas such as generation/artifact persistence and the secure CredentialStore work.

4 / 5

Completeness

Both halves are explicit: what ("Durability and state persistence for TanStack AI chats with @tanstack/ai-persistence. Routes to server chat persistence (withPersistence), client persistence (localStorage/IndexedDB), the store contracts, and adapter recipes") and when ("Use when conversations must survive reloads, multi-device, approvals, or server restarts — NOT for stream reconnect alone"), with concrete trigger phrases plus a negative boundary. Third-person voice throughout, so no voice penalty applies.

5 / 5

Trigger Term Quality

"conversations must survive reloads, multi-device, approvals, or server restarts" and "stream reconnect" are natural phrases a user would actually say. Not 5 because common variations like "chat history", "save conversation", or "persist messages" are missing; clearly above 3 since multiple natural trigger phrases are present.

4 / 5

Distinctiveness Conflict Risk

"Distinguishes delivery durability (resumable streams) from conversation state" and "NOT for stream reconnect alone" carve out a clear niche and explicitly deflect the most likely wrong-skill trigger (stream reconnect/resumable streams). Minimal conflict risk with related TanStack AI skills.

5 / 5

Total

18

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

15

/

16

Passed

Repository

TanStack/ai

Path

packages/ai-persistence/skills/ai-persistence/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.