Files
fn_registry/.claude/rules/ids_naming.md
T
egutierrez a03675113a chore: auto-commit (286 archivos)
- .claude/agents/fn-orquestador/SKILL.md
- .claude/commands/fn_claude.md
- .claude/rules/INDEX.md
- .claude/rules/cpp_apps.md
- .claude/rules/ids_naming.md
- CHANGELOG.md
- apps/dag_engine/README.md
- apps/dag_engine/api.go
- apps/dag_engine/dags_migrated/example.yaml
- apps/dag_engine/dags_migrated/example_lineage_tracking.yaml
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 16:33:22 +02:00

3.4 KiB

ids_naming — formato predictible

IDs: {name}_{lang}_{domain} (ej: filter_slice_go_core). Predictibilidad alta -> Claude descubre por fuzzy match sin lookup. Issue 0087.

Reglas

  1. snake_case: [a-z0-9_]+. Nada de PascalCase, kebab-case, dot.notation.
  2. Verbo obligatorio: al menos un token del name debe ser un verbo de accion. El verbo puede ir delante (get_user) o detras (user_lookup). Ejemplos validos: filter_slice, bank_login, metabase_get_dashboard, redeploy_cpp_app. Invalidos: slice (sustantivo solo), user (sustantivo solo), data (sustantivo solo).
  3. Dominio canonico: el domain debe estar en la lista canonica (ver mcp__registry__fn_list_domains). Crear dominio nuevo solo si el bucket es claramente distinto y se anade en el mismo turno a CLAUDE.md.
  4. Tipos en PascalCase Go: ResultGoCore, ErrorGoCore. Aplica solo al codigo Go; el ID en el registry sigue siendo snake_case (result_go_core).

Verbos canonicos (allowlist)

Lista no exhaustiva pero cubre la mayoria. Anadir aqui (y al validator en apps/registry_mcp/naming.go) cuando se introduzca un verbo nuevo recurrente.

get, set, list, find, search, show, read, load, fetch, scan, query, lookup, parse, format, encode, decode, marshal, unmarshal, serialize, deserialize, validate, check, ensure, verify, audit, diagnose, test, match, filter, map, reduce, sort, group, count, sum, aggregate, compute, calculate, score, rank, cluster, classify, detect, init, create, make, build, generate, scaffold, install, setup, configure, register, add, insert, append, prepend, update, upsert, modify, edit, patch, replace, delete, remove, clear, drop, prune, clean, copy, move, rename, sync, clone, extract, inject, import, export, send, post, put, call, dispatch, exec, run, launch, start, stop, kill, restart, redeploy, deploy, open, close, connect, disconnect, login, logout, authenticate, enable, disable, toggle, lock, unlock, propose, promote, deprecate, approve, reject, emit, render, draw, paint, serve, host, pull, push, checkout, commit, tag, merge, rebase, watch, monitor, observe, log, trace, profile, benchmark, snapshot, backup, restore, archive, compress, decompress, hash, encrypt, decrypt, sign, taskkill, recopile, vault, propose, apply, gather, collect, fold, head, tail, take, drop, slice, chunk, batch, debounce, throttle, retry, await, sleep, ping, kill, prime, warm, refresh, invalidate, reload, reset, rollback, fork, spawn, daemon, observe, plot, draw, capture, replay, recopilate

Excepciones

  • Operadores matematicos/estadisticos ampliamente reconocidos por acronimo: sma, ema, rsi, vwap, adx. Validator hace allowlist explicita.
  • Tipos (entity_type type): no requieren verbo. Validator lo salta cuando kind=type.
  • Components (kind: component): nombre describe artefacto UI (button_primary, chat_panel). Permite forma <noun>_<modifier>. Validator salta el check de verbo si kind=component.

Validator

mcp__registry__fn_create_function ejecuta el validator antes de escribir archivos. Rechaza con error si:

  • name no es snake_case.
  • name no contiene verbo (excepto component/type).
  • domain no esta en lista canonica.

Error tipico:

naming: name "slice" lacks action verb. Add verb prefix/suffix (e.g. filter_slice, slice_window). See .claude/rules/ids_naming.md.
naming: domain "bizops" not in canonical list (core, infra, finance, ...). Add it to CLAUDE.md and rules first.