with one click
concave
Skill: concave
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Skill: concave
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Open a concise GitHub follow-up for reusable browser-use limitations. Use when browser automation is blocked by a likely tool-side issue that is worth fixing separately, especially for clicks, dropdowns, file inputs, focus traps, or other repeatable agent/browser failures.
Work heavyweight framework or library tasks with planning-first research, selective deep analysis, and rigorous handoff
Work a task end-to-end with lean context gathering, implementation, and verification
Sync `zbeyens/convex-better-auth` with upstream, then sync kitcn against upstream `convex-better-auth` changes. Use when asked to run `sync-convex-auth`, compare the fork with upstream, fast-forward or PR the fork update when safe, audit commits the fork was behind on, classify relevance to kitcn auth integration, and delegate one implementation PR through `task`.
Audit newer Convex npm releases against kitcn. Use when checking whether a newer `convex` version unlocks kitcn improvements, compatibility work, CLI/agent workflows, or cleanup of local Convex hacks. Reads `https://ship.convex.dev/`, the upstream Convex changelog, and GitHub diffs before delegating an implementation PR through `task`.
Read every doc in www and packages/kitcn/skills/kitcn, sync to active changeset(s), and track with checkmarks.
| name | concave |
| description | Skill: concave |
| metadata | {"skiller":{"source":".agents/rules/concave.mdc"}} |
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:
backend: "concave" and --backend concave/example stays on Convexconvex-test suites stay on Convex toolingDo not restate generic Convex docs here. The convex skill already owns that.
These are the Concave-only facts worth keeping in your head.
--experimental-sqlite.ctx.storage.concave build can compile a standalone Bun-based binary; useful, but still single-instance with SQLite.concave dev auto-picks runtime; --bun, --node, and --cf force it.3210../.concave/local.0.0.0.0 by default. That is LAN-visible. 127.0.0.1 is the safer local-only bind./_dashboard.concave.config.ts is real Concave surface area.convex.json works now. That matters here because kitcn already uses it.createConcave(...).defineConcaveRuntime(...) wiring.convex-test is still valid for isolated function/unit tests.createConcave(...) plus ConvexHttpClient.We use Concave in two concrete ways.
kitcn now resolves backend in this order:
--backend <convex|concave>meta["kitcn"].backend in concave.jsonconvexPublic meaning:
convex => drive Convex CLIconcave => drive Concave CLIInternal meaning:
concave currently maps to the Bun adapter (concave-bun)Files:
packages/kitcn/src/cli/config.tspackages/kitcn/src/cli/core.tspackages/kitcn/src/cli/cli.tsCommand shape:
init, dev, codegen, deploy, migrate, aggregate, reset) run on the selected backendkitcn env sync stays a kitcn helperkitcn env ... passthrough is Convex-only because Concave has no matching upstream env commandUse:
bun run test:concave
Files:
test/concave/run-smoke.tstest/concave/fixture/**Runtime shape:
createConcave(...)SqliteDocStore(':memory:')ConvexHttpClientGoal:
Keep it small. This is a smoke lane, not a migration plan.
tooling/fixtures.ts runs local committed starter sync with
kitcn init -t <next|vite> --backend concave.
That means:
fixtures/*/convex/functions/_generated/* comes from the create
flow running kitcn codegen against Concave-backed bootstrapconcave codegen --statictooling/fixtures.ts itself must not shell out to raw kitcn codegen_generated/* drift is expectedConcave-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 realCurrent repo finding:
fixtures/next/convex.json sets codegen.staticDataModel: truefixtures/next/convex/functions/_generated/dataModel.d.ts is still dynamicSo today, in this repo path, Concave is not honoring that flag.
api.d.ts override is goneCurrent repo truth:
api.d.ts shape our old source-backed override used
to force_generated/api.d.tsMeaning:
api.d.ts drifts again, treat it as a fresh upstream regressionbun, not bun test, for the smoke laneRoot bun test preloads Happy DOM here.
That poisoned ConvexHttpClient behavior for the Concave smoke lane.
Keep the smoke entry as:
bun ./test/concave/run-smoke.ts
Do not invent a second fake runtime layer on top of backend.
The right model is:
backendconcave -> current Bun adapterStart with repo wiring:
packages/kitcn/src/cli/backend-core.tspackages/kitcn/src/cli/commands/init.tspackages/kitcn/src/cli/commands/init.test.tstooling/fixtures.tstooling/fixtures.test.tstooling/scenarios.tstooling/scenarios.test.tstest/concave/run-smoke.tstest/concave/fixture/**.github/workflows/ci.ymlThen read Concave docs starting from:
https://docs.concave.dev/llms.txt--runtime concave/example to Concaveconvex-test suites just because Concave existsWhen touching Concave repo-runtime wiring, run:
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:
bun --cwd packages/kitcn build
bun lint:fix
bun typecheck
When Concave docs or repo usage changes, update this skill with this exact loop.
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/**'
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
llms.txtawk '
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
Rules:
bunx skiller@latest apply
bun run intent:validate
bun run intent:stale
If .claude/AGENTS.md changes, that is expected. It is generated from .claude/**.