From julie
Use before making changes to existing files. Routes to Julie's edit_file, rewrite_symbol, and rename_symbol tools without a Read + Edit loop. Trigger on fix, change, update, modify, refactor, rename, replace, add, remove, move, or any task involving an existing file.
How this skill is triggered — by the user, by Claude, or both
Slash command
/julie:editingThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Julie's edit tools change existing files without reading them first. This is
Julie's edit tools change existing files without reading them first. This is the default path for file modifications.
rename_symbol, the semantic path. It understands scope, updates references, and surfaces conflicts.deep_dive to understand it, then rewrite_symbol to change it.edit_file with old_text and new_text.get_symbols for structure or deep_dive for full context, then use rewrite_symbol. Not Read.If you catch yourself thinking any of these, you're about to waste tokens:
| Thought | What to do instead |
|---|---|
| "I need to read the file first" | No. edit_file uses DMP fuzzy matching on old_text. rewrite_symbol resolves a symbol by name. Neither needs Read. |
| "It's a quick change" | edit_file handles that well. edit_file(old_text=..., new_text=..., dry_run=true) is the fast path. |
| "I'm not sure which symbol I need" | Use fast_search, get_symbols, or deep_dive, then use rewrite_symbol. Still no Read + Edit loop. |
| "This isn't a code file" | edit_file works on ANY text file: YAML, TOML, Markdown, .gitignore, configs, everything. |
| "The symbol edit is complex" | Use dry_run=true first. If the symbol shape or operation does not fit, fall back to edit_file. |
dry_run=true (the default). Review the diff.dry_run=false.replace_full swaps an entire symbol definitionreplace_body rewrites only the bodyreplace_signature rewrites only the signatureinsert_before adds content before the symbolinsert_after adds content after the symboladd_doc adds a doc block ahead of the symbolfile_path narrows the match when multiple symbols share a nameUse deep_dive before rewriting a symbol. Use fast_refs first when the change may affect many callers.
If a file was only read with offset/limit pagination, treat the view as partial: re-read the whole file before overwriting, or narrow the patch until the match is unambiguous. See references/partial-read-patch-pitfall.md.
Renames a symbol across the workspace and updates all call sites. Prefer this over edit_file for renaming functions, structs, classes, methods, or variables.
rename_symbol(old_name="getUserData", new_name="fetchUser", dry_run=true)
Use scope to narrow the rename when multiple symbols share a name. Valid values: "workspace" (default), "all", or "file:<path>" (e.g., scope="file:src/tools/foo.rs"). Preview with dry_run=true, then apply with dry_run=false. Reach for edit_file only for text-replacement renames (e.g., renaming a config key, a markdown heading).
old_text: text to find (DMP fuzzy matched)new_text: replacement textoccurrence: "first" (default), "last", or "all"Changing a version number in Cargo.toml:
Read + Edit pattern (5 calls, ~800 tokens):
edit_file pattern (2 calls, ~200 tokens):
edit_file(file_path="Cargo.toml", old_text='version = "6.6.2"', new_text='version = "6.6.3"', dry_run=true) -- previewdry_run=false -- done4x fewer tokens. 3 fewer round trips.
npx claudepluginhub anortham/julie-plugin --plugin julieCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.