Initial commit
This commit is contained in:
143
commands/setup-ts.md
Normal file
143
commands/setup-ts.md
Normal file
@@ -0,0 +1,143 @@
|
||||
# Setup TypeScript
|
||||
|
||||
TypeScript プロジェクトの初期セットアップを支援してください。
|
||||
以下の条件に従い、品質を担保するために必要なセットアップを設計し、ユーザに確認・合意しながら進めてください。
|
||||
|
||||
# 要件
|
||||
|
||||
- TypeScript プロジェクトにおいて、形式的に担保可能な品質管理のセットアップを行いたい。
|
||||
- 下記のものは提案に含め、ユーザの希望があればそちらを優先する
|
||||
|
||||
## typecheck
|
||||
|
||||
- 型チェックを実行するコマンドを用意
|
||||
- `bun run typecheck`
|
||||
- 最も厳しい tsconfig の定義
|
||||
|
||||
```tsconfig.json
|
||||
{
|
||||
"compilerOptions": {
|
||||
"strict": true,
|
||||
"allowUnusedLabels": false,
|
||||
"allowUnreachableCode": false,
|
||||
"exactOptionalPropertyTypes": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noImplicitOverride": true,
|
||||
"noImplicitReturns": true,
|
||||
"noPropertyAccessFromIndexSignature": true,
|
||||
"noUncheckedIndexedAccess": true,
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true,
|
||||
|
||||
"isolatedModules": true,
|
||||
|
||||
"checkJs": true,
|
||||
|
||||
"esModuleInterop": true,
|
||||
"skipLibCheck": true
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
## test
|
||||
|
||||
- vitest などのテストフレームワークを導入する
|
||||
- テストを実行するコマンドを用意
|
||||
|
||||
```package.json
|
||||
"scripts": {
|
||||
"test": "vitest"
|
||||
}
|
||||
```
|
||||
|
||||
## lint
|
||||
|
||||
- 厳しめの ESLint 設定を定義
|
||||
- チェックと修正を同時にできるコマンドを用意
|
||||
|
||||
```package.json
|
||||
"scripts": {
|
||||
"lint": "eslint . --fix"
|
||||
}
|
||||
```
|
||||
|
||||
## format
|
||||
|
||||
- prettier のルールを定義
|
||||
- チェックと修正を同時にできるコマンドを用意
|
||||
|
||||
```package.json
|
||||
"scripts": {
|
||||
"format": "prettier --write ."
|
||||
}
|
||||
```
|
||||
|
||||
## MCP
|
||||
|
||||
- 必要であれば MCP を導入する
|
||||
- .mcp.json を用意する
|
||||
|
||||
## Claude Code Hooks
|
||||
|
||||
```.claude/settings.json
|
||||
{
|
||||
"hooks": {
|
||||
"PostToolUse": [
|
||||
{
|
||||
"matcher": "Write|Edit|MultiEdit",
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"command": "bun run typecheck"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## ci
|
||||
|
||||
- CI 設定を提案する
|
||||
- 基本的に github actions を使う
|
||||
|
||||
# 進め方
|
||||
|
||||
1. 上記の要件を加味して、構成案をユーザに提案し、合意を取ること。
|
||||
|
||||
2. 合意が取れたら、セットアップ用のコマンド一覧を提示する。
|
||||
bun を使っている場合の例:
|
||||
|
||||
- `bun run typecheck`
|
||||
- `bun run lint`
|
||||
- `bun run format`
|
||||
- `bun run test`
|
||||
|
||||
3. 上記のコマンドを実行できるように実装を進める
|
||||
|
||||
- 必要なパッケージをインストール
|
||||
- 設定ファイルを作成
|
||||
- tsconfig.json
|
||||
- .eslintrc.js
|
||||
- vitest.config.ts
|
||||
- .prettierrc
|
||||
- ci.yml
|
||||
- etc.
|
||||
|
||||
- package.json の scripts にコマンドを追加
|
||||
下記は例である。使用しているツールによってコマンドが異なる。
|
||||
|
||||
```package.json
|
||||
"scripts": {
|
||||
"typecheck": "tsc --noEmit",
|
||||
"lint": "eslint . --ext .ts,.tsx --fix",
|
||||
"format": "prettier --write .",
|
||||
"test": "vitest",
|
||||
"check": "bun run typecheck && bun run lint && bun run format && bun run test"
|
||||
}
|
||||
```
|
||||
|
||||
- 実行できることを確認する
|
||||
|
||||
4. もしユーザーが一部の設定をカスタマイズしたい場合は、その意図を確認し、最適な代替案を提案すること。
|
||||
Reference in New Issue
Block a user