diff --git a/apps/web/components/settings/company-brain-skills.tsx b/apps/web/components/settings/company-brain-skills.tsx
index b546fc40..e97b57e8 100644
--- a/apps/web/components/settings/company-brain-skills.tsx
+++ b/apps/web/components/settings/company-brain-skills.tsx
@@ -335,7 +335,8 @@ function CompanyBrainSkillsContent({
- {SCOPE_HINTS[scopeFilter]}
+ {SCOPE_HINTS[scopeFilter]} Skills created through Company Brain
+ appear here automatically.
{uploadError ? (
diff --git a/apps/web/components/settings/company-brain-skills/domain.ts b/apps/web/components/settings/company-brain-skills/domain.ts
index df45e085..8be045cb 100644
--- a/apps/web/components/settings/company-brain-skills/domain.ts
+++ b/apps/web/components/settings/company-brain-skills/domain.ts
@@ -13,6 +13,7 @@ export type SkillDraft = {
export type SkillMarkdown = Pick
export type NewSkillOrigin = "web" | "upload"
+export type SkillOrigin = NewSkillOrigin | "slack"
export type SkillAuthoringTarget = {
canEdit: boolean
@@ -51,6 +52,10 @@ export function emptySkillDraft(): SkillDraft {
}
}
+export function skillOriginLabel(origin: SkillOrigin): string | null {
+ return origin === "slack" ? "Created by Company Brain" : null
+}
+
export function setSkillDraftScope(
draft: SkillDraft,
scope: SkillScope,
diff --git a/apps/web/components/settings/company-brain-skills/skill-row.tsx b/apps/web/components/settings/company-brain-skills/skill-row.tsx
index a6ca7f0a..033127fa 100644
--- a/apps/web/components/settings/company-brain-skills/skill-row.tsx
+++ b/apps/web/components/settings/company-brain-skills/skill-row.tsx
@@ -3,6 +3,7 @@
import { cn } from "@lib/utils"
import { formatDistanceToNow } from "date-fns"
import { ChevronRight } from "lucide-react"
+import { skillOriginLabel } from "@/components/settings/company-brain-skills/domain"
import type { BrainSkill } from "@/hooks/use-brain-skills"
import { dmSans125ClassName } from "@/lib/fonts"
@@ -27,6 +28,16 @@ function ScopeBadge({ scope }: { scope: BrainSkill["scope"] }) {
)
}
+function OriginBadge({ origin }: { origin: BrainSkill["origin"] }) {
+ const label = skillOriginLabel(origin)
+ if (!label) return null
+ return (
+
+ {label}
+
+ )
+}
+
export function SkillRow({
skill,
onOpen,
@@ -51,6 +62,7 @@ export function SkillRow({
{skill.name}
+
{skill.status === "disabled" ? (
Disabled
diff --git a/apps/web/hooks/use-brain-skills.impl.ts b/apps/web/hooks/use-brain-skills.impl.ts
index 1e8a85f1..ecbc8185 100644
--- a/apps/web/hooks/use-brain-skills.impl.ts
+++ b/apps/web/hooks/use-brain-skills.impl.ts
@@ -5,6 +5,7 @@ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"
import type {
NewSkillOrigin,
SkillDraft,
+ SkillOrigin,
SkillScope,
} from "@/components/settings/company-brain-skills/domain"
import { skillSaveRequestBody } from "@/components/settings/company-brain-skills/domain"
@@ -23,6 +24,7 @@ export type BrainSkill = {
scope: SkillScope
status: BrainSkillStatus
creatorUserId: string
+ origin: SkillOrigin
canEdit: boolean
canDelete: boolean
version: number
@@ -86,6 +88,9 @@ export function useBrainSkills() {
queryFn: () =>
jsonRequest(`${BASE}/`, {}, "Couldn't load skills."),
enabled: !!org?.id && !!user?.id,
+ staleTime: 0,
+ refetchOnWindowFocus: true,
+ refetchInterval: 15_000,
})
}