Skip to content

Commit cb76b96

Browse files
committed
Merge branch 'main' into skills-e2e
2 parents 75e674e + 2ab580a commit cb76b96

37 files changed

Lines changed: 1638 additions & 8 deletions

app/layout.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ const structuredData = {
3838
"Scan a GitHub repo to auto-detect stack, frameworks, and tooling",
3939
"Context-aware questions with best-practice suggestions",
4040
"Instant boilerplate generation with smart defaults",
41+
"Claude Skill Builder for custom AI capabilities",
42+
"Generate Skill.md files for Claude AI",
4143
],
4244
keywords: [
4345
"AI coding guidelines",
@@ -51,6 +53,10 @@ const structuredData = {
5153
"AI repo analyzer",
5254
"GitHub repo scanner for Copilot",
5355
"repo-aware coding guidelines",
56+
"Claude Skill Builder",
57+
"generate Skill.md file",
58+
"Claude custom skills",
59+
"AI agent capabilities",
5460
],
5561
};
5662

@@ -83,6 +89,9 @@ export const metadata: Metadata = {
8389
"generate coding standards from GitHub repo",
8490
"repo-aware AI coding guidelines",
8591
"auto-detect framework coding rules",
92+
"Claude skills",
93+
"Skill.md generator",
94+
"custom AI capabilities",
8695
],
8796
authors: [{ name: "DevContext" }],
8897
creator: "DevContext",

app/page.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ export default function LandingPage() {
6161
<Button asChild variant="ghost" size="sm" className="hidden sm:inline-flex">
6262
<Link href="/stacks">Browse stacks</Link>
6363
</Button>
64+
<Button asChild variant="ghost" size="sm" className="hidden sm:inline-flex">
65+
<Link href="/skills">Skill builder</Link>
66+
</Button>
6467
<Button asChild variant="ghost" size="sm" className="hidden sm:inline-flex">
6568
<Link href="/new">Launch wizard</Link>
6669
</Button>

app/sitemap.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@ const STATIC_ENTRIES: Array<{
99
priority: number
1010
changeFrequency: MetadataRoute.Sitemap[number]["changeFrequency"]
1111
}> = [
12-
{ path: "", priority: 1, changeFrequency: "weekly" },
13-
{ path: "/new", priority: 0.9, changeFrequency: "weekly" },
14-
{ path: "/existing", priority: 0.6, changeFrequency: "monthly" },
15-
{ path: "/stacks", priority: 0.7, changeFrequency: "monthly" },
16-
{ path: "/new/stack", priority: 0.8, changeFrequency: "weekly" },
17-
]
12+
{ path: "", priority: 1, changeFrequency: "weekly" },
13+
{ path: "/new", priority: 0.9, changeFrequency: "weekly" },
14+
{ "path": "/skills", "priority": 0.85, "changeFrequency": "weekly" },
15+
{ path: "/existing", priority: 0.6, changeFrequency: "monthly" },
16+
{ path: "/stacks", priority: 0.7, changeFrequency: "monthly" },
17+
{ path: "/new/stack", priority: 0.8, changeFrequency: "weekly" },
18+
]
1819

