From 10d06bc1ca73972814d2d589c895ea0ba0e40d33 Mon Sep 17 00:00:00 2001 From: Dotta Date: Mon, 16 Mar 2026 16:01:20 -0500 Subject: [PATCH] Separate required skills into own section on agent skills page Required/built-in Paperclip skills are now shown in a dedicated "Required by Paperclip" section at the bottom of the agent skills tab, with checkboxes that are checked and disabled. Optional skills remain in the main section above. Co-Authored-By: Paperclip --- ui/src/pages/AgentDetail.tsx | 177 +++++++++++++++++++++-------------- 1 file changed, 105 insertions(+), 72 deletions(-) diff --git a/ui/src/pages/AgentDetail.tsx b/ui/src/pages/AgentDetail.tsx index ec94ea40..6b095c76 100644 --- a/ui/src/pages/AgentDetail.tsx +++ b/ui/src/pages/AgentDetail.tsx @@ -1275,79 +1275,112 @@ function AgentSkillsTab({ ) : ( <> -
- {(companySkills ?? []).length === 0 ? ( -
- Import skills into the company library first, then attach them here. -
- ) : ( - (companySkills ?? []).map((skill) => { - const checked = skillDraft.includes(skill.slug); - const adapterEntry = adapterEntryByName.get(skill.slug); - const required = Boolean(adapterEntry?.required); - const disabled = required || skillSnapshot?.mode === "unsupported"; - const checkbox = ( - { - const next = event.target.checked - ? Array.from(new Set([...skillDraft, skill.slug])) - : skillDraft.filter((value) => value !== skill.slug); - setSkillDraft(next); - }} - className="mt-0.5 disabled:cursor-not-allowed disabled:opacity-60" - /> - ); - return ( -
+ {skill.description && ( + + {skill.description} + + )} + {adapterEntry?.detail && ( +

{adapterEntry.detail}

+ )} + + + ); + }; + + if (allSkills.length === 0) { + return ( +
+
+ Import skills into the company library first, then attach them here. +
+
+ ); + } + + return ( + <> + {optionalSkills.length > 0 && ( +
+ {optionalSkills.map(renderSkillRow)} +
+ )} + + {requiredSkills.length > 0 && ( +
+
+ + Required by Paperclip + +
+ {requiredSkills.map(renderSkillRow)} +
+ )} + + ); + })()} {desiredOnlyMissingSkills.length > 0 && (