
Vanity Engineering Review
Run a structured vanity-engineering pass on code or PRs to flag premature abstractions and YAGNI violations before they spread.
Overview
Vanity Engineering Review is an agent skill most often used in Ship (also Operate iterate, Build backend) that scans code for vanity-engineering patterns—premature abstraction, empty plugin systems, and unused generics—w
Install
npx skills add https://github.com/bencium/bencium-marketplace --skill vanity-engineering-reviewWhat is this skill?
- Scan patterns across categories such as premature abstraction (single-impl interfaces, plugin systems with no plugins, g
- Each pattern documents what to look for, why it is vanity, and a simpler alternative
- Severity ladder V1–V3 for escalating systemic over-engineering vs isolated cases
- Concrete signals for plugin registration with zero real third-party plugins
- Designed for human or agent reviewers during PR and refactor critique—not functional or security testing
- Severity tiers V1, V2, and V3 for escalating vanity patterns
- Category 1 Premature Abstraction with multiple concrete sub-patterns
Adoption & trust: 1.1k installs on skills.sh; 273 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You are reviewing code that looks “enterprise-ready” but only ever has one implementation, and you need a fast checklist to separate real flexibility from expensive indirection.
Who is it for?
Solo builders or small teams doing architecture or PR review who want YAGNI-focused vocabulary instead of vague “over-engineered” feedback.
Skip if: Security scanning, dependency CVE checks, or proving behavior with tests—use dedicated security and QA skills instead.
When should I use this skill?
During code review when scanning for unnecessary abstraction, plugin systems without real plugins, or generics used with only one concrete type.
What do I get? / Deliverables
You get a severity-scored list of vanity patterns with what to simplify next, so the next refactor or PR trims abstraction instead of adding another interface file.
- Pattern-matched vanity findings with severity
- Per-pattern simpler alternatives for remediation
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Canonical shelf is Ship because the skill is written as an explicit review ritual with severity tiers, matching pre-merge and release-quality review workflows. Review subphase is where pattern catalogs for indirection, plugin theater, and generic overload are meant to be applied to diffs and architecture choices.
Where it fits
Score a PR that adds an interface with a single implementation as V1 vanity before merge.
Plan a simplification pass on a homemade plugin loader that only hosts in-repo modules.
Challenge a new generic repository layer when only one database adapter exists.
How it compares
Use as a maintainability pattern catalog during review, not instead of linters, test suites, or security audit skills.
Common Questions / FAQ
Who is vanity-engineering-review for?
Indie and solo developers who review their own or agent-generated PRs and want concrete signals for unnecessary abstraction, plugin scaffolding, and generic complexity.
When should I use vanity-engineering-review?
During Ship review before merge, when refactoring in Operate iterate, or when Build backend changes introduce new interfaces or plugin hooks—any time you suspect elegance without a second use case.
Is vanity-engineering-review safe to install?
It is read-only review guidance with no built-in tool execution; check the Security Audits panel on this Prism page before installing any marketplace skill.
SKILL.md
READMESKILL.md - Vanity Engineering Review
# Vanity Engineering Detection Patterns Concrete patterns to scan for during review. Each pattern includes what to look for, why it qualifies as vanity, and what the simpler alternative is. --- ## Category 1: Premature Abstraction ### Single-Implementation Interfaces **Signal**: Interface/abstract class/trait with exactly one concrete implementation. **Why vanity**: Abstraction without variation is indirection. It adds a file, a concept, and a navigation hop for zero polymorphic benefit. **Simpler alternative**: Use the concrete implementation directly. Extract an interface when (not if) a second implementation actually materialises. **Severity**: V1 (one or two instances), V2 (systemic pattern across the codebase) ### Plugin Systems with No Plugins **Signal**: Registration/discovery/loading mechanism for extensibility, with 0-2 "plugins" that are all maintained by the same team. **Why vanity**: Plugin architecture is one of the most expensive abstractions to maintain. It introduces indirection, configuration complexity, versioning concerns, and testing surface area. Justified only when third parties actually write plugins. **Simpler alternative**: Direct function calls. If-else chains. A switch statement. **Severity**: V2 minimum, V3 if other code must conform to the plugin API ### Generic-Everything **Signal**: Extensive use of generics/templates where only one or two concrete types are ever used. Type parameters that could be replaced with the actual type. **Why vanity**: Generics are useful when you genuinely operate over multiple types. When you do not, they are noise that makes every type signature harder to read. **Simpler alternative**: Use concrete types. Genericise when you add the second type. **Severity**: V1 --- ## Category 2: Resume-Driven Architecture ### Microservices at Monolith Scale **Signal**: Multiple deployed services, service mesh, API gateway — serving traffic that a single process could handle. Fewer than 10 requests per second across all services. **Why vanity**: Microservices trade code complexity for operational complexity. This trade only pays off at scale that demands independent deployment and scaling. Below that, you are paying the operational tax (networking, serialisation, distributed tracing, deployment orchestration) for zero benefit. **Simpler alternative**: Monolith with clean module boundaries. Deploy as one thing. **Severity**: V3 (forces every feature to deal with network boundaries) ### Kubernetes for a Single Container **Signal**: K8s manifests, Helm charts, operators — for an application that runs as one replica with no scaling requirements. **Why vanity**: Kubernetes is an orchestration platform for managing many containers at scale. Using it to run one container is like hiring a logistics company to deliver a letter. **Simpler alternative**: Docker Compose. Or just a systemd service. **Severity**: V2 ### Event-Driven Architecture for Synchronous Workflows **Signal**: Message queues, event buses, pub/sub — for workflows that are inherently request-response and need the result immediately. **Why vanity**: Async messaging adds eventual consistency, retry logic, dead letter queues, and debugging difficulty. Justified for decoupled, high-throughput, fire-and-forget workloads. Not justified for "user clicks button, needs result now." **Simpler alternative**: Function call. HTTP request. Database query. **Severity**: V2 --- ## Category 3: Complexity Theater ### Custom Implementations of Solved Problems **Signal**: Hand-rolled authentication, custom ORM, bespoke state management, homegrown logging framework, custom build tooling — where battle-tested alternatives exist. **Why vanity**: "Not invented here" syndrome. The custom version is always worse than the community-maintained version because it has one contributor and zero external scrutiny. **Simpler alternative**: Use the established library. Passport/Auth.js for auth. Prisma/Drizzle for ORM. Pino/Winston for logging. Un