# Code Reuse Enforcement

> CRITICAL guardrail for preventing code duplication and magic strings in the AIDB codebase. Enforces discovery of existing constants, enums, and utilities BEFORE writing new code.

- Skill: `majiayu000/code-reuse-enforcement` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/code-reuse-enforcement`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/code-reuse-enforcement/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/code-reuse-enforcement

---


# Code Reuse Enforcement

**CRITICAL GUARDRAIL:** Discover existing code BEFORE writing new code.

## Why This Matters

- Magic strings scatter across 50 files instead of 1 constant
- Duplicate utilities create maintenance nightmares
- Inconsistent values break features silently

______________________________________________________________________

## The Discovery-First Workflow

**BEFORE writing ANY code with literals or utilities:**

1. **Check Constants** - URLs, paths, timeouts, limits, env var names
1. **Check Enums** - States, statuses, types, actions
1. **Check Utilities** - Path ops, env reading, file ops, validation

**Quick Reference:** [discovery-catalog.md](resources/discovery-catalog.md)

______________________________________________________________________

## Common Violations

### Magic Strings

```python
# ❌ BAD
url = "https://ai-debugger.com/support"
log_dir = ".aidb/log"
debug = os.getenv("AIDB_LOG_LEVEL", "INFO")

# ✅ GOOD
from aidb_common.constants import AIDB_BASE_URL
from aidb_common.path import get_aidb_log_dir
from aidb_logging.utils import get_log_level

url = f"{AIDB_BASE_URL}/support"
log_dir = get_aidb_log_dir()
log_level = get_log_level(default="INFO")
```

### Magic Numbers

```python
# ❌ BAD
await asyncio.sleep(0.1)
timeout = 5.0

# ✅ GOOD
from aidb.common.constants import EVENT_POLL_TIMEOUT_S, CONNECTION_TIMEOUT_S

await asyncio.sleep(EVENT_POLL_TIMEOUT_S)
timeout = CONNECTION_TIMEOUT_S
```

### Reimplementing Utilities

```python
# ❌ BAD
def get_bool_env(name: str, default: bool) -> bool:
    value = os.getenv(name)
    return value.lower() in ("true", "1", "yes") if value else default

# ✅ GOOD
from aidb_common.env import read_bool
result = read_bool("AIDB_TRACE", default=False)
```

### String States

```python
# ❌ BAD
if session_state == "running":
    pass

# ✅ GOOD
from aidb_mcp.core.constants import SessionState
if session_state == SessionState.RUNNING:
    pass
```

______________________________________________________________________

## Quick Discovery

### Constants Files

| Location                       | Contents                           |
| ------------------------------ | ---------------------------------- |
| `aidb_common/constants.py`     | Language enum, paths, domains      |
| `aidb/dap/client/constants.py` | DAP events, commands, stop reasons |
| `aidb/common/constants.py`     | Timeouts (seconds), defaults       |
| `aidb_mcp/core/constants.py`   | MCP tool names, actions            |
| `aidb_cli/core/constants.py`   | Icons, exit codes, Docker          |

### Utility Packages

| Need       | Package                    |
| ---------- | -------------------------- |
| JSON       | `aidb_common.io`           |
| YAML       | `aidb_cli.core.yaml` (CLI) |
| Paths      | `aidb_common.path`         |
| Env vars   | `aidb_common.env`          |
| Validation | `aidb_common.validation`   |

**Full reference:** See docstrings in `src/aidb_common/`

### Search Commands

```bash
grep -r "value_to_find" src --include="*.py"
find src -name "constants.py"
grep -r "class.*Enum" src --include="*.py" -l
```

______________________________________________________________________

## When to Create NEW Constants

Only when:

1. **Truly new concept** - Not covered by existing constants
1. **Used 2+ times** - Will be reused
1. **Proper location** - Adding to the RIGHT constants file
1. **Following patterns** - Matches existing naming conventions

______________________________________________________________________

## Enforcement Checklist

Before committing:

- [ ] No hardcoded URLs (use aidb_common constants)
- [ ] No hardcoded paths (use path utilities)
- [ ] No magic numbers for timeouts (use api/constants.py)
- [ ] No string literals for states (use enums)
- [ ] No reimplemented utilities (check aidb_common)
- [ ] No manual env var parsing (use aidb_common.env)

______________________________________________________________________

## Resources

- **[Discovery Catalog](resources/discovery-catalog.md)** - Complete constants, enums, utilities reference
- **`src/aidb_common/`** - Source code with detailed docstrings

