Agent skill

Cabloy Resource Field Update

by cabloy in cabloy/cabloy

A skill your agent uses whenever the user wants to update a field on an existing Cabloy backend resource: add a new persisted field, refine validation, add enum-like constraints, attach or change…

MITAuto-check passedDevelopment

Install Cabloy Resource Field Update

skills CLI
$ npx skills add cabloy/cabloy --skill cabloy-resource-field-update -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install cabloy/cabloy cabloy-resource-field-update --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/cabloy/cabloy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/cabloy-resource-field-update .claude/skills/cabloy-resource-field-update && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
cabloy-resource-field-update
GitHub stars
982
Token cost
~3.4k tokens
SKILL.md length
1,667 words
Files
6 (incl. references)
Skills in repo
12
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses whenever the user wants to update a field on an existing Cabloy backend resource: add a new persisted field, refine validation, add enum-like constraints, attach or change…

  • Works in 7 steps: Detect repo and confirm… → Classify the field change before editing → Force the fileVersion decision for new… → …
  • The user wants to update a field on an existing Cabloy backend resource: add a new persisted field
  • SKILL.md covers Important recovery note for…, Goals, Step 1: Detect repo and… and Step 2: Classify the field…, plus 6 more sections
  • Calls npm

What it does

Cabloy Resource Field Update is an agent skill from cabloy/cabloy. Use this skill whenever the user wants to update a field on an existing Cabloy backend resource: add a new persisted field, refine validation, add enum-like constraints, attach or change ZovaRender.field / ZovaRender.cell metadata, decide whether vonaModule.fileVersion should change, or demonstrate a custom frontend renderer for a backend field. Trigger when the request is specifically about modifying an existing resource field thread rather than creating a new CRUD/resource thread. Prefer it for backend-first…

Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including reference files (for example `evals/evals.json`, `references/custom-renderer-demo-checklist.md` and `references/field-update-decision-tree.md`).

It sits in Development, covering Project scaffolding. The repository describes itself as: Cabloy is a Node.js fullstack framework for AI vibe coding, with AI Spec-Driven Development guiding work from confirmed specs to verifiable delivery. The licence is MIT.

When your agent uses it

  • The user wants to update a field on an existing Cabloy backend resource: add a new persisted field
  • Refine validation
  • Add enum-like constraints
  • Change ZovaRender.field / ZovaRender.cell metadata

Example prompts

  • “/cabloy-resource-field-update”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Detect repo and confirm existing-resource scope
  2. Classify the field change before editing
  3. Force the fileVersion decision for new persisted fields
  4. Inspect the current backend thread first
  5. Update the entity first and reuse inferred DTO flow
  6. Apply the renderer branch deliberately
  7. Always close the remaining layers

What it can do on your machine

Read from SKILL.md and the folder at commit b3d00ec. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Cabloy Resource Field Update loads about 3.4k tokens when it runs, and up to ~6.4k if it reads all its reference files. Until then it costs about 184 tokens; SKILL.md has 1,667 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~184
When it runs · the whole SKILL.md, loaded when a task matches
~3.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~6.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from cabloy/cabloy at commit b3d00ec, republished under its MIT licence (© cabloy). 1,667 words, ~3,419 tokens.

Download SKILL.mdSave it as .claude/skills/cabloy-resource-field-update/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
cabloy-resource-field-update
description
Use this skill whenever the user wants to update a field on an existing Cabloy backend resource: add a new persisted field, refine validation, add enum-like constraints, attach or change ZovaRender.field / ZovaRender.cell metadata, decide whether vonaModule.fileVersion should change, or demonstrate a custom frontend renderer for a backend field. Trigger when the request is specifically about modifying an existing resource field thread rather than creating a new CRUD/resource thread. Prefer it for backend-first field-update work that may branch into renderer-aware frontend follow-up. Do not use it for initial backend scaffolding, generic frontend scaffolding, or stale generated contract diagnosis.

Cabloy Resource Field Update

Use this skill when the user wants to change a field on an existing Vona backend resource.

Important recovery note for stale generated consumers

When the generated .zova-rest artifacts already contain the expected new keys or types but Vona still sees stale consumer types, treat that first as a local dependency drift problem rather than a source-editing problem.

