---
title: "List all installed skills"
method: GET
path: "/api/v1beta/skills"
tags: ["skills"]
---

# List all installed skills

`GET /api/v1beta/skills`

Get a list of all installed skills

## Query parameters

- `scope` 'user' | 'project'
- `client` string
- `project_root` string
- `group` string

## Response `200`

OK

- PkgApiV1SkillListResponse — Response containing a list of installed skills
  - `skills` GithubComStacklokToolhivePkgSkillsInstalledSkill[] — List of installed skills
    - `clients` string[] — Clients is the list of client identifiers the skill is installed for. TODO: Refactor client.ClientApp to a shared package so it can be used here instead of []string.
    - `dependencies` GithubComStacklokToolhivePkgSkillsDependency[] — Dependencies is the list of external skill dependencies.
      - `digest` string — Digest is the OCI digest for upgrade detection.
      - `name` string — Name is the dependency name.
      - `reference` string — Reference is the OCI reference for the dependency.
    - `digest` string — Digest is the OCI digest (sha256:...) for upgrade detection.
    - `installed_at` string — InstalledAt is the timestamp when the skill was installed.
    - `managed` boolean — Managed indicates this install is tracked in the project's toolhive.lock.yaml. Only ever true for project-scoped installs. No omitempty: false is an observable state (unmanaged), not an absence.
    - `metadata` GithubComStacklokToolhivePkgSkillsSkillMetadata — Metadata contains the skill's metadata.
      - `author` string — Author is the skill author or maintainer.
      - `description` string — Description is a human-readable description of the skill.
      - `name` string — Name is the unique name of the skill.
      - `tags` string[] — Tags is a list of tags for categorization.
      - `version` string — Version is the semantic version of the skill.
    - `project_root` string — ProjectRoot is the project root path for project-scoped skills. Empty for user-scoped.
    - `reference` string — Reference is the full OCI reference (e.g. ghcr.io/org/skill:v1).
    - `scope` 'user' | 'project' — Scope for the installation
    - `status` 'installed' | 'pending' | 'failed' — Status is the current installation status.
    - `tag` string — Tag is the OCI tag (e.g. v1.0.0).

## Other responses

- `500` — Internal Server Error

## Changes

- **2026-07-29** `3db2b10a01f6` — 1 info
  - added the optional property `skills/items/managed` to the response with the `200` status
- **2026-03-06** `b2b0a6a97af8` — 1 info
  - added the new optional `query` request parameter `group`
- **2026-03-05** `7ddc75dcd1f4` — 2 info
  - added the new optional `query` request parameter `client`
  - added the new optional `query` request parameter `project_root`
- **2026-02-17** `28f7cf2e2c81` — 1 warning, 9 info
  - added the new `project` enum value to the `skills/items/scope` response property for the response status `200`
  - added the new optional `query` request parameter `scope`
  - added the non-success response with the status `500`
  - removed the non-success response with the status `501`
  - …6 more
- **2026-02-09** `a00c1abcef71` — 1 info
  - endpoint added

[Full history](https://skmtc.dev/stacklok/apis/toolhive-api/changes/api/v1beta/skills/get.md)

---

[API](https://skmtc.dev/stacklok/apis/toolhive-api.md) · [All operations](https://skmtc.dev/stacklok/apis/toolhive-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/stacklok/toolhive-api/revisions/e9f942effcda/schema)
