Summary
After #2240 / #2245 removed the skills UI code tree, shadow fields persisted in the type system, state holders, and i18n — none have readers. Cleaning these closes the sweep and reduces fork-sync friction on upstream merges.
Evidence
| Residue |
Location |
"skills" in AgentsPanel type union |
ui/src/ui/views/agents.ts:30 |
"skills" in agentsPanel state union |
ui/src/ui/app-view-state.ts:131 |
agentSkillsLoading, agentSkillsError, agentSkillsReport, agentSkillsAgentId state fields |
ui/src/ui/app-view-state.ts:142-145 |
skillsReport: SkillStatusReport | null in host interface |
ui/src/ui/app-view-state.ts:191 |
SkillStatusReport type stub |
ui/src/ui/types.ts:376 |
SkillStatusReport import |
ui/src/ui/app-view-state.ts:27 |
agents.panels.skills: "Skills" |
ui/src/i18n/locales/*.ts:32 (all 7 locales) |
agents.tabs.skills: "Manage skill availability and API key injection." |
ui/src/i18n/locales/*.ts:46 (all 7 locales) |
None of these have readers: grep -rn 't\("agents\.panels\.skills"\)' ui/src/ returns zero hits; same for agents.tabs.skills. State fields are declared but never assigned or read.
Why this is safe
Read-only orphans that no code path touches. Removing unread fields is a type-narrowing operation — the TypeScript compiler will surface any missed consumer. Smoke tests (app.smoke.test.ts) assert required host-interface fields; narrowing the interface removes those assertions automatically.
Changes
ui/src/ui/views/agents.ts:30 — narrow AgentsPanel: drop "skills" from union
ui/src/ui/app-view-state.ts:131 — same narrowing in agentsPanel
ui/src/ui/app-view-state.ts:142-145 — delete four agentSkills* fields
ui/src/ui/app-view-state.ts:191 — delete skillsReport field
ui/src/ui/app-view-state.ts:27 — remove SkillStatusReport import
ui/src/ui/types.ts:376 — delete SkillStatusReport type
ui/src/i18n/locales/{en,de,es,pt-BR,zh-CN,zh-TW}.ts:32,46 — delete agents.panels.skills and agents.tabs.skills entries in ALL locale files
AC
Context
Follow-up to PR #2240, #2245 (skills UI code tree gutted). These shadow fields were outside the scope of the original sweep — discovered during the post-#2336 UI remnants audit.
Summary
After #2240 / #2245 removed the skills UI code tree, shadow fields persisted in the type system, state holders, and i18n — none have readers. Cleaning these closes the sweep and reduces fork-sync friction on upstream merges.
Evidence
"skills"inAgentsPaneltype unionui/src/ui/views/agents.ts:30"skills"inagentsPanelstate unionui/src/ui/app-view-state.ts:131agentSkillsLoading,agentSkillsError,agentSkillsReport,agentSkillsAgentIdstate fieldsui/src/ui/app-view-state.ts:142-145skillsReport: SkillStatusReport | nullin host interfaceui/src/ui/app-view-state.ts:191SkillStatusReporttype stubui/src/ui/types.ts:376SkillStatusReportimportui/src/ui/app-view-state.ts:27agents.panels.skills: "Skills"ui/src/i18n/locales/*.ts:32(all 7 locales)agents.tabs.skills: "Manage skill availability and API key injection."ui/src/i18n/locales/*.ts:46(all 7 locales)None of these have readers:
grep -rn 't\("agents\.panels\.skills"\)' ui/src/returns zero hits; same foragents.tabs.skills. State fields are declared but never assigned or read.Why this is safe
Read-only orphans that no code path touches. Removing unread fields is a type-narrowing operation — the TypeScript compiler will surface any missed consumer. Smoke tests (
app.smoke.test.ts) assert required host-interface fields; narrowing the interface removes those assertions automatically.Changes
ui/src/ui/views/agents.ts:30— narrowAgentsPanel: drop"skills"from unionui/src/ui/app-view-state.ts:131— same narrowing inagentsPanelui/src/ui/app-view-state.ts:142-145— delete fouragentSkills*fieldsui/src/ui/app-view-state.ts:191— deleteskillsReportfieldui/src/ui/app-view-state.ts:27— removeSkillStatusReportimportui/src/ui/types.ts:376— deleteSkillStatusReporttypeui/src/i18n/locales/{en,de,es,pt-BR,zh-CN,zh-TW}.ts:32,46— deleteagents.panels.skillsandagents.tabs.skillsentries in ALL locale filesAC
grep -rn 'agentSkills\|SkillStatusReport\|skillsReport' ui/src/returns zero hitsgrep -rn '"skills"' ui/src/ui/views/agents.ts ui/src/ui/app-view-state.tsreturns zero hitsgrep -rn 'agents\.\(panels\|tabs\)\.skills' ui/src/i18n/returns zero hitspnpm checkgreenpnpm testgreenpnpm test:ui:smokegreenContext
Follow-up to PR #2240, #2245 (skills UI code tree gutted). These shadow fields were outside the scope of the original sweep — discovered during the post-#2336 UI remnants audit.