---
title: "Get a published skill with analysis + stats"
method: GET
path: "/api/v1/catalog/skills/{owner}/{name}"
tags: ["Catalog"]
---

# Get a published skill with analysis + stats

`GET /api/v1/catalog/skills/{owner}/{name}`

## Request

- Base URL: `https://skillrepo.dev`
- URL: `https://skillrepo.dev/api/v1/catalog/skills/{owner}/{name}`
- Auth: HTTP bearer

Fetch full details of one published skill: metadata, file manifest, analysis summary, and aggregate stats. Returns 404 if the skill does not exist, is not globally visible, or has not been published.

## Path parameters

- `owner` string, required: Skill owner slug (accounts.attributionSlug).
- `name` string, required: Skill name within the owner namespace.

## Response `200`

Skill detail with analysis summary and stats.

- CatalogSkillDetailResponse: Response envelope combining skill, analysis, and stats.
  - `skill` CatalogSkillDetail, required: Full skill detail returned by the catalog detail endpoint.
    - `name` string, required
    - `owner` string, required
    - `ownerName` string, required: The publisher's natural, identifiable name for display (#2986). `owner` stays the lowercase identity key used in paths.
    - `description` string, nullable, required
    - `license` string, nullable, required
    - `compatibility` string, nullable, required
    - `allowedTools` string, nullable, required
    - `metadata` object, nullable, required
    - `version` string, nullable, required
    - `publishedAt` string, date-time, nullable, required
    - `files` CatalogSkillFile[], required
      - `path` string, required: Path of the file relative to the skill root.
      - `size` integer, required: File size in bytes.
      - `contentType` string, required: MIME type. Most skill files are text/markdown, text/plain, or application/json.
  - `analysis` CatalogDetailAnalysis, required: Analysis summary embedded in the catalog detail response. Null when the skill has not been analyzed yet.
    - `grade` 'A' | 'B' | 'C' | 'D' | 'F', required: Skill safety grade derived from static + model analysis.
    - `summary` string, nullable, required
    - `scores` SkillAnalysisScores, required: Per-dimension scores (0-100) produced by skill analysis.
      - `overall` integer, required
      - `safety` integer, required
      - `quality` integer, required
      - `clarity` integer, required
      - `completeness` integer, required
    - `riskSignals` RiskSignal[], required
      - `pattern` string, required: Short name of the risk pattern detected.
      - `location` string, required: Where in the skill the pattern was found (file + line).
      - `severity` 'info' | 'warning' | 'critical', required
      - `code` string: Machine-readable code for this finding (stable across versions).
      - `category` string
      - `confidence` number: Confidence score 0-1.
  - `stats` CatalogSkillStats, required: Aggregate stats embedded in the catalog detail response.
    - `installs` integer, required
    - `activations` integer, required: DEPRECATED alias for `installs` — always equal. Retained for backward compatibility; remove in a future major version once no CLI or agent client depends on it.
    - `avgRating` number, nullable, required

## Other responses

- `401`: Missing or invalid authentication. For routes that require `bearerAccessKey` or `bearerCatalogKey`.
- `404`: Resource does not exist, OR exists but the caller has no permission to see it. Private resources return 404 (never 403) to avoid leaking existence.
- `429`: Rate limit exceeded on the route's bucket. Includes `X-RateLimit-*` headers indicating the limit, remaining, and reset time.

---

[API](https://skmtc.dev/skillrepo/apis/skillrepo-api.md) · [All operations](https://skmtc.dev/skillrepo/apis/skillrepo-api/llms.txt) · [OpenAPI document](https://skmtc.dev/skillrepo/apis/skillrepo-api/revisions/b62bac246918?raw)
