# Reuse Before Create

> Extends existing project code before adding new files, functions, or dependencies. Use when implementing features, fixing bugs, or adding utilities. Prevents duplicate logic and token-heavy greenfield code.

- Skill: `aresiddharthareddy/reuse-before-create` (Agent Skill)
- Install (CLI): `npx skillmds@latest add aresiddharthareddy/reuse-before-create`
- Raw SKILL.md: https://api.skillmd.com/api/skills/aresiddharthareddy/reuse-before-create/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: aresiddharthareddy (https://skillmd.com/u/aresiddharthareddy)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/aresiddharthareddy/reuse-before-create

---


# Reuse Before Create

## Default assumption

The project **already has** something close. Find it before writing.

## Search before you create

| Creating… | Search for… |
|-----------|-------------|
| New helper | Same behavior via grep (verb + noun) |
| New component | Similar UI in sibling folder |
| New API route | Adjacent routes / shared middleware |
| New type | Existing model/DTO/interface |
| New dependency | Same capability in `package.json` / imports |

Spend **one grep pass** before any new symbol.

## Extend vs duplicate

| Situation | Action |
|-----------|--------|
| Existing function needs one flag | Add optional param |
| Two call sites differ slightly | Parameterize; don't fork |
| Logic 80% same | Extract shared **only if** both call sites exist now |
| Logic used once | Keep inline in caller |

## New file gate

Create a new file only if **all** are true:

1. No reasonable home in existing modules
2. User asked for it, or project convention requires it
3. File will hold **multiple** related symbols or clear boundary (route, component, test)

## New dependency gate

Add a package only if:

1. Not in manifest already
2. Stdlib can't do it in reasonable lines
3. User didn't ban new deps

## Report briefly

When reusing, one line is enough: "Extended `formatDate` in `utils/date.ts`" — no need to paste the old implementation.

