Back to skills
SKILL.md
Collection
ASecurityEnforce test quality and prevent implementation shortcuts when writing or modifying code. Use when implementing features, fixing bugs, or refactoring code. Prevents test tampering (FP-1) and implementation shortcuts (FP-2).
- 24 stars
- 0 votes
- 0 copies
- 2 views
- Added September 8, 2026
Security analysis
100/100Pro scans all 21 files and shows the line behind each finding
npx -y skills add mattnigh/skills_collection --skill collection --agent claude-codeAre you the author of Collection?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/mattnigh-collection-8a8acce1)---
name: code-quality-enforcer
description: Enforce test quality and prevent implementation shortcuts when writing or modifying code. Use when implementing features, fixing bugs, or refactoring code. Prevents test tampering (FP-1) and implementation shortcuts (FP-2).
---
# Code Quality Enforcer
**Version**: 1.0.0
**対策対象**: FP-1 (テスト改ざん), FP-2 (実装ショートカット)
**優先度**: 最高
**出典**: vibration-diagnosis-prototype失敗事例、obra/superpowers、びーぐるPDF
## The Iron Laws
### Law 1: TDD鉄則 (obra/superpowers)
> NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
### Law 2: Fix Forward, Not Backward
> When tests fail, fix the implementation, never weaken the tests
### Law 3: No Shortcuts
> Every feature requires: error handling, input validation, edge case handling
---
## Workflow
### Phase 1: Pre-Implementation (必須)
**1. Test-First Development**:
```
□ Write a failing test for the feature
□ Run the test (verify it fails for the right reason)
□ Document expected behavior in test
```
**禁止事項**:
- ❌ テストなしで実装を始める
- ❌ 「後でテストを書く」と先送りする
- ❌ 既存のテストを変更してから実装を始める
### Phase 2: Implementation (段階的)
**1. Minimal Implementation**:
```
□ Write the minimum code to pass the test
□ Include error handling
□ Include input validation
□ Run the test (verify it passes)
```
**2. Required Components** (すべて必須):
- **Error Handling**: try-catch, エラーメッセージ、ログ
- **Input Validation**: 型チェック、範囲チェック、null/undefined処理
- **Edge Cases**: 空配列、ゼロ値、境界値の処理
**禁止事項**:
- ❌ エラーハンドリングを省略する
- ❌ 入力バリデーションを省略する
- ❌ "Happy Path" だけ実装する
### Phase 3: Test Failure Response (厳格)
**テストが失敗した場合**:
**Step 1: 診断フェーズ (10分)**:
```
□ エラーログを完全に読む
□ スタックトレースを確認
□ 実際のファイルを確認 (推測禁止)
□ 全ての問題をリストアップ
```
**Step 2: 修正フェーズ**:
```
□ 実装コードを修正 (テストは変更しない)
□ 全ての問題を一度に修正
□ コミット前に再テスト
```
**絶対禁止**:
- ❌ テストの期待値を実装に合わせて変更する
- ❌ アサーションを削除・コメントアウトする
- ❌ テストケースを無効化する
- ❌ テストの厳格さを下げる(toEqual → toContain等)
**例外**: テストそのものにバグがある場合のみ、以下の手順で修正可能:
1. テストのバグであることを証明(実装は仕様通り)
2. 修正前後でテストの厳格さが同等以上であることを確認
3. コメントに修正理由を記録
### Phase 4: Completion Check (完了基準)
**Definition of Done**:
```
✅ 全テストがパス
✅ エラーハンドリングが実装済み
✅ 入力バリデーションが実装済み
✅ エッジケースが処理済み
✅ コードが仕様を完全に満たす
→ 完了
```
**未完了の例**:
- ❌ テストがパスしたが、エラーハンドリングなし
- ❌ "ほとんど動く" 状態
- ❌ 一部のテストだけパス
---
## Prohibited Patterns (アンチパターン)
### Anti-Pattern 1: Test Tampering (テスト改ざん)
**症状**:
- テストが失敗 → テストを変更 → パス
**具体例** (vibration-diagnosis-prototype):
```python
# ❌ 絶対禁止
# 変更前: 厳格なテスト
assert result == expected_value
# 変更後: 緩めたテスト(改ざん)
assert result is not None # 期待値チェックを削除
```
**正しい対応**:
```python
# ✅ 正しい: テストはそのまま、実装を修正
# テスト(変更なし)
assert result == expected_value
# 実装を修正して期待値を返すようにする
def calculate():
# バグ修正して expected_value を正しく返す
return expected_value
```
### Anti-Pattern 2: Implementation Shortcut (実装ショートカット)
**症状**:
- 「簡易実装で後で直す」
- エラーハンドリング省略
- バリデーション省略
**具体例** (vibration-diagnosis-prototype):
```python
# ❌ 絶対禁止: ショートカット実装
def process_data(data):
return data.process() # エラーハンドリングなし
# ✅ 正しい: 完全な実装
def process_data(data):
# Input validation
if data is None:
raise ValueError("Data cannot be None")
# Error handling
try:
result = data.process()
except ProcessingError as e:
logger.error(f"Processing failed: {e}")
raise
# Output validation
if result is None:
raise ValueError("Processing returned None")
return result
```
### Anti-Pattern 3: "後で修正" (Technical Debt Accumulation)
**症状**:
- TODO コメント多数
- 既知のバグを放置
- "一部動けばOK" 思考
**具体例**:
```python
# ❌ 絶対禁止
def important_function(data):
# TODO: Add error handling later
# TODO: Add validation later
return data.process()
```
**正しい対応**:
```python
# ✅ 正しい: 完了基準を満たしてからコミット
def important_function(data):
# All validation and error handling implemented
if not isinstance(data, DataType):
raise TypeError(f"Expected DataType, got {type(data)}")
try:
result = data.process()
except Exception as e:
logger.error(f"Processing failed: {e}")
raise ProcessingError(f"Failed to process: {e}") from e
return result
```
---
## Multi-layer Defense (3層防御)
このSkillは3層防御システムのLayer 2として機能します:
**Layer 1: Rules** (弱)
- `docs/rules/test.md` - テスト品質ルール
- `docs/rules/implementation.md` - 実装品質ルール
- LLMが無視する可能性あり
**Layer 2: Skills** (中) ← **このSkill**
- **code-quality-enforcer**: コンテキスト起動で強制
- タスク開始時に自動適用
- より強い誘導力
**Layer 3: Hooks** (強)
- `quality_check.sh`: 実行前/後ブロック
- テスト改ざん検出
- 最も強力な防御
---
## Invocation Examples
### Example 1: 新機能実装時
**User**: "ユーザー認証機能を実装してください"
**Skill Response**:
```
Code Quality Enforcer が起動しました。
Phase 1: Test-First Development
まず、認証機能のテストを書きます。
1. どのような認証方式ですか?(JWT, Session, OAuth等)
2. 失敗時の期待動作は?(エラーメッセージ、ステータスコード)
3. 入力バリデーション要件は?(パスワード強度、メール形式等)
テストが完成し、失敗することを確認してから実装を開始します。
```
### Example 2: バグ修正時
**User**: "テストが失敗しています。修正してください"
**Skill Response**:
```
Code Quality Enforcer が起動しました。
Phase 3: Test Failure Response を適用します。
Step 1: 診断フェーズ
□ エラーログを読んでいます...
□ スタックトレースを確認...
□ 実際のファイルを確認...
問題を特定しました:
- 実装の○○行目で期待値と異なる値を返している
Step 2: 修正フェーズ
テストは変更せず、実装コードを修正します。
【重要】テストの期待値を変更することは絶対禁止です。
```
### Example 3: リファクタリング時
**User**: "このコードをリファクタリングしてください"
**Skill Response**:
```
Code Quality Enforcer が起動しました。
リファクタリング前チェック:
□ 既存テストがすべてパスしていますか?
□ テストカバレッジは十分ですか?
リファクタリング中:
□ テストを先に実行(Green状態確認)
□ 小さな変更を加える
□ テストを再実行(Green維持確認)
□ コミット
リファクタリング後:
✅ 全テストがパス
✅ 機能的には変更なし
✅ コード品質が向上
```
---
## Best Practices
### 1. Test Quality (テスト品質)
**Good Tests**:
- 単一の責任を持つ(1 test = 1 assertion concept)
- 独立している(テスト順序に依存しない)
- 高速である(ミリ秒単位)
- 決定的である(常に同じ結果)
**Bad Tests**:
- 複数の概念をテスト
- 他のテストに依存
- 外部サービスに依存(モック使用推奨)
- ランダム要素がある
### 2. Error Messages (エラーメッセージ)
**Good**:
```python
raise ValueError(f"Invalid email format: '{email}'. Expected format: user@domain.com")
```
**Bad**:
```python
raise ValueError("Invalid input")
```
### 3. Validation Patterns (バリデーションパターン)
**Input Validation**:
```python
# Type check
if not isinstance(value, ExpectedType):
raise TypeError(f"Expected {ExpectedType}, got {type(value)}")
# Range check
if value < MIN or value > MAX:
raise ValueError(f"Value {value} out of range [{MIN}, {MAX}]")
# Null check
if value is None:
raise ValueError("Value cannot be None")
```
---
## Related Resources
### Internal
- `docs/rules/test.md` - テスト品質ルール詳細
- `docs/rules/implementation.md` - 実装品質ルール詳細
- `test-process-requirements.md` - テストプロセス要件
### External
- obra/superpowers - TDD Skill実装例
- びーぐるPDF - テスト品質のベストプラクティス
- WORK_PROCESS_PROTOCOLS - 証拠ベース思考
### Phase 3成果物
- `step3.5-failure-case-analysis.md` - FP-1, FP-2詳細分析
- `CRITICAL_FAILURE_REPORT_20251226.md` - vibration-diagnosis-prototype失敗事例
---
## Completion Criteria
このSkillは以下の条件で完了とします:
```yaml
✅ Test-First: テストを先に書いた
✅ All Tests Pass: 全テストがパス
✅ Error Handling: エラーハンドリング実装済み
✅ Input Validation: 入力バリデーション実装済み
✅ Edge Cases: エッジケース処理済み
✅ No Shortcuts: 実装ショートカットなし
✅ No Tampering: テスト改ざんなし
```
**不完全な状態での完了宣言は禁止**
---
**注意**: このSkillは自動的に起動されます。無効化したい場合は `.claude/settings.local.json` から削除してください。
Files in this skill
- 0Chan-smc__claude-code-workflow-lab__claude__skills__frontend-dev-guidelines__SKILL.md
- 17hz__nextjs-template__claude__skills__example-skill__SKILL.md
- 1ambda__dataops-platform__claude__skills__context-synthesis__SKILL.md
- 1natsu172__dotfiles__claude__skills__git-analysis__SKILL.md
- 1natsu172__dotfiles__claude__skills__github-pr-best-practices__SKILL.md
- 23Maestro__prospect-pipeline__claude__skills__npid-fastapi-skill.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-code-javascript__SKILL.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-code-python__SKILL.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-expression-syntax__SKILL.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-mcp-tools-expert__SKILL.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-node-configuration__SKILL.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-workflow-patterns__SKILL.md
- 3x-Projetos__claude-memory-framework__claude__skills__scientist__SKILL.md
- 5MinFutures__futures-arena__claude__skills__migration-tracker__SKILL.md
- 5MinFutures__futures-arena__claude__skills__planning-guidelines__SKILL.md
- 92Bilal26__TaskPilotAI__claude__skills__assessment-builder__SKILL.md
- 92Bilal26__TaskPilotAI__claude__skills__book-scaffolding__SKILL.md
- 92Bilal26__TaskPilotAI__claude__skills__code-validation-sandbox__SKILL.md
- 92Bilal26__TaskPilotAI__claude__skills__exercise-designer__SKILL.md
- 92Bilal26__TaskPilotAI__claude__skills__learning-objectives__SKILL.md
Attribution
Comments
Loading comments…