home / skills / adibfirman / dotfiles / gitnexus-refactoring

gitnexus-refactoring skill

/claude/.claude/skills/gitnexus-refactoring

This skill helps you safely rename, extract, split, or relocate code with GitNexus guidance and automated impact analysis.

npx playbooks add skill adibfirman/dotfiles --skill gitnexus-refactoring

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
4.1 KB
---
name: gitnexus-refactoring
description: "Use when the user wants to rename, extract, split, move, or restructure code safely. Examples: \"Rename this function\", \"Extract this into a module\", \"Refactor this class\", \"Move this to a separate file\""
---

# Refactoring with GitNexus

## When to Use

- "Rename this function safely"
- "Extract this into a module"
- "Split this service"
- "Move this to a new file"
- Any task involving renaming, extracting, splitting, or restructuring code

## Workflow

```
1. gitnexus_impact({target: "X", direction: "upstream"})  → Map all dependents
2. gitnexus_query({query: "X"})                            → Find execution flows involving X
3. gitnexus_context({name: "X"})                           → See all incoming/outgoing refs
4. Plan update order: interfaces → implementations → callers → tests
```

> If "Index is stale" → run `npx gitnexus analyze` in terminal.

## Checklists

### Rename Symbol

```
- [ ] gitnexus_rename({symbol_name: "oldName", new_name: "newName", dry_run: true}) — preview all edits
- [ ] Review graph edits (high confidence) and ast_search edits (review carefully)
- [ ] If satisfied: gitnexus_rename({..., dry_run: false}) — apply edits
- [ ] gitnexus_detect_changes() — verify only expected files changed
- [ ] Run tests for affected processes
```

### Extract Module

```
- [ ] gitnexus_context({name: target}) — see all incoming/outgoing refs
- [ ] gitnexus_impact({target, direction: "upstream"}) — find all external callers
- [ ] Define new module interface
- [ ] Extract code, update imports
- [ ] gitnexus_detect_changes() — verify affected scope
- [ ] Run tests for affected processes
```

### Split Function/Service

```
- [ ] gitnexus_context({name: target}) — understand all callees
- [ ] Group callees by responsibility
- [ ] gitnexus_impact({target, direction: "upstream"}) — map callers to update
- [ ] Create new functions/services
- [ ] Update callers
- [ ] gitnexus_detect_changes() — verify affected scope
- [ ] Run tests for affected processes
```

## Tools

**gitnexus_rename** — automated multi-file rename:

```
gitnexus_rename({symbol_name: "validateUser", new_name: "authenticateUser", dry_run: true})
→ 12 edits across 8 files
→ 10 graph edits (high confidence), 2 ast_search edits (review)
→ Changes: [{file_path, edits: [{line, old_text, new_text, confidence}]}]
```

**gitnexus_impact** — map all dependents first:

```
gitnexus_impact({target: "validateUser", direction: "upstream"})
→ d=1: loginHandler, apiMiddleware, testUtils
→ Affected Processes: LoginFlow, TokenRefresh
```

**gitnexus_detect_changes** — verify your changes after refactoring:

```
gitnexus_detect_changes({scope: "all"})
→ Changed: 8 files, 12 symbols
→ Affected processes: LoginFlow, TokenRefresh
→ Risk: MEDIUM
```

**gitnexus_cypher** — custom reference queries:

```cypher
MATCH (caller)-[:CodeRelation {type: 'CALLS'}]->(f:Function {name: "validateUser"})
RETURN caller.name, caller.filePath ORDER BY caller.filePath
```

## Risk Rules

| Risk Factor         | Mitigation                                |
| ------------------- | ----------------------------------------- |
| Many callers (>5)   | Use gitnexus_rename for automated updates |
| Cross-area refs     | Use detect_changes after to verify scope  |
| String/dynamic refs | gitnexus_query to find them               |
| External/public API | Version and deprecate properly            |

## Example: Rename `validateUser` to `authenticateUser`

```
1. gitnexus_rename({symbol_name: "validateUser", new_name: "authenticateUser", dry_run: true})
   → 12 edits: 10 graph (safe), 2 ast_search (review)
   → Files: validator.ts, login.ts, middleware.ts, config.json...

2. Review ast_search edits (config.json: dynamic reference!)

3. gitnexus_rename({symbol_name: "validateUser", new_name: "authenticateUser", dry_run: false})
   → Applied 12 edits across 8 files

4. gitnexus_detect_changes({scope: "all"})
   → Affected: LoginFlow, TokenRefresh
   → Risk: MEDIUM — run tests for these flows
```

Overview

This skill helps you perform safe code refactors such as rename, extract, split, move, and restructure across a repository. It provides commands to map dependents, preview edits, apply multi-file changes, and verify the resulting impact so you can refactor with confidence. Use it to minimize breakage and speed up large, cross-file updates.

How this skill works

The skill inspects code references, call graphs, and AST-based matches to locate all dependents and usage sites for a target symbol or block. You can run dry-run previews that classify edits by confidence (graph edits vs. AST search edits), apply validated edits, and run a post-change detection step that reports changed files, affected processes, and overall risk. It also supports custom queries for tricky or dynamic references.

When to use it

  • Renaming a function, class, or symbol across multiple files
  • Extracting code into a new module or file
  • Splitting a large function or service into smaller responsibilities
  • Moving code to a separate file or reorganizing project layout
  • Assessing impact before making cross-area or public API changes

Best practices

  • Map upstream dependents first (gitnexus_impact) to understand knock-on effects
  • Always run a dry-run rename to preview edits and review ast_search results
  • Plan updates in order: interfaces → implementations → callers → tests
  • Use gitnexus_detect_changes after edits to verify scope and risk
  • Treat dynamic/string references specially with gitnexus_query or manual review
  • Run tests for affected processes immediately after applying changes

Example use cases

  • Rename validateUser to authenticateUser across backend, middleware, and tests
  • Extract authentication logic into a new auth module and update imports
  • Split a monolithic service into two focused services and update callers
  • Move related utility functions into a dotfiles-managed scripts directory
  • Verify all callers of a public API before versioning or deprecating it

FAQ

What if the index is stale?

Run npx gitnexus analyze in your terminal to refresh indexes before querying.

How do I handle low-confidence ast_search edits?

Review ast_search edits manually; they often indicate dynamic or string references that require contextual judgment.