用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/pluginagentmarketplace/custom-plugin-software-design --skill solid-principles命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | solid-principles |
| description | Apply and validate SOLID principles in object-oriented design |
| sasmp_version | 1.3.0 |
| bonded_agent | 01-design-principles |
| bond_type | PRIMARY_BOND |
| version | 2.0.0 |
| updated | 2025-12-30 |
Atomic skill for applying and validating SOLID principles
skill_id: solid-principles
responsibility: Single - SOLID principle analysis and application
atomic: true
idempotent: true
interface SkillParams {
// Required
code: string; // Code to analyze
language: string; // Programming language
// Optional
principles?: ('SRP' | 'OCP' | 'LSP' | 'ISP' | 'DIP')[]; // Focus areas
strictness?: 'relaxed' | 'normal' | 'strict'; // Validation level
include_examples?: boolean; // Show fixes
}
interface SkillResult {
violations: Violation[];
compliance_score: number; // 0-100
suggestions: Suggestion[];
metrics: PrincipleMetrics;
}
input_validation:
code:
min_length: 10
max_length: 50000
required: true
language:
allowed: [typescript, javascript, python, java, csharp, go, ruby]
required: true
principles:
default: ['SRP', 'OCP', 'LSP', 'ISP', 'DIP']
output_validation:
compliance_score:
min: 0
max: 100
violations:
max_count: 50
retry_config:
max_attempts: 3
backoff:
type: exponential
initial_delay_ms: 1000
max_delay_ms: 10000
multiplier: 2
retryable_errors:
- TIMEOUT
- RATE_LIMIT
- CONTEXT_OVERFLOW
non_retryable_errors:
- INVALID_INPUT
- UNSUPPORTED_LANGUAGE
logging:
level: INFO
events:
- skill_invoked
- analysis_started
- violation_found
- analysis_completed
- error_occurred
metrics:
- name: analysis_duration_ms
type: histogram
- name: violations_per_principle
type: counter
- name: compliance_score
type: gauge
tracing:
span_name: solid_principles_analysis
attributes:
- language
- code_size
- principle_count
definition: "A class should have only one reason to change"
detection:
indicators:
- Multiple unrelated methods
- Mixed abstraction levels
- Too many dependencies
thresholds:
methods_per_class: 10
dependencies: 5
lines_of_code: 200
definition: "Open for extension, closed for modification"
detection:
indicators:
- Switch statements on type
- Instanceof/typeof checks
- Frequent modifications for new features
patterns:
- Strategy pattern opportunity
- Template method opportunity
definition: "Subtypes must be substitutable for base types"
detection:
indicators:
- Overridden methods with different behavior
- Empty method implementations
- Type checking in polymorphic code
violations:
- Precondition strengthening
- Postcondition weakening
- Invariant breaking
definition: "Clients should not depend on interfaces they don't use"
detection:
indicators:
- Large interfaces (>5 methods)
- Unused method implementations
- Throw NotImplemented patterns
thresholds:
max_interface_methods: 5
definition: "Depend on abstractions, not concretions"
detection:
indicators:
- Direct instantiation with 'new'
- Concrete class parameters
- No interface/abstract usage
patterns:
- Constructor injection missing
- Service locator anti-pattern
// Input
{
code: "class UserService { ... }",
language: "typescript"
}
// Output
{
violations: [
{
principle: "SRP",
location: "UserService:1",
severity: "high",
message: "Class has 5 different responsibilities",
suggestion: "Extract to: AuthService, ProfileService, NotificationService"
}
],
compliance_score: 65,
suggestions: [...],
metrics: { srp: 60, ocp: 80, lsp: 100, isp: 70, dip: 45 }
}
// Input
{
code: "interface Repository { ... }",
language: "typescript",
principles: ["ISP"],
strictness: "strict"
}
describe('SolidPrinciplesSkill', () => {
describe('analyze', () => {
it('should detect SRP violation in god class', async () => {
const code = `
class UserManager {
saveUser() {}
sendEmail() {}
generateReport() {}
validateInput() {}
logActivity() {}
}
`;
const result = await skill.analyze({ code, language: 'typescript' });
expect(result.violations).toContainEqual(
expect.objectContaining({ principle: 'SRP' })
);
expect(result.compliance_score).toBeLessThan(70);
});
it('should pass for well-designed code', async () => {
const code = `
class UserRepository {
save(user: User): void {}
find(id: string): User {}
delete(id: string): void {}
}
`;
const result = await skill.analyze({ code, language: 'typescript' });
expect(result.violations).toHaveLength(0);
expect(result.compliance_score).toBeGreaterThan();
});
(, () => {
(
skill.({ : , : })
)..();
});
});
});
errors:
INVALID_INPUT:
code: 400
message: "Invalid input parameters"
recovery: "Check parameter schema"
UNSUPPORTED_LANGUAGE:
code: 400
message: "Language not supported"
recovery: "Use supported language"
ANALYSIS_TIMEOUT:
code: 408
message: "Analysis exceeded time limit"
recovery: "Reduce code size or complexity"
CONTEXT_OVERFLOW:
code: 413
message: "Code too large for analysis"
recovery: "Split into smaller modules"
requires:
- code_parser
- ast_analyzer
emits:
- solid_analysis_completed
- violation_detected
consumed_by:
- 01-design-principles (bonded agent)
- 04-refactoring (for smell detection)