Agent skill

Concave Parity

by udecode in udecode/kitcn

“Skill: concave-parity”

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

Install Concave Parity

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

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

GitHub CLI
$ gh skill install udecode/kitcn concave-parity --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-parity .claude/skills/concave-parity && 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-parity
GitHub stars
450
Token cost
~2.4k tokens
SKILL.md length
1,015 words
Files
1
Skills in repo
33
Repo updated
First seen
Licence
Apache-2.0

At a glance

  • Works in 6 steps: Local dev site-side 3211 proxy → Startup retry loop for dev… → Vite scenario backend/frontend split → …
  • SKILL.md covers Contract, Hard Rules, Active Bandaids and Removed Bandaids, plus 3 more sections
  • Calls bun

About this skill

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

Workflow steps

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

  1. Local dev site-side 3211 proxy
  2. Startup retry loop for dev migration/backfill hooks
  3. Vite scenario backend/frontend split
  4. Generated auth runtime fallback for empty Concave internals
  5. Concave run output JSON fallback parsing
  6. Manual static JWKS export command

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

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

  • Network

    No URLs in SKILL.md.

    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 Parity loads about 2.4k tokens when it runs. Until then it costs about 9 tokens; SKILL.md has 1,015 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~9
When it runs · the whole SKILL.md, loaded when a task matches
~2.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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:52
    - inject `SITE_URL` from `.env.local`

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). 1,015 words, ~2,384 tokens.

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

Concave Parity

Contract

When the user asks for Concave parity, treat Convex behavior as the source of truth for kitcn runtime contracts.

Do not hand-wave with "compatible enough."

Do not normalize a parity shift into "just how Concave works" if kitcn already has a shim for it. Name the shift, point at the shim, and state the delete condition.

If upstream Concave reaches parity, delete the bandaid. Do not keep fallback sludge around for nostalgia.

Hard Rules

  • Every Concave-specific workaround must be listed here with file locations.
  • Every new Concave workaround needs a removal trigger.
  • If you touch a listed bandaid, re-check whether upstream parity makes it deletable right now.
  • If the shift only affects repo tooling or scenarios, say that explicitly.
  • If the shift is only observed and not patched, keep it in the watchlist, not the bandaid section.

Active Bandaids

1. Local dev site-side 3211 proxy

Convex local dev shape in this repo:

  • backend on 127.0.0.1:3210
  • site URL on 127.0.0.1:3211
  • frontend app on localhost:3005 in prepared scenarios

Concave alpha.14 fixed the backend default to 3210, but it still does not expose the site side on 3211.

kitcn workaround:

  • start a local site proxy on 3211
  • inject CONVEX_SITE_URL=http://127.0.0.1:3211
  • inject SITE_URL from .env.local

Code locations:

  • packages/kitcn/src/cli/commands/dev.ts
    • resolveConcaveLocalDevContract(...)
    • resolveConcaveLocalSiteUrl(...)
    • startLocalSiteProxy(...)
  • packages/kitcn/src/cli/commands/dev.test.ts
  • tooling/scenarios.ts
    • DEFAULT_SCENARIO_READY_URL
    • readScenarioSiteUrl(...)
  • tooling/scaffold-utils.ts
    • local env patching for 3005

Why it exists:

  • prepared apps and auth wiring already assume the Convex-style split
  • upstream still only exposes the backend side

Delete when:

  • Concave local dev natively supports the same backend/site split contract, or
  • kitcn no longer needs to emulate Convex local URLs for prepared apps
2. Startup retry loop for dev migration/backfill hooks

Convex dev startup usually accepts kitcn migration/backfill hooks cleanly on first call.

Concave alpha.14 fixed concave run for internal runtime functions, but startup can still race readiness.

kitcn workaround:

  • Concave-only retry loop
  • backoff: 1s, 2s, 4s
  • show retry count only while retrying

Code locations:

  • packages/kitcn/src/cli/commands/dev.ts
    • runDevStartupRetryLoop(...)
    • startup migration up and aggregateBackfill kickoff callers
  • packages/kitcn/src/cli/commands/dev.test.ts
  • related notes:
    • docs/solutions/integration-issues/concave-internal-runtime-calls-20260322.md
    • docs/solutions/integration-issues/concave-local-dev-auth-cycle-20260319.md

Why it exists:

  • immediate concave run calls can still hit ECONNREFUSED before local dev is ready

Delete when:

  • Concave local dev exposes a reliable readiness signal integrated into the CLI, or
  • startup hooks become reliably callable with no transient failures