In that situation:

  1. run the normal sync flow, including the relevant Zova build first and then npm run deps:vona
  2. if the generated .zova-rest artifacts already contain the expected changes but the stale behavior remains, rebuild vona/node_modules and reinstall dependencies

Keep this recovery rule visible during renderer-aware or contract-loop follow-up work. Do not keep debugging source-level renderer registrations until the local file-package installation state is known to be healthy.

Goals

  1. detect whether the active repository is Cabloy Basic or Cabloy Start
  2. classify the task as a new persisted field or a metadata-only field refinement
  3. force the correct fileVersion decision before persistence edits
  4. keep the workflow entity-first and inferred-DTO-first
  5. prefer shared renderer reuse unless the task explicitly asks for a custom renderer demo
  6. finish with verification guidance that matches backend and renderer follow-up scope

Step 1: Detect repo and confirm existing-resource scope

Check the repository root for these marker files:

  • __CABLOY_BASIC__
  • __CABLOY_START__

Interpretation:

  • only __CABLOY_BASIC__ present → this is Cabloy Basic
  • only __CABLOY_START__ present → this is Cabloy Start
  • both markers present → treat the repository as ambiguous or invalid and stop before making edition-specific assumptions
  • neither marker present → inspect the owning package scripts and nearby repository structure, then ask before making an edition-specific assumption

Then confirm the request is about an existing resource field.

Use this skill for requests such as:

  • add a field to an existing resource
  • tighten validation for an existing field
  • add enum-like constraints to an existing field
  • add or change ZovaRender.field(...) / ZovaRender.cell(...)
  • decide whether a persisted field change needs a new fileVersion
  • demonstrate a custom renderer workflow for a backend field

Do not use this skill when the user is really asking to create a new module, bean, CRUD thread, page thread, or stale consumer diagnosis flow.

If the request is really about initial backend thread creation, prefer cabloy-backend-scaffold. If the request is really about stale generated frontend/backend consumers, prefer cabloy-contract-loop. If the request is mainly about choosing a workflow, prefer cabloy-workflow.

Step 2: Classify the field change before editing

Branch the request into one of two cases.

Case A: new persisted field

Examples:

  • add level: number
  • add status: string
  • add a new stored relation key

This case affects persistence and versioning.

Case B: metadata-only or validation/render-only refinement

Examples:

  • add enum validation to an existing field
  • add or change ZovaRender.field(...)
  • add or change ZovaRender.cell(...)
  • refine locale labels
  • tighten validation without changing storage shape

This case usually does not require a fileVersion bump, because the persisted field already exists.

Step 3: Force the fileVersion decision for new persisted fields

If the task is a new persisted field on an existing resource, ask whether vonaModule.fileVersion should be incremented before changing:

  • meta.version.ts
  • the module schema version path
  • the module package.json fileVersion
If the user says yes

Then:

  1. bump vonaModule.fileVersion
  2. add a new migration branch in meta.version.ts
  3. preserve older version branches as historical snapshots
  4. introduce the new persisted field in the new version branch

Important warning:

  • do not add the same new column to an older create path and again to a new migration branch
  • fresh install may run version branches sequentially
  • that pattern can produce duplicate-column failures
If the user says no

Then:

  1. keep the current fileVersion
  2. fold the schema change into the current version path
  3. do not create a new migration branch

Step 4: Inspect the current backend thread first

Before proposing or making edits, inspect the existing thread:

  • entity
  • model
  • DTOs
  • controller
  • service
  • meta.version.ts
  • module package.json
  • locale files
  • tests

Also inspect the shared entrypoints first:

  • root package.json
  • npm run vona
  • npm run zova

Use these references for compact support material:

  • references/field-update-decision-tree.md
  • references/follow-up-checklist.md
  • references/verification-checklist.md

Step 5: Update the entity first and reuse inferred DTO flow

Treat the entity as the primary field-definition surface.

Typical field-update changes belong here first:

  • @Api.field(...)
  • v.required() / v.optional()
  • v.title($locale(...))
  • ZovaRender.order(...)
  • explicit zod schema for constrained values

For enum-like numeric or string values, prefer an explicit constrained schema such as:

  • z.union([z.literal(1), z.literal(2), z.literal(3)])

