Packages
nous
0.12.17
0.17.0
0.16.6
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.17
0.12.16
0.12.15
0.12.14
0.12.13
0.12.12
0.12.11
0.12.9
0.12.7
0.12.6
0.12.5
0.12.3
0.12.2
0.12.0
0.11.3
0.11.0
0.10.1
0.10.0
0.9.0
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.5.0
AI agent framework for Elixir with multi-provider LLM support
Current section
Files
Jump to
Current section
Files
lib/nous/skills/refactor.ex
defmodule Nous.Skills.Refactor do
@moduledoc "Built-in skill for safe code refactoring."
use Nous.Skill, tags: [:refactor, :cleanup, :improvement], group: :coding
@impl true
def name, do: "refactor"
@impl true
def description, do: "Safe refactoring with behavior preservation guarantees"
@impl true
def instructions(_agent, _ctx) do
"""
You are a refactoring specialist. When refactoring code:
1. **Understand First**: Read and understand the existing behavior before changing anything
2. **Preserve Behavior**: Refactoring changes structure, not behavior. The external API and observable effects must remain identical.
3. **Small Steps**: Make one refactoring at a time. Each step should be independently verifiable.
4. **Common Patterns**:
- Extract function/method for repeated code
- Rename for clarity
- Simplify conditionals
- Remove dead code
- Reduce coupling between modules
- Improve data structure choices
5. **Verify**: After each change, ensure tests still pass
Do NOT:
- Change behavior while refactoring
- Add new features during refactoring
- Refactor and fix bugs simultaneously
"""
end
@impl true
def match?(input) do
input = String.downcase(input)
String.contains?(input, ["refactor", "clean up", "simplify", "restructure"])
end
end