---
title: "List skills"
method: GET
path: "/skills"
tags: ["Skills"]
---

# List skills

`GET /skills`

## Request

- Base URL: `https://commareports.com/api/v1`
- URL: `https://commareports.com/api/v1/skills`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

The token owner's skills, newest first (max 200). Also accepts a Supabase user-session JWT. Scope: `routines`.

## Response `200`

Skills.

- object
  - `skills` Skill[], required
    - `id` string, uuid, required
    - `name` string, required
    - `description` string, nullable
    - `prompt` string, required
    - `required_tools` RequiredTool[]
      - `kind` string, required
    - `source_kind` 'inline' | 'upload' | 'github', required
    - `source_ref` string, nullable: Storage path (upload) or pinned 'owner/repo@sha:path' (github).
    - `model` string, nullable
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required

## Other responses

- `401`: Missing, invalid, revoked, or expired token.
- `403`: Token missing the required scope, or no access to the resource.
- `429`: Rate limit exceeded. Rate limit: per-token sliding window (plan-aware — Free 60 req/min, Pro 600, Team/Enterprise 6000 by default); 429 responses carry a Retry-After header.
- `500`: Unexpected server error.

---

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