Ordering rule:

  • framework-level guarding now preserves previously attached OpenAPI metadata across schema rebuilds, so metadata-only helpers are less order-sensitive than before
  • this only removes metadata-loss order pitfalls; it does not make all schemaLike arguments fully order-independent
  • when an explicit zod/custom schema or other structure-shaping schemaLike is passed into @Api.field(...), keep that structure-defining schemaLike as the last argument unless a local pattern clearly requires otherwise
  • treat helpers such as v.object(...), v.array(...), v.optional(), v.nullable(), v.default(...), and preprocess/transform wrappers as structure-shaping, not metadata-only
  • keep helper metadata such as v.xxx(...) and ZovaRender.xxx(...) before the final structure-defining schemaLike
  • after edits involving structure-shaping schemaLike, verify the emitted schema/OpenAPI result instead of assuming reorder is safe

Then check whether DTOs are already inferred through patterns such as:

  • $Dto.create(...)
  • $Dto.update(...)
  • $Dto.get(...)

If the DTOs are inferred from the entity/model chain, let the entity change propagate. Do not hand-edit DTO field lists unless the source clearly requires it.

Important serialization reminder:

  • if the returned field behavior depends on v.serializerTransform(...), v.serializerExclude(), v.serializerReplace(...), v.serializerGetter(...), or v.serializerCustom(...), do not assume those transforms run by default
  • for performance reasons, Vona response serialization is opt-in per API action
  • verify that the target controller action explicitly uses @Core.serializer() before concluding that serializer metadata is broken
Show full SKILL.md (746 more words)Show less
Join-backed foreign-key filtering and sorting

Use this metadata/query-contract branch when a persisted relation field remains an identity, but a resource list must filter or order it by a human-readable column on the related table. This is a metadata-only refinement when the foreign-key column already exists; do not increment fileVersion solely for this behavior.

Keep the entity field name and identity schema unchanged. Put the relation mapping on the entity field so inferred projections retain it:

  • v.filter({ table, joinType, joinOn, originalName, op }) maps the public relation field to the related display column;
  • ZovaRender.column({ enableSorting: true }) exposes the table sort control when the list should support ordering;
  • preserve existing relation picker/cell metadata and v.tableIdentity() (or the applicable identity schema).

For a required relation, innerJoin is usually appropriate. When the relation is optional or unmatched base rows must remain visible, choose the join semantics explicitly instead of copying an inner-join example.

Keep the public query and order key equal to the foreign-key field name. In the select request DTO, retain that inferred field and use $makeSchema(...) only to change its query-input schema and renderer, usually to v.optional(), z.string(), and Cabloy Basic's basic-input:formFieldInput. Do not replace the entity storage schema with a string or add a parallel display-name parameter unless the API intentionally exposes separate ID and display-name filters.

Verify direct DTO metadata, the emitted optional text query parameter, absence of an unintended alternate parameter, visible sortable-column metadata, and endpoint filtering plus ascending/descending ordering. Confirm that filtering and ordering resolve to the intended related display column and inject the expected join.

See Existing Resource Field Update for the public pattern and links to the ORM and frontend query-flow guides.

Step 6: Apply the renderer branch deliberately

Default rule: prefer shared renderer reuse

If the field needs form or table rendering metadata, inspect shared renderers first.

Default preference order:

  1. reuse an existing shared renderer
  2. configure it with field-level options
  3. only create a new custom renderer if the shared surface cannot express the needed behavior

For enum-like values, apply an edition-aware default.

In Cabloy Basic, the usual default is:

  • ZovaRender.field('basic-select:formFieldSelect', { items, placeholder })
  • ZovaRender.cell('basic-select:select', { items })

In Cabloy Start:

  • do not assume the same renderer keys or placeholder behavior from Basic
  • inspect the start-select wrapper and its underlying component semantics before choosing renderer keys or copying Basic-specific select logic

When using a field-rendering select component, default to providing a user-visible placeholder unless the UX clearly requires an always-preselected value.

In Cabloy Basic, prefer placeholder over artificial empty-item injection when the goal is to keep the select initially unchosen.

Custom renderer demo rule

If the user explicitly wants to demonstrate the custom renderer workflow, branch into a frontend follow-up path.

Use these portable references:

