feat: Complete fleet — 94 skills across 10+ domains
Pulled ALL skills from 15 source repositories: - anthropics/skills: 16 (docs, design, MCP, testing) - obra/superpowers: 14 (TDD, debugging, agents, planning) - coreyhaines31/marketingskills: 25 (marketing, CRO, SEO, growth) - better-auth/skills: 5 (auth patterns) - vercel-labs/agent-skills: 5 (React, design, Vercel) - antfu/skills: 16 (Vue, Vite, Vitest, pnpm, Turborepo) - Plus 13 individual skills from various repos Mosaic Stack is not limited to coding — the Orchestrator and subagents serve coding, business, design, marketing, writing, logistics, analysis, and more. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
130
skills/antfu/SKILL.md
Normal file
130
skills/antfu/SKILL.md
Normal file
@@ -0,0 +1,130 @@
|
||||
---
|
||||
name: antfu
|
||||
description: Anthony Fu's opinionated tooling and conventions for JavaScript/TypeScript projects. Use when setting up new projects, configuring ESLint/Prettier alternatives, monorepos, library publishing, or when the user mentions Anthony Fu's preferences.
|
||||
metadata:
|
||||
author: Anthony Fu
|
||||
version: "2026.02.03"
|
||||
---
|
||||
|
||||
## 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](references/antfu-eslint-config.md)
|
||||
|
||||
### 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](references/antfu-eslint-config.md) |
|
||||
| Project Setup | .gitignore, GitHub Actions, VS Code extensions | [setting-up](references/setting-up.md) |
|
||||
| App Development | Vue/Nuxt/UnoCSS conventions and patterns | [app-development](references/app-development.md) |
|
||||
| Library Development | tsdown bundling, pure ESM publishing | [library-development](references/library-development.md) |
|
||||
| Monorepo | pnpm workspaces, centralized alias, Turborepo | [monorepo](references/monorepo.md) |
|
||||
Reference in New Issue
Block a user