SOC 직업 분류 기준
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/tomevault-io/skills-registry --skill solid명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
| Use when this capability is needed.
> Use when this capability is needed.
Review architecture and API design for the vfs-s3 project. Use when the user mentions @architect, asks to review an issue's design, discuss module boundaries, API shape, or architectural decisions for vfs-s3. Also trigger when the user wants to create an ADR (Architecture Decision Record) or evaluate a technical approach for the project. Intended for dispatch from Codex automation or Claude routines; GitHub trigger phrase: @vfs-s3-bot please prepare design doc Use when this capability is needed.
| name | solid |
| description | | Use when this capability is needed. |
Five principles for building software that is easy to understand, extend, and maintain. They reduce coupling, increase cohesion, and make code testable.
Reference these principles when:
| Principle | One-Liner | Red Flag |
|---|---|---|
| SRP | One reason to change | "This class handles X and Y and Z" |
| OCP | Add, don't modify | Growing if/else or switch chains for types |
| LSP | Subtypes are substitutable | Type-checking or special-casing in calling code |
| ISP | Small, focused interfaces | Empty method implementations or throw new Error("Not implemented") |
| DIP | Depend on abstractions | new ConcreteClass() inside business logic |
See references/PRINCIPLES.md for detailed explanations and TypeScript examples.
Ask these questions for every class and module:
| Question | Violated Principle |
|---|---|
| Does this class have multiple reasons to change? | SRP |
| Do I need to modify existing code to add a new variant? | OCP |
| Does calling code need type-checks or special cases for subtypes? | LSP |
| Are implementors forced to stub out unused methods? | ISP |
| Does high-level logic directly instantiate infrastructure? | DIP |
| Scale | SRP | OCP | LSP | ISP | DIP |
|---|---|---|---|---|---|
| Function | Does one thing | — | — | — | Takes abstractions as params |
| Class | One reason to change | Extend via composition | Subtypes honor contracts | Implements only what it uses | Constructor injection |
| Module | One bounded context | Plugin architecture | Interchangeable implementations | Thin public API | Depends inward |
| Service | Single domain | New features = new services | API contract stability | Minimal API surface | Abstractions at boundaries |
| Anti-Pattern | Violated Principles | Fix |
|---|---|---|
| God class doing everything | SRP | Extract focused classes |
switch on type across codebase | OCP, LSP | Replace with polymorphism |
| Subclass that throws "not supported" | LSP, ISP | Redesign hierarchy, split interface |
| Fat interface with 20 methods | ISP | Split into role-based interfaces |
| Business logic importing DB driver | DIP | Inject repository interface |
| Service creating its own dependencies | DIP | Constructor injection |
Converted and distributed by TomeVault — claim your Tome and manage your conversions.