mirror of
https://github.com/supabase/supabase.git
synced 2026-10-06 01:45:10 +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>
23 lines
707 B
TypeScript
23 lines
707 B
TypeScript
import { type NavMenuSection } from '~/components/Navigation/Navigation.types'
|
|
import Layout from '~/layouts/guides'
|
|
import { getAiPrompts } from '../getting-started/ai-prompts/[slug]/AiPrompts.utils'
|
|
|
|
export default async function GettingStartedLayout({ children }: { children: React.ReactNode }) {
|
|
const additionalNavItems = {
|
|
prompts: await getPrompts(),
|
|
}
|
|
|
|
return <Layout additionalNavItems={additionalNavItems}>{children}</Layout>
|
|
}
|
|
|
|
async function getPrompts() {
|
|
const prompts = await getAiPrompts()
|
|
return prompts.map(
|
|
(prompt) =>
|
|
({
|
|
name: prompt.heading,
|
|
url: `/guides/getting-started/ai-prompts/${prompt.filename}`,
|
|
}) as Partial<NavMenuSection>
|
|
)
|
|
}
|