Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions apps/docs/app/[lang]/templates/[slug]/file-viewer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import {
BotIcon,
BoxIcon,
BracesIcon,
CalendarClockIcon,
ChevronRightIcon,
FileTextIcon,
type LucideIcon,
Expand Down Expand Up @@ -32,20 +34,32 @@ interface CategoryStyle {
const categoryStyles: Record<string, CategoryStyle> = {
"agent.ts": { icon: SettingsIcon },
"instructions.md": { icon: FileTextIcon },
"instructions.ts": { icon: FileTextIcon },
"sandbox.ts": { icon: BoxIcon },
sandbox: { icon: BoxIcon },
channels: { icon: MessageSquareIcon },
connections: { icon: PlugIcon },
schedules: { icon: CalendarClockIcon },
skills: { icon: FileTextIcon },
tools: { icon: WrenchIcon },
subagents: { icon: BotIcon },
lib: { icon: BracesIcon },
};

const defaultStyle: CategoryStyle = { icon: FileTextIcon };

// Keys absent from this list render last in encounter order, so every top-level
// name a template can author belongs here. Standalone files lead, folders follow;
// `sandbox` appears twice because templates author it as either a file or a folder.
const categoryOrder = [
"agent.ts",
"instructions.md",
"instructions.ts",
"sandbox.ts",
"sandbox",
"channels",
"connections",
"schedules",
"skills",
"tools",
"subagents",
Expand Down
16 changes: 15 additions & 1 deletion apps/docs/app/[lang]/templates/integration-icons.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,29 @@
import { BracesIcon } from "lucide-react";
import type { ComponentType, SVGProps } from "react";
import { linearLogo, notionLogo, sentryLogo, slackLogo, webLogo } from "@/lib/integrations/logos";
import {
githubLogo,
linearLogo,
notionLogo,
resendLogo,
sanityLogo,
sentryLogo,
slackLogo,
typefullyLogo,
webLogo,
} from "@/lib/integrations/logos";
import type { TemplateIntegration } from "@/lib/templates/data";

type IconComponent = ComponentType<SVGProps<SVGSVGElement>>;

export const integrationIcons: Record<TemplateIntegration, IconComponent> = {
GitHub: githubLogo,
"HTTP API": BracesIcon,
Linear: linearLogo,
Notion: notionLogo,
Resend: resendLogo,
Sanity: sanityLogo,
Sentry: sentryLogo,
Slack: slackLogo,
Typefully: typefullyLogo,
"Web chat": webLogo,
};
12 changes: 12 additions & 0 deletions apps/docs/lib/integrations/logos.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import {
SiPosthog,
SiPostman,
SiRazorpay,
SiSanity,
SiSentry,
SiSimilarweb,
SiStripe,
Expand Down Expand Up @@ -230,6 +231,8 @@ export const postmanLogo = (props: LogoProps) => <SiPostman color="default" {...

export const razorpayLogo = (props: LogoProps) => <SiRazorpay {...props} />;

export const sanityLogo = (props: LogoProps) => <SiSanity {...props} />;

export const sentryLogo = (props: LogoProps) => <SiSentry {...props} />;

export const similarwebLogo = (props: LogoProps) => <SiSimilarweb {...props} />;
Expand All @@ -240,6 +243,15 @@ export const supabaseLogo = (props: LogoProps) => <SiSupabase color="default" {.

export const ticktickLogo = (props: LogoProps) => <SiTicktick color="default" {...props} />;

export const typefullyLogo = (props: LogoProps) => (
<svg fill="none" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" {...props}>
<path
d="m22.0781 28.9919c1.3619 0 2.4613-1.0884 2.4613-2.4368 0-1.3483-1.0994-2.4367-2.4613-2.4367-1.362 0-2.4613 1.0884-2.4613 2.4367 0 1.3484 1.0993 2.4368 2.4613 2.4368zm-3.0356-11.5745c.3117-.0894.402 0 .2871.3086-.5825 1.6326-1.9855 3.647-4.7175 4.3699-1.2963.3412-2.5516.3087-3.5607.5767-.599.1543-1.08302.4549-1.56708 1.0965-1.21426 1.6002-2.65823 5.2228-4.0858 5.2309-.28715 0-.42663-.1949-.39381-.4305.04923-.3817.40202-.9828.7466-1.7138 7.00659-14.7667 9.41869-23.8557 19.08349-23.8557 1.8624 0 1.0173.60106.6727.99094-3.3802 3.87441-3.1505 8.37426-5.4969 10.75416-1.7886 1.8275-5.5134 2.2824-7.0722 2.388-.3364.0244-.3774.2355-.0575.3655 1.9855.8122 4.8078.2924 6.1616-.0894z"
fill="currentColor"
/>
</svg>
);

export const todoistLogo = (props: LogoProps) => <SiTodoist color="default" {...props} />;

export const webflowLogo = (props: LogoProps) => <SiWebflow color="default" {...props} />;
Expand Down
49 changes: 49 additions & 0 deletions apps/docs/lib/templates/data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,15 @@ export type TemplateCategory = "Chat" | "Collaboration" | "Example";
import { templateSourceFiles } from "./sources";

export type TemplateIntegration =
| "GitHub"
| "HTTP API"
| "Linear"
| "Notion"
| "Resend"
| "Sanity"
| "Sentry"
| "Slack"
| "Typefully"
| "Web chat";
export type TemplateSource = "GitHub" | "Vercel Templates";

Expand Down Expand Up @@ -76,6 +80,51 @@ export const templateEntries: TemplateEntry[] = [
source: "Vercel Templates",
files: templateSourceFiles["eve-slack-agent"],
},
{
slug: "kody",
title: "GitHub",
setupPrompt:
"I want to build a GitHub maintainer agent with the eve framework, using the Kody template. Read the setup instructions at https://agent-resources.dev/kody-eve-template.md and follow them. They will cover deploying the template, building with eve, how everything works overall, and more.",
description:
"Kody, a personal GitHub maintainer agent: emails you a weekly digest of open issues, acts on your replies, summarizes new pull requests, and works the issues you delegate in Linear.",
sourceHref: "https://github.com/vercel-labs/kody-eve-template/tree/main",
sourceRevision: "8427e3c7e88a6a449dd7c79c601619ac37cf18e1",
category: "Collaboration",
model: "anthropic/claude-fable-5",
integrations: ["GitHub", "Linear", "Resend"],
source: "Vercel Templates",
files: templateSourceFiles.kody,
},
{
slug: "sanity-copilot",
title: "Sanity",
setupPrompt:
"I want to build a Slack agent with the eve framework, using the Sanity copilot template. Read the setup instructions at https://agent-resources.dev/sanity-copilot-eve-template.md and follow them. They will cover deploying the template, building with eve, how everything works overall, and more.",
description:
"A Slack copilot for your Sanity project: query and edit content with GROQ, shape schemas, manage releases, and draft long-form pieces into Notion.",
sourceHref: "https://github.com/vercel-labs/sanity-copilot-eve-template/tree/main",
sourceRevision: "f076b80e2bb3a2ccae3dc1cfe4886d5ac88c338b",
category: "Collaboration",
model: "anthropic/claude-sonnet-5",
integrations: ["Slack", "Sanity", "Notion"],
source: "Vercel Templates",
files: templateSourceFiles["sanity-copilot"],
},
{
slug: "typefully",
title: "Typefully",
setupPrompt:
"I want to build a Slack agent with the eve framework, using the Typefully social media agent template. Read the setup instructions at https://agent-resources.dev/typefully-eve-template.md and follow them. They will cover deploying the template, building with eve, how everything works overall, and more.",
description:
"A Slack agent that runs your social presence through Typefully: draft posts and threads for X, LinkedIn, Threads, Bluesky, and Mastodon, manage the publishing queue, and get a weekly analytics digest.",
sourceHref: "https://github.com/vercel-labs/typefully-eve-template/tree/main",
sourceRevision: "3627b2282a9ebfa1badd987f2b3a0c337219575f",
category: "Collaboration",
model: "anthropic/claude-sonnet-5",
integrations: ["Slack", "Typefully", "Notion"],
source: "Vercel Templates",
files: templateSourceFiles.typefully,
},
{
slug: "weather-agent-fixture",
title: "Weather",
Expand Down
Loading