1920
export default function sitemap(): MetadataRoute.Sitemap {
2021
const lastModified = new Date()

app/skills/page.tsx

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
import { Github } from "lucide-react"
2+
import Link from "next/link"
3+
import type { Metadata } from "next"
4+
5+
import { Button } from "@/components/ui/button"
6+
import { SkillBuilderForm } from "@/components/skill-builder-form"
7+
import { AnimatedBackground } from "@/components/AnimatedBackground"
8+
import { getAllSkills } from "@/lib/skills"
9+
10+
export const metadata: Metadata = {
11+
title: "Claude Skills Marketplace - Free AI Agent Skills Library",
12+
description: "Browse and download high-quality Skill.md files for Claude and other AI agents. Enhance your AI with capabilities for Coding, DevOps, Testing, and more.",
13+
keywords: ["Claude skills", "skills marketplace", "Skill.md", "AI agent capabilities", "coding skills", "devops skills"],
14+
alternates: {
15+
canonical: "/skills",
16+
},
17+
}
18+
19+
const structuredData = {
20+
"@context": "https://schema.org",
21+
"@type": "WebApplication",
22+
"name": "Claude Skills Marketplace",
23+
"description": "A marketplace of custom Skill.md files for Claude AI to enhance its capabilities.",
24+
"url": "https://devcontext.xyz/skills",
25+
"applicationCategory": "DeveloperApplication",
26+
"operatingSystem": "Web",
27+
"offers": {
28+
"@type": "Offer",
29+
"price": "0",
30+
"priceCurrency": "USD"
31+
}
32+
};
33+
34+
export default function SkillsPage() {
35+
const skills = getAllSkills();
36+
37+
return (
38+
<div className="relative min-h-screen bg-background text-foreground">
39+
<script
40+
type="application/ld+json"
41+
dangerouslySetInnerHTML={{ __html: JSON.stringify(structuredData) }}
42+
/>
43+
<AnimatedBackground />
44+
45+
<div className="relative z-10 flex min-h-screen flex-col">
46+
<header className="flex items-center justify-between px-6 py-6 lg:px-12 lg:py-8 border-b bg-background/50 backdrop-blur-sm">
47+
<Link href="/" className="text-sm font-semibold text-foreground transition hover:text-primary">
48+
DevContext
49+
</Link>
50+
<div className="flex items-center gap-3">
51+
<Button asChild variant="ghost" size="sm" className="hidden sm:inline-flex">
52+
<Link href="https://support.claude.com/en/articles/12512198-how-to-create-custom-skills" target="_blank" rel="noreferrer">
53+
Claude Skills Docs
54+
</Link>
55+
</Button>
56+
<Button asChild variant="outline" size="sm">
57+
<Link href="https://github.com/spivx/devcontext" rel="noreferrer" target="_blank">
58+
<Github className="size-4" />
59+
GitHub
60+
</Link>
61+
</Button>
62+
</div>
63+
</header>
64+
65+
<main className="container mx-auto max-w-7xl px-4 py-8 lg:px-8 flex-1">
66+
<div className="mb-8 space-y-4">
67+
<div className="flex flex-col gap-2">
68+
<span className="text-sm font-semibold uppercase tracking-wider text-primary">Beta</span>
69+
<h1 className="text-3xl font-bold tracking-tight sm:text-4xl">
70+
Skills Marketplace
71+
</h1>
72+
</div>
73+
<p className="max-w-2xl text-muted-foreground text-lg">
74+
Download ready-to-use <code>Skill.md</code> files or customize them to give Claude new capabilities.
75+
Community-driven skills for Frameworks, DevOps, Testing, and Quality Assurance.
76+
</p>
77+
</div>
78+
79+
<SkillBuilderForm initialSkills={skills} />
80+
81+
<section className="mt-16 space-y-8 border-t pt-12">
82+
<div className="space-y-4">
83+
<h2 className="text-2xl font-bold tracking-tight">Frequently Asked Questions</h2>
84+
<div className="grid gap-8 sm:grid-cols-2">
85+
<div className="space-y-2">
86+
<h3 className="font-semibold text-lg text-primary">What&apos;s in the Marketplace?</h3>
87+
<p className="text-muted-foreground">
88+
You&apos;ll find dozens of pre-configured skills covering everything from React Component generation to Docker configurations and Security Audits. All free to use and modify.
89+
</p>
90+
</div>
91+
<div className="space-y-2">
92+
<h3 className="font-semibold text-lg text-primary">How do I contribute?</h3>
93+
<p className="text-muted-foreground">
94+
DevContext is open source! You can contribute new skills by adding a markdown file to the <code>skills/</code> directory in our GitHub repository.
95+
</p>
96+
</div>
97+
<div className="space-y-2">
98+
<h3 className="font-semibold text-lg text-primary">How do I use a Skill.md file?</h3>
99+
<p className="text-muted-foreground">
100+
Download the file and upload it to your Claude project, or reference it in your AI agent configuration (like local LLMs or Cursor).
101+
</p>
102+
</div>
103+
<div className="space-y-2">
104+
<h3 className="font-semibold text-lg text-primary">Can I use these skills in IDEs?</h3>
105+
<p className="text-muted-foreground">
106+
Yes! Many IDE extensions and AI agents (like Cline, Roo Code, or Cursor) support custom skill definitions. By providing a structured <code>Skill.md</code>, you ensure consistent behavior across different environments.
107+
</p>
108+
</div>
109+
</div>
110+
</div>
111+
</section>
112+
</main>
113+
</div>
114+
</div>
115+
)
116+
}

components/Hero.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ export function Hero() {
9898
className="mx-auto max-w-2xl text-sm text-muted-foreground md:text-lg"
9999
variants={itemVariants}
100100
>
101-
Start from scratch with a guided wizard or analyze a public GitHub repo. DevContext detects languages, frameworks, tooling, and tests to generate Copilot instructions, Cursor rules, and onboarding docs you can edit and export.
101+
Start from scratch with a guided wizard or analyze a public GitHub repo. DevContext detects languages, frameworks, tooling, and tests to generate Copilot instructions, Cursor rules, onboarding docs, and custom Claude skills you can edit and export.
102102
</motion.p>
103103

104104

0 commit comments

Comments
 (0)