standardizing-dev-workflow
タスク実行をTaskfileで一元管理する標準開発フローを構築・監査。taskfile、aqua、lefthook、開発ワークフロー標準化、lint、format、git hooks、モノレポのセットアップや既存プロジェクトの監査時に使用。
When & Why to Use This Skill
This Claude skill automates the construction and auditing of standardized development workflows using Taskfile, aqua, and lefthook. It streamlines project environments by unifying task execution, managing CLI tool versions, and enforcing consistent Git hooks, ensuring high-quality code through automated linting and formatting across both single-repo and monorepo structures.
Use Cases
- Case 1: Initializing a new project with aqua for CLI tool versioning and Taskfile for cross-platform task management to replace fragmented Makefiles or npm scripts.
- Case 2: Implementing high-performance Git hooks using lefthook to automate pre-commit formatting and pre-push linting, preventing low-quality code from reaching the repository.
- Case 3: Auditing legacy repositories to identify non-standard workflows and migrating manual commands into a centralized Taskfile structure for better maintainability.
- Case 4: Managing complex monorepo environments by orchestrating multiple Taskfiles across backend, frontend, and shared packages with unified command namespaces.
- Case 5: Synchronizing local development and CI/CD pipelines by ensuring GitHub Actions or other CI tools execute the exact same tasks defined in the project's Taskfile.
| name | standardizing-dev-workflow |
|---|---|
| description | タスク実行をTaskfileで一元管理する標準開発フローを構築・監査。taskfile、aqua、lefthook、開発ワークフロー標準化、lint、format、git hooks、モノレポのセットアップや既存プロジェクトの監査時に使用。 |
Standardizing Dev Workflow
Quick Start
aqua経由でtaskとlefthookを導入し、標準開発フローを構築する。
# 1. aqua初期化(なければ)
aqua init
# 2. task, lefthookを追加
aqua g -i go-task/task evilmartians/lefthook
# 3. インストール
aqua install
# 4. Taskfile初期化
task --init
# 5. lefthook初期化
lefthook install
Key Concepts
- aqua: CLIツールのバージョン管理。プロジェクトごとにツールを固定
- task: YAMLベースのタスクランナー。Makefileの代替
- lefthook: 高速なGitフックマネージャー。pre-commit/pre-pushを管理
- includes: モノレポで複数Taskfileを連携
- 標準フロー: format(pre-commit)→ lint(pre-push)
Workflows
Workflow 1: 初期セットアップ
# aqua.yml
registries:
- type: standard
ref: v4.250.0
packages:
- name: go-task/task@v3
- name: evilmartians/lefthook@v1
# Taskfile.yml
version: '3'
tasks:
format:
desc: Format code
cmds:
- prettier --write .
lint:
desc: Lint code
cmds:
- eslint .
hooks:install:
desc: Install git hooks
cmds:
- lefthook install
# lefthook.yml
pre-commit:
parallel: true
commands:
format:
run: task format
stage_fixed: true
pre-push:
commands:
lint:
run: task lint
Workflow 2: タスク追加
# Taskfile.yml に追加
tasks:
build:
desc: Build the project
cmds:
- go build -o bin/app .
test:
desc: Run tests
cmds:
- go test ./...
dev:
desc: Run development server
deps: [build]
cmds:
- ./bin/app serve
Workflow 3: モノレポ対応
# ルートのTaskfile.yml
version: '3'
includes:
backend:
taskfile: ./backend/Taskfile.yml
dir: ./backend
frontend:
taskfile: ./frontend/Taskfile.yml
dir: ./frontend
shared:
taskfile: ./shared/Taskfile.yml
dir: ./shared
optional: true
tasks:
all:build:
desc: Build all projects
cmds:
- task: backend:build
- task: frontend:build
all:lint:
desc: Lint all projects
cmds:
- task: backend:lint
- task: frontend:lint
呼び出し例:
task backend:build- backendのbuildタスクtask frontend:dev- frontendのdevタスクtask all:build- 全プロジェクトのビルド
Workflow 4: 既存リポジトリの監査
以下をチェックし、ガイドライン逸脱があれば修正提案する:
監査チェックリスト:
- aqua.ymlが存在するか
- Taskfile.ymlが存在するか
- lefthook.ymlが存在するか
- format/lintタスクが定義されているか
- README/CLAUDE.mdに直接コマンド(npm run, python -m等)がないか
- package.json scriptsがtask経由になっているか
- Makefileがtask経由になっているか
- .github/workflows内がtask経由になっているか
Examples
Example 1: README.mdの直接コマンドを修正
Before:
## Development
npm run lint
npm run format
npm test
After:
## Development
task lint
task format
task test
Example 2: package.jsonからTaskfileへ移行
Before (package.json):
{
"scripts": {
"lint": "eslint .",
"format": "prettier --write .",
"test": "jest"
}
}
After (Taskfile.yml):
version: '3'
tasks:
lint:
desc: Lint code
cmds:
- npx eslint .
format:
desc: Format code
cmds:
- npx prettier --write .
test:
desc: Run tests
cmds:
- npx jest
Example 3: CI/CDをtask経由に変更
Before (.github/workflows/ci.yml):
- run: npm run lint
- run: npm test
After:
- run: aqua install
- run: task lint
- run: task test
includeオプション一覧
| オプション | 説明 |
|---|---|
taskfile |
サブTaskfileのパス |
dir |
タスク実行時の作業ディレクトリ(必須) |
optional: true |
Taskfileがなくてもエラーにしない |
aliases |
namespaceの別名(例: [api]) |
vars |
サブTaskfileへの変数渡し |
flatten: true |
namespaceなしで呼び出し可能 |
Error Handling
taskコマンドが見つからない:
export PATH="${AQUA_ROOT_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/aquaproj-aqua}/bin:$PATH"
aqua install
lefthookが動作しない:
lefthook install # hookを再インストール
Taskfile構文エラー:
task --list # エラーがあれば表示される