From sensei
Analyze code for responsibility, boundary, abstraction, code-bloat, and duplicated-knowledge problems. Use when a function or module seems to be doing too many things, when the same business rule appears in multiple places, when the developer asks about SRP, DRY, KISS, code smells, or whether code is too complex, or when reviewing whether a split or abstraction is justified.
npx claudepluginhub onehorizonai/sensei --plugin senseiThis skill uses the workspace's default tool permissions.
Analyze responsibilities, boundaries, abstractions, and duplicated knowledge.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Guides code writing, review, and refactoring with Karpathy-inspired rules to avoid overcomplication, ensure simplicity, surgical changes, and verifiable success criteria.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Share bugs, ideas, or general feedback.
Analyze responsibilities, boundaries, abstractions, and duplicated knowledge.
The bias is less code, clearer boundaries, and fewer moving parts.
DRY does not mean: never repeat a line of code.
DRY means: every piece of knowledge should have a single, authoritative representation in the system.
Two similar code paths where the underlying knowledge is genuinely different and expected to diverge independently. The duplication is structural coincidence, not shared intent.
The same business rule, validation logic, pricing formula, authorization check, or state transition expressed in more than one place.
The test: if this rule changes, how many files need to update? More than one is a DRY violation.
Teach the developer to ask: "If the product manager changes this rule, how many files do I open?" That is the real question.
SRP means Single Responsibility Principle.
It does not mean: a function should do one thing.
It means: a module should have one primary reason to change. One stakeholder or concern should dominate why it exists.
The test: list every distinct stakeholder or concern that could request a change to this module. More than one is a signal to inspect. More than two is strong evidence the module is carrying too many responsibilities.
KISS does not mean: make the code simplistic.
It means: keep the design as simple as the behavior allows. Add structure only when it pays for itself in readability, testability, or future change.
For DRY:
For responsibility:
For security boundaries:
For simplicity:
Plain English:
[Why this is easy or hard for a non-technical owner to trust and change later]
Responsibility analysis:
[List everything this unit currently does — not what it should do]
Reasons to change:
1. [Reason one — stakeholder or concern]
2. [Reason two]
...
Count: N
If N > 1: Inspect whether one concern owns the module or responsibilities are mixed.
If N > 2: This module likely has too many responsibilities.
Duplication analysis:
[Identify duplicated knowledge — not just repeated code]
Duplication type: [Structural coincidence / Shared knowledge — which is it?]
Security boundary:
[No security-sensitive boundary / Boundary is clear / Boundary is split or easy to bypass]
Smallest useful move:
[Delete / inline / move / split / keep as-is — with the reason]
Do not change yet:
[What should stay untouched because it is outside this smell]
Question for you: [One question the developer must reason through before acting]