Skip to content
Back to skills

Dekko Refactor

ASecurity

List every site a rename, move, or signature change must touch before editing, then prove nothing was missed after. Trigger when about to rename a function, method, class or type, rename or move a file or module, change a parameter list or return type, move a symbol between files, or remove a symbol, in a repo with a `.dekko/` directory; and again after those edits, before running tests. dekko's call graph has the exact call sites, type annotations, implementors and import lines, so this repl...

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
developmentrustrefactoring

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned September 27, 2026

npx -y skills add aahlijia/dekko --skill dekko-refactor --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dekko Refactor?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dekko Refactor
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aahlijia-dekko-refactor/badge)](https://www.skillsdirectory.com/skills/aahlijia-dekko-refactor)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: dekko-refactor
description: List every site a rename, move, or signature change must touch before editing, then prove nothing was missed after. Trigger when about to rename a function, method, class or type, rename or move a file or module, change a parameter list or return type, move a symbol between files, or remove a symbol, in a repo with a `.dekko/` directory; and again after those edits, before running tests. dekko's call graph has the exact call sites, type annotations, implementors and import lines, so this replaces grepping for the old name and reading each hit.
---

# Refactoring with dekko (find every site first)

A rename or signature change fails in one way: a site nobody listed.
Grep for the old name over-matches strings and comments and misses
aliased imports; dekko's map has the exact call, annotation, heritage
and import edges. List the sites from the map, edit only those lines,
then ask the map what still points at the old name. Tool names below
are the bare MCP names (`dekko-orient` has the prefixes, the CLI
fallback, and target syntax).

## Before editing: the site list

Pin the target first with `query_symbol` (append `:LINE` if the reply
says it's an overload set) and read its `note:` lines. Then list the
sites for the kind of change:

| Change | Sites to list | Use |
|---|---|---|
| Rename or re-sign a function/method | every call site | `get_callers` with `sites=true include_tests=true` (CLI `dekko query callers <sym> --sites`) |
| Rename or reshape a class/struct/interface/trait | annotations that name it, implementors, constructor calls | `find_type_usages <T>`, `get_subtypes <T>` with `transitive=true include_tests=true`, `get_callers` as above; or one `workset symbol=<T> type_impact=true` (CLI `--symbol <T> --type-impact`) |
| Rename or move a file/module, or rename an exported name | import lines, including aliases | CLI only: `dekko deps --file <path>` (which files import it), `dekko query importers <import.source>` (one row per imported member, with `(as alias)`) |
| Change what it raises | handlers that catch it | CLI only: `dekko query catches <ExcType>`, `dekko query throws <sym>` |

Rules that make the list complete:

- **`include_tests=true` is mandatory here.** The MCP defaults hide
  test callers and test subtypes; a test is a site to update.
- **No omitted rows.** Pass `budget=0` or raise it until the footer
  stops saying `omitted`. An omitted row is a missed edit.
- **`importers` takes an import string** (`pkg.util`, `./utils`,
  `org.foo.Bar`), not a path; `deps --file` takes the path. A row
  ending `(as fn)` means that file calls the symbol as `fn`: the
  import line and those calls are both sites.
- **Read only the sites.** `get_context_pack` with `with_source=true`
  for the target's own body, a line-ranged Read for each site row.
- A low count on a widely used or short, common name: run
  `check_ambiguous` or `dekko-verify` before trusting it.

## After editing: prove nothing was missed

Every tool regenerates the map from your edits before answering, so
ask it directly:

1. **`find_usages <old name>`** (CLI `dekko query uses <old>`). A
   call to a name that no longer exists in the repo is recorded as an
   external call, so this lists exactly the direct-name sites still
   to fix. Empty means done for direct calls. For a signature change
   with no rename, re-run `get_callers` with `sites=true
   include_tests=true` and check each row against the new signature
   instead.
2. **`dekko query importers <old.source>`** for import lines still
   naming the old module or member. This is the only place an aliased
   import shows up: `find_usages` sees the alias's calls under the
   alias, not the old name.
3. **`impacted_tests`** (CLI `dekko affected`) and run the command it
   prints. `dekko affected --possible` adds tests that reach the
   change only through an ambiguous call.
4. **`dekko note list --orphaned`**: a note keyed to the old id
   survives the rename as an orphan. Re-anchor or remove each one, per
   `dekko-notes`.
5. **One grep for the old name in what dekko doesn't model:** docs,
   comments, strings, config keys, CLI flags, serialized field names,
   `getattr`/registry-by-name lookups. This grep is for text, not for
   call sites; the map already covered those.

## Boundaries

- dekko lists sites and checks the result; it doesn't perform the
  edit. This is not an IDE rename.
- Calls through trait/interface dispatch, `dyn Trait`, or a name built
  at runtime don't appear as call edges; when the target is such a
  method, treat the list as a floor and see `dekko-verify`.
- `find_usages` records calls only. A missed *type annotation* after a
  type rename shows up in the language's type checker or compiler, not
  in step 1; run that too.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.