Module: Clacky::Agent::SkillReflector
- Included in:
- Clacky::Agent
- Defined in:
- lib/clacky/agent/skill_reflector.rb
Overview
Scenario 2: Reflect on skill execution and suggest improvements.
After a skill completes, forks a subagent to analyze:
- Were instructions clear enough?
- Any missing edge cases?
- Any improvements needed?
If the LLM identifies concrete improvements, it invokes skill-creator to update the skill.
Constant Summary collapse
- MIN_SKILL_ITERATIONS =
Minimum iterations for a skill execution to warrant reflection. This counts iterations within the skill execution only, not session-cumulative.
5
Instance Method Summary collapse
-
#maybe_reflect_on_skill ⇒ Object
Check if we should reflect on the skill that just executed Called from SkillEvolution#run_skill_evolution_hooks.
Instance Method Details
#maybe_reflect_on_skill ⇒ Object
Check if we should reflect on the skill that just executed Called from SkillEvolution#run_skill_evolution_hooks
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/clacky/agent/skill_reflector.rb', line 21 def maybe_reflect_on_skill return unless @skill_execution_context # Only reflect on skills that the user explicitly invoked via slash command. # Skills triggered by the LLM itself (e.g. as part of a broader task) or # platform-management skills invoked incidentally should not be reflected on. return unless @skill_execution_context[:slash_command] # Skip default and brand skills — they are system-owned and should not be # auto-improved by the evolution system. source = @skill_execution_context[:source] return if source == :default || source == :brand skill_name = @skill_execution_context[:skill_name] start_iteration = @skill_execution_context[:start_iteration] # Calculate iterations within the skill execution (not session-cumulative) iterations = @iterations - start_iteration # Only reflect if the skill actually ran for a meaningful number of iterations return if iterations < MIN_SKILL_ITERATIONS # Fork an isolated subagent to reflect + improve — does NOT touch main history @ui&.show_info("Reflecting on skill execution: #{skill_name}") subagent = fork_subagent subagent.run(build_skill_reflection_prompt(skill_name)) # Clear the context so we don't reflect again @skill_execution_context = nil end |