memtrace-cochangelisted
Install: claude install-skill syncable-dev/memtrace-public
## Overview
Find **files** that historically co-change with a target symbol or file path — ranked by co-occurrence frequency across git episodes. Surfaces **behavioral coupling** the static call graph cannot see.
`get_impact` answers "who calls this?" (structural).
`get_cochange_context` answers "what files always move when this moves?" (historical, file-level).
They are complementary. A file with no call-graph edges to the target can still be a strong cochange partner if it's always modified alongside it in every commit.
> **Parameter types:** Numbers (`limit`, `window_days`, etc.) must be JSON numbers — not strings.
## Required parameters
| Parameter | Required | Default | Notes |
|---|---|---|---|
| `repo_id` | yes | — | |
| `target` | yes | — | Symbol name **or** file path substring — **not** `symbol` |
| `limit` | no | **10** | Max cochanged files returned |
| `window_days` | no | **30** | Lookback from `as_of` |
| `as_of` | no | now | Window anchor |
| `branch` | no | any branch | |
```json
{
"repo_id": "memdb",
"target": "execute",
"limit": 10,
"window_days": 30
}
```
Full parameter spec for every Memtrace tool: `references/mcp-parameters.md` (bundled at the memtrace-skills plugin root).
## Output
```json
{
"cochanged_files": [
{
"file_path": "src/order/types.rs",
"cochange_count": 8,
"last_cochanged_at": "2026-04-13T10:43:00Z"
}
],
"target_files": ["src/order/service.rs"]
}
```
There is **no** `cochanges[]` with symbo