3. Vite scenario backend/frontend split

Prepared Vite scenarios in this repo are supposed to prove:

  • frontend on 3005
  • backend on the kitcn local contract

Concave alpha.14 still auto-detects and starts Vite itself, which steals frontend ownership and lands on 5173.

kitcn workaround:

  • run backend dev with --frontend no
  • run the prepared Vite frontend separately

Code locations:

  • tooling/scenarios.ts
    • buildBackendOnlyDevCommand(...)
    • resolveScenarioDevCommands(...)
  • tooling/scenarios.test.ts
  • related note:
    • docs/solutions/integration-issues/scenario-vite-dev-split-and-react18-runtime-20260322.md

Why it exists:

  • scenario proof should validate the prepared app contract, not Concave's auto-detected default frontend behavior

Delete when:

  • Concave backend-only dev becomes unnecessary for prepared Vite scenarios, or
  • Concave frontend auto-detection respects the prepared dev command/port with no special handling
4. Generated auth runtime fallback for empty Concave internals

Convex-generated _generated/api.js exposes internal refs for generated auth runtime calls.

Concave alpha.14 still leaves prepared auth apps with:

js
export const internal = {};

That breaks generated auth runtime access like authFunctions.findOne even though the actual function paths are known.

kitcn workaround:

  • synthesize generated auth internal refs from their function path names
  • use createGeneratedFunctionReference(...) instead of trusting Concave's empty internal object

Code locations:

  • packages/kitcn/src/auth/generated-contract.ts
  • packages/kitcn/src/auth/generated-contract.test.ts
  • related note:
    • docs/solutions/integration-issues/concave-alpha14-generated-auth-and-run-output-20260323.md

Why it exists:

  • Concave local codegen/runtime shape is still missing generated auth internal refs that Convex-generated output exposes

Delete when:

  • Concave-generated _generated/api.js includes generated auth internal refs, and
  • prepared auth scenarios no longer need synthesized fallback references
Show full SKILL.md (433 more words)Show less
5. Concave run output JSON fallback parsing

Convex-style machine output is clean JSON when kitcn shells out to a backend run command and expects structured results.

Concave alpha.14 now prints a human preamble before the JSON body, for example:

  • Running ...
  • Args: ...
  • URL: ...
  • Success
  • pretty JSON

kitcn workaround:

  • parse a trailing JSON block after the preamble
  • keep the existing one-line JSON path for Convex and any future clean output

Code locations:

  • packages/kitcn/src/cli/backend-core.ts
    • parseBackendRunJson(...)
  • packages/kitcn/src/cli/commands/migrate.test.ts
  • related note:
    • docs/solutions/integration-issues/concave-alpha14-generated-auth-and-run-output-20260323.md

Why it exists:

  • alpha.14 made concave run human-friendlier but less machine-clean for the startup migration and aggregate flows kitcn shells out to

Delete when:

  • concave run exposes clean JSON output by default or under a stable flag we can rely on, and
  • parseBackendRunJson(...) no longer needs the trailing-block fallback
6. Manual static JWKS export command

Convex has an env CLI seam, so kitcn env push can fetch and sync static JWKS.

Concave still has no equivalent upstream env command surface. That means auth runtime parity exists, but env-management parity does not.

kitcn workaround:

  • expose kitcn auth jwks
  • expose kitcn auth jwks --rotate
  • print a manual JWKS=... payload instead of inventing fake env passthrough

Code locations:

  • packages/kitcn/src/cli/commands/auth.ts
  • packages/kitcn/src/cli/commands/auth.test.ts
  • packages/kitcn/src/cli/cli.ts
  • packages/kitcn/src/cli/cli.commands.ts

Why it exists:

  • users still need a manual static JWKS path on backend concave
  • kitcn env is correctly Convex-only today

Delete when:

  • Concave exposes a stable env management seam kitcn can wrap directly, or
  • kitcn ships a real cross-backend env abstraction and no longer needs a JWKS-specific manual helper

Removed Bandaids

Internal runtime execution via /api/execute

Removed in alpha.14 verification.

Old workaround:

  • bypass concave run for generated/server:*
  • POST /api/execute
  • call _system:systemExecuteFunction

Why it died:

  • raw concave run now succeeds for generated/server:migrationRun and generated/aggregate:aggregateBackfill
Forced 3210 dev port on Concave

Removed in alpha.14 verification.

Old workaround:

  • always append --port 3210 to concave dev when kitcn owned local dev boot

Why it died:

  • raw concave dev now defaults to 3210
Source-backed Concave API type override

