mirror of
https://github.com/supabase/supabase.git
synced 2026-10-14 21:59:16 +03:00
## I have read the [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) file. YES ## What kind of change does this PR introduce? Docs update — Rewrite the Agent Skills documentation as a single flat page with a skills table. ## What is the current behavior? The Agent Skills docs have a nested structure with an index page and individual dynamic pages for each skill (fetched from the `supabase/agent-skills` repo). Skills also inject sub-items into the sidebar navigation. ## What is the new behavior? This PR replaces the nested skill pages with a single, flat Agent Skills page that: - Lists all skills in a **table** with name, description, and a **copy-to-install button** (fetched dynamically from the [supabase/agent-skills](https://github.com/supabase/agent-skills) repo) - Includes **installation commands** for both the skills CLI (`npx skills add`) and Claude Code plugins - Links skill names directly to their source on GitHub instead of rendering full skill content inline - Removes the dynamic `[slug]` route, sidebar nav injection, and local skill example files ### Navigation Structure ``` Start > AI Tools > Agent Skills (new) > Prompts (existing) > Supabase MCP server (existing) ``` Closes [AI-361](https://linear.app/supabase/issue/AI-361/create-skills-documentation-page-in-ai-tooling-docs) --------- Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
30 lines
794 B
TypeScript
30 lines
794 B
TypeScript
'use client'
|
|
|
|
import { useState } from 'react'
|
|
import { Check, Copy } from 'lucide-react'
|
|
import { cn } from 'ui'
|
|
|
|
export function CopyButton({ text }: { text: string }) {
|
|
const [copied, setCopied] = useState(false)
|
|
|
|
const handleCopy = async () => {
|
|
await navigator.clipboard.writeText(text)
|
|
setCopied(true)
|
|
setTimeout(() => setCopied(false), 2000)
|
|
}
|
|
|
|
return (
|
|
<button
|
|
type="button"
|
|
onClick={handleCopy}
|
|
className={cn(
|
|
'inline-flex items-center rounded-md border p-1.5 transition-colors',
|
|
'border-default bg-surface-100 text-foreground-lighter hover:bg-surface-200 hover:text-foreground'
|
|
)}
|
|
title={copied ? 'Copied!' : 'Copy to clipboard'}
|
|
>
|
|
{copied ? <Check size={14} /> : <Copy size={14} />}
|
|
</button>
|
|
)
|
|
}
|