- .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>
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
- snake_case:
[a-z0-9_]+. Nada de PascalCase, kebab-case, dot.notation. - Verbo obligatorio: al menos un token del
namedebe 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). - Dominio canonico: el
domaindebe estar en la lista canonica (vermcp__registry__fn_list_domains). Crear dominio nuevo solo si el bucket es claramente distinto y se anade en el mismo turno a CLAUDE.md. - 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 cuandokind=type. - Components (
kind: component): nombre describe artefacto UI (button_primary,chat_panel). Permite forma<noun>_<modifier>. Validator salta el check de verbo sikind=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.