Hai Naming
For Chinese readers, see SKILL.zh_CN.md. The English SKILL.md is the execution source of truth.
Purpose
Treat naming as a model of the system, not a thesaurus exercise. A useful name tells the intended
reader what the concept is, who owns it, and how it differs from its neighbors without forcing them
to reconstruct hidden context.
Choose the mode
- Quick naming: one local variable, function, prop, file, or concept. Give three to five
candidates, recommend one, and explain the decisive distinction briefly.
- Naming audit: public or cross-module vocabulary, several related names, or a rename with
migration impact. Build a vocabulary map, trace the call flow, and return prioritized renames.
Do not force an audit-sized reasoning trail onto a local identifier question.
Decision rules
- Name in context. Read the declaration, callers, neighboring concepts, layer, audience, and
lifecycle available in the user's scope. Never invent a global model from one isolated snippet.
- Choose a viewpoint. Product names describe user intent, domain names describe durable
concepts, runtime names describe execution responsibility, and adapter names describe the
boundary crossed. Keep the viewpoint stable until a real boundary changes it.
- Preserve decisive information. Shorten only when the surrounding expression carries the
omitted meaning. Public and cross-module names should usually be more explicit than local ones.
- Use one word per concept. The same concept keeps one term; different concepts do not share a
convenient generic word.
- Name ownership, not incidental mechanics.
Manager, Service, Helper, Data, Info,
Context, get, and build are acceptable only when they accurately express the local model.
- Treat naming friction as evidence. If every candidate needs a paragraph of explanation, the
concept may mix responsibilities or viewpoints. Recommend a design clarification instead of more
synonyms.
Read references/principles.md when a public or cross-module decision needs the expanded context,
call-flow, symmetry, lifecycle, or migration checks.
Workflow
Quick naming
- State the concept, reader, layer, and nearest competing term.
- Inspect the surrounding code or text the user supplied.
- Generate three to five candidates that differ meaningfully, not cosmetically.
- Recommend one and explain why the closest alternative loses.
- Flag a design problem only when the evidence actually makes naming unstable.
Naming audit
- Read the relevant declarations, callers, contracts, docs, and persisted/wire names.
- Map actors, concepts, lifecycle states, layer-specific vocabulary, and overloaded terms.
- Identify wrong viewpoint, lost information, stale vocabulary, collisions, and inconsistency.
- Prioritize public/API/domain names before small locals.
- For each rename, state
old -> new, evidence, conceptual repair, affected surfaces, and whether
compatibility is required by a real contract.
- Separate the recommended vocabulary from the migration plan.
Output
Use the matching mode in references/output-template.md. A quick answer should remain conversational
and compact. An audit must include evidence and migration scope, but it does not need to expose a
performative “top-of-head” reasoning chain. Explain only what changed after reading when that change
affects the recommendation.
Use a different skill when
- The name is awkward because module ownership or abstraction is wrong →
hai-architecture.
- The question is whether a field should exist or where it belongs →
entity-model-auditor.
- The user wants a bold direction change rather than a name →
geju.
- The scope is an entire React component API, not one identifier →
react-component-diagnosis.
Not this skill
Do not act as a casing linter, rigid naming standard, or synonym generator. Project conventions
constrain the answer, but conceptual clarity decides it.
1---2name: hai-naming3description: Recommends names for concepts, identifiers, modules, files, entities, events, or product terms, or audits an existing naming set for misleading vocabulary and viewpoint drift. Use for “what should I call this?”, rename requests, or naming reviews(起名、命名、改名、名字不清楚). Give a concise answer for one local name; use the full vocabulary map and migration scope only for cross-module or public naming audits. Route boundary problems exposed by naming to hai-architecture.4---56# Hai Naming78For Chinese readers, see `SKILL.zh_CN.md`. The English `SKILL.md` is the execution source of truth.910## Purpose1112Treat naming as a model of the system, not a thesaurus exercise. A useful name tells the intended13reader what the concept is, who owns it, and how it differs from its neighbors without forcing them14to reconstruct hidden context.1516## Choose the mode1718- **Quick naming**: one local variable, function, prop, file, or concept. Give three to five19 candidates, recommend one, and explain the decisive distinction briefly.20- **Naming audit**: public or cross-module vocabulary, several related names, or a rename with21 migration impact. Build a vocabulary map, trace the call flow, and return prioritized renames.2223Do not force an audit-sized reasoning trail onto a local identifier question.2425## Decision rules26271. **Name in context.** Read the declaration, callers, neighboring concepts, layer, audience, and28 lifecycle available in the user's scope. Never invent a global model from one isolated snippet.292. **Choose a viewpoint.** Product names describe user intent, domain names describe durable30 concepts, runtime names describe execution responsibility, and adapter names describe the31 boundary crossed. Keep the viewpoint stable until a real boundary changes it.323. **Preserve decisive information.** Shorten only when the surrounding expression carries the33 omitted meaning. Public and cross-module names should usually be more explicit than local ones.344. **Use one word per concept.** The same concept keeps one term; different concepts do not share a35 convenient generic word.365. **Name ownership, not incidental mechanics.** `Manager`, `Service`, `Helper`, `Data`, `Info`,37 `Context`, `get`, and `build` are acceptable only when they accurately express the local model.386. **Treat naming friction as evidence.** If every candidate needs a paragraph of explanation, the39 concept may mix responsibilities or viewpoints. Recommend a design clarification instead of more40 synonyms.4142Read `references/principles.md` when a public or cross-module decision needs the expanded context,43call-flow, symmetry, lifecycle, or migration checks.4445## Workflow4647### Quick naming48491. State the concept, reader, layer, and nearest competing term.502. Inspect the surrounding code or text the user supplied.513. Generate three to five candidates that differ meaningfully, not cosmetically.524. Recommend one and explain why the closest alternative loses.535. Flag a design problem only when the evidence actually makes naming unstable.5455### Naming audit56571. Read the relevant declarations, callers, contracts, docs, and persisted/wire names.582. Map actors, concepts, lifecycle states, layer-specific vocabulary, and overloaded terms.593. Identify wrong viewpoint, lost information, stale vocabulary, collisions, and inconsistency.604. Prioritize public/API/domain names before small locals.615. For each rename, state `old -> new`, evidence, conceptual repair, affected surfaces, and whether62 compatibility is required by a real contract.636. Separate the recommended vocabulary from the migration plan.6465## Output6667Use the matching mode in `references/output-template.md`. A quick answer should remain conversational68and compact. An audit must include evidence and migration scope, but it does not need to expose a69performative “top-of-head” reasoning chain. Explain only what changed after reading when that change70affects the recommendation.7172## Use a different skill when7374- The name is awkward because module ownership or abstraction is wrong → `hai-architecture`.75- The question is whether a field should exist or where it belongs → `entity-model-auditor`.76- The user wants a bold direction change rather than a name → `geju`.77- The scope is an entire React component API, not one identifier → `react-component-diagnosis`.7879## Not this skill8081Do not act as a casing linter, rigid naming standard, or synonym generator. Project conventions82constrain the answer, but conceptual clarity decides it.