Files
skills-here-run-place/src/pages/[slug]/i.ts
Alejandro Martinez c1a9442868 Add remaining source changes: resource data, refactored pages, updated styles
- 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
2026-02-13 14:28:26 +01:00

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' },
});
};