CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

netlify-blobs

Store and retrieve unstructured objects, files, and cache-like state on Netlify with the @netlify/blobs module. Use when persisting user file uploads (images/documents), caching computed output from functions or Background Functions, serving downloadable assets, storing JSON blobs keyed by ID, or seeding deploy-specific data. Reach for this for key/value or object storage from Functions, Edge Functions, or Build Plugins — not for per-user, transactional, or relational data (use Netlify DB for that). Triggers include "save an uploaded file", "cache API results", "store generated site map", "key/value store for a function", or "file uploads without a database".

68

Quality

86%

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

The canonical home for this skill is netlify-blobs in netlify/context-and-tools

SKILL.md
Quality
Evals
Security

Quality

Content

65%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 dense, highly actionable reference with excellent non-obvious operational knowledge and executable code throughout. Main weaknesses are a ~20-line duplicated house-rules tail, no validation checkpoint around the destructive deleteAll/migration paths, and a monolithic single-file structure where a references/ split would ease navigation.

Suggestions

Remove or replace the appended "Netlify house rules (blobs)" section with cross-references to the sections above — it duplicates six points already stated in the body (~20 wasted lines).

Add a validation step before destructive/batch operations: e.g., list keys and confirm scope (site-wide vs deploy store) before `deleteAll()`, and verify the copy completed before deleting from the old region during a region migration.

Split detail-heavy sections (regions, file-based uploads, module version migration) into references/ files linked from a shorter overview body, shortening SKILL.md's inline API reference.

DimensionReasoningScore

Conciseness

The body is dense with genuinely non-obvious facts (region footguns, deploy-store scoping, build-plugin read/write asymmetry) and mostly earns its tokens, but the appended "Netlify house rules (blobs)" section restates six points already covered verbatim above ("Blobs is not a database", "Site-scoped stores are shared across ALL deploy contexts", CLI inspection, access control, build-plugin both halves, no read-modify-write) — roughly 20 lines of duplication that could be trimmed. This fits the level-3 anchor ("mostly efficient but includes some unnecessary explanation or could be tightened") better than level 4, whose "minor instances" wouldn't cover a fully duplicated section; level 2 would require pervasive padding, which is not the case.

3 / 5

Actionability

Nearly every section is copy-paste-ready executable code: a complete upload Function (formData → uuid key → set with metadata), a reading Function with a 404 branch, conditional writes via onlyIfNew/onlyIfMatch with modified checks, list/paginate loops, TTL-by-metadata, consistency opts, region-scoped getStore calls, and a runnable migration command (`netlify recipes blobs-migrate YOUR_STORE_NAME`). Common cases are covered with concrete code and specific failure behaviors (null returns, `modified: false`, InvalidBlobsRegionError), matching the level-5 anchor exactly; level 4 would require minor gaps in coverage of common cases.

5 / 5

Workflow Clarity

The destructive/batch cap applies: `deleteAll()` is shown as "deletes every object = deletes the store" with no verification step (e.g., list and review keys before wiping a store), and the region-migration workflow ("copy each entry to a store opened in the new region, then delete from the old") has clear ordering but no checkpoint that the copy succeeded before deleting. Per the rubric, missing validation in destructive/batch operations caps this at 3 even though other loops are good (`if (!modified)` responses, etag freshness checks, `entry === null` 404 handling, the TTL check-then-delete read loop); level 4 would require most destructive-path checkpoints present.

3 / 5

Progressive Disclosure

There is no bundle (no references/, scripts/, or assets/) and the body is a single ~230-line file containing the full API surface inline — constraints tables, region lists, file-based upload layout, migration recipe — which matches the level-3 anchor ("content that should be separate is inline", e.g. "200 lines of API reference that could be in a separate file"). Headers are clear and external links (CLI reference, official docs) are well signaled, so it is above level 2's "minimal structure / buried references", but it falls short of level 4's "most content is appropriately placed" since no material is split out despite the length.

3 / 5

Total

14

/

20

Passed

Description

100%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.

An excellent description: third-person, concrete actions, explicit "Use when" guidance with natural trigger phrases, and explicit conflict-avoidance against Netlify DB. Both what and when are answered comprehensively without padding.

DimensionReasoningScore

Specificity

The description opens with concrete actions ("Store and retrieve unstructured objects, files, and cache-like state") and enumerates multiple specific use cases: "persisting user file uploads (images/documents)", "caching computed output from functions or Background Functions", "serving downloadable assets", "storing JSON blobs keyed by ID", and "seeding deploy-specific data". This matches or exceeds the level-5 anchor ("Extract text and tables from PDF files, fill forms, merge documents, convert pages to images") in breadth and concreteness; a 4 would require minor gaps in coverage, but every major Blobs use case is named.

5 / 5

Completeness

Both questions are explicitly answered: the "what" ("Store and retrieve unstructured objects, files, and cache-like state on Netlify with the @netlify/blobs module") and the "when" ("Use when persisting user file uploads... or seeding deploy-specific data", "Reach for this for key/value or object storage from Functions, Edge Functions, or Build Plugins"), with concrete trigger phrases listed — the exact pattern of the level-5 exemplar. It also adds explicit negative scope ("not for per-user, transactional, or relational data"), which strengthens the "when" beyond the level-4 anchor's "could be more explicit" gap.

5 / 5

Trigger Term Quality

It provides explicit natural-language trigger phrases a user would actually say: "save an uploaded file", "cache API results", "store generated site map", "key/value store for a function", "file uploads without a database", plus synonyms (key/value, object storage, files, uploads). Coverage is comprehensive with natural variations, matching the level-5 anchor ("PDF files, PDFs, forms, document extraction, .pdf"); the level-4 anchor would require a few missing natural terms, and none are evident.

5 / 5

Distinctiveness Conflict Risk

It names a clear niche (Netlify Blobs via the @netlify/blobs module) with platform-specific triggers (Functions, Edge Functions, Build Plugins, deploy-specific data) and explicitly disambiguates from the nearest conflicting skill: "not for per-user, transactional, or relational data (use Netlify DB for that)". This is a clear niche with distinct triggers and minimal conflict risk per the level-5 anchor; the level-4 anchor's "minor overlap risk with closely related skills" is addressed directly by the Netlify DB carve-out.

5 / 5

Total

20

/

20

Passed

Validation

100%

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

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

netlify/context-and-tools

Path

codex/skills/netlify-blobs/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.