Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.
Quelldateien prüfen
Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
ANTI-PATTERN - Example showing violations of self-containment (DO NOT COPY)
user-invocable
false
disable-model-invocation
true
category
framework
toolchain
python
tags
["anti-pattern","bad-example","violations"]
version
1.0.0
author
claude-mpm-skills
updated
"2025-11-30T00:00:00.000Z"
progressive_disclosure
{"entry_point":{"summary":"ANTI-PATTERN - Example showing violations of self-containment (DO NOT COPY)","when_to_use":"When working with bad-example-skill or related functionality.","quick_start":"1. Review the core concepts below. 2. Apply patterns to your use case. 3. Follow best practices for implementation."}}
⚠️ BAD EXAMPLE - Interdependent Skill (Anti-Pattern)
WARNING: This is an ANTI-PATTERN example showing what NOT to do.
## Related Documentation
For setup instructions, see [../setup-skill/SKILL.md](../setup-skill/SKILL.md)
For testing patterns, see:
- [../../testing/pytest-patterns/](../../testing/pytest-patterns/)
- [../../testing/test-utils/](../../testing/test-utils/)
Database integration: [../../data/database-skill/](../../data/database-skill/)
Why This is Wrong:
❌ Uses relative paths (../, ../../)
❌ Assumes hierarchical directory structure
❌ Breaks in flat deployment (~/.claude/skills/)
❌ Links break when skill deployed standalone
Correct Approach:
## Complementary Skills
Consider these related skills (if deployed):
-**setup-skill**: Installation and configuration patterns
-**pytest-patterns**: Testing framework and fixtures
-**database-skill**: Database integration patterns
*Note: All skills are independently deployable.*
❌ VIOLATION #2: Missing Essential Content
## Testing
This skill uses pytest for testing.
**See pytest-patterns skill for all testing code.**
To write tests for this framework, install pytest-patterns skill
and refer to its documentation.
See pytest-patterns skill for comprehensive patterns.
---
## ❌ VIOLATION #3: Hard Skill Dependencies
```markdown
## Prerequisites
**Required Skills**:
1. **setup-skill** - Must be installed first
2. **database-skill** - Required for database operations
3. **pytest-patterns** - Required for testing
Install all required skills before using this skill:
```bash
claude-code skills add setup-skill database-skill pytest-patterns
This skill will not work without these dependencies.
**Why This is Wrong**:
- ❌ Lists other skills as "Required"
- ❌ Skill doesn't work standalone
- ❌ Creates deployment coupling
- ❌ Violates self-containment principle
**Correct Approach**:
```markdown
## Prerequisites
**External Dependencies**:
```bash
pip install example-framework pytest sqlalchemy
database-skill: ORM patterns and optimization (optional)
pytest-patterns: Testing enhancements (optional)
This skill is fully functional independently.
---
## ❌ VIOLATION #4: Cross-Skill Imports
```python
"""
Bad example - importing from other skills.
"""
# ❌ DON'T DO THIS
from skills.database_skill import get_db_session
from skills.pytest_patterns import fixture_factory
from ..shared.utils import validate_input
# Using imported patterns
@app.route("/users")
def create_user(data):
# Requires database-skill to be installed
with get_db_session() as session:
user = User(**data)
session.add(user)
return user.to_dict()
Why This is Wrong:
❌ Imports from other skills
❌ Code won't run without other skills
❌ Creates runtime dependencies
❌ Violates Python module boundaries
Correct Approach:
"""
Good example - self-contained implementation.
"""from contextlib import contextmanager
# ✅ Include pattern directly in this skill@contextmanagerdefget_db_session():
"""Database session context manager (self-contained)."""
db = SessionLocal()
try:
yield db
db.commit()
except Exception:
db.rollback()
raisefinally:
db.close()
@app.route("/users")defcreate_user(data):
# Works independentlywith get_db_session() as session:
user = User(**data)
session.add(user)
return user.to_dict()
**Navigate to parent directories for related skills**:
- `../` - Other framework skills
- `../../testing/` - Testing skills
- `../../data/` - Database skills
**All skills in `toolchains/python/frameworks/` are related to this skill.**
Why This is Wrong:
❌ Assumes specific directory structure
❌ Navigation instructions using relative paths
❌ Won't work in flat deployment
❌ Confuses deployment location with skill relationships
Correct Approach:
## Related Skills**Complementary Python Framework Skills** (informational):
-**fastapi-patterns**: Web framework patterns
-**django-patterns**: Full-stack framework patterns
-**flask-patterns**: Micro-framework patterns
**Testing Skills**:
-**pytest-patterns**: Testing framework
-**test-driven-development**: TDD workflow
*Note: Skills are independently deployable. Directory structure may vary.*
❌ VIOLATION #6: Incomplete Examples
# Database setup# (See database-skill for complete implementation)classUser(db.Model):
# ... see database-skill for model definition ...pass# Testing# (See pytest-patterns for test examples)deftest_user():
# ... see pytest-patterns for fixtures ...pass# Deployment# (See deployment-skill for production setup)
Why This is Wrong:
❌ Examples are fragments, not complete code
❌ "See other skill" instead of showing code
❌ Users can't copy-paste and run
❌ Skill provides no actual implementation guidance
Correct Approach:
# Complete database model (self-contained)from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
classUser(Base):
"""User model - complete implementation."""
__tablename__ = "users"id = Column(Integer, primary_key=True)
username = Column(String(80), unique=True, nullable=False)
email = Column(String(120), unique=True, nullable=False)
defto_dict(self):
return {
"id": self.id,
"username": self.username,
"email": self.email
}
# Complete test example (self-contained)import pytest
from example_framework.testing import TestClient
@pytest.fixturedefclient():
return TestClient(app)
deftest_create_user(client):
"""Test user creation - complete working test."""
response = client.post("/users", json={
"username": "testuser",
"email": "test@example.com"
})
assert response.status_code == 201assert response.json()["username"] == "testuser"# Complete deployment example (self-contained)import os
classProductionConfig:
DEBUG = False
SECRET_KEY = os.getenv("SECRET_KEY")
DATABASE_URL = os.getenv("DATABASE_URL")
app = App(config=ProductionConfig())
# Run with: gunicorn -w 4 app:app
❌ VIOLATION #7: References Directory with Cross-Skill Paths
# Testing Patterns
For complete testing patterns, see:
- [Pytest Patterns](../../pytest-patterns/SKILL.md)
- [TDD Workflow](../../../universal/testing/test-driven-development/)
Refer to those skills for all testing code.
Why This is Wrong:
❌ References directory has cross-skill paths
❌ Progressive disclosure leads outside skill
❌ Breaks in flat deployment
❌ References aren't self-contained
Correct Approach:
good-example-skill/
├── SKILL.md
├── metadata.json
└── references/
├── advanced-patterns.md # All about THIS skill
├── api-reference.md # THIS skill's API
└── examples.md # THIS skill's examples
references/advanced-patterns.md should contain:
# Advanced Testing Patterns**Advanced pytest fixtures** (this skill):
```python
# Parametrized test fixture
@pytest.fixture(params=["value1", "value2"])
def data_variants(request):
return request.param
def test_with_variants(data_variants):
# Test with multiple data variants
assert process(data_variants) is not None
Further enhancements (if pytest-patterns deployed):
Fixture factories
Custom markers
Plugin integration
See pytest-patterns skill for comprehensive advanced patterns.
---
## ❌ VIOLATION #8: metadata.json with Skill Dependencies
```json
{
"name": "bad-example-skill",
"version": "1.0.0",
"requires": [
"setup-skill",
"database-skill",
"pytest-patterns"
],
"self_contained": false,
"dependencies": ["example-framework"],
"notes": [
"This skill requires setup-skill to be installed first",
"Must deploy with database-skill for database operations",
"Won't work without pytest-patterns for testing"
]
}
Why This is Wrong:
❌ Lists other skills in "requires" field
❌ "self_contained": false
❌ Notes say skill won't work without others
❌ Creates deployment coupling
Correct Approach:
{"name":"good-example-skill","version":"1.0.0","requires":[],"self_contained":true,"dependencies":["example-framework","pytest","sqlalchemy"],"complementary_skills":["setup-skill","database-skill","pytest-patterns"],"notes":["This skill is fully self-contained and works independently","All essential patterns are inlined","Complementary skills provide optional enhancements"]}
# Before (wrong):## Testing
See pytest-patterns skill for all testing code.
# After (correct):## Testing (Self-Contained)**Essential pattern** (inlined):
[20-50 lines of actual testing code]
**Advanced patterns** (if pytest-patterns deployed):
- Feature list
*See pytest-patterns for comprehensive guide.*
Step 3: Remove Hard Dependencies
# Before (wrong):**Required Skills**: pytest-patterns, database-skill
# After (correct):**Complementary Skills** (optional):
- pytest-patterns: Testing enhancements
- database-skill: ORM optimization
Step 4: Make Imports Self-Contained
# Before (wrong):from skills.database import get_db_session
# After (correct):@contextmanagerdefget_db_session():
"""Inlined pattern."""# Implementation here
Step 5: Update metadata.json
// Before (wrong):{"requires":["other-skill"],"self_contained":false}// After (correct):{"requires":[],"self_contained":true,"complementary_skills":["other-skill"]}
Verification
After fixing, verify self-containment:
# Should return empty (no violations)
grep -r "\.\\./" skill-name/
grep -r "from skills\." skill-name/
grep -i "requires.*skill" skill-name/SKILL.md
# Isolation testcp -r skill-name /tmp/skill-test/
cd /tmp/skill-test/skill-name
cat SKILL.md # Should be complete and useful# Metadata checkcat metadata.json | jq '.requires'# Should be [] or external packages only