Removed in alpha.14 verification.

Old workaround:

  • wait briefly after Concave codegen
  • overwrite _generated/api.d.ts with a source-backed version

Why it died:

  • raw concave codegen --static now emits the same api.d.ts shape our override used to force

Watchlist: Known Gaps Without a kitcn Bandaid

staticDataModel mismatch

Current repo truth:

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

Current location:

  • .claude/skills/concave/concave.mdc

Meaning:

  • treat this as an upstream parity gap
  • do not silently document it as if Concave already matches Convex here

Read First

Start with the active bandaid seams:

  • packages/kitcn/src/cli/commands/dev.ts
  • tooling/scenarios.ts

Then read the solution notes:

  • docs/solutions/integration-issues/concave-local-dev-auth-cycle-20260319.md
  • docs/solutions/integration-issues/concave-internal-runtime-calls-20260322.md
  • docs/solutions/integration-issues/concave-alpha14-generated-auth-and-run-output-20260323.md
  • docs/solutions/integration-issues/scenario-vite-dev-split-and-react18-runtime-20260322.md

Verification

When touching any active Concave parity bandaid, run the smallest real gate that proves the seam:

bash
bun test packages/kitcn/src/cli/commands/dev.test.ts \
  packages/kitcn/src/cli/commands/migrate.test.ts \
  packages/kitcn/src/auth/generated-contract.test.ts \
  tooling/scenarios.test.ts

bun run test:concave
bun run scenario:test -- next-auth
bun run scenario:test -- vite

© 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-parity of udecode/kitcn.

Open the folder on GitHubat commit c6010f5

Compare with similar skills

Concave Parity 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 Parity compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Concave Parity this skilludecode/kitcn450—~2.4kAutomated safety check: NotesApache-2.0
Shadcn Parityudecode/plate17k—~1.3kAutomated safety check: PassCustom licence
Run Paritymillionco/react-doctor15k—~4.1kAutomated safety check: PassCustom licence
Dynamo Kv Replay Parityai-dynamo/dynamo8.2k—~4.9kAutomated safety check: PassApache-2.0
Docs Parity Reviewerpydantic/pydantic-ai20k—~1.4kAutomated safety check: PassMIT
Scrub Docs Code Paritymarin-community/marin3.9k—~434Automated safety check: PassApache-2.0

Similar skills

  • Shadcn Parity

    udecode/plate

    Clone shadcn implementation patterns with source-by-source parity.

    17k GitHub stars~1.3k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Run Parity

    millionco/react-doctor

    Compare React Doctor diagnostics for a GitHub pull request (PR) with Vercel Sandbox.

    15k GitHub stars~4.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Dynamo Kv Replay Parity

    ai-dynamo/dynamo

    Runs deterministic byte-parity and paired performance campaigns for Dynamo offline KV-aware replay across native-G1 vLLM and SGLang configurations, including forced scheduler-pressure and…

    8.2k GitHub stars~4.9k tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • Docs Parity Reviewer

    pydantic/pydantic-ai

    Official

    Use as the final documentation gate before a pydantic-ai-harness capability PR merges.

    20k GitHub stars~1.4k tokensUpdated today
    DevelopmentAuto-check passed
  • Scrub Docs Code Parity

    marin-community/marin

    Run the docs/code-parity scrub only from its scheduler or an explicit request for that scrub.

    3.9k GitHub stars~434 tokensUpdated today
    Auto-check passed
  • Parity Check

    ipea/geobr

    Check R↔Python API parity across geobr's two packages — which read functions exist on one side but not the other, and where matched functions disagree on argument names, defaults, or the metadata…

    959 GitHub stars~1.4k tokensUpdated 10 days ago
    Testing & QAAuto-check: notes

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 Parity

How do I install Concave Parity in Claude Code?

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

How do I install Concave Parity in Codex?

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

Can I use Concave Parity 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-parity -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-parity, .gemini/skills/concave-parity, .github/skills/concave-parity and .opencode/skills/concave-parity in your project.

What does Concave Parity need to run?

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

Does Concave Parity access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Concave Parity safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Concave Parity use?

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

About 2.4k tokens (SKILL.md is roughly 9.5k 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 Parity?

Skills that share tags, products or a category with Concave Parity: Shadcn Parity (udecode/plate, 17k stars), Run Parity (millionco/react-doctor, 15k stars), Dynamo Kv Replay Parity (ai-dynamo/dynamo, 8.2k stars) and Docs Parity Reviewer (pydantic/pydantic-ai, 20k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Concave Parity?

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.