# Update Glossary

> Add a new term, update an existing definition, or remove an outdated entry in `.agents/GLOSSARY.md`. Use whenever the user wants to write something into the project glossary, or asks "should this be in the glossary?". Enforces the file's principle — disambiguation and etymology only, no paths/env vars/UI-location restatements.

- Skill: `blockscout/update-glossary` (Agent Skill)
- Install (CLI): `npx skillmds@latest add blockscout/update-glossary`
- Raw SKILL.md: https://api.skillmd.com/api/skills/blockscout/update-glossary/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: blockscout (https://skillmd.com/u/blockscout)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/blockscout/update-glossary

---


# Update the project glossary

`.agents/GLOSSARY.md` is the **ubiquitous-language** reference for the Blockscout
frontend. It exists to disambiguate easily-confused terms and explain
non-obvious names. It is **not** a feature index, a config reference, or a
folder map — those live in code, `docs/ENVS.md`, and `.agents/rules/`.

This skill ensures any glossary edit follows the same principles the file was
designed around.

## When to use this skill

- The user asks to "add", "update", or "define" a term in the glossary.
- The user asks whether a term *should* be in the glossary.
- During other work, you notice a term that meets the inclusion criteria
  below and the user agrees to add it.

## Inclusion criteria — does the term belong?

A term earns a row **only if at least one is true**:

1. It has a non-obvious meaning a reader will likely misread (acronyms,
   codenames, chain-specific words like `Epoch`, `Kettle`, `Operation`).
2. It is easily confused with another term in this codebase (e.g.
   `Block Reward` vs `Rewards`, `Connect Wallet` vs `Web3 Wallet`,
   `CCTX` vs `Interchain Indexer`).
3. It has etymology worth recording (acronym expansion, original product
   name, why it was renamed).
4. It establishes scope a reader can't recover by grepping (e.g. `Account`
   covers watchlist + private tags + custom ABI + API keys + …).

**Reject** if the term is self-explanatory from its name alone (`CSV Export`,
`API Docs`, `Verified Tokens`, `Multichain Button`). Folder existence is
not a reason to add a row.

## What a row must NOT contain

Do not write any of these — they drift, they bloat the file, and they're all
recoverable from code or other docs:

- **Folder paths** (`src/features/<name>/`, `client/...`, etc.). Path follows
  predictably from the term's kebab-case feature name.
- **Env var names** (`NEXT_PUBLIC_X_ENABLED`). These live in `docs/ENVS.md`.
- **UI-location restatements** ("Displayed in the rollup navigation",
  "Exposed as a section under Tokens", "Surfaces as a button in the top bar").
  Trivially recoverable from the rendered app or a grep.
