SKILL.md frontmatter (tags: [finance, onboarding]). Tags are a great way to group related skills — but skills live inside individual projects, so answering “which skills across my workspace are tagged finance?” would normally mean listing every project’s skills and filtering client-side.
The GET /skills endpoint does this in one call: it searches across projects in your tenant and returns every skill that carries the tag, along with each match’s project and file manifest.
Looking for global skills — the ones attached to a Navigator in the Navigator Library rather than to a single project? Those live under a parallel endpoint,
GET /navigator-global-skills. Jump to Search global skills by tag.Endpoint used
Query parameters
Tags live on the skill bundle (from its
SKILL.md frontmatter), not on individual bundled files. Matching is an exact, case-sensitive comparison against the tags as they were uploaded.Project scoping accepts either the project name (exact, case-sensitive — URL-encode spaces, so
Support Team becomes Support%20Team) or its UUID. Passing a name or UUID that doesn’t exist in your tenant returns 404.Response shape
The endpoint returns a plain JSON array (not the cursor-paginated envelope used by some other list endpoints). Each item is a matched skill with its project and current-revision file manifest — theSKILL.md body is omitted to keep the response compact:
The procedure
1
Pick your scope
Search your whole workspace with
project=all (the default), or narrow to specific projects by repeating project= with names or UUIDs.2
Call the endpoint
GET /skills?tag={tag} with your platform access token. The result is every matching skill across the requested scope.3
Use the results
Each item tells you which
project_name/project_id the skill lives in and lists its files. Follow up with the per-skill endpoints if you need the SKILL.md body or file contents.Full example
Find every skill taggedfinance across the workspace and print where each one lives. The project tab shows how to scope the same search to specific projects.
- Python
- TypeScript
- cURL
search_skills.py
Search global skills by tag
Global skills are attached to a Navigator in the Navigator Library instead of to a single project. A navigator’s global skills are shared with every project that navigator is connected to, so they don’t belong to any one project — which means the project-scopedGET /skills search above intentionally excludes them.
To search global skills, use the parallel GET /navigator-global-skills endpoint. It works just like GET /skills, but the scope is a set of navigators instead of projects, and each result carries the owning navigator instead of a project.
Endpoint used
Query parameters
Tag matching is identical to the project search: an exact, case-sensitive comparison against the skill’s
SKILL.md frontmatter tags. Passing a navigator name/UUID that doesn’t exist in your tenant returns 404.Response shape
Same plain JSON array as the project search, but each item identifies the owning navigator (navigator_identity_id + navigator_name) and sets source to "global":
Example
Find every global skill taggedfinance across all navigators, and print which navigator owns each one. The navigator tab shows how to scope the same search to specific navigators.
- Python
- TypeScript
- cURL
search_global_skills.py
Next steps
Sync skills from your repo
Keep a folder of
SKILL.md files in version control and push changes to a Caylex project from CI.Platform Authentication
Create and manage the platform access token these recipes use.