file-folder-name-linter
Lint repository file and folder names for format compliance.
Skill by ahandsel
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/ahandsel-file-folder-name-linter
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: security, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/file-folder-name-linter
What's inside
- Skill name
file-folder-name-linter- Description
- Lint repository file and folder names for format compliance. Use when users ask to check naming conventions, enforce file extensions, or validate notes naming patterns; applies a fixed set of rules from the skill and reports any discovered repository style guides for reviewer reference.
- License
- MIT
- Instructions
- 118 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (2)
- SKILL.md
- lint-names.mjs · scripts/
SKILL.md (first lines)
# File and folder name linter
Sweep the repository for file and folder names that drift from the project's naming conventions. Use this skill when the user asks to check naming, enforce file extensions, validate `notes/` naming, or sweep the repo for non-compliant paths.
The skill enforces a fixed set of rules from this `SKILL.md` and surfaces every discovered repository style guide (`AGENTS.md`, `your-style-guide/*`, etc.) at the end of the report so the reviewer can sanity-check intent on gray-area findings.
## Rules
The linter enforces three rules on every run:
1. **`notes/` naming.** Files under `notes/` (including subfolders such as `notes/img/`) must match `YYYY-MM-DD-<kebab-name>.<ext>`. For example, `notes/2026-05-19-pr-1-audit.md` passes; `notes/pr1.md`, `notes/note.md`, and `notes/2026-5-19-foo.md` fail. Allowed extensions: `.md`, `.png`, `.jpg`, `.jpeg`, `.gif`, `.webp`, `.svg`.
2. **`.yaml` not `.yml`.** Any tracked file ending in `.yml` is flagged with a `.yaml` suggestion. This is the only rule the linter can auto-fix.
3. **Kebab-case.** File basenames (before the first dot) and folder names must match `^[a-z0-9][a-z0-9-]*$` - lowercase letters, digits, and hyphens, starting with a letter or digit. No underscores, no uppercase, no spaces.
## Scope
In scope:
* Every file tracked by git that is not covered by a default ignore or a `.namelintignore` pattern.
* Every folder that contains at least one in-scope file.
Out of scope (the linter skips these):
* Anything excluded by `.gitignore` (handled implicitly because the linter uses `git ls-files` to enumerate paths).
* Standard repo docs anywhere in the tree: `README.md`, `AGENTS.md`, `MEMORY.md`, `ONBOARDING.md`, `LICENSE` (with or without an extension), `CHANGELOG.md`, `CODE_OF_CONDUCT.md`, `CONTRIBUTING.md`, `SECURITY.md`, `SUPPORT.md`, `AUTHORS`, `NOTICE`.
* Dotfiles and dot-folders: any path segment that starts with `.` (`.gitignore`, `.editorconfig`, `.claude/`, `.github/`, `.vscode/`, and so on).
* Package manager files: `package.json`, `pnpm-lock.yaml`, `pnpm-workspace.yaml`, `tsconfig*.json`.
* Vendored Figma skills under `skills/figma-*/` (these are imported from the official `figma@claude-plugins-official` plugin and follow upstream naming).
* Anything matched by the repo-root `.namelintignore` file.
## Quick start
Run the bundled linter through `pnpm`:
```bash
# Scan the whole repo and print a grouped report.
pnpm lint-naming
# Scan a subset of paths.
pnpm lint-naming notes/ localization/
# Rename *.yml to *.yaml in place (the only auto-fixable rule).
pnpm lint-naming --fix
# Machine-readable output for piping.
pnpm lint-naming --json
# Print help and exit.
pnpm lint-naming --help
```
Direct invocation (what `pnpm lint-naming` resolves to):
```bash
node skills/file-folder-name-linter/scripts/lint-names.mjs [args]
```
Exit codes:
* `0` - no violations found.
* `1` - one or more violations.
* `2` - configuration error (not a git checkout, unreadable `.namelintignore`, and so on).
## Workflow
1. **Scope the run.**
* If the user just touched a folder, pass that folder so the report stays focused: `pnpm lint-naming notes/`.
* For a repo-wide sweep, run with no arguments.
2. **Lint.** Run `pnpm lint-naming`. Read the grouped report. Violations are grouped by rule (`notes/` naming, `.yml` extension, kebab-case) so the fix list stays clear.
3. **Report.** Summarize for the user: which paths violate which rule, and which violations are auto-fixable.
4. **Fix.**
* **`.yml` files:** run `pnpm lint-naming --fix` to rename them in place to `.yaml`. Safe in this repo - no link rewrites needed.
* **`notes/` naming violations:** rename manually. The date prefix depends on the note's actual date, which the linter cannot infer.
* **Kebab-case violations:** rename manually. Renames may break Markdown reference links elsewhere in the repo; review each one and update any inbound links in the same change.
* **False positives:** if a path is intentionally non-compliant (a third-party artifact, a generated file, an external dependency), add a glob to `.namelintignore` with a one-line `#` comment explaining why. Do not edit the script's default ignore list for project-specific cases.
5. **Re-lint.** Run `pnpm lint-naming` again. Confirm the verdict is now clean (exit `0`).
6. **Sanity-check intent.** When in doubt about a rule, consult the style guides printed at the end of the report (informational `ℹ️` block) before changing the script's defaults.
## Bundled resources
### scripts/lint-names.mjs
Scans tracked files and the folders they live in, applies the three rules, and prints a per-rule report.
Behavior:
* Locates the repo root via `git rev-parse --show-toplevel`.
* Enumerates tracked paths via `git ls-files -z`, which honors `.gitignore` automatically.
* Builds the set of unique folder paths from those file paths.
* Skips default ignores (standard docs, dotfiles, package manager files, vendored Figma skills) and any path matched by `.namelintignore`.
* Runs three rule checks (`notes/` naming, `.yml` extension, kebab-case) and groups the findings.
* Prints a human-readable report by default, or `{ violations: [...], styleGuides: [...] }` with `--json`.
* With `--fix`, renames `*.yml` to `*.yaml` in place. Other rules report only.
* Discovers and prints style-guide files (`*style-guide*`, `*-rules.md`, `AGENTS.md`, `repo-commit-style-guide.md`) as informational pointers - never affects the exit code.
The script reads files for discovery and only writes when `--fix` is passed; in that case, the only mutation is the `.yml` -> `.yaml` rename.
## Constraints
* Do not add new rules to this skill without confirming with the user. The skill enforces a fixed set of three rules by design.
* Do not edit the script's hardcoded default ignore list to silence a project-specific finding. Add a glob to `.namelintignore` instead, with a one-line `#` comment explaining why.
* Do not auto-rename for the kebab-case or `notes/` naming rules. Renames in those categories need human review for link breakage and content-dependent dates.
* Do not silence a violation by deleting the file. Confirm with the user first - the file may be intentional and just needs a rename.
* Before acting on a flagged finding, read the surrounding context. The checks are heuristic in the sense that a rule may legitimately not apply to a vendored asset or a generated artifact; in those cases, add an ignore entry rather than rename.From ahandsel/tokyo-geek, MIT.
More from ahandsel/tokyo-geek
- 0.603score
gh-sync-with-main
ahandsel
Bring the current git branch up to date with commits from the main branch, or check whether it needs syncing without changing it.
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
audit-gh-branches
ahandsel
Audit local and remote Git branches, classify each as safe to delete, deletion candidate, needs rebase, ice, or keep active, and extract unique work as dated…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
gh-pr-generator
ahandsel
Draft a structured pull request body from the branch diff and open the pull request with the gh CLI.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
pr-auditor
ahandsel
Blunt merge audit of a code branch or pull request written by an AI coding agent, treating its description, comments, and green checks as claims to verify…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
blog-content-auditor
ahandsel
Audit a blog post for content quality - verify facts are correct and up-to-date, check style-guide compliance, and confirm the content is logically sound and…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
blog-md-linter
ahandsel
Lint and polish Markdown files in this repo - run the repo auto-fixers, refresh any table of contents, convert inline and autolink links to reference-style…
SkillAFreshness: A★ 2Claude Code +9 - 0.558score
script-auditor
ahandsel
Audit and enforce the AGENTS.md "Scripts" guidelines for helper scripts in this repo - banning Python, preferring Node.js `.mjs` modules or zsh, requiring…
SkillBFreshness: B★ 2Claude Code +9 - 0.557score
audit-pr-comments
ahandsel
Audit a user-specified PR review file with extreme scrutiny, then annotate that same file in place with a verdict for every comment (keep, rewrite, remove…
SkillBFreshness: B★ 2Claude Code +9 - 0.521score
handoff
ahandsel
Compact the current conversation into a handoff document for another agent to pick up.
SkillBFreshness: B★ 2Claude Code +9 - 0.518score
grill-me
ahandsel
A relentless interview to sharpen a plan or design.
SkillBFreshness: B★ 2Claude Code +9 - 0.512score
gh-pr-reporter
ahandsel
Fetch all comments on a GitHub pull request (reviews, inline review comments, and general issue comments) and emit a single consolidated Markdown report.
SkillCFreshness: C★ 2Claude Code +9 - 0.507score
general-en-polisher
ahandsel
Polish one or more Markdown files so the repo core writing rules are enforced - straight quotes (not curly), no contractions, the Oxford comma, sentence case…
SkillCFreshness: C★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 1
- Last commit (this folder)
- Jun 9, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/ahandsel/tokyo-geek
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from ahandsel
- 0.603score
gh-sync-with-main
ahandsel
Bring the current git branch up to date with commits from the main branch, or check whether it needs syncing without changing it.
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
audit-gh-branches
ahandsel
Audit local and remote Git branches, classify each as safe to delete, deletion candidate, needs rebase, ice, or keep active, and extract unique work as dated…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
blog-md-linter
ahandsel
Lint and polish Markdown files in this repo - run the repo auto-fixers, refresh any table of contents, convert inline and autolink links to reference-style…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
blog-content-auditor
ahandsel
Audit a blog post for content quality - verify facts are correct and up-to-date, check style-guide compliance, and confirm the content is logically sound and…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
gh-pr-generator
ahandsel
Draft a structured pull request body from the branch diff and open the pull request with the gh CLI.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
pr-auditor
ahandsel
Blunt merge audit of a code branch or pull request written by an AI coding agent, treating its description, comments, and green checks as claims to verify…
SkillAFreshness: A★ 2Claude Code +9
Cite this page
file-folder-name-linter skill. Agent Mart. https://agentmart.dev/skills/ahandsel-file-folder-name-linter (last updated 2026-10-24)