mirror of
https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools.git
synced 2025-12-16 21:45:14 +00:00
Created comprehensive skill collection covering all aspects of modern software development with production-ready patterns, best practices, and detailed documentation. ## Skills Organized by Domain ### Code Quality & Architecture (2 skills) - advanced-code-refactoring: SOLID principles, design patterns, refactoring patterns - code-review: Automated/manual review, security, performance, maintainability ### API & Integration (2 skills) - api-integration-expert: REST/GraphQL/WebSocket with auth, retry, caching - graphql-schema-design: Schema design, resolvers, optimization, subscriptions ### Database & Data (3 skills) - database-optimization: SQL/NoSQL tuning, indexing, query optimization - data-pipeline: ETL/ELT with Airflow, Spark, dbt - caching-strategies: Redis, Memcached, CDN, invalidation patterns ### Security & Authentication (2 skills) - security-audit: OWASP Top 10, vulnerability scanning, security hardening - auth-implementation: OAuth2, JWT, session management, SSO ### Testing & Quality (2 skills) - test-automation: Unit/integration/E2E tests, TDD/BDD, coverage - performance-profiling: CPU/memory profiling, Core Web Vitals optimization ### DevOps & Infrastructure (3 skills) - docker-kubernetes: Containerization, orchestration, production deployments - ci-cd-pipeline: GitHub Actions, automated testing, deployment strategies - logging-monitoring: Observability with Datadog, Prometheus, Grafana, ELK ### Frontend Development (3 skills) - frontend-accessibility: WCAG 2.1 compliance, ARIA, keyboard navigation - ui-component-library: Design systems with React/Vue, Storybook - mobile-responsive: Responsive design, mobile-first, PWAs ### Backend & Scaling (2 skills) - backend-scaling: Load balancing, sharding, microservices, horizontal scaling - real-time-systems: WebSockets, SSE, WebRTC for real-time features ### ML & AI (1 skill) - ml-model-integration: Model serving, inference optimization, monitoring ### Development Tools (2 skills) - git-workflow-optimizer: Git workflows, branching strategies, conflict resolution - dependency-management: Package updates, security patches, version conflicts ### Code Maintenance (3 skills) - error-handling: Robust error patterns, logging, graceful degradation - documentation-generator: API docs, README, technical specifications - migration-tools: Database/framework migrations with zero downtime ## Key Features Each skill includes: - YAML frontmatter with name, description, allowed tools - Clear purpose and when to use - Comprehensive capabilities overview - Production-ready code examples - Best practices and patterns - Success criteria - Tool-specific configurations ## Highlights - 25 comprehensive skills covering full development lifecycle - Production-ready patterns and examples - Security-first approach throughout - Performance optimization built-in - Comprehensive testing strategies - DevOps automation and infrastructure as code - Modern frontend with accessibility focus - Scalable backend architectures - Data engineering and ML integration - Advanced Git workflows ## File Structure claude_skills/ ├── README.md (comprehensive documentation) ├── advanced-code-refactoring/ │ ├── SKILL.md (main skill definition) │ ├── reference.md (design patterns, SOLID principles) │ └── examples.md (refactoring examples) ├── api-integration-expert/ │ └── SKILL.md (REST/GraphQL/WebSocket integration) ├── [23 more skills...] Total: 25 skills + comprehensive README + supporting documentation ## Usage Personal skills: cp -r claude_skills/* ~/.claude/skills/ Project skills: cp -r claude_skills/* .claude/skills/ Skills automatically activate based on context and description triggers.
356 lines
8.7 KiB
Markdown
356 lines
8.7 KiB
Markdown
# Advanced Code Refactoring Examples
|
|
|
|
## Example 1: Applying Strategy Pattern
|
|
|
|
### Before - Switch Statement Anti-Pattern
|
|
```typescript
|
|
class PaymentProcessor {
|
|
processPayment(amount: number, method: string) {
|
|
switch(method) {
|
|
case 'credit_card':
|
|
// 50 lines of credit card logic
|
|
break;
|
|
case 'paypal':
|
|
// 40 lines of PayPal logic
|
|
break;
|
|
case 'crypto':
|
|
// 60 lines of crypto logic
|
|
break;
|
|
default:
|
|
throw new Error('Unknown payment method');
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### After - Strategy Pattern
|
|
```typescript
|
|
// Strategy interface
|
|
interface PaymentStrategy {
|
|
process(amount: number): Promise<PaymentResult>;
|
|
}
|
|
|
|
// Concrete strategies
|
|
class CreditCardStrategy implements PaymentStrategy {
|
|
async process(amount: number): Promise<PaymentResult> {
|
|
// 50 lines of credit card logic
|
|
}
|
|
}
|
|
|
|
class PayPalStrategy implements PaymentStrategy {
|
|
async process(amount: number): Promise<PaymentResult> {
|
|
// 40 lines of PayPal logic
|
|
}
|
|
}
|
|
|
|
class CryptoStrategy implements PaymentStrategy {
|
|
async process(amount: number): Promise<PaymentResult> {
|
|
// 60 lines of crypto logic
|
|
}
|
|
}
|
|
|
|
// Context
|
|
class PaymentProcessor {
|
|
private strategies = new Map<string, PaymentStrategy>([
|
|
['credit_card', new CreditCardStrategy()],
|
|
['paypal', new PayPalStrategy()],
|
|
['crypto', new CryptoStrategy()],
|
|
]);
|
|
|
|
async processPayment(amount: number, method: string) {
|
|
const strategy = this.strategies.get(method);
|
|
if (!strategy) throw new Error('Unknown payment method');
|
|
return strategy.process(amount);
|
|
}
|
|
}
|
|
```
|
|
|
|
## Example 2: Dependency Injection for Testability
|
|
|
|
### Before - Hard Dependencies
|
|
```typescript
|
|
class UserService {
|
|
async createUser(data: UserData) {
|
|
const db = new DatabaseConnection(); // Hard dependency
|
|
const emailer = new EmailService(); // Hard dependency
|
|
|
|
const user = await db.insert('users', data);
|
|
await emailer.sendWelcome(user.email);
|
|
return user;
|
|
}
|
|
}
|
|
|
|
// Testing is difficult - requires real DB and email service
|
|
```
|
|
|
|
### After - Dependency Injection
|
|
```typescript
|
|
interface Database {
|
|
insert(table: string, data: any): Promise<any>;
|
|
}
|
|
|
|
interface Emailer {
|
|
sendWelcome(email: string): Promise<void>;
|
|
}
|
|
|
|
class UserService {
|
|
constructor(
|
|
private db: Database,
|
|
private emailer: Emailer
|
|
) {}
|
|
|
|
async createUser(data: UserData) {
|
|
const user = await this.db.insert('users', data);
|
|
await this.emailer.sendWelcome(user.email);
|
|
return user;
|
|
}
|
|
}
|
|
|
|
// Testing is easy - inject mocks
|
|
const mockDb = { insert: jest.fn() };
|
|
const mockEmailer = { sendWelcome: jest.fn() };
|
|
const service = new UserService(mockDb, mockEmailer);
|
|
```
|
|
|
|
## Example 3: Repository Pattern
|
|
|
|
### Before - Data Access Scattered
|
|
```typescript
|
|
class OrderController {
|
|
async getOrder(id: string) {
|
|
const result = await db.query('SELECT * FROM orders WHERE id = ?', [id]);
|
|
return result[0];
|
|
}
|
|
|
|
async createOrder(data: OrderData) {
|
|
return db.query('INSERT INTO orders...', [data]);
|
|
}
|
|
}
|
|
|
|
class ReportController {
|
|
async getOrderStats() {
|
|
const result = await db.query('SELECT COUNT(*) FROM orders...');
|
|
return result;
|
|
}
|
|
}
|
|
```
|
|
|
|
### After - Repository Pattern
|
|
```typescript
|
|
interface OrderRepository {
|
|
findById(id: string): Promise<Order | null>;
|
|
create(data: OrderData): Promise<Order>;
|
|
findByStatus(status: string): Promise<Order[]>;
|
|
count(): Promise<number>;
|
|
}
|
|
|
|
class SQLOrderRepository implements OrderRepository {
|
|
constructor(private db: Database) {}
|
|
|
|
async findById(id: string): Promise<Order | null> {
|
|
const result = await this.db.query('SELECT * FROM orders WHERE id = ?', [id]);
|
|
return result[0] || null;
|
|
}
|
|
|
|
async create(data: OrderData): Promise<Order> {
|
|
return this.db.query('INSERT INTO orders...', [data]);
|
|
}
|
|
|
|
async findByStatus(status: string): Promise<Order[]> {
|
|
return this.db.query('SELECT * FROM orders WHERE status = ?', [status]);
|
|
}
|
|
|
|
async count(): Promise<number> {
|
|
const result = await this.db.query('SELECT COUNT(*) as count FROM orders');
|
|
return result[0].count;
|
|
}
|
|
}
|
|
|
|
class OrderController {
|
|
constructor(private orderRepo: OrderRepository) {}
|
|
|
|
async getOrder(id: string) {
|
|
return this.orderRepo.findById(id);
|
|
}
|
|
|
|
async createOrder(data: OrderData) {
|
|
return this.orderRepo.create(data);
|
|
}
|
|
}
|
|
|
|
class ReportController {
|
|
constructor(private orderRepo: OrderRepository) {}
|
|
|
|
async getOrderStats() {
|
|
return this.orderRepo.count();
|
|
}
|
|
}
|
|
```
|
|
|
|
## Example 4: Extract Method Refactoring
|
|
|
|
### Before - Long Method
|
|
```typescript
|
|
function processUserRegistration(userData: any) {
|
|
// Validation - 30 lines
|
|
if (!userData.email) throw new Error('Email required');
|
|
if (!userData.email.includes('@')) throw new Error('Invalid email');
|
|
if (!userData.password) throw new Error('Password required');
|
|
if (userData.password.length < 8) throw new Error('Password too short');
|
|
if (!/[A-Z]/.test(userData.password)) throw new Error('Password needs uppercase');
|
|
// ... 25 more lines of validation
|
|
|
|
// Password hashing - 15 lines
|
|
const salt = crypto.randomBytes(16);
|
|
const hash = crypto.pbkdf2Sync(userData.password, salt, 10000, 64, 'sha512');
|
|
// ... more hashing logic
|
|
|
|
// Database insertion - 20 lines
|
|
const id = uuid.v4();
|
|
const created = new Date();
|
|
// ... database logic
|
|
|
|
// Email sending - 25 lines
|
|
const template = loadTemplate('welcome');
|
|
const rendered = renderTemplate(template, userData);
|
|
// ... email logic
|
|
}
|
|
```
|
|
|
|
### After - Extracted Methods
|
|
```typescript
|
|
function processUserRegistration(userData: UserData) {
|
|
validateUserData(userData);
|
|
const hashedPassword = hashPassword(userData.password);
|
|
const user = createUserInDatabase({ ...userData, password: hashedPassword });
|
|
sendWelcomeEmail(user);
|
|
return user;
|
|
}
|
|
|
|
function validateUserData(userData: UserData): void {
|
|
validateEmail(userData.email);
|
|
validatePassword(userData.password);
|
|
validateUsername(userData.username);
|
|
}
|
|
|
|
function validateEmail(email: string): void {
|
|
if (!email) throw new ValidationError('Email required');
|
|
if (!email.includes('@')) throw new ValidationError('Invalid email');
|
|
// ... more validation
|
|
}
|
|
|
|
function validatePassword(password: string): void {
|
|
if (!password) throw new ValidationError('Password required');
|
|
if (password.length < 8) throw new ValidationError('Password too short');
|
|
if (!/[A-Z]/.test(password)) throw new ValidationError('Needs uppercase');
|
|
// ... more validation
|
|
}
|
|
|
|
function hashPassword(password: string): string {
|
|
const salt = crypto.randomBytes(16);
|
|
return crypto.pbkdf2Sync(password, salt, 10000, 64, 'sha512').toString('hex');
|
|
}
|
|
|
|
function createUserInDatabase(userData: UserData): User {
|
|
const id = uuid.v4();
|
|
const created = new Date();
|
|
// ... database logic
|
|
return user;
|
|
}
|
|
|
|
function sendWelcomeEmail(user: User): void {
|
|
const template = loadTemplate('welcome');
|
|
const rendered = renderTemplate(template, user);
|
|
// ... email logic
|
|
}
|
|
```
|
|
|
|
## Example 5: Replace Conditional with Polymorphism
|
|
|
|
### Before - Type Checking
|
|
```typescript
|
|
class Animal {
|
|
type: 'dog' | 'cat' | 'bird';
|
|
|
|
makeSound() {
|
|
if (this.type === 'dog') return 'Woof';
|
|
if (this.type === 'cat') return 'Meow';
|
|
if (this.type === 'bird') return 'Tweet';
|
|
}
|
|
|
|
move() {
|
|
if (this.type === 'dog') return 'runs';
|
|
if (this.type === 'cat') return 'walks';
|
|
if (this.type === 'bird') return 'flies';
|
|
}
|
|
}
|
|
```
|
|
|
|
### After - Polymorphism
|
|
```typescript
|
|
abstract class Animal {
|
|
abstract makeSound(): string;
|
|
abstract move(): string;
|
|
}
|
|
|
|
class Dog extends Animal {
|
|
makeSound() { return 'Woof'; }
|
|
move() { return 'runs'; }
|
|
}
|
|
|
|
class Cat extends Animal {
|
|
makeSound() { return 'Meow'; }
|
|
move() { return 'walks'; }
|
|
}
|
|
|
|
class Bird extends Animal {
|
|
makeSound() { return 'Tweet'; }
|
|
move() { return 'flies'; }
|
|
}
|
|
```
|
|
|
|
## Metrics Improvement Examples
|
|
|
|
### Cyclomatic Complexity Reduction
|
|
```typescript
|
|
// Before: Complexity = 12
|
|
function getDiscount(user, amount) {
|
|
if (user.isPremium) {
|
|
if (amount > 1000) {
|
|
if (user.yearsActive > 5) return 0.25;
|
|
else if (user.yearsActive > 2) return 0.20;
|
|
else return 0.15;
|
|
} else if (amount > 500) {
|
|
return 0.10;
|
|
} else {
|
|
return 0.05;
|
|
}
|
|
} else {
|
|
if (amount > 500) return 0.05;
|
|
else return 0;
|
|
}
|
|
}
|
|
|
|
// After: Complexity = 3 (per function)
|
|
function getDiscount(user, amount) {
|
|
if (user.isPremium) return getPremiumDiscount(user, amount);
|
|
return getStandardDiscount(amount);
|
|
}
|
|
|
|
function getPremiumDiscount(user, amount) {
|
|
if (amount <= 500) return 0.05;
|
|
if (amount <= 1000) return 0.10;
|
|
return getLargeOrderDiscount(user.yearsActive);
|
|
}
|
|
|
|
function getLargeOrderDiscount(yearsActive) {
|
|
if (yearsActive > 5) return 0.25;
|
|
if (yearsActive > 2) return 0.20;
|
|
return 0.15;
|
|
}
|
|
|
|
function getStandardDiscount(amount) {
|
|
return amount > 500 ? 0.05 : 0;
|
|
}
|
|
```
|