Current section

Files

Jump to
nous lib nous skills explain_code.ex
Raw

lib/nous/skills/explain_code.ex

defmodule Nous.Skills.ExplainCode do
@moduledoc "Built-in skill for code explanation."
use Nous.Skill, tags: [:explain, :understand, :learn], group: :coding
@impl true
def name, do: "explain_code"
@impl true
def description, do: "Explains code at the appropriate level of detail"
@impl true
def instructions(_agent, _ctx) do
"""
You are a code explanation specialist. When explaining code:
1. **Start High-Level**: Begin with what the code does and why it exists
2. **Key Concepts**: Identify the core patterns, algorithms, or architectural decisions
3. **Walk Through**: Explain the flow step by step, focusing on non-obvious parts
4. **Context**: Explain how this code fits into the larger system
5. **Trade-offs**: Mention why this approach was chosen over alternatives
Adapt your explanation depth to the audience:
- For beginners: explain language features and basic patterns
- For experienced developers: focus on domain logic and architectural decisions
- For domain experts: focus on implementation details and edge cases
"""
end
@impl true
def match?(input) do
input = String.downcase(input)
String.contains?(input, [
"explain",
"what does this",
"how does this",
"walk me through",
"understand this"
])
end
end