When relevant and available in the active edition, repo-docs-internal/architecture/backend-resource-field-workflow.md may be consulted as optional maintainer rationale. Its absence must not block or alter this shared workflow.

Recommended shape:

  • module-local FormField component for backend field rendering
  • module-local @TableCell(...) bean for backend table-cell rendering
  • metadata regeneration
  • frontend build
  • deps:vona
  • Vona-side typecheck and targeted backend test

Important warning:

  • a plain frontend component alone is not enough for backend ZovaRender.cell(...)
  • the backend table-cell render key should be backed by a registered @TableCell(...) bean

Step 7: Always close the remaining layers

Locale

If titles, enum labels, or helper text are user-visible, update locale files in the same task.

Typical additions:

  • field title like Level
  • enum labels like LevelBeginner, LevelIntermediate, LevelAdvanced
  • custom renderer helper text when applicable
Tests

Minimum expected backend coverage usually includes:

  • create with the field
  • select/list still works
  • update persists the field
  • get-by-id/view returns the field
  • delete flow still works if relevant

For constrained enum-like fields, add a negative test such as:

  • invalid value is rejected
Verification

Always end with a verification path matched to the scope.

Typical checks include:

  • npm run test
  • npm run tsc
  • npm run build
  • narrow resource test runs
  • when returned-field masking or exclusion uses v.serializer*, verify the action-level @Core.serializer() path with an API test, not only static field metadata inspection
  • renderer/build/deps synchronization when custom frontend renderers are involved

Response pattern

When helpful, structure the response around these points:

  1. detected edition
  2. persisted-field vs metadata-only classification
  3. fileVersion decision if needed
  4. backend thread surfaces to inspect or modify
  5. shared-renderer reuse vs custom-renderer branch
  6. verification steps

Keep the response practical. The value of this skill is turning existing-resource field updates into the correct Cabloy decision tree with the right backend and renderer follow-up, not writing a broad architecture essay.

© cabloy, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (references) in .agents/skills/cabloy-resource-field-update of cabloy/cabloy.

  • SKILL.md
  • evals/evals.json
  • references/custom-renderer-demo-checklist.md
  • references/field-update-decision-tree.md
  • references/follow-up-checklist.md
  • references/verification-checklist.md

Open the folder on GitHubat commit b3d00ec

Compare with similar skills

Cabloy Resource Field Update next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Cabloy Resource Field Update compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Cabloy Resource Field Update this skillcabloy/cabloy982—~3.4kAutomated safety check: PassMIT
Create Ryos Appryokun6/ryos1.3k—~3.7kAutomated safety check: PassAGPL-3.0
Starter Templatesinkline/inkline1.5k—~1kAutomated safety check: PassNone
Docs SVG Kitgridaco/grida2.7k—~5.6kAutomated safety check: PassApache-2.0
Docouture Docs VersioningInditexTech/weavejs226—~655Automated safety check: PassApache-2.0
Corvus Query Languagescorvus-dotnet/Corvus.JsonSchema199—~2.1kAutomated safety check: PassApache-2.0

Similar skills

  • Create Ryos App

    ryokun6/ryos

    Create new applications for ryOS following established patterns and conventions.

    1.3k GitHub stars~3.7k tokensUpdated today
    DevelopmentAuto-check passed
  • Starter Templates

    inkline/inkline

    Anatomy and maintenance of inkline-starter- repos and examples — the two starter flavors, what every starter must include, per-framework specifics, and the…

    1.5k GitHub stars~1k tokensUpdated 28 days ago
    DevelopmentAuto-check passed
  • Docs SVG Kit

    gridaco/grida

    Author SVG figures for Grida docs — diff-able, version-controlled vector diagrams embedded in doc pages instead of screenshots.

    2.7k GitHub stars~5.6k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Docouture Docs Versioning

    InditexTech/weavejs

    How to cut a release or a prerelease on a docouture Antora documentation site scaffolded with Versioned (Full History) mode: docouture version, docs/.release-version, and the docouture-release.yml…

    226 GitHub stars~655 tokensUpdated today
    DevelopmentAuto-check passed
  • Corvus Query Languages

    corvus-dotnet/Corvus.JsonSchema

    Work with JSONata, JMESPath, JsonLogic, and JSONPath query and transformation languages.

    199 GitHub stars~2.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Design Import

    yonatangross/orchestkit

    Scaffolds React components from a Claude Design handoff bundle and stops at files on disk: no stories, no tests, no pull request.

    290 GitHub stars~2.9k tokensUpdated today
    DevelopmentAuto-check: notes

