import { useQuery } from "@tanstack/react-query"; import { ExternalLink, FileText, Loader2, Wrench } from "lucide-react"; import { companySkillsApi } from "@/api/companySkills"; import { ApiError } from "@/api/client"; import { MarkdownBody } from "@/components/MarkdownBody"; import { Button } from "@/components/ui/button"; import { queryKeys } from "@/lib/queryKeys"; import { useNavigate } from "@/lib/router"; import { parseFrontmatterMarkdown } from "@paperclipai/shared"; export function TaskSkillPanel({ companyId, skillId }: { companyId: string; skillId: string }) { const navigate = useNavigate(); const query = useQuery({ queryKey: queryKeys.companySkills.detail(companyId, skillId), queryFn: () => companySkillsApi.detail(companyId, skillId), retry: false, refetchOnWindowFocus: true, refetchOnMount: "always", }); if (query.isLoading) { return (
Loading skill…
); } if (query.isError) { const status = query.error instanceof ApiError ? query.error.status : null; if (status === 404) { return
Skill no longer available.
; } if (status === 403) { return
You do not have access to this skill.
; } return (

The skill could not be loaded.

); } if (!query.data) { return
Skill no longer available.
; } const skill = query.data; const previewMarkdown = parseFrontmatterMarkdown(skill.markdown).body; return (

{skill.name}

{skill.slug} · {skill.currentVersion ? `Revision ${skill.currentVersion.revisionNumber}` : "Current version"}

{skill.description ?

{skill.description}

: null}

Skill instructions

{previewMarkdown || "Skill instructions are empty."}
); }