Agent skill

Vero Spec Write

by sunblaze-ucb in sunblaze-ucb/vero

Use during the specwrite stage to author specifications for translated Python (or new-source) projects in two substeps — reason about what specs should exist, then formalize them in Lean.

Apache-2.0Auto-check: notesWriting & Content

Install Vero Spec Write

skills CLI
$ npx skills add sunblaze-ucb/vero --skill vero-spec-write -a claude-code

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

GitHub CLI
$ gh skill install sunblaze-ucb/vero vero-spec-write --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/sunblaze-ucb/vero.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/vero-spec-write .claude/skills/vero-spec-write && 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
vero-spec-write
GitHub stars
107
Token cost
~1.5k tokens
SKILL.md length
641 words
Files
1
Skills in repo
16
Repo updated
First seen
Licence
Apache-2.0

At a glance

Use during the specwrite stage to author specifications for translated Python (or new-source) projects in two substeps — reason about what specs should exist, then formalize them in Lean.

  • Works in 6 steps: Every spec is def spec_ (impl :… → Spec files contain only def spec_* and… → Spec bodies access APIs via impl.. — see… → …
  • Writing & Content work in your project
  • SKILL.md covers Substep 1 — REASON, Substep 2 — FORMALIZE and Common pitfalls
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Vero Spec Write is an agent skill from sunblaze-ucb/vero. Use during the specwrite stage to author specifications for translated Python (or new-source) projects in two substeps — reason about what specs should exist, then formalize them in Lean. Pair with vero-lean-pitfalls.

Its SKILL.md is about 1.5k 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. It works with Python. The licence is Apache-2.0.

When your agent uses it

  • Writing & Content work in your project

Example prompts

  • “/vero-spec-write”

Requirements

  • Python 3
  • Pre-approved tools (allowed-tools): Read, Write, Edit, Bash, Grep, Glob

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Every spec is def spec_ (impl : RepoImpl) : Prop := …. The parameter name may be _impl if unused.
  2. Spec files contain only def spec_* and def spec_helper_* declarations. No theorem, lemma, example, axiom, instance, or !benchmark markers.
  3. Spec bodies access APIs via impl.. — see /Bundle.lean for the field name (lowerCamelCase of the package name).
  4. spec_helper_* defs (executable predicates referenced inside specs) live alongside the specs in the same module's Spec file, near the top.
  5. Update manifest.json::packages[].modules[].specs[] with the bare-string names. Helpers go under the module's optional spec_helpers[] list.
  6. For translated-source repos, record source provenance for each new

What it can do on your machine

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

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Bash
    • Grep
    • Glob

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown and lean).

    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

Vero Spec Write loads about 1.5k tokens when it runs. Until then it costs about 59 tokens; SKILL.md has 641 words of instructions outside code blocks.

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

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.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Edit, Bash, Grep, Glob

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 sunblaze-ucb/vero at commit 0a7325d, republished under its Apache-2.0 licence (© sunblaze-ucb). 641 words, ~1,504 tokens.

