Agent skill

Concave

by udecode in udecode/kitcn

“Skill: concave”

— description from SKILL.md by udecode
Apache-2.0Auto-check passed

Install Concave

skills CLI
$ npx skills add udecode/kitcn --skill concave -a claude-code

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

GitHub CLI
$ gh skill install udecode/kitcn concave --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/udecode/kitcn.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/concave .claude/skills/concave && 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
concave
GitHub stars
450
Token cost
~2.2k tokens
SKILL.md length
880 words
Files
1
Skills in repo
33
Repo updated
First seen
Licence
Apache-2.0

At a glance

  • Works in 6 steps: Re-read current repo wiring → Re-fetch the upstream Concave doc index → Re-fetch every linked page from llms.txt → …
  • SKILL.md covers Scope, Upstream Concave Facts That…, Current Repo Usage and Repo-Specific Concave…, plus 4 more sections
  • Calls bun, curl and rg; reaches docs.concave.dev

About this skill

Concave is a skill in udecode/kitcn (450 stars). Its SKILL.md is about 2.2k tokens. Licence: Apache-2.0.

Workflow steps

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

  1. Re-read current repo wiring
  2. Re-fetch the upstream Concave doc index
  3. Re-fetch every linked page from llms.txt
  4. Rewrite this file with Concave-only facts
  5. Regenerate agent docs
  6. Validate the skill wiring

What it can do on your machine

Read from SKILL.md and the folder at commit c6010f5. 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:

    • bun
    • curl
    • rg
    • bunx

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • docs.concave.dev

    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

Concave loads about 2.2k tokens when it runs. Until then it costs about 6 tokens; SKILL.md has 880 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~6
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

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 udecode/kitcn at commit c6010f5, republished under its Apache-2.0 licence (© udecode). 880 words, ~2,179 tokens.

