nestable
Use the nestable() factory to define reusable Storyblok blocks that can be embedded inside other components via blocks() fields.
Skill by jimdrury
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/jimdrury-nestable
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/nestable
What's inside
- Skill name
nestable- Description
- Use the nestable() factory to define reusable Storyblok blocks that can be embedded inside other components via blocks() fields. Use when creating a new nestable component like a card, hero, or grid.
- License
- MIT
- Instructions
- 88 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# nestable
A nestable component is a reusable block that can be embedded inside other components via a blocks() field. Nestables cannot exist on their own -- they always live inside a parent story.
## Import
```ts
import { nestable } from '@jimdrury/storyblok-component-schema';
```
## Parameters
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | `string` | yes | Unique machine name. Lowercase letters and underscores only. |
| `display_name` | `string` | yes | Human-readable label shown in the Storyblok UI. |
| `image` | `string` (URL) | no | Preview image URL for the component picker. |
| `preview_field` | `string` | no | Name of the field used as the preview title in the UI. |
| `folder` | `string` | no | Component group / folder path (e.g. `layout`, `ui`). |
| `tags` | `string[]` | no | Internal tags for filtering and block restrictions. |
| `schema` | `FieldType[]` | yes | Array of field definitions. Field names must be unique. |
Returns an object with `is_root: false` and `is_nestable: true`.
## Tags
Tags are useful on nestable components for block restrictions:
```ts
export default nestable({
name: 'grid',
display_name: 'Grid',
folder: 'layout',
tags: ['layout'],
schema: [ /* ... */ ],
});
```
A blocks() field can then filter by tag:
```ts
blocks({ name: 'body', disallowed_tags: ['layout'] })
```
## Examples
### Minimal
```ts
import { nestable, text } from '@jimdrury/storyblok-component-schema';
export default nestable({
name: 'text_block',
display_name: 'Text Block',
schema: [
text({ name: 'content', required: true }),
],
});
```
### Full-featured
```ts
import { nestable, blocks, multilink, asset, option } from '@jimdrury/storyblok-component-schema';
export default nestable({
name: 'grid',
display_name: 'Grid',
folder: 'layout',
tags: ['layout'],
schema: [
blocks({ name: 'children', disallowed_tags: ['layout'] }),
multilink({ name: 'link' }),
asset({ name: 'background' }),
option({
name: 'columns',
options: [
{ name: '1', value: '1' },
{ name: '2', value: '2' },
{ name: '3', value: '3' },
],
default_value: '2',
}),
],
});
```From jimdrury/jimdrury-component-schema, MIT.
More from jimdrury/jimdrury-component-schema
- 0.409score
text
jimdrury
Use the text() factory for single-line text input fields like titles, headings, or slugs.
SkillDFreshness: DClaude Code +9 - 0.409score
content-type
jimdrury
Use the contentType() factory to define root-level Storyblok components like pages, articles, or settings.
SkillDFreshness: DClaude Code +9 - 0.409score
create-component
jimdrury
Create and configure Storyblok component definitions using the TypeScript schema DSL.
SkillDFreshness: DClaude Code +9 - 0.409score
install
jimdrury
Install and configure @jimdrury/storyblok-component-schema in a project.
SkillDFreshness: DClaude Code +9 - 0.409score
multiasset
jimdrury
Use the multiasset() factory for multiple file/image picker fields like galleries.
SkillDFreshness: DClaude Code +9 - 0.409score
number
jimdrury
Use the number() factory for numeric input fields like prices, ratings, or quantities.
SkillDFreshness: DClaude Code +9 - 0.408score
markdown
jimdrury
Use the markdown() factory for markdown editor fields.
SkillDFreshness: DClaude Code +9 - 0.408score
richtext
jimdrury
Use the richtext() factory for WYSIWYG rich text editor fields.
SkillDFreshness: DClaude Code +9 - 0.408score
boolean
jimdrury
Use the boolean() factory for toggle/checkbox fields.
SkillDFreshness: DClaude Code +9 - 0.408score
asset
jimdrury
Use the asset() factory for single file/image picker fields.
SkillDFreshness: DClaude Code +9 - 0.408score
datetime
jimdrury
Use the datetime() factory for date and time picker fields.
SkillDFreshness: DClaude Code +9 - 0.406score
blocks
jimdrury
Use the blocks() factory for nested component block fields.
SkillDFreshness: DClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Mar 20, 2026 (7 months ago)
- Last release
- Mar 21, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from jimdrury
- 0.409score
multiasset
jimdrury
Use the multiasset() factory for multiple file/image picker fields like galleries.
SkillDFreshness: DClaude Code +9 - 0.409score
number
jimdrury
Use the number() factory for numeric input fields like prices, ratings, or quantities.
SkillDFreshness: DClaude Code +9 - 0.409score
install
jimdrury
Install and configure @jimdrury/storyblok-component-schema in a project.
SkillDFreshness: DClaude Code +9 - 0.409score
content-type
jimdrury
Use the contentType() factory to define root-level Storyblok components like pages, articles, or settings.
SkillDFreshness: DClaude Code +9 - 0.409score
create-component
jimdrury
Create and configure Storyblok component definitions using the TypeScript schema DSL.
SkillDFreshness: DClaude Code +9 - 0.409score
text
jimdrury
Use the text() factory for single-line text input fields like titles, headings, or slugs.
SkillDFreshness: DClaude Code +9
Cite this page
nestable skill. Agent Mart. https://agentmart.dev/skills/jimdrury-nestable (last updated 2026-10-24)