Download SKILL.mdSave it as .claude/skills/vero-spec-write/SKILL.md (or your agent's skills folder).
name
vero-spec-write
description
Use during the spec_write stage to author specifications for translated Python (or new-source) projects in two substeps — reason about what specs should exist, then formalize them in Lean. Pair with vero-lean-pitfalls.
allowed-tools
Read, Write, Edit, Bash, Grep, Glob

VCG Spec Write

The spec_write stage is the bridge between an executable-only translation (Impl/ files only, Spec/ files empty) and a benchmark-ready project. It runs in two substeps with a human-review gate between them.

Reference the canonical shape at reference/BankLedger/. Every spec compiles, every spec is (impl : RepoImpl) : Prop, every public API is referenced by ≥1 spec.

Substep 1 — REASON

You read the translated Impl files + manifest and write curation/spec_plan.md proposing one or more specs per API.

Coverage rule: every public API must appear in ≥1 proposed spec. The mapping is captured in a Coverage table at the bottom of spec_plan.md.

Non-vacuity rule: a spec should usually constrain an implementation through impl.<repo_impl_field>.<api>. Do not propose specs whose substantive body is just True, non-empty output, deterministic repetition of the same call, or a theorem-only helper fact unless the plan explicitly marks it as a helper/non-obligation. Success-only postconditions are not enough for partial APIs; include failure behavior when the source has it.

Be creative. Look beyond per-API correctness:

  • Cross-API invariants — f and g commute; f is the inverse of g on its image; iterating f preserves a measure; merge is associative + commutative.
  • Frame conditions — f x ledger doesn't change accounts other than x.
  • Edge cases — empty input, singleton, max-size, concurrent updates if the model exposes them.
  • Algebraic laws — monoid identity, idempotence, distributivity over the underlying structure.
  • Round-trips — decode ∘ encode = id (where it should hold); failure modes (decode of malformed input rejects).

Format (one section per spec):

markdown
## spec_<descriptive_name>

- **Module:** `<ModuleName>`
- **Covers APIs:** `f`, `g`
- **Intent (NL):** one paragraph plain English.
- **Lean sketch:**
  ```lean
  def spec_<name> (impl : RepoImpl) : Prop :=
    ∀ … , …  -- pseudocode is fine
  • Notes for human: assumptions, edge cases, alternatives.

If a spec needs a new helper predicate (used only inside specs), propose it under `## spec_helpers (proposed)` near the top of the plan.

End the file with a `## Coverage` table:

```markdown
| Module | API | Specs |
|---|---|---|
| Account | createAccount | spec_create_zero_balance, spec_create_exists |
| Account | closeAccount | spec_close_removes |

After writing the file, the stage pauses. The human edits the proposed specs in place and adds # APPROVED as the first non-blank line of spec_plan.md to release the gate.

Substep 2 — FORMALIZE

After the human approves, you read the (potentially edited) plan back and write Lean defs into <Project>/<Project>/Spec/<Module>.lean.

Hard rules (validator-enforced):

  1. Every spec is def spec_<name> (impl : RepoImpl) : Prop := …. The parameter name may be _impl if unused.
  2. Spec files contain only def spec_* and def spec_helper_* declarations. No theorem, lemma, example, axiom, instance, or !benchmark markers.
  3. Spec bodies access APIs via impl.<repo_impl_field>.<fn> — see <Project>/Bundle.lean for the field name (lowerCamelCase of the package name).
  4. spec_helper_* defs (executable predicates referenced inside specs) live alongside the specs in the same module's Spec file, near the top.
  5. Update manifest.json::packages[].modules[].specs[] with the bare-string names. Helpers go under the module's optional spec_helpers[] list.
  6. For translated-source repos, record source provenance for each new spec in the curation report or .vero/source_map.json; include the source function/theorem/pre/postcondition that motivated it.
Show full SKILL.md (252 more words)Show less

Order of operations:

  1. Read every section of the approved spec_plan.md.
  2. Group specs by module.
  3. For each module, write a single Spec/<Module>.lean file:
    lean
    import <Project>.Harness
    
    /-! # <Project>.Spec.<Module>
    
    <one-paragraph module summary>
    
    DO NOT MODIFY — frozen curator-given content.
    -/
    
    /-- helper predicate (if any) -/
    def spec_helper_foo (…) : Bool := …
    
    /-- <NL intent for spec_x> -/
    def spec_x (impl : RepoImpl) : Prop :=
      …
  4. Update manifest.json specs[] (and spec_helpers[] if used) for that module.
  5. Run lake build from the project root. Iterate until clean.
  6. Verify the spec_shape rule check passes: every listed spec is typed (impl : RepoImpl) : Prop and no theorem/lemma/example slipped in.

Common pitfalls

  • Forgetting the bundle field name. It's lowerCamelCase of the package name, defined in Harness.lean's RepoImpl structure. Always read Bundle.lean + Harness.lean first.
  • Writing Prop body that depends on axiom. Don't. The grader rejects user-introduced axioms.
  • Using theorem in a spec file. Theorems live in Proof/ (materialized later by the gen pipeline) — never in Spec/.
  • Ambiguous helper kind. A boolean helper (def spec_helper_x : … → Bool) is fine. A Prop-typed helper that can't be specialized to a RepoImpl shouldn't claim to be a spec_* — name it spec_helper_* so the validator skips the (impl : RepoImpl) : Prop shape rule.
  • Skipping the coverage check. If an API isn't in any spec, the source_coverage validator warns and the curator has to circle back.
  • Weak parser/serializer specs. For JSON-like or codec-like repos, exact byte-level behavior, malformed-input rejection, buffer prefix/suffix preservation, and serialize/deserialize round trips are usually the core semantics. Specs like "output is non-empty" or "output begins with a quote" are not sufficient.

© 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

Files

Just SKILL.md in .claude/skills/vero-spec-write of sunblaze-ucb/vero.

Open the folder on GitHubat commit 0a7325d

Compare with similar skills

Vero Spec Write 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.

Vero Spec Write compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Vero Spec Write this skillsunblaze-ucb/vero107—~1.5kAutomated safety check: NotesApache-2.0
Release Postquarto-dev/quarto-r1601 repos~2.5kAutomated safety check: PassMIT
China Travel Kittczyliu/china-travel-kit194—~1.3kAutomated safety check: PassMIT
Ghostwritersuperzhang21/ghostwriter302—~759Automated safety check: PassCC-BY-NC-ND-4.0
Sloptrimseyedehsanhadi/sloptrim213—~5.2kAutomated safety check: NotesApache-2.0
Technology Searchfreestylefly/wesight943—~3.3kAutomated safety check: PassMIT

Similar skills

  • Release Post

    quarto-dev/quarto-r

    Create professional package release blog posts following Tidyverse or Shiny blog conventions.

    160 GitHub starsUsed in 1 repo~2.5k tokens
    Writing & ContentAuto-check passed
  • China Travel Kit

    tczyliu/china-travel-kit

    Research and plan first-time independent trips in China with bilingual, source-aware city data and official live-check entry points.

    194 GitHub stars~1.3k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed
  • Ghostwriter

    superzhang21/ghostwriter

    A skill your agent uses when switching AI persona/language style.

    302 GitHub stars~759 tokensUpdated 2 mo ago
    Writing & ContentAuto-check passed
  • Sloptrim

    seyedehsanhadi/sloptrim

    A skill your agent uses when the user wants to humanize text, trim slop, de-AI or de-slop writing, remove AI tells, fix robotic or ChatGPT-sounding prose, or make writing sound human and natural.

    213 GitHub stars~5.2k tokensUpdated 3 days ago
    Writing & ContentAuto-check: notes
  • Technology Search

    freestylefly/wesight

    Search tech blogs, developer forums, and IT media (TechCrunch, Hacker News, 36氪, etc.) for software and hardware industry updates with heat ranking and EN↔CN translation.

    943 GitHub stars~3.3k tokensUpdated 7 days ago
    Writing & ContentAuto-check passed
  • Translate Po

    python/python-docs-zh-tw

    Official

    Translates PO file entries from English to Traditional Chinese (zhTW) following project conventions.

    284 GitHub stars~793 tokensUpdated 3 days ago
    Writing & ContentAuto-check passed

More from sunblaze-ucb/vero

All 16 skills in this repo
  • Vero Discover

    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.

    107 GitHub stars~3.9k tokensUpdated 1 mo ago
    Auto-check: notes
  • Vero Translate

    sunblaze-ucb/vero

    A skill your agent uses when translating selected verified items from Dafny/Verus/Coq into a compilable Lean 4 benchmark.

    107 GitHub stars~4.9k tokensUpdated 1 mo ago
    Auto-check: notes
  • Vero Coq Pitfalls

    sunblaze-ucb/vero

    Load BEFORE translating any Coq item to Lean 4 to avoid known Coq→Lean pitfalls.

    107 GitHub stars~1.5k tokensUpdated 1 mo ago
    Auto-check: notes
  • Vero Dafny Pitfalls

    sunblaze-ucb/vero

    Load BEFORE translating any Dafny item to Lean 4 to avoid known Dafny→Lean pitfalls.

    107 GitHub stars~1.2k tokensUpdated 1 mo ago
    Auto-check: notes
  • Vero Lean Pitfalls

    sunblaze-ucb/vero

    Load BEFORE writing any Lean 4 translation to avoid common Lean pitfalls (universes, coercions, type-class resolution, notation).

    107 GitHub stars~1.4k tokensUpdated 1 mo ago
    Auto-check: notes
  • Vero Plan

    sunblaze-ucb/vero

    Use after vero-select to write a detailed translation plan as .vero/plan.json — the authoritative contract the TRANSLATE stage executes.

    107 GitHub stars~3.6k tokensUpdated 1 mo ago
    Auto-check: notes

Works with

Questions about Vero Spec Write

What does Vero Spec Write do?

Use during the specwrite stage to author specifications for translated Python (or new-source) projects in two substeps — reason about what specs should exist, then formalize them in Lean. Vero Spec Write is an agent skill from sunblaze-ucb/vero. Use during the specwrite stage to author specifications for translated Python (or new-source) projects in two substeps — reason about what specs should exist, then formalize them in Lean.

When should I use Vero Spec Write?

Vero Spec Write fits situations like: writing & Content work in your project.

How do I install Vero Spec Write in Claude Code?

Run `npx skills add sunblaze-ucb/vero --skill vero-spec-write -a claude-code`. Or copy the skill folder (.claude/skills/vero-spec-write in sunblaze-ucb/vero) into .claude/skills/vero-spec-write in your project. Claude Code loads it when a task matches its description.

How do I install Vero Spec Write in Codex?

Run `npx skills add sunblaze-ucb/vero --skill vero-spec-write -a codex`. Or copy the skill folder (.claude/skills/vero-spec-write in sunblaze-ucb/vero) into .agents/skills/vero-spec-write in your project. Codex loads it when a task matches its description.

Can I use Vero Spec Write 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 sunblaze-ucb/vero --skill vero-spec-write -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-spec-write, .gemini/skills/vero-spec-write, .github/skills/vero-spec-write and .opencode/skills/vero-spec-write in your project.

What does Vero Spec Write need to run?

SKILL.md names no scripts, command-line tools or credentials: Vero Spec Write is instructions for the agent only. Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash, Grep, Glob.

Does Vero Spec Write 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 Vero Spec Write safe to install?

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.

What licence does Vero Spec Write use?

Vero Spec Write 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 Vero Spec Write use?

About 1.5k tokens (SKILL.md is roughly 6k 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 Vero Spec Write?

Skills that share tags, products or a category with Vero Spec Write: Release Post (quarto-dev/quarto-r, 160 stars), China Travel Kit (tczyliu/china-travel-kit, 194 stars), Ghostwriter (superzhang21/ghostwriter, 302 stars) and Sloptrim (seyedehsanhadi/sloptrim, 213 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Vero Spec Write?

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.