More from cabloy/cabloy

All 12 skills in this repo
  • A skill your agent uses to create or maintain Cabloy suite specifications under repo-specs, including PRD, SRS, PDP/WBS, acceptance planning, progress, and suite ADRs.

    982 GitHub stars~3.2k tokensUpdated today
    Auto-check: notes
  • A skill your agent uses whenever the user wants to plan a new business domain in this Cabloy repo, such as CRM, OA, training, ERP, or a similar long-lived domain.

    982 GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • This skill must be used only when the user explicitly invokes /cabloy-worktree-environment or explicitly asks to perform the named Cabloy worktree-environment setup.

    982 GitHub stars~2.9k tokensUpdated today
    Auto-check: notes
  • This skill should be used when the user needs the Vona backend scaffold/extend path in this Cabloy repo, especially to choose the right npm run vona generator or CRUD command and the required…

    982 GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • A skill your agent uses whenever a Cabloy task crosses the Vona-to-Zova contract boundary: backend DTO, controller, validation, entity, inferred DTO, or OpenAPI changes that should drive SDK…

    982 GitHub stars~5.1k tokensUpdated today
    Auto-check passed
  • A skill your agent uses whenever the user wants the Zova frontend path in this Cabloy repo: create or extend pages, components, api or model beans, route/query/params work, metadata refresh…

    982 GitHub stars~4.1k tokensUpdated today
    Auto-check passed

Questions about Cabloy Resource Field Update

What does Cabloy Resource Field Update do?

A skill your agent uses whenever the user wants to update a field on an existing Cabloy backend resource: add a new persisted field, refine validation, add enum-like constraints, attach or change…. Cabloy Resource Field Update is an agent skill from cabloy/cabloy.fileVersion should change, or demonstrate a custom frontend renderer for a backend field.

When should I use Cabloy Resource Field Update?

Cabloy Resource Field Update fits situations like: the user wants to update a field on an existing Cabloy backend resource: add a new persisted field; refine validation; add enum-like constraints; change ZovaRender.field / ZovaRender.cell metadata.

How do I install Cabloy Resource Field Update in Claude Code?

Run `npx skills add cabloy/cabloy --skill cabloy-resource-field-update -a claude-code`. Or copy the skill folder (.agents/skills/cabloy-resource-field-update in cabloy/cabloy) into .claude/skills/cabloy-resource-field-update in your project. Claude Code loads it when a task matches its description.

How do I install Cabloy Resource Field Update in Codex?

Run `npx skills add cabloy/cabloy --skill cabloy-resource-field-update -a codex`. Or copy the skill folder (.agents/skills/cabloy-resource-field-update in cabloy/cabloy) into .agents/skills/cabloy-resource-field-update in your project. Codex loads it when a task matches its description.

Can I use Cabloy Resource Field Update in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add cabloy/cabloy --skill cabloy-resource-field-update -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cabloy-resource-field-update, .gemini/skills/cabloy-resource-field-update, .github/skills/cabloy-resource-field-update and .opencode/skills/cabloy-resource-field-update in your project.

What does Cabloy Resource Field Update need to run?

Going by SKILL.md and its folder, Cabloy Resource Field Update needs the command-line tools its instructions call (npm).

Does Cabloy Resource Field Update access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Cabloy Resource Field Update safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Cabloy Resource Field Update use?

Cabloy Resource Field Update is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Cabloy Resource Field Update use?

About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3k tokens, read only when the agent opens those files.

What are the alternatives to Cabloy Resource Field Update?

Skills that share tags, products or a category with Cabloy Resource Field Update: Create Ryos App (ryokun6/ryos, 1.3k stars), Starter Templates (inkline/inkline, 1.5k stars), Docs SVG Kit (gridaco/grida, 2.7k stars) and Docouture Docs Versioning (InditexTech/weavejs, 226 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Cabloy Resource Field Update?

cabloy (a GitHub organization) maintains it in cabloy/cabloy, which has 982 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 9, 2026.

Source: cabloy/cabloy on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.