Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
601 changes: 601 additions & 0 deletions .agents/skills/api-investigator/SKILL.md

Large diffs are not rendered by default.

232 changes: 232 additions & 0 deletions .agents/skills/code-quality-gate/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,232 @@
---
name: "code-quality-gate"
description: "\u30b3\u30fc\u30c9\u54c1\u8cea\u57fa\u6e96\u306e\u5b8c\u5168\u9075\u5b88\u3092\u4fdd\u8a3c\u3057\u307e\u3059\u3002\u30b3\u30df\u30c3\u30c8\u524d\u306e\u54c1\u8cea\u30c1\u30a7\u30c3\u30af\u3092\u81ea\u52d5\u5b9f\u884c\u3057\u3001\u30a8\u30e9\u30fc\u304c\u3042\u308b\u72b6\u614b\u3067\u306e\u30b3\u30df\u30c3\u30c8\u3092\u9632\u6b62\u3057\u307e\u3059\u3002"
---

# Code Quality Gate スキル

このスキルは、**Constitution Article 5: Code Quality Standards** を強制し、コード品質基準の完全遵守を保証します。

## 起動条件

以下の状況で自動起動します:

1. **コミット前**: `git commit` を実行する前の最終チェック
2. **PR作成前**: プルリクエストを作成する前
3. **品質問題検出時**: コードに品質問題がある可能性がある場合
4. **明示的な依頼**: ユーザーが品質チェックを依頼した場合

## 品質チェック項目

### 1. Ruff Linter

コードスタイルとベストプラクティスの検証

```bash
# エラーチェック
uv run ruff check .

# 自動修正
uv run ruff check --fix .
```

**チェック内容**:
- 未使用のインポート
- 未使用の変数
- コードスタイル違反
- セキュリティ問題
- パフォーマンス問題

### 2. Ruff Formatter

コードフォーマットの統一

```bash
# フォーマットチェック(差分表示)
uv run ruff format --check .

# 自動フォーマット
uv run ruff format .
```

**チェック内容**:
- インデント
- 行の長さ
- 空白の使用
- クォートの統一

### 3. Mypy Type Checker

静的型チェック

```bash
# 型チェック実行
uv run mypy .
```

**チェック内容**:
- 型アノテーションの存在(Article 9)
- 型の整合性
- `Any` 型の過剰使用
- `None` チェックの欠落

## 実行プロセス

### Quick Check(高速チェック)

```bash
# すべてのチェックを一度に実行
uv run ruff check . && uv run ruff format --check . && uv run mypy .
```

### Full Check with Auto-fix(自動修正付き完全チェック)

```bash
# 自動修正を適用して再チェック
uv run ruff check --fix . && uv run ruff format . && uv run mypy .
```

### Step-by-Step(段階的チェック)

問題を個別に解決したい場合:

```bash
# Step 1: Linter
uv run ruff check .

# Step 2: Formatter
uv run ruff format --check .

# Step 3: Type Checker
uv run mypy .
```

## 品質ゲート基準

### PASS条件

すべてのチェックがエラーなしで完了:

```
✓ ruff check: 0 errors
✓ ruff format: No changes needed
✓ mypy: Success: no issues found
```

### FAIL条件

いずれかのチェックでエラーが発生:

```
✗ ruff check: 3 errors found
✗ ruff format: 2 files would be reformatted
✗ mypy: Found 5 errors in 2 files
```

## エラー対応ガイド

### Ruff エラーの修正

```bash
# エラー一覧の確認
uv run ruff check .

# 自動修正可能なエラーを修正
uv run ruff check --fix .

# 手動修正が必要なエラーは個別対応
# エラーコードのドキュメントを参照
```

### Format エラーの修正

```bash
# 自動フォーマット適用
uv run ruff format .
```

### Mypy エラーの修正

| エラータイプ | 対応方法 |
|------------|---------|
| `missing return type` | 戻り値の型アノテーションを追加 |
| `missing argument type` | 引数の型アノテーションを追加 |
| `incompatible types` | 型の不整合を修正 |
| `None not allowed` | Optional型または None チェックを追加 |

**型アノテーション例**:

```python
# Before (エラー)
def greet(name):
return f"Hello, {name}"

# After (修正)
def greet(name: str) -> str:
return f"Hello, {name}"
```

## レポート形式

チェック完了後、以下の形式でレポート:

```
## Code Quality Gate Report

### チェック結果
| Tool | Status | Details |
|------|--------|---------|
| ruff check | ✓ PASS | 0 errors |
| ruff format | ✓ PASS | No changes |
| mypy | ✓ PASS | No issues |

### 総合判定: PASS

コミット/PR作成を進めてください。
```

または

```
## Code Quality Gate Report

### チェック結果
| Tool | Status | Details |
|------|--------|---------|
| ruff check | ✗ FAIL | 3 errors |
| ruff format | ✓ PASS | No changes |
| mypy | ✗ FAIL | 5 errors |

### 総合判定: FAIL

以下のエラーを修正してください:

1. ruff: E501 Line too long (src/auth.py:45)
2. ruff: F401 Unused import (src/utils.py:1)
3. mypy: Missing return type (src/auth.py:10)
...
```

## 注意事項

- **例外なし**: Article 5 は非交渉的原則
- **時間制約は理由にならない**: 品質を犠牲にしない
- **自動修正を活用**: 可能な限り自動修正を適用
- **ゲート通過必須**: PASSするまでコミット/PRは行わない

## 推奨ワークフロー

