- Add example resources (agent, output-style, rule, skill) - Refactor legacy skill pages to use generic resource system - Update favicon, global styles, models, skills lib, and stats - Update PLAN.md
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import type { APIRoute } from 'astro';
|
|
import { getSkill } from '../../lib/skills';
|
|
import { isPowerShell } from '../../lib/sync';
|
|
|
|
/** Backward compat: /<slug>/i — installs skill to .claude/skills/ */
|
|
export const GET: APIRoute = async ({ params, url, request }) => {
|
|
const { slug } = params;
|
|
const skill = await getSkill(slug!);
|
|
if (!skill) {
|
|
return new Response('Skill not found', { status: 404 });
|
|
}
|
|
|
|
const origin = url.origin;
|
|
const ps = isPowerShell(request);
|
|
|
|
const script = ps
|
|
? [
|
|
'$ErrorActionPreference = "Stop"',
|
|
'$Dir = ".claude\\skills"',
|
|
'New-Item -ItemType Directory -Force -Path $Dir | Out-Null',
|
|
`Invoke-WebRequest -Uri "${origin}/skills/${slug}" -OutFile (Join-Path $Dir "${slug}.md")`,
|
|
`Write-Host "✓ Installed ${skill.name} to $Dir\\${slug}.md"`,
|
|
'',
|
|
].join('\n')
|
|
: [
|
|
'#!/usr/bin/env bash',
|
|
'set -euo pipefail',
|
|
'mkdir -p .claude/skills',
|
|
`curl -fsSL "${origin}/skills/${slug}" -o ".claude/skills/${slug}.md"`,
|
|
`echo "✓ Installed ${skill.name} to .claude/skills/${slug}.md"`,
|
|
'',
|
|
].join('\n');
|
|
|
|
return new Response(script, {
|
|
headers: { 'Content-Type': 'text/plain; charset=utf-8' },
|
|
});
|
|
};
|