---
title: "Get full analysis result for a skill"
method: GET
path: "/api/v1/catalog/skills/{owner}/{name}/analysis"
tags: ["Catalog"]
---

# Get full analysis result for a skill

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

## Request

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

Returns the complete AI analysis for a published skill: scores, use-cases, detected capabilities, risk signals, quality notes, and trigger keywords. Returns 200 with `analysis: null` when the skill exists but has not yet been analyzed — NOT a 404.

## Path parameters

- `owner` string, required
- `name` string, required

## Response `200`

Analysis response. Either the full analysis block, or nulls if the skill has not yet been analyzed.

- union: Full AI analysis result, or nulls when the skill has not yet been analyzed (still returned as 200, not 404).
  - object
    - `analysis` SkillAnalysis, required: Full skill analysis result as exposed through the catalog API.
      - `grade` 'A' | 'B' | 'C' | 'D' | 'F', required: Skill safety grade derived from static + model analysis.
      - `summary` string, nullable, required
      - `useCases` string[], required
      - `detectedCapabilities` string[], 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.
      - `qualityNotes` string[], 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
      - `triggerKeywords` string[], required
    - `grade` 'A' | 'B' | 'C' | 'D' | 'F', required: Skill safety grade derived from static + model analysis.
    - `analyzedAt` string, date-time, nullable, required: When the analysis completed. Null only in the rare case where the analysis record exists but its completedAt column has not been set.
  - object
    - `analysis` unknown, required
    - `grade` 'A' | 'B' | 'C' | 'D' | 'F', required: Skill safety grade derived from static + model analysis.

## 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)
