Naming Conventions
Purpose
Define naming conventions for directories, files, and identifiers with these goals:
- Scriptability: scripts can locate files reliably with fewer branches
- Portability: cross OS/IDE moves should require zero or minimal renaming
- Readability: humans and LLMs can infer purpose and scope from names
When to use
Use the naming-conventions skill when:
- Creating new directories or files
- Naming skills, workflows, or commands
- Reviewing code for naming consistency
- Setting up CI checks for naming standards
- Scripts generating files: scripts that create new files/directories MUST read
naming-conventions first
For Scripts
If your script generates files or directories, import or reference the naming-conventions skill to ensure consistent naming:
- Skill path:
.ai/skills/standards/naming-conventions/SKILL.md
- Apply kebab-case rules to all generated paths
- Validate output names against the conventions before writing
Inputs
- The item to name (directory, file, skill, identifier)
- Context (SSOT content, provider stubs, general repo files)
Outputs
- Correctly named items following conventions
- Validation results for existing names
Steps
- Identify what you are naming (file, directory, module, component, hook, API surface, configuration key, or data entity).
- Choose the most relevant convention section below and follow the MUST rules first.
- Propose 2-3 candidates and select the one that matches existing local conventions and avoids ambiguous abbreviations.
- Apply the chosen name consistently across declarations and references (imports, exports, docs, and tests).
- Verify that the resulting names are searchable, unambiguous, and do not collide with existing names.
Global Rules (MUST)
- Use kebab-case (lowercase + hyphens) by default:
skill-name, sync-skills
- Avoid spaces and special characters (except
.-prefixed directories)
- Recommended charset:
[a-z0-9-._]
- Directory names express "scope/role"; file names express "type/content"
- Avoid non-maintainable buckets like
misc/ or temp/
Directory Layout (MUST)
SSOT Root
- SSOT root is fixed:
.ai/
- SSOT subdirectories:
.ai/skills/ (skills and workflows live here)
.ai/scripts/ (maintenance scripts)
.ai/rules/ (if using rules)
.ai/llm-config/ (LLM configuration and registries)
.ai/.tmp/ (temporary files, gitignored - see "Temporary Files" section)
Skill Entry Stubs
- Entry stub roots are fixed:
.codex/skills/
.claude/skills/
Notes:
- Stubs contain only
SKILL.md pointers back to .ai/skills/
- Do not edit stub directories directly; regenerate with
.ai/scripts/sync-skills.cjs
Other Top-Level Directories (Recommended)
docs/project/: project-specific documentation (requirements, blueprints)
scripts/: script entrypoints (cross-platform can share the same base name with different suffixes)
init/: bootstrap materials (if present)
Skill Naming (MUST)
Skill Directory
- Path:
.ai/skills/.../<skill-name>/SKILL.md (taxonomy directories are allowed)
<skill-name>: kebab-case; encode capability/domain/tool
- Avoid ambiguous names
Examples:
skill-creator
repo-init
doc-style-guide
Skill Name Field
- The
name in SKILL.md frontmatter MUST match the leaf directory name
- Use capability-oriented names (verb + domain/tool)
Supporting Files
- Use kebab-case or snake_case for filenames
- Allowed:
reference.md, examples.md, scripts/, templates/
- Forbidden:
resources/ subdirectory
Workflow Naming
- Workflows are stored as skills
- Name by intent/process:
refactor-planner, release-checklist
- Path:
.ai/skills/.../<workflow-name>/SKILL.md
Temporary Files and Environments (MUST)
When scripts or workflows need to create temporary files or staging environments:
Designated Temporary Directory
- Path:
.ai/.tmp/
- Purpose: temporary/intermediate files, staging environments, build artifacts
- Lifecycle: contents may be deleted at any time; do not store persistent data here
Usage Guidelines
Use .ai/.tmp/ for:
- Temporary test environments or sandboxes
- Intermediate build or generation outputs
- Staging files before final placement
- Script-generated scratch data
Naming within .ai/.tmp/
- Use descriptive subdirectories:
.ai/.tmp/<script-name>/, .ai/.tmp/<task-name>/
- Include timestamps for disambiguation if needed:
.ai/.tmp/build-2024-01-15/
- Clean up after task completion when possible
.gitignore Requirement
Ensure .ai/.tmp/ is listed in .gitignore:
# Temporary files
.ai/.tmp/
Boundaries
- Do NOT use project root for temporary files
- Do NOT create ad-hoc
temp/, tmp/, or scratch/ directories elsewhere
- Do NOT commit contents of
.ai/.tmp/ to version control
Versioning and Changes (SHOULD)
- Prefer explicit version fields / change logs for SSOT content
- If the directory structure changes, update all of:
- Naming conventions documentation
- Path constants/mappings in
.ai/scripts/
- Usage examples in
README.md
Verification
Check naming compliance:
- All directories use kebab-case
- No spaces or special characters in names
- Skill
name field matches directory name
- No
resources/ directories under skills
Boundaries
- Do NOT use spaces in directory or file names
- Do NOT create
misc/, temp/, or similar catch-all directories
- Do NOT use uppercase in directory names (except for special files like
SKILL.md, README.md)
Included assets
None.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: naming-conventions3description: Apply consistent naming conventions for directories, files, and identifiers - covers kebab-case rules, SSOT layout, skill naming standards, and script-generated file paths (including temporary files under .ai/.tmp/). Use when this capability is needed.4---56# Naming Conventions78## Purpose910Define naming conventions for directories, files, and identifiers with these goals:11- **Scriptability**: scripts can locate files reliably with fewer branches12- **Portability**: cross OS/IDE moves should require zero or minimal renaming13- **Readability**: humans and LLMs can infer purpose and scope from names1415## When to use1617Use the `naming-conventions` skill when:18- Creating new directories or files19- Naming skills, workflows, or commands20- Reviewing code for naming consistency21- Setting up CI checks for naming standards22- **Scripts generating files**: scripts that create new files/directories MUST read `naming-conventions` first2324### For Scripts2526If your script generates files or directories, import or reference the `naming-conventions` skill to ensure consistent naming:27- Skill path: `.ai/skills/standards/naming-conventions/SKILL.md`28- Apply kebab-case rules to all generated paths29- Validate output names against the conventions before writing3031## Inputs3233- The item to name (directory, file, skill, identifier)34- Context (SSOT content, provider stubs, general repo files)3536## Outputs3738- Correctly named items following conventions39- Validation results for existing names404142## Steps431. Identify what you are naming (file, directory, module, component, hook, API surface, configuration key, or data entity).442. Choose the most relevant convention section below and follow the MUST rules first.453. Propose 2-3 candidates and select the one that matches existing local conventions and avoids ambiguous abbreviations.464. Apply the chosen name consistently across declarations and references (imports, exports, docs, and tests).475. Verify that the resulting names are searchable, unambiguous, and do not collide with existing names.4849## Global Rules (MUST)5051- Use **kebab-case** (lowercase + hyphens) by default: `skill-name`, `sync-skills`52- Avoid spaces and special characters (except `.`-prefixed directories)53- Recommended charset: `[a-z0-9-._]`54- Directory names express "scope/role"; file names express "type/content"55- Avoid non-maintainable buckets like `misc/` or `temp/`5657## Directory Layout (MUST)5859### SSOT Root6061- SSOT root is fixed: `.ai/`62- SSOT subdirectories:63 - `.ai/skills/` (skills and workflows live here)64 - `.ai/scripts/` (maintenance scripts)65 - `.ai/rules/` (if using rules)66 - `.ai/llm-config/` (LLM configuration and registries)67 - `.ai/.tmp/` (temporary files, gitignored - see "Temporary Files" section)6869### Skill Entry Stubs7071- Entry stub roots are fixed:72 - `.codex/skills/`73 - `.claude/skills/`7475Notes:76- Stubs contain only `SKILL.md` pointers back to `.ai/skills/`77- Do not edit stub directories directly; regenerate with `.ai/scripts/sync-skills.cjs`7879### Other Top-Level Directories (Recommended)8081- `docs/project/`: project-specific documentation (requirements, blueprints)82- `scripts/`: script entrypoints (cross-platform can share the same base name with different suffixes)83- `init/`: bootstrap materials (if present)8485## Skill Naming (MUST)8687### Skill Directory8889- Path: `.ai/skills/.../<skill-name>/SKILL.md` (taxonomy directories are allowed)90- `<skill-name>`: kebab-case; encode capability/domain/tool91- Avoid ambiguous names9293Examples:94- `skill-creator`95- `repo-init`96- `doc-style-guide`9798### Skill Name Field99100- The `name` in SKILL.md frontmatter MUST match the **leaf** directory name101- Use capability-oriented names (verb + domain/tool)102103### Supporting Files104105- Use kebab-case or snake_case for filenames106- Allowed: `reference.md`, `examples.md`, `scripts/`, `templates/`107- Forbidden: `resources/` subdirectory108109## Workflow Naming110111- Workflows are stored as skills112- Name by intent/process: `refactor-planner`, `release-checklist`113- Path: `.ai/skills/.../<workflow-name>/SKILL.md`114115## Temporary Files and Environments (MUST)116117When scripts or workflows need to create temporary files or staging environments:118119### Designated Temporary Directory120121- **Path**: `.ai/.tmp/`122- **Purpose**: temporary/intermediate files, staging environments, build artifacts123- **Lifecycle**: contents may be deleted at any time; do not store persistent data here124125### Usage Guidelines126127Use `.ai/.tmp/` for:128- Temporary test environments or sandboxes129- Intermediate build or generation outputs130- Staging files before final placement131- Script-generated scratch data132133### Naming within `.ai/.tmp/`134135- Use descriptive subdirectories: `.ai/.tmp/<script-name>/`, `.ai/.tmp/<task-name>/`136- Include timestamps for disambiguation if needed: `.ai/.tmp/build-2024-01-15/`137- Clean up after task completion when possible138139### .gitignore Requirement140141Ensure `.ai/.tmp/` is listed in `.gitignore`:142143```144# Temporary files145.ai/.tmp/146```147148### Boundaries149150- Do NOT use project root for temporary files151- Do NOT create ad-hoc `temp/`, `tmp/`, or `scratch/` directories elsewhere152- Do NOT commit contents of `.ai/.tmp/` to version control153154## Versioning and Changes (SHOULD)155156- Prefer explicit version fields / change logs for SSOT content157- If the directory structure changes, update all of:158 - Naming conventions documentation159 - Path constants/mappings in `.ai/scripts/`160 - Usage examples in `README.md`161162## Verification163164Check naming compliance:165- All directories use kebab-case166- No spaces or special characters in names167- Skill `name` field matches directory name168- No `resources/` directories under skills169170## Boundaries171172- Do NOT use spaces in directory or file names173- Do NOT create `misc/`, `temp/`, or similar catch-all directories174- Do NOT use uppercase in directory names (except for special files like `SKILL.md`, `README.md`)175176## Included assets177178None.179180---181> Converted and distributed by [TomeVault](https://tomevault.io/claim/willyu1007) — claim your Tome and manage your conversions.182<!-- tomevault:4.0:skill_md:2026-04-15 -->