proper

Diagnose design friction and propose strategic refactorings before implementing features.

3|Updated Apr 14, 2026
One-click install
npx skills add https://github.com/nvie/skills --skill proper-nvie
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: proper
Source: https://github.com/nvie/skills/tree/main/skills/proper
Command: npx skills add https://github.com/nvie/skills --skill proper-nvie

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? When a feature request feels awkward to implement, the tactical fix often adds cruft to an already strained design. This Skill forces a strategic pause: it diagnoses why the feature doesn't fit the current code shape, proposes a refactoring that makes the feature a small natural change, and lets you compare tactical versus strategic paths before writing any code. ## Core Features & Use Cases - Friction Diagnosis: Identifies concrete design smells (missing abstraction, leaky boundary, conflated concerns, hard-coded assumptions) that make the requested feature awkward. - Strategic Proposal: Describes the target code shape with specific files, types, and functions, plus an honest tactical-vs-strategic comparison table. - Mikado Handoff: Routes non-trivial refactorings to the /mikado skill for safe incremental execution with revert-on-failure. - Use Case: You need to add SSE support but the transport logic is hard-coded around WebSockets. Invoke /proper to get a proposal to extract a Transport interface first, then hand the refactoring to /mikado and add SSE as a trivial follow-up. ## Quick Start Invoke /proper with a description of the feature you want to add and ask for the strategic design instead of the quickest fix.

Frequently Asked Questions about proper

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I decide between a quick fix and a refactoring?▼

Compare the tactical and strategic paths explicitly: what each touches, effort, regression risk, and whether the next similar request becomes easier. The skill presents this comparison table and recommends a path, but the user makes the final call.

How to refactor code before adding a new feature?▼

First diagnose why the feature is awkward by locating the friction point, such as a missing abstraction or hard-coded assumption. Then propose the minimal design change that makes the feature a small natural addition, and implement the refactoring before the feature itself.

When should I not use a strategic refactoring approach?▼

Skip the strategic path for throwaway scripts, soon-to-be-deleted modules, or genuinely one-off requests where the tactical fix is honestly the right call. The skill explicitly acknowledges when no real friction exists rather than inventing refactorings.

Does this skill implement the refactoring automatically?▼

No, it only produces a diagnosis and proposal; the user decides whether to proceed. Small refactorings are implemented directly after approval, while non-trivial work is handed off to the /mikado skill for safe incremental execution.

What is the Mikado method handoff in this workflow?▼

When the strategic path involves multiple prerequisite changes or breakage risk, the refactoring goal is framed as the end state and passed to /mikado. Mikado discovers prerequisites by attempting the change and reverting on failure, keeping each step safe.