1. コードを書く
2. `uv run ruff check --fix . && uv run ruff format .` を実行
3. `uv run mypy .` を実行
4. エラーがあれば修正
5. すべてPASSしたらコミット

```bash
# 一連のコマンド
uv run ruff check --fix . && uv run ruff format . && uv run mypy . && git add . && git commit -m "message"
```

## Codex Tool Guidance

Claude `allowed-tools` metadata has been converted to guidance only. Use Codex file search, file editing, and shell commands as needed for this skill within the current session permissions.
155 changes: 155 additions & 0 deletions .agents/skills/constitution-checker/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
---
name: "constitution-checker"
description: "\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u61b2\u6cd5\u3078\u306e\u6e96\u62e0\u3092\u691c\u8a3c\u3057\u307e\u3059\u3002\u5b9f\u88c5\u5b8c\u4e86\u6642\u3084PR\u4f5c\u6210\u6642\u306b\u5168Article\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3001\u9055\u53cd\u304c\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002"
---

# Constitution Checker スキル

このスキルは、`.specify/memory/constitution.md` で定義されたプロジェクト憲法への準拠を検証します。

## 起動条件

以下の状況で起動します:

1. **実装完了時**: 機能実装が完了し、コミット前にチェックが必要な場合
2. **PR作成前**: プルリクエストを作成する前の最終チェック
3. **コードレビュー時**: 他者のコードをレビューする際
4. **明示的な依頼**: ユーザーが憲法準拠チェックを依頼した場合

## チェック項目

### 非交渉的原則(例外なし)

#### Article 1: Test-First Imperative

- [ ] テストファイルが実装ファイルより先に作成されているか
- [ ] テストファイルと実装ファイルが1:1で対応しているか
- [ ] テストが失敗状態(Red)から開始されているか

```bash
# テストファイルの存在確認
uv run pytest --collect-only
```

#### Article 5: Code Quality Standards

- [ ] ruff check がエラーなしで通過するか
- [ ] ruff format で差分が発生しないか
- [ ] mypy がエラーなしで通過するか

```bash
# 品質チェックの実行
uv run ruff check .
uv run ruff format --check .
uv run mypy .
```

#### Article 6: Data Accuracy Mandate

- [ ] マジックナンバーが直接埋め込まれていないか
- [ ] ハードコードされた文字列がないか
- [ ] 暗黙的なフォールバック(`= "default"` 等)がないか

```bash
# ハードコード検出(ヒューリスティック)
grep -rn "= 30\|= 60\|= 100" --include="*.py" src/
grep -rn '= "default"\|= "none"' --include="*.py" src/
```

#### Article 7: DRY Principle

- [ ] 同一ロジックが複数箇所に存在しないか
- [ ] 類似コードが3回以上繰り返されていないか

#### Article 9: Python Type Safety Mandate

- [ ] すべての関数に型アノテーションがあるか
- [ ] 戻り値に型アノテーションがあるか
- [ ] `Any` 型の使用が最小限か

```bash
# 型アノテーションなし関数の検出
grep -rn "def .*(" --include="*.py" src/ | grep -v ":"
```

#### Article 11: SpecKit Naming Convention

- [ ] ディレクトリ名が `<3桁番号>-<name>` 形式か
- [ ] ブランチ名が同一の命名規則に従っているか

### 推奨チェック項目

#### Article 2: Documentation Integrity

- [ ] 実装が仕様と一致しているか
- [ ] ドキュメントが最新の状態か

#### Article 3: MCP Protocol Compliance

- [ ] MCPツールにスキーマ定義があるか
- [ ] 入力がPydanticモデルで検証されているか
- [ ] エラーレスポンスが適切な形式か

#### Article 10: Python Docstring Standards

- [ ] 公開関数にdocstringがあるか
- [ ] Google-style形式を使用しているか

## 実行プロセス

### 1. 自動チェック実行

```bash
# 全品質チェック
uv run ruff check --fix . && uv run ruff format . && uv run mypy .

# テスト実行
uv run pytest
```

### 2. 手動チェック項目の確認

自動化できない項目を目視確認:
- コードの重複
- 仕様との整合性
- 適切な抽象化

### 3. レポート生成

チェック結果を以下の形式で報告:

```
## Constitution Compliance Report

### 非交渉的原則
- [✓] Article 1: Test-First Imperative
- [✓] Article 5: Code Quality Standards
- [✓] Article 6: Data Accuracy Mandate
- [✓] Article 7: DRY Principle
- [✓] Article 9: Python Type Safety Mandate
- [✓] Article 11: SpecKit Naming Convention

### 推奨項目
- [✓] Article 2: Documentation Integrity
- [✓] Article 3: MCP Protocol Compliance
- [✓] Article 10: Python Docstring Standards

### 総合判定: PASS / FAIL
```

## 違反検出時の対応

1. **作業を停止**: 違反が解消されるまで次工程に進まない
2. **違反内容を報告**: 具体的な違反箇所と修正方法を提示
3. **修正を支援**: 必要に応じて修正コードを提案
4. **再チェック**: 修正後に再度チェックを実行

## 注意事項

- 非交渉的原則(Article 1, 5, 6, 7, 9, 11)は例外なく遵守が必要
- 時間制約、緊急性を理由とした例外は認められない
- すべてのチェック項目がPASSするまでコミット・PRは行わない

## Codex Tool Guidance

Claude `allowed-tools` metadata has been converted to guidance only. Use Codex file search, file editing, and shell commands as needed for this skill within the current session permissions.
Loading