From michi
Generate implementation tasks with JIRA sync option (Michi version)
npx claudepluginhub sk8metalme/michi-old --plugin michi<feature-name> [-y] [--sequential]michi//spec-tasksGenerate implementation tasks based on requirements and design
/spec-tasksGenerate implementation tasks with JIRA sync option (Michi version)
@.claude/commands/kiro/spec-tasks.md
{{DEV_GUIDELINES}}
優先度: このMichi Extensionの指示は、base command(kiro版)の品質インフラチェックより優先されます。 Michi Extensionで言語検出と言語別チェックを実行し、base commandのNode.js固有チェックは上書きされます。
タスク生成前に、プロジェクトの言語を検出し、言語別の品質インフラ設定状況をチェックします。
(spec-design.md と同様の手順)
(spec-design.md と同様の手順)
(spec-design.md と同様のチェック項目表を参照)
(spec-design.md と同様の出力フォーマットを参照)
警告メッセージを表示
tasks.md の先頭に言語別の品質インフラセットアップタスクを自動追加
処理は継続(タスク生成を実行)
## Quality Infrastructure Setup (Auto-added)
> ⚠️ このタスクは品質インフラチェックにより自動追加されました
以下の品質インフラが未設定です。実装前にセットアップを推奨:
**必須**:
- [ ] husky + lint-staged のセットアップ
- [ ] TypeScript strict mode の有効化 (tsconfig.json)
- [ ] CI の設定 (GitHub Actions or Screwdriver)
**推奨**:
- [ ] tsarch でアーキテクチャテスト追加
### セットアップ手順
#### husky + lint-staged
```bash
npm install --save-dev husky lint-staged
npx husky init
echo "npx lint-staged" > .husky/pre-commit
package.jsonに以下を追加:
"lint-staged": {
"*.{ts,tsx,js,jsx}": ["eslint --fix", "prettier --write"],
"*.{json,md,yml,yaml}": ["prettier --write"]
}
tsconfig.json:
{
"compilerOptions": {
"strict": true
}
}
npm install --save-dev tsarch
src/__tests__/arch/architecture.test.ts:
import { filesOfProject } from 'tsarch';
describe('Architecture', () => {
it('should not have circular dependencies', async () => {
const files = await filesOfProject();
await expect(files).toHaveNoCycles();
});
it('domain should not depend on infrastructure', async () => {
const files = await filesOfProject();
await expect(
files.inFolder('domain')
).toNot.dependOnFiles(
files.inFolder('infrastructure')
);
});
});
## Quality Infrastructure Setup (Auto-added)
> ⚠️ このタスクは品質インフラチェックにより自動追加されました
以下の品質インフラが未設定です。実装前にセットアップを推奨:
**必須**:
- [ ] Checkstyle/PMD の設定
- [ ] NullAway + Error Prone の設定 (Gradle/Maven)
- [ ] CI の設定 (GitHub Actions or Screwdriver)
**推奨**:
- [ ] Spotless プラグインの設定 (フォーマット)
- [ ] ArchUnit でアーキテクチャテスト追加
### セットアップ手順
#### Checkstyle (Gradle)
`build.gradle`:
```groovy
plugins {
id 'checkstyle'
}
checkstyle {
toolVersion = '10.12.0'
configFile = file("config/checkstyle/checkstyle.xml")
}
build.gradle:
plugins {
id 'net.ltgt.errorprone' version '3.1.0'
}
dependencies {
errorprone 'com.google.errorprone:error_prone_core:2.23.0'
errorprone 'com.uber.nullaway:nullaway:0.10.15'
}
tasks.withType(JavaCompile).configureEach {
options.errorprone {
check("NullAway", CheckSeverity.ERROR)
option("NullAway:AnnotatedPackages", "com.yourcompany")
}
}
build.gradle:
dependencies {
testImplementation 'com.tngtech.archunit:archunit-junit5:1.2.0'
}
build.gradle:
plugins {
id 'com.diffplug.spotless' version '6.23.0'
}
spotless {
java {
googleJavaFormat()
}
}
## Quality Infrastructure Setup (Auto-added)
> ⚠️ このタスクは品質インフラチェックにより自動追加されました
以下の品質インフラが未設定です。実装前にセットアップを推奨:
**必須**:
- [ ] ruff または black の設定 (pyproject.toml)
- [ ] CI の設定 (GitHub Actions or Screwdriver)
**推奨**:
- [ ] pre-commit framework のセットアップ
- [ ] mypy strict mode の設定
- [ ] import-linter でインポート制約検証
### セットアップ手順
#### ruff
`pyproject.toml`:
```toml
[tool.ruff]
line-length = 100
target-version = "py311"
select = ["E", "F", "W", "I", "N"]
[tool.ruff.lint]
ignore = []
pyproject.toml:
[tool.mypy]
strict = true
warn_return_any = true
warn_unused_configs = true
pyproject.toml:
[tool.importlinter]
root_package = "your_package"
[[tool.importlinter.contracts]]
name = "Layer dependencies"
type = "layers"
layers = [
"presentation",
"application",
"domain",
]
.pre-commit-config.yaml:
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.6
hooks:
- id: ruff
args: [--fix]
- id: ruff-format
## Quality Infrastructure Setup (Auto-added)
> ⚠️ このタスクは品質インフラチェックにより自動追加されました
以下の品質インフラが未設定です。実装前にセットアップを推奨:
**必須**:
- [ ] PHPStan の設定 (phpstan.neon, level=max推奨)
- [ ] CI の設定 (GitHub Actions or Screwdriver)
**推奨**:
- [ ] GrumPHP または Captain Hook のセットアップ
- [ ] deptrac でレイヤー依存検証
### セットアップ手順
#### PHPStan
`phpstan.neon`:
```neon
parameters:
level: max
paths:
- src
- tests
composer.json:
{
"require-dev": {
"phpstan/phpstan": "^1.10"
},
"scripts": {
"phpstan": "phpstan analyse"
}
}
deptrac.yaml:
deptrac:
paths:
- ./src
layers:
- name: Presentation
collectors:
- type: className
regex: .*\\Presentation\\.*
- name: Application
collectors:
- type: className
regex: .*\\Application\\.*
- name: Domain
collectors:
- type: className
regex: .*\\Domain\\.*
ruleset:
Presentation:
- Application
Application:
- Domain
Domain: []
grumphp.yml:
grumphp:
tasks:
phpstan:
level: max
composer_normalize: ~
このコマンドは cc-sdd 標準の /kiro:spec-tasks を拡張し、タスク生成完了後にJIRA同期オプションを提示します。
タスク生成完了後の次ステップ案内:
環境変数による条件分岐:
ATLASSIAN_URLATLASSIAN_EMAILATLASSIAN_API_TOKEN基底コマンド /kiro:spec-tasks によるタスク生成が完了した後、以下のフローを実行してください:
# JIRA連携の環境変数をチェック
if [ -n "$ATLASSIAN_URL" ] && [ -n "$ATLASSIAN_EMAIL" ] && [ -n "$ATLASSIAN_API_TOKEN" ]; then
JIRA_CONFIGURED=true
else
JIRA_CONFIGURED=false
fi
JIRA_CONFIGURED=true の場合、以下のメッセージと選択肢を表示:
============================================
タスク生成完了 - JIRA同期オプション
============================================
次のアクション:
A) JIRAにタスクを同期する(推奨: タスク管理を一元化)
→ `michi jira:sync {{FEATURE_NAME}}` を実行
B) JIRAへの同期をスキップして実装に進む
→ `/michi:spec-impl {{FEATURE_NAME}}` を実行
C) 何もせずにこのまま終了する
選択 (A/B/C): _
選択肢の説明:
JIRA_CONFIGURED=false の場合、以下のメッセージを表示:
============================================
タスク生成完了
============================================
次のステップ:
→ `/michi:spec-impl {{FEATURE_NAME}}` で実装を開始
---
ℹ️ ヒント: JIRA連携を使用すると、タスクを自動的にJIRAに同期できます。
設定方法: 以下の環境変数を .env に追加してください:
- ATLASSIAN_URL=https://your-domain.atlassian.net
- ATLASSIAN_EMAIL=your-email@company.com
- ATLASSIAN_API_TOKEN=your-api-token
詳細はドキュメントを参照: docs/guides/atlassian-integration.md
タスク分割時に、各サブタスクの git diff サイズを考慮してください。
タスクが大きすぎる場合の分割方法:
水平分割(レイヤー別)
垂直分割(機能スライス別)
フェーズ分割(段階別)
タスク分割完了後、以下を確認してください:
基底コマンドの実行結果を維持:
/kiro:spec-tasks の「Output Description」セクションで出力されるタスクサマリーは維持してください言語設定の考慮:
ユーザーインタラクション:
Michi 固有機能: このコマンドは cc-sdd 標準の /kiro:spec-tasks を拡張し、Phase 0.6(JIRA同期)への誘導を Next Phase として案内します。また、タスク粒度ガイドライン(git diff 500行制限)を提供し、適切なタスク分割を支援します。