---
name: syncable-dev/memtrace-quality
source: https://app.decimal.ai/s/syncable-dev-memtrace-quality@1/SKILL.md
source_sha256: 36807cccb30f
---

## Overview

Code quality via graph analysis — dead code, complexity hotspots, repository stats.

## Quick Reference

| Tool | Purpose | Required | Key optional |
|------|---------|----------|--------------|
| `find_dead_code` | Zero-caller symbols | `repo_id` | `include_tests`, `limit`, `kinds[]` |
| `find_most_complex_functions` | Ranked complexity hotspots | `repo_id` | **`top_n`** (def 20) — not `limit` |
| `calculate_cyclomatic_complexity` | Score one symbol | `repo_id`, **`target`** | — |
| `get_repository_stats` | Repository overview | `repo_id` | `branch` |

> **Parameter types:** numbers must be JSON numbers — `limit: 20`, never `"20"` (MCP error -32602).

Full parameter spec for every Memtrace tool: `references/mcp-parameters.md` (bundled at the memtrace-skills plugin root).

## Steps

### 1. Repository overview

```json
{ "repo_id": "memdb" }
```

### 2. Dead code

```json
{ "repo_id": "memdb", "include_tests": false, "limit": 50 }
```

Exported symbols and entry points excluded by default. Results are candidates, not proof — callers via dynamic dispatch or reflection are invisible to the graph; verify before deleting.

### 3. Complexity hotspots

```json
{ "repo_id": "memdb", "top_n": 10 }
```

Ordered by call-graph out-degree.

| Score | Rating | Action |
|-------|--------|--------|
| <5 | Low | Fine |
| 5-10 | Medium | Consider simplifying |
| 10-20 | High | Refactor candidate |
| >20 | Critical | Refactor priority |

### 4. Single symbol complexity

```json
{ "repo_id": "memdb", "target": "processOrder" }
```

## Output

| Result | Carries |
|--------|---------|
| Dead-code entry (`find_dead_code`) | Symbol name + kind with zero graph callers — e.g. `format_legacy` (Function) |
| Complexity row (`find_most_complex_functions`) | Symbol, complexity score, risk level — e.g. `processOrder` — 27, Critical |
| Single score (`calculate_cyclomatic_complexity`) | Cyclomatic complexity for `target` |
| Stats (`get_repository_stats`) | Node counts by kind, edge counts, community and process counts for `repo_id`/`branch` |

## Common Mistakes

| Mistake | Reality |
|---------|---------|
| `find_most_complex_functions(limit: 10)` | Param is **`top_n`** |
| `calculate_cyclomatic_complexity(symbol_id=...)` | Required param is **`target`** |
| Only looking at the highest complexity | Medium-complexity functions that are growing (check `get_evolution`) are often more urgent |