Download SKILL.mdSave it as .claude/skills/concave/SKILL.md (or your agent's skills folder).
name
concave
description
Skill: concave

Concave

Scope

Use this skill for Concave-specific behavior and Concave-vs-Convex differences in this repo.

Use concave-parity when the task is specifically about parity gaps, local workarounds, or removing Concave-specific bandaids after upstream catches up.

Keep the boundary hard:

  • public kitcn CLI supports backend: "concave" and --backend concave
  • public kitcn CLI still defaults to Convex
  • /example stays on Convex
  • the big convex-test suites stay on Convex tooling
  • Concave is both a real kitcn backend and the repo's preferred agent/CI runtime lane

Do not restate generic Convex docs here. The convex skill already owns that.

Upstream Concave Facts That Actually Matter

These are the Concave-only facts worth keeping in your head.

Runtime model
  • Concave is Convex-compatible, self-hosted, and multi-runtime.
  • Supported runtimes marked production upstream:
    • Cloudflare Workers
    • Bun
    • Node.js
  • Bun is the default local runtime.
  • Node.js requires 22.5+ and --experimental-sqlite.
  • Cloudflare is the recommended production target.
Deployment shape
  • Cloudflare uses Workers + Durable Objects.
  • DO SQLite is the default document store on Cloudflare.
  • D1 is optional when you need different scaling characteristics.
  • R2 is only needed for ctx.storage.
  • Self-hosted Bun/Node and desktop embeddings are single-instance by default because SQLite needs exclusive file access.
  • concave build can compile a standalone Bun-based binary; useful, but still single-instance with SQLite.
Local dev shape
  • concave dev auto-picks runtime; --bun, --node, and --cf force it.
  • alpha.14 defaults local dev to 3210.
  • Bun/Node local data lives in ./.concave/local.
  • Bun dev binds 0.0.0.0 by default. That is LAN-visible. 127.0.0.1 is the safer local-only bind.
  • Local dashboard lives at /_dashboard.
  • DevTools are web-only and designed around Vite/manual client init, not React Native.
Configuration / API differences
  • concave.config.ts is real Concave surface area.
  • convex.json works now. That matters here because kitcn already uses it.
  • Bun/Node use createConcave(...).
  • Cloudflare uses explicit defineConcaveRuntime(...) wiring.
  • Adapter choice is part of the product, not hidden infra:
    • docstore
    • blobstore
    • module loading
    • Cloudflare bindings
Compatibility gaps
  • Vector search is only basic/brute-force in built-in adapters.
  • Crons are planned, not done.
  • Convex Auth is not supported.
  • Streaming exports are not supported.
Testing stance upstream
  • convex-test is still valid for isolated function/unit tests.
  • Real E2E against Concave is done with createConcave(...) plus ConvexHttpClient.
  • Cross-runtime E2E is a real supported testing strategy upstream.

Current Repo Usage

We use Concave in two concrete ways.

Public backend selector

kitcn now resolves backend in this order:

  1. --backend <convex|concave>
  2. meta["kitcn"].backend in concave.json
  3. default convex

Public meaning:

  • convex => drive Convex CLI
  • concave => drive Concave CLI

Internal meaning:

  • public concave currently maps to the Bun adapter (concave-bun)

Files:

  • packages/kitcn/src/cli/config.ts
  • packages/kitcn/src/cli/core.ts
  • packages/kitcn/src/cli/cli.ts

Command shape:

  • kitcn orchestration commands (init, dev, codegen, deploy, migrate, aggregate, reset) run on the selected backend
  • unknown commands pass through to the selected backend CLI
  • kitcn env sync stays a kitcn helper
  • raw kitcn env ... passthrough is Convex-only because Concave has no matching upstream env command
Concave smoke lane

Use:

bash
bun run test:concave

Files:

  • test/concave/run-smoke.ts
  • test/concave/fixture/**

Runtime shape:

  • createConcave(...)
  • SqliteDocStore(':memory:')
  • ConvexHttpClient

Goal:

  • generated kitcn runtime contract loads
  • one mutation/query roundtrip works end-to-end

Keep it small. This is a smoke lane, not a migration plan.

Repo-Specific Concave Differences

Template sync/check uses the public backend selector

tooling/fixtures.ts runs local committed starter sync with kitcn init -t <next|vite> --backend concave.

That means:

  • committed fixtures/*/convex/functions/_generated/* comes from the create flow running kitcn codegen against Concave-backed bootstrap
  • template-mode Concave codegen intentionally uses concave codegen --static
  • tooling/fixtures.ts itself must not shell out to raw kitcn codegen
Show full SKILL.md (328 more words)Show less
_generated/* drift is expected

Concave-generated _generated/* output is not guaranteed to match Convex-generated output byte-for-byte.

Read the diff before calling it a bug.

staticDataModel mismatch is still real

Current repo finding:

  • fixtures/next/convex.json sets codegen.staticDataModel: true
  • Concave-generated fixtures/next/convex/functions/_generated/dataModel.d.ts is still dynamic

So today, in this repo path, Concave is not honoring that flag.

api.d.ts override is gone

Current repo truth:

  • alpha.14 emits the same api.d.ts shape our old source-backed override used to force
  • kitcn no longer post-writes _generated/api.d.ts

Meaning:

  • if api.d.ts drifts again, treat it as a fresh upstream regression
  • do not quietly resurrect the old overwrite helper
Use plain bun, not bun test, for the smoke lane

Root bun test preloads Happy DOM here. That poisoned ConvexHttpClient behavior for the Concave smoke lane.

Keep the smoke entry as:

bash
bun ./test/concave/run-smoke.ts
Keep the adapter tiny

Do not invent a second fake runtime layer on top of backend.

The right model is:

  • one public selector: backend
  • one internal mapping: concave -> current Bun adapter
  • native backend flags stay native

Read Before Editing

Start with repo wiring:

  • packages/kitcn/src/cli/backend-core.ts
  • packages/kitcn/src/cli/commands/init.ts
  • packages/kitcn/src/cli/commands/init.test.ts
  • tooling/fixtures.ts
  • tooling/fixtures.test.ts
  • tooling/scenarios.ts
  • tooling/scenarios.test.ts
  • test/concave/run-smoke.ts
  • test/concave/fixture/**
  • .github/workflows/ci.yml

Then read Concave docs starting from:

  • https://docs.concave.dev/llms.txt

Do Not

  • do not add a second selector like --runtime concave
  • do not switch /example to Concave
  • do not migrate the big convex-test suites just because Concave exists
  • do not document generic Convex APIs here
  • do not assume Concave codegen output equals Convex codegen output

Verification

When touching Concave repo-runtime wiring, run:

bash
bun test packages/kitcn/src/cli/commands/init.test.ts ./tooling/fixtures.test.ts ./tooling/scenarios.test.ts
bun test packages/kitcn/src/cli/cli.test.ts
bun run test:concave
bun run fixtures:check
bun run scenario:check

If package code changed too, also run:

bash
bun --cwd packages/kitcn build
bun lint:fix
bun typecheck

Skill Sync

When Concave docs or repo usage changes, update this skill with this exact loop.

1. Re-read current repo wiring
bash
rg -n "backend|concave-bun|test:concave|createConcave|@concavejs|Concave|--backend" \
  package.json \
  packages/kitcn/src/cli/backend-core.ts \
  packages/kitcn/src/cli/config.ts \
  packages/kitcn/src/cli/cli.ts \
  packages/kitcn/src/cli/commands/init.ts \
  packages/kitcn/src/cli/commands/init.test.ts \
  tooling/fixtures.ts \
  tooling/fixtures.test.ts \
  tooling/scenarios.ts \
  tooling/scenarios.test.ts \
  test/concave \
  .github/workflows/ci.yml \
  -g '!**/_generated/**'
2. Re-fetch the upstream Concave doc index
bash
mkdir -p /tmp/concave-docs-fetch
curl -fsSL -A 'Mozilla/5.0' https://docs.concave.dev/llms.txt \
  | tee /tmp/concave-docs-fetch/llms.txt
3. Re-fetch every linked page from llms.txt
bash
awk '
  match($0, /(https:\\/\\/docs\\.concave\\.dev[^) ]+)/, m) { print m[1] }
' /tmp/concave-docs-fetch/llms.txt \
  | nl -ba \
  | while read -r n url; do
      curl -fsSL -A 'Mozilla/5.0' "$url" >"/tmp/concave-docs-fetch/${n}.md"
    done
4. Rewrite this file with Concave-only facts

Rules:

  • keep only Concave-specific behavior or Concave-vs-Convex differences
  • keep repo-specific usage and mismatches
  • do not restate generic Convex docs
5. Regenerate agent docs
bash
bunx skiller@latest apply
6. Validate the skill wiring
bash
bun run intent:validate
bun run intent:stale

If .claude/AGENTS.md changes, that is expected. It is generated from .claude/**.

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

Files

Just SKILL.md in .agents/skills/concave of udecode/kitcn.

Open the folder on GitHubat commit c6010f5

Compare with similar skills

Concave 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.

Concave compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Concave this skilludecode/kitcn450—~2.2kAutomated safety check: PassApache-2.0
Durable Objectshodgef/apiker1274 repos~1.5kAutomated safety check: PassMIT
Memoraagentic-box/memora731—~813Automated safety check: PassMIT
Database MigrationRain-kl/OpenFlare288—~1.3kAutomated safety check: PassApache-2.0
LogstoreRain-kl/OpenFlare288—~751Automated safety check: PassApache-2.0
Cloudflare D1alinaqi/maggy707—~4.1kAutomated safety check: PassMIT

Similar skills

  • Durable Objects

    hodgef/apiker

    Create and review Cloudflare Durable Objects. An agent skill from hodgef/apiker.

    127 GitHub starsUsed in 4 repos~1.5k tokens
    Backend & APIsAuto-check passed
  • Memora

    agentic-box/memora

    A skill your agent uses when working with persistent memory across sessions, storing/retrieving knowledge, managing TODOs/issues, or when context from previous sessions would be helpful.

    731 GitHub stars~813 tokensUpdated 9 days ago
    Agent WorkflowsAuto-check passed
  • Database Migration

    Rain-kl/OpenFlare

    Wavelet 项目专用:当新增或修改数据库表结构、索引、初始化数据、系统配置 seed、模板 seed、默认管理员、goose SQL 迁移、internal/infra/persistence/migrator、ClickHouse 分析库 DDL 或数据库升级流程时必须使用。本技能指导在 internal/infra/persistence/migrator/goose 下编写…

    288 GitHub stars~1.3k tokensUpdated today
    DatabasesAuto-check passed
  • Logstore

    Rain-kl/OpenFlare

    OpenFlare / Wavelet:当新增或修改日志/分析用途表(节点访问日志、用户访问日志、可观测时序)、接入 internal/repository/logstore、切换日志主库、实现 PG/SQLite 回落,或判断一张表该走业务主库还是日志库时必须使用。

    288 GitHub stars~751 tokensUpdated today
    DatabasesAuto-check passed
  • Cloudflare D1

    alinaqi/maggy

    Cloudflare D1 SQLite database with Workers, Drizzle ORM, migrations

    707 GitHub stars~4.1k tokensUpdated 13 days ago
    DatabasesAuto-check passed
  • Cloudflare

    einverne/dotfiles

    Guide for building applications on Cloudflare's edge platform.

    121 GitHub stars~6.7k tokensUpdated 28 days ago
    Backend & APIsAuto-check passed

More from udecode/kitcn

All 33 skills in this repo
  • Walkthrough

    udecode/kitcn

    Create a short annotated visual walkthrough from real final-state screenshots or rendered artifacts.

    450 GitHub stars~1.6k tokensUpdated 6 days ago
    Auto-check passed
  • Avoid Feature Creep

    udecode/kitcn

    Prevent feature creep when building software, apps, and AI-powered products.

    450 GitHub stars~2.7k tokensUpdated 6 days ago
    Auto-check passed
  • Changeset Resolve

    udecode/kitcn

    Repair an unreleased .changeset/.md file so it matches the real branch delta against main.

    450 GitHub stars~922 tokensUpdated 6 days ago
    Auto-check passed
  • Audit newer Convex npm releases against kitcn. An agent skill from udecode/kitcn.

    450 GitHub stars~1.8k tokensUpdated 6 days ago
    Auto-check passed
  • Jotai X

    udecode/kitcn

    A skill your agent uses when working with Jotai X stores (createAtomStore), accessing state in components or callbacks, persisting state to cookies or localStorage

    450 GitHub stars~3.7k tokensUpdated 6 days ago
    Auto-check passed
  • Linear Backlog

    udecode/kitcn

    Run a scoped Linear backlog autonomously as a sequence of maximal safe parallel batches by composing orchestrator, autogoal, and task.

    450 GitHub stars~3.1k tokensUpdated 6 days ago
    Auto-check passed

Questions about Concave

How do I install Concave in Claude Code?

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

How do I install Concave in Codex?

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

Can I use Concave 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 udecode/kitcn --skill concave -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/concave, .gemini/skills/concave, .github/skills/concave and .opencode/skills/concave in your project.

What does Concave need to run?

Going by SKILL.md and its folder, Concave needs the command-line tools its instructions call (bun, curl, rg and bunx).

Does Concave access the network?

SKILL.md names 1 domain. In commands or code: docs.concave.dev; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Concave 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 Concave use?

Concave is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Concave use?

About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Concave?

Skills that share tags, products or a category with Concave: Durable Objects (hodgef/apiker, 127 stars), Memora (agentic-box/memora, 731 stars), Database Migration (Rain-kl/OpenFlare, 288 stars) and Logstore (Rain-kl/OpenFlare, 288 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Concave?

udecode (a GitHub organization) maintains it in udecode/kitcn, which has 450 GitHub stars. The repository holds 33 skills in this directory. The repository was last updated on October 1, 2026.

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