sands-lab/focus/speculative-naming

Claude Code and agent skill by sands-lab/focus

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Naming conventions for SGLang speculative decoding identifiers. Use when adding, renaming, or reviewing identifiers in speculative decoding code — anything under `python/sglang/srt/speculative/`, related attention backends, scheduler accumulators, IPC fields, observability metrics, or CLI flags.

Install

npx vskill@latest install sands-lab/focus/speculative-naming

SKILL.md

The same SKILL.md was published earlier as rh-runninghub/minimax-h3-multigpu-lightning/speculative-naming.

Speculative Decoding — Naming Conventions

Apply this skill when adding, renaming, or reviewing identifiers in speculative decoding code (anything under python/sglang/srt/speculative/, related attention backends, scheduler accumulators, IPC fields, observability metrics, or CLI flags).

Rule 1 — Verb form, drop -ed

Use the verb form accept everywhere. Don't use the past-participle form accepted.

Don'tDo
num_accepted_tokensnum_accept_tokens
accepted_indicesaccept_indices
accepted_token_idsaccept_tokens (also see Rule 3)

Rule 2 — The extra/bonus token is bonus_token / bonus_tokens

The "+1" token that the target model always emits in addition to verifying drafts is the bonus token. Use bonus_token / bonus_tokens per Rule 7.

Don'tDo
verified_id / verified_idsbonus_token / bonus_tokens
output_id / output_ids (when referring to the bonus)bonus_token / bonus_tokens

req.output_ids (the full output history of a request) is unrelated and stays as is.

Rule 3 — accept includes bonus; correct excludes bonus

The semantic distinction lives in the verb, not the noun. Don't enumerate noun pairs.

VerbMeaning
`accept_*`Includes the bonus token
`correct_*`Drafts only, no bonus

Pair with whatever noun fits the data (tokens, drafts, indices, …). No required pairing, but preferred default nouns: accept_tokens and correct_drafts — correct semantically describes drafts (what got verified), accept describes the resulting token sequence (incl. bonus).

FormMeaning
accept_tokens / accept_indicesInclude bonus
correct_draftsDrafts only, no bonus
num_accept_tokensCount incl. bonus
num_correct_draftsCount excl. bonus
Exception: accept_rate / accept_length follow paper convention

These two metric names are entrenched in the spec-decoding literature and in external-facing fields (meta_info, Prometheus). Their semantics are paper-defined, not Rule-3-defined:

NamePaper termBonus?Definition
accept_rate$\alpha$ (Leviathan 2023)Noper-draft-token acceptance probability = correct_drafts / proposed_drafts
accept_length$\tau$ (EAGLE)Yesavg tokens per verify step = completion_tokens / verify_ct

Internal counters still follow Rule 3 strict semantics: num_correct_drafts (no bonus), num_accept_tokens (with bonus).

Rule 4 — num_ for counts; _ct for counters; _rate for rates; no prefix for IDs

Each form has its own marker. Never mix (no num_X_ct, no num_accept_rate).

FormPatternMeaningExamples
Countnum_XSnapshot quantity at one point in time (often a tensor or scalar)num_accept_tokens, num_correct_drafts, num_proposed_drafts
CounterX_ctMonotonically incrementing accumulator over timespec_verify_ct, forward_ct
Rate / ratioX_rateFractional value in [0, 1]accept_rate
Tokens / content arrayno prefixThe actual token data, not a countaccept_tokens, correct_drafts, bonus_token

Rule 5 — Drop redundant _token_id / _token_ids suffix in spec scope

_id / _ids and _token / _tokens are both fine. But don't combine — _token_id / _token_ids is redundant inside spec decoding, because spec code only ever deals with vocab integers.

The semantic differs by scope:

ScopeExampleWhat _token_id means
Framework / multimodal / tokenizerimage_token_id, pad_token_id, eos_token_id, mask_token_id, bos_token_idA specific named/role token's vocab ID. The prefix names the role; _token_id says it's the integer ID for that role. Both halves carry information.
Spec decodingaccepted_token_ids, curr_token_id, out_token_idsRedundant. Spec only deals with vocab integers; _id adds nothing beyond _token.
Renames
Don'tDo
accepted_token_idsaccept_tokens (Rule 1 + 3)
curr_token_idcurrent_token
out_token_idsout_tokens
_resolve_spec_overlap_token_ids_resolve_spec_overlap_tokens

Rule 6 — Singular vs plural

Plural for any non-scalar tensor ([bs]-shaped, flat, or multi-dim); singular only for scalars (kernel tl.load results, single-int locals). Applies to all spec-decoding tensors (tokens, indices, etc.).

python
accept_tokens: torch.Tensor # [total_accepted] flat - plural
accept_indices: torch.Tensor # [bs, num_draft_tokens] - plural
draft_tokens: torch.Tensor # [bs * num_draft_tokens] flat - plural
bonus_tokens: torch.Tensor # [bs] - plural
accept_token = tl.load(...) # int32 scalar in a kernel iteration - singular
bonus_token = tl.load(...) # int32 scalar inside a kernel - singular

Out of scope (these names stay as is)

These rules apply to spec-decoding-specific identifiers. Pre-existing or framework-level names are kept.

  • PyTorch / ecosystem: seq_lens, extend_seq_lens, cu_seqlens_q
  • Framework / multimodal vocab: image_token_id, pad_token_id, eos_token_id, mask_token_id, hot_token_id, bos_token_id, topk_id
  • Request-level state: req.input_ids, req.output_ids, req.origin_input_ids, next_token_ids (model_runner.sample output)
  • Frozen C++ kwargs: accept_token_num (sgl-kernel)
  • Non-token IDs: req_id, gpu_id, layer_id, program_id
  • `_len` / `_lens` names: num_X is preferred for counts (Rule 4), but _len / _lens names are acceptable. Triton kernel params in particular often use _lens / _len to align with the PyTorch ecosystem (seq_lens, cu_seqlens_q). Rule 1 still requires the -ed-less form (accept_length OK, accepted_length not).

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/sands-lab/focus/speculative-naming/badge)](https://verified-skill.com/skills/sands-lab/focus/speculative-naming)

Something wrong with this skill or its page? Tell us.