Forge Codegen Crud
yaomindong1996/forge-admin
Generate or review Forge project code-generation output for CRUD modules.
A skill your agent uses when translating selected verified items from Dafny/Verus/Coq into a compilable Lean 4 benchmark.
$ npx skills add sunblaze-ucb/vero --skill vero-translate -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install sunblaze-ucb/vero vero-translate --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/sunblaze-ucb/vero.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/vero-translate .claude/skills/vero-translate && rm -rf skills-srcUse ~/.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/
Install the "vero-translate" agent skill from https://github.com/sunblaze-ucb/vero/tree/main/.claude/skills/vero-translate into .claude/skills/vero-translate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vero-translate", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/sunblaze-ucb/vero/tree/main/.claude/skills/vero-translateType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add sunblaze-ucb/vero --skill vero-translate -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install sunblaze-ucb/vero vero-translate --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sunblaze-ucb/vero.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/vero-translate .agents/skills/vero-translate && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "vero-translate" agent skill from https://github.com/sunblaze-ucb/vero/tree/main/.claude/skills/vero-translate into .agents/skills/vero-translate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vero-translate", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add sunblaze-ucb/vero --skill vero-translate -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install sunblaze-ucb/vero vero-translate --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sunblaze-ucb/vero.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/vero-translate .cursor/skills/vero-translate && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "vero-translate" agent skill from https://github.com/sunblaze-ucb/vero/tree/main/.claude/skills/vero-translate into .cursor/skills/vero-translate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vero-translate", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/sunblaze-ucb/vero.git --path .claude/skills/vero-translate--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add sunblaze-ucb/vero --skill vero-translate -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install sunblaze-ucb/vero vero-translate --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sunblaze-ucb/vero.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/vero-translate .gemini/skills/vero-translate && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "vero-translate" agent skill from https://github.com/sunblaze-ucb/vero/tree/main/.claude/skills/vero-translate into .gemini/skills/vero-translate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vero-translate", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install sunblaze-ucb/vero vero-translateInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add sunblaze-ucb/vero --skill vero-translate -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/sunblaze-ucb/vero.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/vero-translate .github/skills/vero-translate && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "vero-translate" agent skill from https://github.com/sunblaze-ucb/vero/tree/main/.claude/skills/vero-translate into .github/skills/vero-translate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vero-translate", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add sunblaze-ucb/vero --skill vero-translate -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install sunblaze-ucb/vero vero-translate --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sunblaze-ucb/vero.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/vero-translate .opencode/skills/vero-translate && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "vero-translate" agent skill from https://github.com/sunblaze-ucb/vero/tree/main/.claude/skills/vero-translate into .opencode/skills/vero-translate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vero-translate", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
vero-translateA skill your agent uses when translating selected verified items from Dafny/Verus/Coq into a compilable Lean 4 benchmark.
Vero Translate is an agent skill from sunblaze-ucb/vero. Use when translating selected verified items from Dafny/Verus/Coq into a compilable Lean 4 benchmark. Scaffolds the project to the ratified bundle paradigm (Bundle.lean + structure RepoImpl + Impl/Spec/Harness/Test layout) and wraps each reference implementation body in the correct !benchmark marker. Pair with vero-source-{dafny,verus,coq}.
Its SKILL.md is about 4.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Writing & Content, covering Translation and Project scaffolding. The licence is Apache-2.0.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 0a7325d. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditBashGrepGlobAgentFrom allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are lean, toml and json).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Vero Translate loads about 4.9k tokens when it runs. Until then it costs about 90 tokens; SKILL.md has 1,652 words of instructions outside code blocks.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Edit, Bash, Grep, Glob, AgentAutomated 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.
The full file from sunblaze-ucb/vero at commit 0a7325d, republished under its Apache-2.0 licence (© sunblaze-ucb). 1,652 words, ~4,879 tokens.
.claude/skills/vero-translate/SKILL.md (or your agent's skills folder).Translate the selected items from the upstream source into a compilable
Lean 4 project that matches the ratified paradigm documented in
reference/BankLedger/. This is curation stage output: produce
Impl/, Spec/, Harness.lean, Bundle.lean, Test.lean, root hub,
lakefile.toml, lean-toolchain, and manifest.json. Do NOT emit
Proof/ — that layer is materialized downstream at pre-agent-gen.
Canonical example: reference/BankLedger/. When uncertain about
marker placement, Bundle shape, manifest field names, or docstring
style, read those files directly — they are the living contract.
plan stage has produced .vero/plan.json and humans have
approved it.vero-source-{lang} skill for per-language
translation patterns..vero/plan.json exists with the approved translation plan
(schema: docs/pipeline-schema.md).reference/BankLedger/)<Project>/ # Lean project root
├── lakefile.toml # see "Lakefile" below
├── lean-toolchain # leanprover/lean4:v4.29.1
├── manifest.json # see docs/pipeline-schema.md
├── <Project>.lean # root hub — imports only
└── <Project>/ # root package dir
├── Impl/<Module>.lean # types, sig abbrevs, reference impls (with markers)
├── Spec/<Module>.lean # frozen specs plus RepoImpl-dependent spec helpers
├── Bundle.lean # structure <Project>Bundle — one field per API
├── Harness.lean # structure RepoImpl + canonical + joint_unsat macro
└── Test.lean # #guard conformance tests against Bank.* directlyMulti-package benchmarks add sibling <OtherPackage>/ dirs, each with
their own Impl/, Spec/, Bundle.lean. Harness.lean stays as a
benchmark-level singleton.
!benchmark marker systemEvery LLM-editable slot is wrapped in a -- !benchmark @start <key> …
/ -- !benchmark @end <key> … pair. The @end must repeat the same
key and def=<name>.
| Key | Wraps | def= | Extra fields on @start |
|---|---|---|---|
imports | file-level import extension slot | — | — |
global_aux | file-level helper-def slot | — | — |
code | function body (reference impl in curated source; sorry only after pre-agent materialization) | yes | — |
code_aux | per-function helper-def slot | yes | — |
proof | tactic body after by | yes | kind=prove|disprove|unsat|sat|joint_unsat, target=<spec> (omitted only when kind=joint_unsat) |
proof_aux | per-theorem helper-def slot | yes | — |
claim | LLM's live macro invocation in Joint.lean (discarded at eval) | yes | kind=joint_unsat |
Retired (do not emit): spec, spec_aux, claim_aux, def_aux,
def_body, precond*, postcond*.
!solution prefix (new third prefix — only in Proof/Joint.lean)Multi-line block that lets the LLM submit structured data (the
joint-unsat spec list). Translate does not emit Proof/Joint.lean;
the pre-agent-gen stage does. Knowledge for reference only.
!curation prefixSingle-line curator-only annotations. Stripped before the benchmark is
presented to the LLM. Only in Impl/* after curation. Forms:
-- !curation @review v<N> [<x| >] <name> — <loc>, <kind>, <notes>
-- !curation @human: <note>
-- !curation @question <target>: <q>
-- !curation @answer: <a>
-- !curation @v<N> [...] <name> — <notes> [RESOLVED|NOTED|ANSWERED|KEPT]imports — immediately after the actual import statements,
BEFORE the module docstring. At file top if no imports.global_aux — after the module docstring, before the body.code_aux — file-level, immediately before its code slot.proof_aux — file-level, BEFORE the theorem or macro
invocation. Never between by and the proof body.claim — in Joint.lean only; wraps the LLM's live macro
invocation (its content is discarded at eval).def=<name> conventionscode / code_aux — the Lean function dot-tail (createAccount).proof / proof_aux — full theorem name (prove_<spec>,
disprove_<spec>, unsat_<spec>, sat_<spec>).claim — joint_unsatisfiability (there is exactly one joint slot
per benchmark).Every @start has a matching @end with the same key and def=.
No nesting. Commented markers (inside /- … -/ or -- -- !benchmark)
are ignored by the extractor. def=<name> is unique within
(file, key).
lakefile.tomlname = "{Project}"
version = "0.1.0"
defaultTargets = ["{Project}"]
[[lean_lib]]
name = "{Project}"
srcDir = "."
leanOptions = [{ name = "autoImplicit", value = false }]The old [package] form is gone.
lean-toolchainleanprover/lean4:v4.29.1Override only if the upstream source forces a different version.
<Project>.leanimport {Project}.Impl.<Module1>
import {Project}.Impl.<Module2>
...
import {Project}.Bundle
import {Project}.Harness
import {Project}.Spec.<Module1>
import {Project}.Spec.<Module2>
...
import {Project}.TestDo not import any Proof/ directory — that's a downstream artifact.
Impl/<Module>.lean templateimport {Project}.Impl.<DepModule>
-- !benchmark @start imports
-- !benchmark @end imports
/-!
# {Project}.Impl.<Module>
<One-paragraph description.>
DO NOT MODIFY types or signatures — these are the fixed vocabulary.
Implement only the function bodies.
-/
-- !benchmark @start global_aux
-- !benchmark @end global_aux
-- ── Types (no markers — fixed vocabulary) ─────────────
...
namespace Bank
-- ── API signatures (no markers — fixed vocabulary) ────
abbrev CreateAccountSig := AccountId → Ledger → Ledger
...
end Bank
-- ── Reference implementations (LLM task slots) ──────────
-- !benchmark @start code_aux def=createAccount
-- !benchmark @end code_aux def=createAccount
-- !curation @review v1 [ ] createAccount — Impl/<Module>, code, reference impl
def Bank.createAccount : Bank.CreateAccountSig :=
-- !benchmark @start code def=createAccount
fun id ledger =>
if ledger.any (fun a => a.id == id) then ledger
else ⟨id, 0⟩ :: ledger
-- !benchmark @end code def=createAccountThe body inside the code marker is the curator's reference
implementation — real working code, not sorry. Pre-agent-gen
replaces it with sorry when emitting the LLM-facing benchmark. See
Non-Negotiables below.
Types live in the foundation Impl file (the one every other Impl
imports — typically Impl/Account.lean for the root-most types).
There is no central Sig.lean or Types.lean.
Spec/<Module>.lean template (frozen, no markers)import {Project}.Harness
/-!
# {Project}.Spec.<Module>
Specifications for <subsystem>. Each `spec_*` is a property over an
arbitrary `impl : RepoImpl`. Spec helpers that mention `RepoImpl` also
live here, before the specs.
DO NOT MODIFY — this file is frozen curator-given content.
-/
/-- <natural-language description> -/
def spec_<name> (impl : RepoImpl) : Prop :=
∀ …, impl.<pkg>.<fn> … = …Specs access API functions via impl.<pkg>.<fn> where <pkg> is the
field name in RepoImpl (e.g. impl.bankLedger.createAccount). No
markers at all — the Spec layer is entirely frozen.
Bundle.lean templateimport {Project}.Impl.<Module1>
import {Project}.Impl.<Module2>
...
/-!
# {Project}.Bundle
Per-package implementation bundle for the `{Project}` root package.
Collects all API signatures into one structure.
DO NOT MODIFY — benchmark infrastructure.
-/
structure {Project}Bundle where
createAccount : Bank.CreateAccountSig
closeAccount : Bank.CloseAccountSig
...Bundle struct name is <Project>Bundle (PascalCase). One field per
API sig, field name matches the API's Lean name (camelCase).
Harness.lean templateimport {Project}.Bundle
/-!
# {Project}.Harness
Benchmark harness: `RepoImpl` structure (one field per package),
`canonical` instance wiring, and the `joint_unsat` macro.
DO NOT MODIFY — benchmark infrastructure.
-/
structure RepoImpl where
{pkg} : {Project}Bundle
def canonical : RepoImpl where
{pkg} := {
createAccount := Bank.createAccount
closeAccount := Bank.closeAccount
...
}
/-- `joint_unsat spec_A spec_B [spec_C …] by <proof>` generates the
∧-conjunction unsat theorem. Variadic; no sort / no dedup — anti-cheat
is enforced at `!solution` extraction during evaluation. -/
syntax "joint_unsat" ident ident ident* "by" tacticSeq : command
open Lean in
macro_rules
| `(joint_unsat $s1 $s2 $[$rest]* by $proof) => do
let specs := #[s1, s2] ++ rest
let name := specs.foldl (init := `joint_unsat) fun acc s => Name.append acc s.getId
let mut body ← `($(specs[0]!) impl)
for s in specs[1:] do
body ← `($body ∧ $s impl)
`(theorem $(mkIdent name) : ¬ ∃ impl : RepoImpl, $body := by $proof)For single-package benchmarks (typical), RepoImpl has exactly one
field named lowerCamelCase(<Project>). For multi-package benchmarks
it has one field per package.
No other macros. The retired solo_unsat / sat_witness macros
are gone; per-module proof obligations materialize as plain theorem
statements downstream.
Test.lean templateimport {Project}.Impl.<Module1>
...
/-!
# {Project}.Test
`#guard` conformance tests. Guards run against `Bank.*` directly —
the curator's reference implementations live INSIDE the `code` markers
in `Impl/*.lean`. Before the LLM sees the benchmark, pre-agent-gen
replaces marker content with `sorry`; these guards catch regressions
in the reference impls themselves, not in LLM submissions.
DO NOT MODIFY — infrastructure.
-/
open Bank
#guard accountExists 1 [] == false
#guard getBalance 1 (createAccount 1 []) == some 0
#guard (transfer 1 2 30 [⟨1, 100⟩, ⟨2, 50⟩]).map totalAssets == some 150
...No markers in Test.lean. No Bank.Ref namespace — that's been
retired (2026-04-20). The reference implementation is whatever the
curator wrote inside each code marker.
manifest.json (derived from the tree)At the end of translate, emit / update the manifest per the shape in
reference/BankLedger/manifest.json (full schema:
docs/pipeline-schema.md). Top-level:
{
"benchmark_id": "...",
"description": null,
"lean_version": "4.29.1",
"modes_supported": ["proof", "codeproof"],
"source": { "kind": "translated", "language": "...", "repo_url": "...", "commit_hash": "...", "path": "..." },
"curation": { "date": "..." },
"root_package": "{Project}",
"files": {
"root_hub": "{Project}.lean",
"harness": "{Project}/Harness.lean",
"test": "{Project}/Test.lean",
"lakefile": "lakefile.toml"
},
"packages": [
{
"name": "{Project}",
"bundle": "{Project}/Bundle.lean",
"bundle_type": "{Project}Bundle",
"repo_impl_field": "{lowerCamelCase}",
"modules": [
{
"name": "<Module>",
"impl": "{Project}/Impl/<Module>.lean",
"spec": "{Project}/Spec/<Module>.lean",
"apis": [
{ "name": "createAccount", "sig": "CreateAccountSig", "type": "AccountId → Ledger → Ledger" }
],
"specs": ["spec_create_zero_balance", "..."]
}
]
}
]
}apis[].type is the body of the abbrev <Sig> := <type> in the Impl
file (exact text, including spaces around →). specs[] are the spec
names found in Spec/<Module>.lean.
plan.json is the contract. Translate walks
plan.packages[].modules[] and emits exactly the files the plan
names, one at a time. Do NOT improvise a module that isn't in the
plan, and do NOT skip one that is. Do NOT write multiple Lean files
before running lake build.
Non-negotiable write discipline.
Write per file. Never batch-emit several .lean files in a
single turn.Write, run cd <project> && lake build and wait for
it to succeed before moving to the next file.Impl/ module
with 8+ APIs), split its emission into: (a) Write skeleton with
types + sig abbrevs + marker-wrapped API definitions,
lake build, (b) Edit to fill each API's reference impl one at a
time. This keeps the file buildable after every step.Impl/Merkle.lean —
3 types, 5 APIs, 12 code slots." Then perform the Write. Then
announce the build outcome.lakefile.toml, lean-toolchain, empty root hub, empty
manifest.json. Build the empty scaffold. That's four Writes and
one lake build.
For each module M in plan.json, in dependency order (foundation
module first):
M.types — fully-defined types, emit without markersM.spec_helpers — curator-given vocabulary for specs; emit
each as a fully-defined def / inductive / predicate
using lean_form verbatim. No markers, not in Bundle.
Helpers that mention RepoImpl or impl.<pkg> must live in
Spec/<Module>.lean before the specs; pure helpers live in
Impl/<Module>.lean.M.api_helpers (optional, usually empty) — fully-defined
helpers the curator wants to hand to the LLM. No markers, not
in Bundle.M.apis — sig abbrevs + reference implementation defs, each wrapped in
!benchmark code / code_aux markers, field contributed to
Bundle.<Project>/Impl/<M.name>.lean in this order, top to
bottom:imports
`-- !benchmark @start imports` … `-- !benchmark @end imports`
docstring
types (no markers)
pure spec helpers (no markers)
api helpers (no markers, if any)
namespace Bank
API sig abbrevs (no markers)
end Bank
`-- !benchmark @start global_aux` … `-- !benchmark @end global_aux`
one `code_aux` + `code` marker pair per API (with reference impl
body inside each `code` marker)lake build. Fix errors before proceeding.<M.name> built. T types, H spec helpers,
N API slots emitted. Moving on to <next>."No module is emitted before its dependencies build clean.
Write <Project>/Bundle.lean with one field per entry in
plan.packages[].modules[].apis[] only — spec helpers and API
helpers must NOT appear as Bundle fields. Write
<Project>/Harness.lean with structure RepoImpl + canonical
wiring, again using only API names. lake build.
Verify canonical has exactly one field per API in the plan and no
extra fields — grep for each <api_lean_name> in Harness.lean
before calling Phase 3 complete. Count fields: it must equal
len(plan.packages[].modules[].apis[]) summed across modules.
For each module M in plan order, write
<Project>/Spec/<M.name>.lean when M.specs is non-empty or
M.spec_helpers contains any helper mentioning RepoImpl / impl.<pkg>.
Emit the RepoImpl-dependent helpers first, then every spec from M.specs
as a def spec_<name> (impl : RepoImpl) : Prop := …. One Write per
module, build after each one. The plan's spec.lean_form field is the
authoritative body — paste it under the def header verbatim, adjusting
only for obvious typos.
Spec count gate. After each Spec file, count its
^def spec_ lines (grep -c ...) and confirm it matches
plan.json[package].modules[M].specs.length. If the plan says 11
specs and you emitted 6, stop and emit the remaining 5 — do not
proceed to the next module.
Write <Project>/Test.lean with #guard tests from
plan.test_cases[]. One Write. Build.
Regenerate manifest.json from what was actually emitted (don't
trust the scaffold — the module list must reflect the real tree).
Update the root hub to import every emitted file except Proof/.
Final lake build must pass cleanly without sorry warnings in
curated Impl/ code markers. sorry is introduced later by
pre-agent materialization, not by translate.
Every phase leaves the tree in a lake-buildable state. To resume:
rerun translate and the skill should detect existing files (via a
quick ls <project>/Impl/) and skip already-emitted modules. Never
overwrite a file that already contains !benchmark markers without
confirming the curator wants it regenerated.
Sig.lean, no Types.lean — types and sigs live with the
Impl file they describe.Proof/ emitted — that is downstream.code markers — NOT sorry. The
curator writes the actual working implementation there; pre-agent-gen
replaces marker content with sorry before the LLM sees the
benchmark. Test.lean #guards therefore hit real code at
curation / build time, catching regressions in the reference itself.Bank.Ref namespace. Retired 2026-04-20 in favor of the
single-source-of-truth model above. #guard tests use Bank.*
directly.!benchmark keys — retired keys are errors (see
src/vero/curation/marker.py RETIRED_KEYS for the list).imports after actual imports,
proof_aux before theorem, no nesting.impl.<pkg>.<fn> — never bare impl.<fn>
(the structure is one-level-nested, not an abbrev).lake build must pass before calling translate complete.After completing translate, the pipeline runs the validate stage
(rule-based checks in src/vero/curation/validation/). If the
translate output diverges from the paradigm, validate blocks the
pipeline with actionable errors. Fix and re-run translate.
© sunblaze-ucb, 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
Just SKILL.md in .claude/skills/vero-translate of sunblaze-ucb/vero.
Open the folder on GitHubat commit 0a7325d
Vero Translate 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Vero Translate this skillsunblaze-ucb/vero | 107 | — | ~4.9k | Automated safety check: Notes | Apache-2.0 | |
| Forge Codegen Crudyaomindong1996/forge-admin | 127 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Create Module FileMichealWayne/fe-tools | 207 | — | ~381 | Automated safety check: Pass | None | |
| PonytailDavidObando/gsharp | 565 | 7 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Create Release Blogweb-infra-dev/rstest | 505 | — | ~4.7k | Automated safety check: Pass | MIT | |
| Aholo Viewer Docsmanycoretech/aholo-viewer | 1.1k | — | ~341 | Automated safety check: Pass | MIT |
yaomindong1996/forge-admin
Generate or review Forge project code-generation output for CRUD modules.
MichealWayne/fe-tools
Create a new module file for fe-tools utilities. An agent skill from MichealWayne/fe-tools.
DavidObando/gsharp
Forces the laziest solution that actually works, simplest, shortest, most minimal.
web-infra-dev/rstest
Generate a narrative version release blog post from commits within a tag range.
manycoretech/aholo-viewer
Guides writing and maintaining Aholo Viewer documentation: README, AGENTS.md, architecture notes, bilingual manual pages and AI collaboration guides.
langgenius/dify-docs
Check formatting compliance in changed documentation against writing-guides/formatting-guide.md and tools/translate/formatting-{zh,ja}.md.
sunblaze-ucb/vero
A skill your agent uses when scanning a verified source repo (Dafny, Verus, or Coq) to classify every item and produce per-file discovery markdown for human curation.
sunblaze-ucb/vero
Load BEFORE translating any Coq item to Lean 4 to avoid known Coq→Lean pitfalls.
sunblaze-ucb/vero
Load BEFORE translating any Dafny item to Lean 4 to avoid known Dafny→Lean pitfalls.
sunblaze-ucb/vero
Load BEFORE writing any Lean 4 translation to avoid common Lean pitfalls (universes, coercions, type-class resolution, notation).
sunblaze-ucb/vero
Use after vero-select to write a detailed translation plan as .vero/plan.json — the authoritative contract the TRANSLATE stage executes.
sunblaze-ucb/vero
Load BEFORE translating any Python item to Lean 4 to avoid known Python→Lean pitfalls.
Categories
A skill your agent uses when translating selected verified items from Dafny/Verus/Coq into a compilable Lean 4 benchmark. Vero Translate is an agent skill from sunblaze-ucb/vero. Use when translating selected verified items from Dafny/Verus/Coq into a compilable Lean 4 benchmark.
Vero Translate fits situations like: translating selected verified items from Dafny/Verus/Coq into a compilable Lean 4 benchmark; tasks that involve Translation; tasks that involve Project scaffolding.
Run `npx skills add sunblaze-ucb/vero --skill vero-translate -a claude-code`. Or copy the skill folder (.claude/skills/vero-translate in sunblaze-ucb/vero) into .claude/skills/vero-translate in your project. Claude Code loads it when a task matches its description.
Run `npx skills add sunblaze-ucb/vero --skill vero-translate -a codex`. Or copy the skill folder (.claude/skills/vero-translate in sunblaze-ucb/vero) into .agents/skills/vero-translate in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sunblaze-ucb/vero --skill vero-translate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/vero-translate, .gemini/skills/vero-translate, .github/skills/vero-translate and .opencode/skills/vero-translate in your project.
SKILL.md names no scripts, command-line tools or credentials: Vero Translate is instructions for the agent only. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash, Grep, Glob, Agent.
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.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Vero Translate 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.
About 4.9k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Vero Translate: Forge Codegen Crud (yaomindong1996/forge-admin, 127 stars), Create Module File (MichealWayne/fe-tools, 207 stars), Ponytail (DavidObando/gsharp, 565 stars) and Create Release Blog (web-infra-dev/rstest, 505 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
sunblaze-ucb (a GitHub organization) maintains it in sunblaze-ucb/vero, which has 107 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on August 17, 2026.
Source: sunblaze-ucb/vero on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.