- **Implementation details** ("Has two provider backends", "Notifies via a
  hook", "Has its own context provider").
- **Status qualifiers like `(config-gated)` or `(chain-specific)`.** The Kind
  column already implies this (every `feature` row is config-gated).
- **First-class-entity restatements** ("Has its own detail page"). The Kind
  column says it.

## Table structure

The file is a single alphabetical table with three columns:

| Column | Content |
|---|---|
| **Term** | Bold term name. Codename in parens when it differs from the product name: `**TAC (Ton Application Chain)**`, `**User Op (User Operation)**`. |
| **Kind** | One of `entity` / `feature` / `service` / `chain` / `concept`. See the Kinds list at the top of the file. |
| **Definition** | One or two short sentences. Disambiguation, etymology, scope. May end with a cross-reference. |

### Picking the Kind

- **entity** — a blockchain object that surfaces as a first-class UI element
  (detail page, list row, API resource). E.g. `Blob`, `Block Reward`, `Kettle`.
- **feature** — a config-gated product area. Most rows are this. E.g.
  `Marketplace`, `Connect Wallet`, `Advanced Filter`.
- **service** — an external system (Blockscout-operated or third-party) that
  backs a feature. E.g. `BENS`, `Clusters`, `SolidityScan`, `MetaSuites`.
- **chain** — a specific chain or chain concept. E.g. `Beacon Chain`,
  `SUAVE`, `TAC`.
- **concept** — an architectural / structural term. E.g. `Rollup`,
  `Chain Variant`.

If the term could fit two kinds, pick the one that best matches how a reader
will first encounter it.

### Cross-reference phrasings (use these verbatim)

- `Distinct from **X**.` — strong disambiguation between commonly-confused
  terms.
- `Contrast with **X**.` — paired-opposite concepts (`Rollup` ↔ `Chain Variant`).
- `Co-located with **X**.` — terms that share a UI surface (`BENS` ↔ `Clusters`).
- `A sub-feature of **X**.` — hierarchical relation.
- `See also: **X**, **Y**.` — related but not strictly confusable.

The referenced term must already be in the table (or be added in the same
edit).

## Workflow

### 1. Confirm the term and its meaning

Search the codebase to confirm what the term actually refers to. Read the
relevant folder's `config.ts`, the page components, or the types file. Do
not guess from the name alone — codename / product-name mismatches happen
(e.g. `connectWallet` config key for the "Connect Wallet" feature, formerly
`blockchain-interaction`).

Reuse the existing exploration tools:

- `ls src/features/` to confirm folder names.
- `grep -r "<term>"` to find usages.
- Read the feature's `config.ts` for the canonical title and any
  rename history.

### 2. Check if it's already in the glossary

`grep -i "<term>" .agents/GLOSSARY.md`. If a row already exists under a
different label (e.g. the user says "Merits" but the row is `Rewards`),
update that row rather than creating a duplicate.

### 3. Identify cross-references

Before drafting, scan the glossary for terms that:

- The new term could be confused with.
- The new term depends on or relates to.
- Currently reference *this* term and may need their wording updated.

Plan the cross-references in both directions — if you add `X` with
"Distinct from **Y**", check that **Y**'s row mentions **X** when it should.

### 4. Draft the row

Write a one- or two-sentence definition that:

- States what the term *is* (not where it lives or how it's wired).
- Includes any etymology or codename in parens after the bold term.
- Ends with a cross-reference clause when there's a confusable neighbor.

Apply every "MUST NOT contain" rule from above. If a sentence ends up just
describing where something appears in the UI or how the code is structured,
delete it.

### 5. Place it alphabetically

The table is sorted by the term as it appears in bold (the codename in
parens does not count for ordering — `TAC (Ton Application Chain)` sorts
under T). Insert in the right place; do not append at the bottom.

### 6. Update cross-referencing rows

If you added a "Distinct from **Y**" clause, ensure **Y**'s row reciprocates
when warranted. Add or refine the cross-ref there.

### 7. Verify

- `grep -nE "src/|NEXT_PUBLIC_|\.ts\b" .agents/GLOSSARY.md` — should be empty
  apart from the intro paragraph and intentional package names like
  `@blockscout/points-types`.
- Visual scan: the new row's sentence shape matches its neighbors; the Kind
  column has one of the five valid values; cross-refs use **bold** and the
  approved phrasings.

## Examples

### Good

```
| **Operation** | entity | **TAC**-specific entity representing a bridge operation between the TON and EVM ecosystems. No equivalent on standard EVM chains. |
```

Why it works: explains what the term is, where the name comes from
(TAC-specific), and the scope (no equivalent elsewhere). No folder path, no
env var, no UI location.

```
| **Rewards** | feature | The Blockscout Merits program — a token rewards and incentives system operated by Blockscout. Entirely distinct from **Block Reward** (on-chain block-producer payouts). |
```

Why it works: includes the codename ("Merits"), establishes who operates it,
and disambiguates from the easily-confused `Block Reward`.

### Bad (and how to fix)

```
| **Marketplace** | feature | Curated directory of dApps. Lives at `src/features/marketplace/`. Config-gated via `NEXT_PUBLIC_MARKETPLACE_ENABLED`. Surfaces a full-page UI with categories and app detail views. *(config-gated)* |
```

Problems: folder path, env var name, UI-shape restatement, and a
status qualifier that duplicates the Kind. Fix:

```
| **Marketplace** | feature | Curated directory of dApps and DeFi applications integrated with Blockscout. |
```

## When the user asks "should X be in the glossary?"

Apply the inclusion criteria honestly. The answer is often "no" — most
feature folders do not need a glossary entry. If the term is self-explanatory
or there's no neighbor it can be confused with, recommend leaving it out.
A short glossary that means something beats a long one that mirrors the
folder listing.

