Skip to content

Antfu Coding Practices

Verified

Vue.js core covering reactivity, components, and composition API

By Anthony Fu 2,000 stars v1.0 Updated 2026-03-15
$ Add to .claude/skills/

About This Skill

Coding Practices

Code Organization

  • Single responsibility: Each source file should have a clear, focused scope/purpose
  • Split large files: Break files when they become large or handle too many concerns
  • Type separation: Always separate types and interfaces into `types.ts` or `types/*.ts`
  • Constants extraction: Move constants to a dedicated `constants.ts` file

Runtime Environment

  • Prefer isomorphic code: Write runtime-agnostic code that works in Node, browser, and workers whenever possible
  • Clear runtime indicators: When code is environment-specific, add a comment at the top of the file:

```ts // @env node // @env browser ```

TypeScript

  • Explicit return types: Declare return types explicitly when possible
  • Avoid complex inline types: Extract complex types into dedicated `type` or `interface` declarations

Comments

  • Avoid unnecessary comments: Code should be self-explanatory
  • Explain "why" not "how": Comments should describe the reasoning or intent, not what the code does

Testing (Vitest)

  • Test files: `foo.ts` → `foo.test.ts` (same directory)
  • Use `describe`/`it` API (not `test`)
  • Use `toMatchSnapshot` for complex outputs
  • Use `toMatchFileSnapshot` with explicit path for language-specific snapshots

---

Tooling Choices

@antfu/ni Commands

| Command | Description | |---------|-------------| | `ni` | Install dependencies | | `ni <pkg>` / `ni -D <pkg>` | Add dependency / dev dependency | | `nr <script>` | Run script | | `nu` | Upgrade dependencies | | `nun <pkg>` | Uninstall dependency | | `nci` | Clean install (`pnpm i --frozen-lockfile`) | | `nlx <pkg>` | Execute package (`npx`) |

TypeScript Config

```json { "compilerOptions": { "target": "ESNext", "module": "ESNext", "moduleResolution": "bundler", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "resolveJsonModule": true, "isolatedModules": true, "noEmit": true } } ```

ESLint Setup

```js // eslint.config.mjs import antfu from '@antfu/eslint-config'

export default antfu() ```

When completing tasks, run `pnpm run lint --fix` to format the code and fix coding style.

For detailed configuration options: antfu-eslint-config

Git Hooks

```json { "simple-git-hooks": { "pre-commit": "pnpm i --frozen-lockfile --ignore-scripts --offline && npx lint-staged" }, "lint-staged": { "*": "eslint --fix" }, "scripts": { "prepare": "npx simple-git-hooks" } } ```

pnpm Catalogs

Use named catalogs in `pnpm-workspace.yaml` for version management:

| Catalog | Purpose | |---------|---------| | `prod` | Production dependencies | | `inlined` | Bundler-inlined dependencies | | `dev` | Dev tools (linter, bundler, testing) | | `frontend` | Frontend libraries |

Avoid the default catalog. Catalog names can be adjusted per project needs.

---

References

| Topic | Description | Reference | |-------|-------------|-----------| | ESLint Config | Framework support, formatters, rule overrides, VS Code settings | antfu-eslint-config | | Project Setup | .gitignore, GitHub Actions, VS Code extensions | setting-up | | App Development | Vue/Nuxt/UnoCSS conventions and patterns | app-development | | Library Development | tsdown bundling, pure ESM publishing | library-development | | Monorepo | pnpm workspaces, centralized alias, Turborepo | monorepo |

Use Cases

  • Apply Anthony Fu's coding practices for clean file organization and single-responsibility modules
  • Structure Vue.js projects with proper type separation, composable patterns, and component architecture
  • Enforce consistent code style conventions across a Vue/TypeScript codebase
  • Refactor existing Vue projects to follow modern best practices with Composition API patterns
  • Set up new Vue.js projects with optimal directory structure, configs, and tooling conventions

Pros & Cons

Pros

  • +Based on Anthony Fu's proven practices — widely respected in the Vue.js community
  • +Multi-platform support (Claude Code, Codex, Gemini, Cursor) for broad IDE compatibility
  • +Focus on practical patterns (file splitting, type separation, composables) that improve real codebases

Cons

  • -Opinionated conventions may conflict with existing team coding standards
  • -Vue.js specific — not transferable to React, Angular, or Svelte projects
  • -Lightweight content — more of a coding guideline reference than an interactive development assistant

FAQ

What does Antfu Coding Practices do?
Vue.js core covering reactivity, components, and composition API
What platforms support Antfu Coding Practices?
Antfu Coding Practices is available on Claude Code, OpenAI Codex CLI, Gemini CLI, Cursor.
What are the use cases for Antfu Coding Practices?
Apply Anthony Fu's coding practices for clean file organization and single-responsibility modules. Structure Vue.js projects with proper type separation, composable patterns, and component architecture. Enforce consistent code style conventions across a Vue/TypeScript codebase.

100+ free AI tools

Writing, PDF, image, and developer tools — all in your browser.

Next Step

Use the skill detail page to evaluate fit and install steps. For a direct browser workflow, move into a focused tool route instead of staying in broader support surfaces.