From 395fd1f6611c3f7b1104f1ae47919466c4df8fb0 Mon Sep 17 00:00:00 2001 From: Sergiy Dybskiy Date: Fri, 30 Jan 2026 15:39:27 -0500 Subject: [PATCH 1/2] feat(docs): add well-known skills discovery endpoint Add `/.well-known/skills/index.json` endpoint to cli.sentry.dev for agent skills auto-discovery, following the Cloudflare Agent Skills Discovery RFC pattern. - Create skills manifest at `docs/public/.well-known/skills/index.json` - Update generate-skill.ts to output SKILL.md to both plugin and well-known paths - Update generate-skill.yml workflow to commit both SKILL.md files - Enables `npx skills add https://cli.sentry.dev` to auto-discover and install the sentry-cli skill Co-Authored-By: Claude Opus 4.5 --- .github/workflows/generate-skill.yml | 4 ++-- docs/public/.well-known/skills/index.json | 9 +++++++++ script/generate-skill.ts | 3 +++ 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 docs/public/.well-known/skills/index.json diff --git a/.github/workflows/generate-skill.yml b/.github/workflows/generate-skill.yml index 8bc0cac5..ca1942bf 100644 --- a/.github/workflows/generate-skill.yml +++ b/.github/workflows/generate-skill.yml @@ -37,7 +37,7 @@ jobs: - name: Check for changes id: diff run: | - if git diff --quiet plugins/sentry-cli/skills/sentry-cli/SKILL.md; then + if git diff --quiet plugins/sentry-cli/skills/sentry-cli/SKILL.md docs/public/.well-known/skills/sentry-cli/SKILL.md; then echo "changed=false" >> $GITHUB_OUTPUT echo "SKILL.md is already up to date" else @@ -50,6 +50,6 @@ jobs: run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - git add plugins/sentry-cli/skills/sentry-cli/SKILL.md + git add plugins/sentry-cli/skills/sentry-cli/SKILL.md docs/public/.well-known/skills/sentry-cli/SKILL.md git commit -m "chore: Regenerate SKILL.md" git push diff --git a/docs/public/.well-known/skills/index.json b/docs/public/.well-known/skills/index.json new file mode 100644 index 00000000..7dc90675 --- /dev/null +++ b/docs/public/.well-known/skills/index.json @@ -0,0 +1,9 @@ +{ + "skills": [ + { + "name": "sentry-cli", + "description": "Guide for using the Sentry CLI to interact with Sentry from the command line. Use when the user asks about viewing issues, events, projects, organizations, making API calls, or authenticating with Sentry via CLI.", + "files": ["SKILL.md"] + } + ] +} diff --git a/script/generate-skill.ts b/script/generate-skill.ts index 41707f71..52713ff4 100644 --- a/script/generate-skill.ts +++ b/script/generate-skill.ts @@ -15,6 +15,7 @@ import { routes } from "../src/app.js"; const OUTPUT_PATH = "plugins/sentry-cli/skills/sentry-cli/SKILL.md"; +const WELL_KNOWN_PATH = "docs/public/.well-known/skills/sentry-cli/SKILL.md"; const DOCS_PATH = "docs/src/content/docs"; /** Regex to match YAML frontmatter at the start of a file */ @@ -772,5 +773,7 @@ async function generateSkillMarkdown(routeMap: RouteMap): Promise { const content = await generateSkillMarkdown(routes as unknown as RouteMap); await Bun.write(OUTPUT_PATH, content); +await Bun.write(WELL_KNOWN_PATH, content); console.log(`Generated ${OUTPUT_PATH}`); +console.log(`Generated ${WELL_KNOWN_PATH}`); From f91fb0c7d6da7a1d51452e6b35b4af335f3412aa Mon Sep 17 00:00:00 2001 From: Sergiy Dybskiy Date: Fri, 30 Jan 2026 16:05:34 -0500 Subject: [PATCH 2/2] refactor(docs): use symlink for well-known SKILL.md Replace duplicate file with symlink pointing to the plugin source at plugins/sentry-cli/skills/sentry-cli/SKILL.md. Astro resolves symlinks during build, so dist/ receives the actual file content. - Remove WELL_KNOWN_PATH from generate-skill.ts (single write location) - Update workflow to check only the plugin path - Symlink ensures single source of truth for SKILL.md Co-Authored-By: Claude Opus 4.5 --- .github/workflows/generate-skill.yml | 4 ++-- docs/public/.well-known/skills/sentry-cli/SKILL.md | 1 + script/generate-skill.ts | 3 --- 3 files changed, 3 insertions(+), 5 deletions(-) create mode 120000 docs/public/.well-known/skills/sentry-cli/SKILL.md diff --git a/.github/workflows/generate-skill.yml b/.github/workflows/generate-skill.yml index ca1942bf..8bc0cac5 100644 --- a/.github/workflows/generate-skill.yml +++ b/.github/workflows/generate-skill.yml @@ -37,7 +37,7 @@ jobs: - name: Check for changes id: diff run: | - if git diff --quiet plugins/sentry-cli/skills/sentry-cli/SKILL.md docs/public/.well-known/skills/sentry-cli/SKILL.md; then + if git diff --quiet plugins/sentry-cli/skills/sentry-cli/SKILL.md; then echo "changed=false" >> $GITHUB_OUTPUT echo "SKILL.md is already up to date" else @@ -50,6 +50,6 @@ jobs: run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - git add plugins/sentry-cli/skills/sentry-cli/SKILL.md docs/public/.well-known/skills/sentry-cli/SKILL.md + git add plugins/sentry-cli/skills/sentry-cli/SKILL.md git commit -m "chore: Regenerate SKILL.md" git push diff --git a/docs/public/.well-known/skills/sentry-cli/SKILL.md b/docs/public/.well-known/skills/sentry-cli/SKILL.md new file mode 120000 index 00000000..dc44f03f --- /dev/null +++ b/docs/public/.well-known/skills/sentry-cli/SKILL.md @@ -0,0 +1 @@ +../../../../../plugins/sentry-cli/skills/sentry-cli/SKILL.md \ No newline at end of file diff --git a/script/generate-skill.ts b/script/generate-skill.ts index 52713ff4..41707f71 100644 --- a/script/generate-skill.ts +++ b/script/generate-skill.ts @@ -15,7 +15,6 @@ import { routes } from "../src/app.js"; const OUTPUT_PATH = "plugins/sentry-cli/skills/sentry-cli/SKILL.md"; -const WELL_KNOWN_PATH = "docs/public/.well-known/skills/sentry-cli/SKILL.md"; const DOCS_PATH = "docs/src/content/docs"; /** Regex to match YAML frontmatter at the start of a file */ @@ -773,7 +772,5 @@ async function generateSkillMarkdown(routeMap: RouteMap): Promise { const content = await generateSkillMarkdown(routes as unknown as RouteMap); await Bun.write(OUTPUT_PATH, content); -await Bun.write(WELL_KNOWN_PATH, content); console.log(`Generated ${OUTPUT_PATH}`); -console.log(`Generated ${WELL_KNOWN_PATH}`);