analyze-spec
Skill1.1k starsChanged 13 days agoApache-2.0View on GitHub
Spec analysis with ambiguity scoring — interactive locally, single-pass remotely via label
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 4 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 21
Do not approve until ambiguity ≤ threshold (default 0.2)
- Distinctive: line 30
When in doubt, default to local mode (interactive).
- Very specific: line 38
If a path is provided in {{ARGUMENTS}}, use that directly.
- Very specific: line 40
Run gh pr view --json number --jq .number to get the current branch's PR number.
- Very specific: line 41
If that fails, list specs: ls specs/ and ask the user which one.
- Very specific: line 42
Look for specs/<PR#>-*.md matching the PR number.
- Very specific: line 43
If no match, fall back to finding any specs/*.md file that is NOT TEMPLATE.md.
- Distinctive: line 44
If multiple specs match, prefer the one matching the PR number.
- Very specific: line 47
Explore the codebase: Run explore agent to map codebase areas relevant to the spec's intent.
- Very specific: line 48
Read prior context (remote mode): Read all existing PR comments via gh pr view --json comments to identify questions already asked and …
- Distinctive: line 66
If the scope is conceptually fuzzy, ask an ontology-style question about what the thing fundamentally IS
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<Purpose>
Analyze a spec file using mathematical ambiguity scoring. The goal: ensure the spec is clear enough for a one-shot implementation with zero clarifying questions.This skill operates in two modes:
- Local mode (invoked via
/analyze-specin Claude Code): Full interactive Socratic interview — one question at a time, iterative refinement with the spec author. - Remote mode (triggered externally via the
claude-spec-review-requestlabel): Single-pass analysis — all questions posted at once as a single PR comment. Reads prior PR comments as context to account for already-answered questions.
Adapted from the Ouroboros-inspired deep interview methodology — specification quality is the primary bottleneck in AI-assisted development.
</Purpose>
<Execution_Policy>
- Gather codebase facts via
exploreagent BEFORE asking about them - Cite repo evidence (file path, symbol, or pattern) instead of asking the spec author to rediscover it
- Score ambiguity transparently
- Do not approve until ambiguity ≤ threshold (default 0.2)
- Allow early approval with a clear warning if ambiguity is still high </Execution_Policy>
<Mode_Detection> Detect which mode to use:
- Remote mode: Running in a remote Claude instance triggered by the
claude-spec-review-requestlabel. Indicators: environment is non-interactive (no TTY), or running inside a GitHub PR context. - Local mode: Running interactively in a terminal via
/analyze-spec.
When in doubt, default to local mode (interactive). </Mode_Detection>
<Steps>Phase 1: Initialize
- Locate the spec:
- If a path is provided in
{{ARGUMENTS}}, use that directly. - Otherwise, detect the PR number:
- Run
gh pr view --json number --jq .numberto get the current branch's PR number. - If that fails, list specs:
ls specs/and ask the user which one.
- Run
- Look for
specs/<PR#>-*.mdmatching the PR number. This is the spec for this PR. - If no match, fall back to finding any
specs/*.mdfile that is NOTTEMPLATE.md. - If multiple specs match, prefer the one matching the PR number. If still ambiguous, ask the user.
- If a path is provided in
- Read the spec thoroughly — understand all sections (Summary, Intent, Evaluation, Design, Execution).
- Read
jolt-eval/README.mdso you understand the invariant/objective framework for scoring Success Criteria and generating questions. - Explore the codebase: Run
exploreagent to map codebase areas relevant to the spec's intent. - Read prior context (remote mode): Read all existing PR comments via
gh pr view --json commentsto identify questions already asked and answers already given. Account for these when scoring — don't re-ask answered questions.
Phase 2: Analyze
Score clarity across four dimensions (0.0–1.0 each):
| Dimension | Weight | What to assess |
| Goal Clarity | 0.35 | Is the primary objective unambiguous? Can you state it in one sentence? Are key entities and relationships clear? |
| Constraint Clarity | 0.20 | Are boundaries, limitations, and non-goals clear? |
| Success Criteria | 0.30 | Could you write a test that verifies success? Are acceptance criteria concrete? Are relevant jolt-eval invariants/objectives described? |
| Context Clarity | 0.15 | Do we understand the existing system well enough to modify it safely? |
Calculate ambiguity:
ambiguity = 1 - (goal × 0.35 + constraints × 0.20 + criteria × 0.30 + context × 0.15)
For each dimension below 0.9, generate a targeted question that would improve it:
- Questions should expose ASSUMPTIONS, not gather feature lists
- If the scope is conceptually fuzzy, ask an ontology-style question about what the thing fundamentally IS
- Cite specific codebase context (files, types, patterns) when relevant
Phase 3: Output (mode-dependent)
- Remote mode: single-pass PR comment with all findings — follow
references/remote-mode.md(in this skill's directory) for the comment template and label handling. - Local mode: interactive Socratic interview — follow
references/local-mode.mdfor the round protocol, challenge modes, and stop conditions.
</Steps><Examples>
<Good>
Probing jolt-eval coverage:
```
The Intent → Invariants section says "streaming must produce the same
commitments as the non-streaming path." That looks like a binary property —
have you considered capturing it as a new `jolt-eval` invariant? The existing
`split_eq_bind_low_high` in `jolt-eval/src/invariant/` is a close model
(reference vs. optimized implementation comparison). If this is out of scope,
the Invariants section should say so explicitly.
```
Why good: Names a concrete existing invariant as a model, leaves the N/A
door open, doesn't force a fit.
</Good><Good>
Citing codebase context:
```
I found that `DoryScheme` in `crates/jolt-dory/src/scheme.rs` exposes both ordinary
and streaming commitment paths. The spec mentions "streaming commitments" but doesn't
say whether the new behavior belongs in the PCS adapter or in the prover's witness feed.
Which boundary should own it?
```
Why good: Explored first, cited specific types and files.
</Good>
</Examples>Task: Analyze the spec. {{ARGUMENTS}}
Trending
More talk lately.about the whole repository
Who's talking about a16z/jolt
- coset-io/zkp-academy“[2024.4.23-2024.5.21] Lasso & Jolt 学习小组”GitHub · Apr 27, 2024 · 2 reactions
- LayerZero-Labs/akita“perf(verifier): batch verifier dot products through jolt-field row kernels”GitHub · Oct 6, 2026
- sudosubin/agents.nix“agent-skills.github.a16z.jolt: 1.1.1-unstable-2026-09-02 → 1.1.1-unstable-2026-09-25”GitHub · Oct 3, 2026
- LayerZero-Labs/jolt“chore(akita): bump dependency to e2c49ed”GitHub · Oct 2, 2026
- jruizaranguren/best-of-digital-identity“Add privacy-preserving identity category”GitHub · Sep 30, 2026
The biggest 5 of 33 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 33
Talked about on GitHub (33 times).
On GitHub · 33
- Apr 27, 2024[2024.4.23-2024.5.21] Lasso & Jolt 学习小组 — coset-io/zkp-academy2 reactions · 1 comment
- Oct 6, 2026perf(verifier): batch verifier dot products through jolt-field row kernels — LayerZero-Labs/akita0 reactions · 15 comments
- Oct 3, 2026agent-skills.github.a16z.jolt: 1.1.1-unstable-2026-09-02 → 1.1.1-unstable-2026-09-25 — sudosubin/agents.nix0 reactions
- Oct 2, 2026chore(akita): bump dependency to e2c49ed — LayerZero-Labs/jolt0 reactions · 3 comments
- Sep 30, 2026Add privacy-preserving identity category — jruizaranguren/best-of-digital-identity0 reactions
28 more on GitHub
- Sep 30, 2026build: jolt as public git deps at a16z/jolt feat/inline-extension-external — 0xAndoroid/jeth0 reactions
- Sep 24, 2026agent-skills.github.a16z.jolt: init at 1.1.1-unstable-2026-09-02 — sudosubin/agents.nix0 reactions
- Aug 10, 2026Feat/jolt prover akita — LayerZero-Labs/jolt0 reactions · 1 comment
- Jul 31, 2026feat: port the demo to the modular prover on Akita (non-zk) — 0xAndoroid/jolt-wasm-prover0 reactions · 1 comment
- Jul 23, 2026Feat/jolt legacy prover akita integration — LayerZero-Labs/jolt0 reactions
- Jul 22, 2026[arXiv] zkML ONNX inference-proof harness — Jolt Atlas: Verifiable Inference via Lookup Arguments in Zero Knowledge — mnemonik-dev/nightly-research0 reactions
- May 21, 2026docs: document precommitted polynomial reductions — LayerZero-Labs/jolt0 reactions · 2 comments
- May 21, 2026feat: integrate bytecode and program image reductions — LayerZero-Labs/jolt0 reactions · 2 comments
- May 21, 2026feat: add committed bytecode foundation — LayerZero-Labs/jolt0 reactions · 2 comments
- May 21, 2026refactor: add precommitted polynomial reductions — LayerZero-Labs/jolt0 reactions · 2 comments
- May 21, 2026refactor: split stage 6 sumchecks — LayerZero-Labs/jolt0 reactions · 2 comments
- Apr 15, 2026build(deps): bump jolt-sdk from `b10e80a` to `3d5e431` — gg-archive/ruma-zk0 reactions
- Feb 3, 2026Implement Jolt Keccak-256 benchmark — ethereum/csp-benchmarkssays it tested it0 reactions
- Feb 3, 2026Implement Jolt ECDSA benchmark — ethereum/csp-benchmarkssays it tested it0 reactions
- Nov 11, 2025fix: correct calculation of max_log_n in VerifierSetup — markosg04/dory0 reactions
- Aug 15, 2025Update Jolt to v0.3.0-alpha — eth-act/ere0 reactions
- Aug 4, 2025Wire up PCS to jolt-prover — ICME-Lab/jolt-atlas0 reactions · 1 comment
- Aug 2, 2025Implement output proof — ICME-Lab/zkml-jolt0 reactions
- Mar 22, 2025no rust-toolchain-aarch64-unknown-linux-gnu.tar.gz release version — a16z/rust0 reactions · 1 comment
- Mar 21, 2025Implement `CanonicalSerialize` and `CanonicalDeserialize` for signed integers — a16z/arkworks-algebra0 reactions
- Mar 5, 2025Trait solver taking >10s to finish in auto complete — rust-lang/rust-analyzer0 reactions · 2 comments
- Feb 28, 2025Add Jolt zkVM Support to ProofLab — ProofLabDev/prooflab-rs0 reactions
- Feb 25, 2025chore: fix typos — a16z/helios0 reactions
- Jan 15, 2025Benchmark ICICLE and `arkmsm` — piotr-roslaniec/wasm-multiexp-benchsays it tested it0 reactions
- Nov 22, 2024chore: Update toolchain to nightly-2024-09-30 — a16z/rust0 reactions
- Jun 26, 2024Optimize polynomial batching computation — microsoft/Nova0 reactions · 1 comment
- May 27, 2024Summary from our mail threads — mab-xyz/verifiable-client-diversity0 reactions
- May 15, 2024List of Existing ZkVMs — vacp2p/zk-explorations0 reactions
In this repository9 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- ci-code-reviewSkill
- comment-policySkill
- implement-specSkill
- new-invariantSkill
- new-objectiveSkill
- new-specSkill
- test-policySkill
- update-docsSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

