From shinpr-claude-code-workflows
Detects frontend anti-patterns like prop drilling, code duplication, and SRP violations; applies Rule of Three, fail-fast principles for technical decisions and QA.
npx claudepluginhub joshuarweaver/cascade-code-general-misc-1 --plugin shinpr-claude-code-workflowsThis skill uses the workspace's default tool permissions.
Immediately stop and reconsider design when detecting the following patterns:
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Immediately stop and reconsider design when detecting the following patterns:
Design philosophy that prioritizes improving primary code reliability over fallback implementations.
How to handle duplicate code based on Martin Fowler's "Refactoring":
| Duplication Count | Action | Reason |
|---|---|---|
| 1st time | Inline implementation | Cannot predict future changes |
| 2nd time | Consider future consolidation | Pattern beginning to emerge |
| 3rd time | Implement commonalization | Pattern established |
Cases for Commonalization
Cases to Avoid Commonalization
// Immediate commonalization on 1st duplication
function UserEmailInput() { /* ... */ }
function ContactEmailInput() { /* ... */ }
// Commonalize on 3rd occurrence
function EmailInput({ context }: { context: 'user' | 'contact' | 'admin' }) { /* ... */ }
Symptom: Fixing one error causes new errors Cause: Surface-level fixes without understanding root cause Avoidance: Identify root cause with 5 Whys before fixing
Symptom: Excessive use of any type or as Cause: Impulse to avoid type errors Avoidance: Handle safely with unknown type and type guards
Symptom: Many bugs after implementation Cause: Ignoring Red-Green-Refactor process Avoidance: Always start with failing tests
Symptom: Frequent unexpected errors when introducing new technology Cause: Assuming "it should work according to official documentation" without prior investigation Avoidance:
Certainty: low (Reason: new experimental feature with limited production examples)
Exploratory implementation: true
Fallback: use established patterns
Symptom: Duplicate implementations, architecture inconsistency, integration failures Cause: Insufficient understanding of existing code before implementation Avoidance Methods:
Symptom: Component not rendering
Why1: Props are undefined → Why2: Parent component didn't pass props
Why3: Parent using old prop names → Why4: Component interface was updated
Why5: No update to parent after refactoring
Root cause: Incomplete refactoring, missing call-site updates
To isolate problems, attempt reproduction with minimal code:
console.log('DEBUG:', {
context: 'user-form-submission',
props: { email, name },
state: currentState,
timestamp: new Date().toISOString()
})
Use the appropriate run command based on the packageManager field in package.json.
dev - Development serverbuild - Production buildpreview - Preview production buildtype-check - Type check (no emit)Phase 1-3: Basic Checks
check - Biome (lint + format)build - TypeScript buildPhase 4-5: Tests and Final Confirmation
test - Test executiontest:coverage:fresh - Coverage measurement (fresh cache)check:all - Overall integrated checktest:coverage - Run tests with coveragetest:safe - Safe test execution (with auto cleanup)cleanup:processes - Cleanup Vitest processesformat - Format fixeslint:fix - Lint fixesopen coverage/index.html - Check coverage reportcleanup:processes scripttest:coverage:fresh scriptCompletion Criteria: Complete all 3 stages
Grep -n "ComponentName\|hookName" -o content
Grep -n "importedFunction" -o content
Grep -n "propsType\|StateType" -o content
Mandatory: Read all discovered files and include necessary parts in context:
Structured impact report (mandatory):
## Impact Analysis
### Direct Impact: ComponentA, ComponentB (with reasons)
### Indirect Impact: FeatureX, PageY (with integration paths)
### Processing Flow: Props → Render → Events → Callbacks
Important: Execute all 3 stages to completion
When unused code is detected → Will it be used?
Target: Components, hooks, utilities, documentation, configuration files
In use? No → Delete immediately (remains in Git history)
Yes → Working? No → Delete + Reimplement
Yes → Fix