skills/oq/SKILL.md
oQ's opinionated tooling and conventions for JavaScript/TypeScript projects. Based on Anthony Fu's style with personal customizations for UnoCSS, ESLint, pnpm catalog, and automated releases. Use when setting up new projects with these preferences.
npx skillsauth add 0froq/skills oqInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
4 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
types.ts or types/*.tsconstants.ts file// @env node
// @env browser
type or interface declarationsfoo.ts → foo.test.ts (same directory)describe/it API (not test)toMatchSnapshot for complex outputstoMatchFileSnapshot with explicit path for language-specific snapshots| 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) |
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "bundler",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true
}
}
// eslint.config.ts
import antfu from '@antfu/eslint-config'
import nuxt from './.nuxt/eslint.config.mjs'
export default antfu(
{
unocss: true,
pnpm: true,
typescript: true,
vue: true,
rules: {
'vue/max-attributes-per-line': ['error', {
singleline: { max: 1 },
multiline: { max: 1 },
}],
'unused-imports/no-unused-imports': 'off',
},
formatters: {
css: true,
html: true,
markdown: 'dprint',
},
},
)
.append(nuxt())
For detailed configuration options: oq-eslint-config
{
"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"
}
}
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.
Additional tools:
pnpm-workspace-utils for catalog managementnip for interactive package management| Topic | Description | Reference | |-------|-------------|-----------| | ESLint Config | Custom @antfu/eslint-config setup with Vue rules and formatters | oq-eslint-config | | UnoCSS Config | Custom UnoCSS setup with fonts, icons, and prefixed attributify | oq-unocss-config | | Project Setup | .gitignore, GitHub Actions, VS Code extensions | setting-up | | Release Workflow | Automated releases with changelogithub | release-workflow | | pnpm Catalog | Strict pnpm catalog configuration and tools | pnpm-catalog | | App Development | Vue/Nuxt/UnoCSS conventions and patterns | app-development | | Monorepo | pnpm workspaces, centralized alias, Turborepo | monorepo | | Library Development | tsdown bundling, pure ESM publishing | library-development |
tools
在周初帮助用户规划新的一周。结合长期目标、月度 backlog、上周复盘及状态信号,通过自然对话确定本周主题和任务优先级。
tools
帮助用户在每天开始时规划一天。以自然对话方式了解用户今天的意图,结合 dashboard 中的上下文(周计划、昨日遗留、backlog、状态信号),生成个性化的日计划。
tools
在周末帮助用户进行周复盘。聚合本周每日的完成情况,分析计划与执行的偏差,总结经验教训,并为下周提供交接建议。
tools
在每天结束时帮助用户复盘。回顾今日计划的执行情况,分析完成与未完成的原因,生成日复盘记录,并为明天提供过渡建议。