Reflection Worker
NOTE: Startup and cleanup are handled by worker-base. This skill defines the WORK PROCEDURE.
When to Use This Skill
Features involving:
- Reflection score tracker calibration and normalization
- Hook registration in settings.json
- Token reporting pipeline fixes
- TokenAccountant persistence
- Evolution trigger behavior
- RECE reflection loop verification
Work Procedure
Read the feature description and CTO Directive #2 from AGENTS.md.
For score tracker work: Before ANY changes to reflection-score-tracker.cjs:
- Read
.claude/agents/core/reflection-agent.md to determine the ACTUAL scoring rubric
- Note the scale (0-1 vs 1-10) the prompt asks for
- Read existing score entries in reflection-log.jsonl to see what the LLM actually outputs
- Design normalization that handles BOTH scales defensively
Write tests first (red):
- Create test cases for 0-1 scale input
- Create test cases for 1-10 scale input
- Create test cases for mixed-scale input
- Create test cases for edge cases (0, 1, 10, NaN, undefined)
- Confirm all fail
Implement the fix (green):
- Add normalization logic:
if (score <= 1.0) normalizedScore = score * 10
- Update LOW_SCORE_THRESHOLD to match the rubric's Critical Fail boundary
- Ensure protected agents are excluded
- Ensure cooldown is respected
For hook registration: When registering hooks in settings.json:
- Read the existing hook format carefully
- Match the exact structure (event, command, matcher patterns)
- Verify the hook file exists and is parseable
- Test that the hook fires on the correct event
For token reporting: When fixing post-pipeline-token-report.cjs:
- Add structural detection (remaining tasks count, explicit metadata flag)
- Keep keyword detection as FALLBACK only
- Add unit test for non-keyword pipeline completion
- Add unit test for false-positive prevention
For TokenAccountant persistence:
- Use atomic writes (write-to-temp + rename)
- Handle corrupted file gracefully (try-catch, empty init)
- Handle missing file gracefully (create on first write)
- Add load() method that reads from disk
Run all reflection-related tests:
node --test tests/hooks/reflection-*.test.cjs
node --test tests/lib/reflection-score-tracker.test.cjs
Run broader suites for regression check:
pnpm test:framework
Commit with descriptive message.
Example Handoff
{
"salientSummary": "Fixed reflection-score-tracker.cjs: added defensive normalization (scores <= 1.0 multiplied by 10), calibrated LOW_SCORE_THRESHOLD to 4.0 (matching Critical Fail < 0.4 rubric = 4.0 on 1-10 scale). Registered force-step0-execution.cjs and reflection-data-aggregator.cjs in settings.json. Fixed token report to use structural pipelineComplete detection. Added disk persistence to TokenAccountant with atomic writes.",
"whatWasImplemented": "Score normalization in reflection-score-tracker.cjs handles 0-1 and 1-10 scales. Two hooks registered. Token report uses metadata.pipelineComplete as primary signal. TokenAccountant persists to .claude/context/metrics/token-usage.json with write-to-temp+rename.",
"whatWasLeftUndone": "",
"verification": {
"commandsRun": [
{
"command": "node --test tests/lib/reflection-score-tracker.test.cjs",
"exitCode": 0,
"observation": "All tests pass including both scale normalization"
},
{ "command": "pnpm test:framework", "exitCode": 0, "observation": "0 failures" }
],
"interactiveChecks": []
},
"tests": {
"added": [
{
"file": "tests/lib/reflection-score-tracker.test.cjs",
"cases": [
{ "name": "normalizes 0-1 scores to 1-10", "verifies": "CTO directive #2" },
{ "name": "passes through 1-10 scores unchanged", "verifies": "1-10 scale handling" },
{ "name": "handles mixed scale entries", "verifies": "defensive normalization" }
]
}
],
"coverage": "Score tracker, token report, and accountant persistence all covered"
},
"discoveredIssues": []
}
When to Return to Orchestrator
- Reflection-agent's rubric is ambiguous about scoring scale
- settings.json structure is unclear for hook registration
- Token reporting requires changes to the task creation pipeline (outside scope)
1---2name: reflection-worker3description: Fixes reflection system, evolution triggers, token reporting, and hook registration4---56# Reflection Worker78NOTE: Startup and cleanup are handled by `worker-base`. This skill defines the WORK PROCEDURE.910## When to Use This Skill1112Features involving:1314- Reflection score tracker calibration and normalization15- Hook registration in settings.json16- Token reporting pipeline fixes17- TokenAccountant persistence18- Evolution trigger behavior19- RECE reflection loop verification2021## Work Procedure22231. **Read the feature description and CTO Directive #2 from AGENTS.md.**24252. **For score tracker work:** Before ANY changes to `reflection-score-tracker.cjs`:26 - Read `.claude/agents/core/reflection-agent.md` to determine the ACTUAL scoring rubric27 - Note the scale (0-1 vs 1-10) the prompt asks for28 - Read existing score entries in reflection-log.jsonl to see what the LLM actually outputs29 - Design normalization that handles BOTH scales defensively30313. **Write tests first (red):**32 - Create test cases for 0-1 scale input33 - Create test cases for 1-10 scale input34 - Create test cases for mixed-scale input35 - Create test cases for edge cases (0, 1, 10, NaN, undefined)36 - Confirm all fail37384. **Implement the fix (green):**39 - Add normalization logic: `if (score <= 1.0) normalizedScore = score * 10`40 - Update LOW_SCORE_THRESHOLD to match the rubric's Critical Fail boundary41 - Ensure protected agents are excluded42 - Ensure cooldown is respected43445. **For hook registration:** When registering hooks in settings.json:45 - Read the existing hook format carefully46 - Match the exact structure (event, command, matcher patterns)47 - Verify the hook file exists and is parseable48 - Test that the hook fires on the correct event49506. **For token reporting:** When fixing post-pipeline-token-report.cjs:51 - Add structural detection (remaining tasks count, explicit metadata flag)52 - Keep keyword detection as FALLBACK only53 - Add unit test for non-keyword pipeline completion54 - Add unit test for false-positive prevention55567. **For TokenAccountant persistence:**57 - Use atomic writes (write-to-temp + rename)58 - Handle corrupted file gracefully (try-catch, empty init)59 - Handle missing file gracefully (create on first write)60 - Add load() method that reads from disk61628. **Run all reflection-related tests:**6364 ```65 node --test tests/hooks/reflection-*.test.cjs66 node --test tests/lib/reflection-score-tracker.test.cjs67 ```68699. **Run broader suites** for regression check:7071 ```72 pnpm test:framework73 ```747510. **Commit** with descriptive message.7677## Example Handoff7879```json80{81 "salientSummary": "Fixed reflection-score-tracker.cjs: added defensive normalization (scores <= 1.0 multiplied by 10), calibrated LOW_SCORE_THRESHOLD to 4.0 (matching Critical Fail < 0.4 rubric = 4.0 on 1-10 scale). Registered force-step0-execution.cjs and reflection-data-aggregator.cjs in settings.json. Fixed token report to use structural pipelineComplete detection. Added disk persistence to TokenAccountant with atomic writes.",82 "whatWasImplemented": "Score normalization in reflection-score-tracker.cjs handles 0-1 and 1-10 scales. Two hooks registered. Token report uses metadata.pipelineComplete as primary signal. TokenAccountant persists to .claude/context/metrics/token-usage.json with write-to-temp+rename.",83 "whatWasLeftUndone": "",84 "verification": {85 "commandsRun": [86 {87 "command": "node --test tests/lib/reflection-score-tracker.test.cjs",88 "exitCode": 0,89 "observation": "All tests pass including both scale normalization"90 },91 { "command": "pnpm test:framework", "exitCode": 0, "observation": "0 failures" }92 ],93 "interactiveChecks": []94 },95 "tests": {96 "added": [97 {98 "file": "tests/lib/reflection-score-tracker.test.cjs",99 "cases": [100 { "name": "normalizes 0-1 scores to 1-10", "verifies": "CTO directive #2" },101 { "name": "passes through 1-10 scores unchanged", "verifies": "1-10 scale handling" },102 { "name": "handles mixed scale entries", "verifies": "defensive normalization" }103 ]104 }105 ],106 "coverage": "Score tracker, token report, and accountant persistence all covered"107 },108 "discoveredIssues": []109}110```111112## When to Return to Orchestrator113114- Reflection-agent's rubric is ambiguous about scoring scale115- settings.json structure is unclear for hook registration116- Token reporting requires changes to the task creation pipeline (outside scope)